mirror of
https://gitlab.gnome.org/GNOME/eog
synced 2024-10-19 14:34:42 +00:00
More work - Federico
This commit is contained in:
parent
3c4fd9f174
commit
b19c66ef1f
|
@ -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 = \
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <gtk/gtksignal.h>
|
||||
#include "gnome-list-model.h"
|
||||
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
59
src/gnome-wrap-list.h
Normal 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
|
Loading…
Reference in a new issue