More work - Federico

This commit is contained in:
Arturo Espinosa 1999-10-05 01:33:02 +00:00
parent 3c4fd9f174
commit b19c66ef1f
7 changed files with 170 additions and 65 deletions

View file

@ -6,31 +6,37 @@ INCLUDES = \
-DGNOMELOCALEDIR=\""$(datadir)/locale"\" \
-DG_LOG_DOMAIN=\"eog\"
eog_SOURCES = \
commands.c \
commands.h \
cursors.c \
cursors.h \
gtkscrollframe.c \
gtkscrollframe.h \
image.h \
image.c \
image-item.c \
image-item.h \
main.c \
render.c \
render.h \
stock.c \
stock.h \
tb-image.c \
tb-image.h \
ui-image.c \
ui-image.h \
util.c \
util.h \
window.c \
window.h \
zoom.c \
eog_SOURCES = \
commands.c \
commands.h \
cursors.c \
cursors.h \
gnome-list-item-factory.c \
gnome-list-item-factory.h \
gnome-list-model.c \
gnome-list-model.h \
gnome-list-view.c \
gnome-list-view.h \
gtkscrollframe.c \
gtkscrollframe.h \
image.h \
image.c \
image-item.c \
image-item.h \
main.c \
render.c \
render.h \
stock.c \
stock.h \
tb-image.c \
tb-image.h \
ui-image.c \
ui-image.h \
util.c \
util.h \
window.c \
window.h \
zoom.c \
zoom.h
eog_LDADD = \

View file

@ -20,6 +20,7 @@
*/
#include <config.h>
#include <gtk/gtksignal.h>
#include "gnome-list-item-factory.h"
@ -91,7 +92,7 @@ gnome_list_item_factory_class_init (GnomeListItemFactoryClass *class)
GTK_SIGNAL_OFFSET (GnomeListItemFactoryClass, create_item),
marshal_create_item,
GNOME_TYPE_CANVAS_ITEM, 1,
GNOME_TYPE_LIST_VIEW);
GNOME_TYPE_CANVAS_GROUP);
li_factory_signals[CONFIGURE_ITEM] =
gtk_signal_new ("configure_item",
GTK_RUN_FIRST,
@ -106,6 +107,7 @@ gnome_list_item_factory_class_init (GnomeListItemFactoryClass *class)
GTK_TYPE_BOOL);
li_factory_signals[GET_ITEM_SIZE] =
gtk_signal_new ("get_item_size",
GTK_RUN_FIRST,
object_class->type,
GTK_SIGNAL_OFFSET (GnomeListItemFactoryClass, get_item_size),
marshal_get_item_size,
@ -123,7 +125,7 @@ gnome_list_item_factory_class_init (GnomeListItemFactoryClass *class)
/* Marshalers */
typedef GnomeCanvasItem *(* CreateItemFunc) (GtkObject *object, GtkObject *view, gpointer data);
typedef GnomeCanvasItem *(* CreateItemFunc) (GtkObject *object, GtkObject *parent, gpointer data);
static void
marshal_create_item (GtkObject *object, GtkSignalFunc func, gpointer data, GtkArg *args)
@ -131,7 +133,7 @@ marshal_create_item (GtkObject *object, GtkSignalFunc func, gpointer data, GtkAr
CreateItemFunc rfunc;
GnomeCanvasItem **retval;
retval = GTK_RETLOC_POINTER (args[1]);
retval = (GnomeCanvasItem **) GTK_RETLOC_POINTER (args[1]);
rfunc = (CreateItemFunc) func;
*retval = (* rfunc) (object, GTK_VALUE_OBJECT (args[0]), data);
}
@ -142,7 +144,7 @@ typedef void (* ConfigureItemFunc) (GtkObject *object, GtkObject *item,
gpointer data);
static void
marshal_configure_item (GtkObjct *object, GtkSignalFunc func, gpointer data, GtkArg *args)
marshal_configure_item (GtkObject *object, GtkSignalFunc func, gpointer data, GtkArg *args)
{
ConfigureItemFunc rfunc;
@ -174,26 +176,25 @@ marshal_get_item_size (GtkObject *object, GtkSignalFunc func, gpointer data, Gtk
/**
* gnome_list_item_factory_create_item:
* @factory: A list item factory.
* @view: List view to which the created item will be bound.
* @parent: Canvas group to act as the item's parent.
*
* Makes a list item factory create an empty item bound to the specified list
* view.
* Makes a list item factory create an empty item.
*
* Return value: An canvas item representing an empty list item.
**/
GnomeCanvasItem *
gnome_list_item_factory_create_item (GnomeListItemFactory *factory, GnomeListView *view)
gnome_list_item_factory_create_item (GnomeListItemFactory *factory, GnomeCanvasGroup *parent)
{
GnomeCanvasItem *retval;
g_return_val_if_fail (factory != NULL, NULL);
g_return_val_if_fail (GNOME_IS_LIST_ITEM_FACTORY (factory), NULL);
g_return_val_if_fail (view != NULL, NULL);
g_return_val_if_fail (GNOME_IS_LIST_VIEW (view), NULL);
g_return_val_if_fail (parent != NULL, NULL);
g_return_val_if_fail (GNOME_IS_CANVAS_GROUP (parent), NULL);
retval = NULL;
gtk_signal_emit (GTK_OBJECT (factory), li_factory_signals[CREATE_ITEM],
view, &retval);
parent, &retval);
return retval;
}

View file

@ -23,7 +23,8 @@
#define GNOME_LIST_ITEM_FACTORY_H
#include <libgnome/gnome-defs.h>
#include <libgnome/gnome-canvas.h>
#include <libgnomeui/gnome-canvas.h>
#include "gnome-list-model.h"
BEGIN_GNOME_DECLS
@ -51,7 +52,7 @@ struct _GnomeListItemFactory {
struct _GnomeListItemFactoryClass {
GtkObjectClass parent_class;
GnomeCanvasItem *(* create_item) (GnomeListItemFactory *factory, GnomeListView *view);
GnomeCanvasItem *(* create_item) (GnomeListItemFactory *factory, GnomeCanvasGroup *parent);
void (* configure_item) (GnomeListItemFactory *factory, GnomeCanvasItem *item,
GnomeListModel *model, guint n,
gboolean is_selected, gboolean is_focused);
@ -64,7 +65,7 @@ struct _GnomeListItemFactoryClass {
GtkType gnome_list_item_factory_get_type (void);
GnomeCanvasItem *gnome_list_item_factory_create_item (GnomeListItemFactory *factory,
GnomeListView *view);
GnomeCanvasGroup *parent);
void gnome_list_item_factory_configure_item (GnomeListItemFactory *factory, GnomeCanvasItem *item,
GnomeListModel *model, guint n,

View file

@ -20,6 +20,7 @@
*/
#include <config.h>
#include <gtk/gtksignal.h>
#include "gnome-list-model.h"

View file

@ -21,6 +21,7 @@
#include <config.h>
#include <gtk/gtkmarshal.h>
#include <gtk/gtksignal.h>
#include "gnome-list-view.h"
@ -30,8 +31,8 @@ typedef struct {
/* The model we are displaying */
GnomeListModel *model;
/* The item view factory */
GnomeItemViewFactory *factory;
/* The list item factory */
GnomeListItemFactory *factory;
} ListViewPrivate;
@ -39,7 +40,7 @@ typedef struct {
/* Signal IDs */
enum {
SET_MODEL,
SET_ITEM_VIEW_FACTORY,
SET_LIST_ITEM_FACTORY,
LAST_SIGNAL
};
@ -48,9 +49,9 @@ static void gnome_list_view_init (GnomeListView *view);
static void gnome_list_view_destroy (GtkObject *object);
static void set_model (GnomeListView *view, GnomeListModel *model);
static void set_item_view_factory (GnomeListView *view, GnomeItemViewFactory *factory);
static void set_list_item_factory (GnomeListView *view, GnomeListItemFactory *factory);
static GnomeCanvasClass *parent_class;
static GtkContainerClass *parent_class;
static guint list_view_signals[LAST_SIGNAL];
@ -82,7 +83,7 @@ gnome_list_view_get_type (void)
(GtkClassInitFunc) NULL
};
list_view_type = gtk_type_unique (gnome_canvas_get_type (), &list_view_info);
list_view_type = gtk_type_unique (gtk_container_get_type (), &list_view_info);
}
return list_view_type;
@ -96,7 +97,7 @@ gnome_list_view_class_init (GnomeListViewClass *class)
object_class = (GtkObjectClass *) class;
parent_class = gtk_type_class (gnome_canvas_get_type ());
parent_class = gtk_type_class (gtk_container_get_type ());
list_view_signals[SET_MODEL] =
gtk_signal_new ("set_model",
@ -106,19 +107,56 @@ gnome_list_view_class_init (GnomeListViewClass *class)
gtk_marshal_NONE__POINTER,
GTK_TYPE_NONE, 1,
GNOME_TYPE_LIST_MODEL);
list_view_signals[SET_ITEM_VIEW_FACTORY] =
gtk_signal_new ("set_item_view_factory",
list_view_signals[SET_LIST_ITEM_FACTORY] =
gtk_signal_new ("set_list_item_factory",
GTK_RUN_FIRST,
object_class->type,
GTK_SIGNAL_OFFSET (GnomeListViewClass, set_item_view_factory),
GTK_SIGNAL_OFFSET (GnomeListViewClass, set_list_item_factory),
gtk_marshal_NONE__POINTER,
GTK_TYPE_NONE, 1,
GNOME_TYPE_ITEM_VIEW_FACTORY);
GNOME_TYPE_LIST_ITEM_FACTORY);
gtk_object_class_add_signals (object_class, list_view_signals, LAST_SIGNAL);
object_class->destroy = gnome_list_view_destroy;
class->set_model = set_model;
class->set_item_view_factory = set_item_view_factory;
class->set_list_item_factory = set_list_item_factory;
}
/* Object initialization function for the abstract list view */
static void
gnome_list_view_init (GnomeListView *view)
{
ListViewPrivate *priv;
priv = g_new0 (ListViewPrivate, 1);
view->priv = priv;
}
/* Destroy handler for the abstract list view */
static void
gnome_list_view_destroy (GtkObject *object)
{
GnomeListView *view;
ListViewPrivate *priv;
g_return_if_fail (object != NULL);
g_return_if_fail (GNOME_IS_LIST_VIEW (object));
view = GNOME_LIST_VIEW (object);
priv = view->priv;
if (priv->model)
gtk_object_unref (GTK_OBJECT (priv->model));
if (priv->factory)
gtk_object_unref (GTK_OBJECT (priv->factory));
g_free (priv);
if (GTK_OBJECT_CLASS (parent_class)->destroy)
(* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
}
@ -152,9 +190,9 @@ set_model (GnomeListView *view, GnomeListModel *model)
/* FIXME: update view */
}
/* Set_item_view_factory for the abstract list view */
/* Set_list_item_factory handler for the abstract list view */
static void
set_item_view_factory (GnomeListView *view, GnomeItemViewFactory *factory)
set_list_item_factory (GnomeListView *view, GnomeListItemFactory *factory)
{
ListViewPrivate *priv;
@ -162,7 +200,7 @@ set_item_view_factory (GnomeListView *view, GnomeItemViewFactory *factory)
g_return_if_fail (GNOME_IS_LIST_VIEW (view));
if (factory)
g_return_if_fail (GNOME_IS_ITEM_VIEW_FACTORY (factory));
g_return_if_fail (GNOME_IS_LIST_ITEM_FACTORY (factory));
priv = view->priv;
@ -205,15 +243,15 @@ gnome_list_view_get_model (GnomeListView *view)
}
/**
* gnome_list_view_get_item_view_factory:
* gnome_list_view_get_list_item_factory:
* @view: A list view.
*
* Queries the item view factory that a list view is using.
* Queries the list item factory that a list view is using.
*
* Return value: the item view factory.
* Return value: The list item factory.
**/
GnomeItemViewFactory *
gnome_list_view_get_item_view_factory (GnomeListView *view)
GnomeListItemFactory *
gnome_list_view_get_list_item_factory (GnomeListView *view)
{
ListViewPrivate *priv;

View file

@ -23,8 +23,7 @@
#define GNOME_LIST_VIEW_H
#include <libgnome/gnome-defs.h>
#include <libgnomeui/gnome-canvas.h>
#include "gnome-item-view-factory.h"
#include "gnome-list-item-factory.h"
#include "gnome-list-model.h"
BEGIN_GNOME_DECLS
@ -46,24 +45,24 @@ typedef struct _GnomeListView GnomeListView;
typedef struct _GnomeListViewClass GnomeListViewClass;
struct _GnomeListView {
GnomeCanvas canvas;
GtkContainer container;
/* Private data */
gpointer priv;
};
struct _GnomeListViewClass {
GnomeCanvasClass parent_class;
GtkContainerClass parent_class;
void (* set_model) (GnomeListView *view, GnomeListModel *model);
void (* set_item_view_factory) (GnomeListView *view, GnomeItemViewFactory *factory);
void (* set_list_item_factory) (GnomeListView *view, GnomeListItemFactory *factory);
};
GtkType gnome_list_view_get_type (void);
GnomeListModel *gnome_list_view_get_model (GnomeListView *view);
GnomeItemViewFactory *gnome_list_view_get_item_view_factory (GnomeListView *view);
GnomeListItemFactory *gnome_list_view_get_list_item_factory (GnomeListView *view);

59
src/gnome-wrap-list.h Normal file
View file

@ -0,0 +1,59 @@
/* GNOME libraries - abstract wrapped list view
*
* Copyright (C) 1999 The Free Software Foundation
*
* Author: Federico Mena-Quintero <federico@gimp.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef GNOME_WRAP_LIST_H
#define GNOME_WRAP_LIST_H
#include <libgnome/gnome-defs.h>
#include "gnome-list-view.h"
BEGIN_GNOME_DECLS
#define GNOME_TYPE_WRAP_LIST (gnome_wrap_list_get_type ())
#define GNOME_WRAP_LIST(obj) (GTK_CHECK_CAST ((obj), GNOME_TYPE_WRAP_LIST, GnomeWrapList))
#define GNOME_WRAP_LIST_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GNOME_TYPE_WRAP_LIST, \
GnomeWrapListClass))
#define GNOME_IS_WRAP_LIST(obj) (GTK_CHECK_TYPE ((obj), GNOME_TYPE_WRAP_LIST))
#define GNOME_IS_WRAP_LIST_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_WRAP_LIST))
typedef struct _GnomeWrapList GnomeWrapList;
typedef struct _GnomeWrapListClass GnomeWrapListClass;
struct _GnomeWrapList {
GnomeListView view;
};
struct _GnomeWrapListClass {
GnomeListViewClass parent_class;
};
GtkType gnome_wrap_list_get_type (void);
END_GNOME_DECLS
#endif