First attempt to get the docks session managed:
2001-04-16 Michael Natterer <mitch@gimp.org> First attempt to get the docks session managed: * app/gimprc.c: new gimprc type "new-session-info" which will soon replace the original one. * app/menus.c * app/gui/dialogs.c: s/_/-/g in all dialog identifier strings. * app/session.[ch]: call the dialog factory's session functions. * app/test_commands.c: use the dialog factory to create the tabs. * app/gui/dialogs-commands.c * app/gui/dialogs-constructors.[ch]: the constructors return widgets, not dockables now. * app/widgets/gimpdialogfactory.[ch]: maintain a list of dialog factories in the class struct. Added ugly code to do the GimpDock session management. * app/gui/gui.c * app/widgets/gimpdock.c: changed accordingly.
This commit is contained in:

committed by
Michael Natterer

parent
f0d16f693d
commit
059e7773ee
25
ChangeLog
25
ChangeLog
@ -1,3 +1,28 @@
|
|||||||
|
2001-04-16 Michael Natterer <mitch@gimp.org>
|
||||||
|
|
||||||
|
First attempt to get the docks session managed:
|
||||||
|
|
||||||
|
* app/gimprc.c: new gimprc type "new-session-info" which will soon
|
||||||
|
replace the original one.
|
||||||
|
|
||||||
|
* app/menus.c
|
||||||
|
* app/gui/dialogs.c: s/_/-/g in all dialog identifier strings.
|
||||||
|
|
||||||
|
* app/session.[ch]: call the dialog factory's session functions.
|
||||||
|
|
||||||
|
* app/test_commands.c: use the dialog factory to create the tabs.
|
||||||
|
|
||||||
|
* app/gui/dialogs-commands.c
|
||||||
|
* app/gui/dialogs-constructors.[ch]: the constructors return widgets,
|
||||||
|
not dockables now.
|
||||||
|
|
||||||
|
* app/widgets/gimpdialogfactory.[ch]: maintain a list of dialog
|
||||||
|
factories in the class struct. Added ugly code to do the GimpDock
|
||||||
|
session management.
|
||||||
|
|
||||||
|
* app/gui/gui.c
|
||||||
|
* app/widgets/gimpdock.c: changed accordingly.
|
||||||
|
|
||||||
2001-04-15 Michael Natterer <mitch@gimp.org>
|
2001-04-15 Michael Natterer <mitch@gimp.org>
|
||||||
|
|
||||||
* app/gui/Makefile.am: new files:
|
* app/gui/Makefile.am: new files:
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
#include "widgets/gimpdialogfactory.h"
|
#include "widgets/gimpdialogfactory.h"
|
||||||
#include "widgets/gimpdock.h"
|
#include "widgets/gimpdock.h"
|
||||||
|
#include "widgets/gimpdockable.h"
|
||||||
#include "widgets/gimpdockbook.h"
|
#include "widgets/gimpdockbook.h"
|
||||||
|
|
||||||
#include "dialogs-commands.h"
|
#include "dialogs-commands.h"
|
||||||
@ -40,13 +41,13 @@ dialogs_add_tab_cmd_callback (GtkWidget *widget,
|
|||||||
|
|
||||||
if (dockbook && action)
|
if (dockbook && action)
|
||||||
{
|
{
|
||||||
GimpDockable *dockable;
|
GtkWidget *dockable;
|
||||||
|
|
||||||
dockable = gimp_dialog_factory_dialog_new (dockbook->dock->factory,
|
dockable = gimp_dialog_factory_dialog_new (dockbook->dock->factory,
|
||||||
GUINT_TO_POINTER (action));
|
GUINT_TO_POINTER (action));
|
||||||
|
|
||||||
if (dockable)
|
if (dockable)
|
||||||
gimp_dockbook_add (dockbook, dockable, -1);
|
gimp_dockbook_add (dockbook, GIMP_DOCKABLE (dockable), -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ static GtkWidget * dialogs_palette_tab_func (GimpDockable *dockable,
|
|||||||
GimpDockbook *dockbook,
|
GimpDockbook *dockbook,
|
||||||
gint size);
|
gint size);
|
||||||
|
|
||||||
static GimpDockable * dialogs_dockable_new (GtkWidget *widget,
|
static GtkWidget * dialogs_dockable_new (GtkWidget *widget,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
const gchar *short_name,
|
const gchar *short_name,
|
||||||
GimpDockableGetTabFunc get_tab_func);
|
GimpDockableGetTabFunc get_tab_func);
|
||||||
@ -67,7 +67,7 @@ static GimpDockable * dialogs_dockable_new (GtkWidget *widget,
|
|||||||
|
|
||||||
/* public functions */
|
/* public functions */
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_image_list_view_new (GimpDialogFactory *factory)
|
dialogs_image_list_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -82,7 +82,7 @@ dialogs_image_list_view_new (GimpDialogFactory *factory)
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_brush_list_view_new (GimpDialogFactory *factory)
|
dialogs_brush_list_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -99,7 +99,7 @@ dialogs_brush_list_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_brush_tab_func);
|
dialogs_brush_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_pattern_list_view_new (GimpDialogFactory *factory)
|
dialogs_pattern_list_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -116,7 +116,7 @@ dialogs_pattern_list_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_pattern_tab_func);
|
dialogs_pattern_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_gradient_list_view_new (GimpDialogFactory *factory)
|
dialogs_gradient_list_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -133,7 +133,7 @@ dialogs_gradient_list_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_gradient_tab_func);
|
dialogs_gradient_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_palette_list_view_new (GimpDialogFactory *factory)
|
dialogs_palette_list_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -150,7 +150,7 @@ dialogs_palette_list_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_palette_tab_func);
|
dialogs_palette_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_tool_list_view_new (GimpDialogFactory *factory)
|
dialogs_tool_list_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -168,7 +168,7 @@ dialogs_tool_list_view_new (GimpDialogFactory *factory)
|
|||||||
|
|
||||||
/* grid views */
|
/* grid views */
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_image_grid_view_new (GimpDialogFactory *factory)
|
dialogs_image_grid_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -183,7 +183,7 @@ dialogs_image_grid_view_new (GimpDialogFactory *factory)
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_brush_grid_view_new (GimpDialogFactory *factory)
|
dialogs_brush_grid_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -200,7 +200,7 @@ dialogs_brush_grid_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_brush_tab_func);
|
dialogs_brush_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_pattern_grid_view_new (GimpDialogFactory *factory)
|
dialogs_pattern_grid_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -217,7 +217,7 @@ dialogs_pattern_grid_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_pattern_tab_func);
|
dialogs_pattern_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_gradient_grid_view_new (GimpDialogFactory *factory)
|
dialogs_gradient_grid_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -234,7 +234,7 @@ dialogs_gradient_grid_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_gradient_tab_func);
|
dialogs_gradient_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_palette_grid_view_new (GimpDialogFactory *factory)
|
dialogs_palette_grid_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -251,7 +251,7 @@ dialogs_palette_grid_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_palette_tab_func);
|
dialogs_palette_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_tool_grid_view_new (GimpDialogFactory *factory)
|
dialogs_tool_grid_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -365,7 +365,7 @@ dialogs_palette_tab_func (GimpDockable *dockable,
|
|||||||
return preview;
|
return preview;
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_dockable_new (GtkWidget *widget,
|
dialogs_dockable_new (GtkWidget *widget,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
const gchar *short_name,
|
const gchar *short_name,
|
||||||
@ -380,5 +380,5 @@ dialogs_dockable_new (GtkWidget *widget,
|
|||||||
gtk_container_add (GTK_CONTAINER (dockable), widget);
|
gtk_container_add (GTK_CONTAINER (dockable), widget);
|
||||||
gtk_widget_show (widget);
|
gtk_widget_show (widget);
|
||||||
|
|
||||||
return GIMP_DOCKABLE (dockable);
|
return dockable;
|
||||||
}
|
}
|
||||||
|
@ -20,19 +20,19 @@
|
|||||||
#define __DIALOGS_CONSTRUCTORS_H__
|
#define __DIALOGS_CONSTRUCTORS_H__
|
||||||
|
|
||||||
|
|
||||||
GimpDockable * dialogs_image_list_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_image_list_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_brush_list_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_brush_list_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_pattern_list_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_pattern_list_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_gradient_list_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_gradient_list_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_palette_list_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_palette_list_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_tool_list_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_tool_list_view_new (GimpDialogFactory *factory);
|
||||||
|
|
||||||
GimpDockable * dialogs_image_grid_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_image_grid_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_brush_grid_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_brush_grid_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_pattern_grid_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_pattern_grid_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_gradient_grid_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_gradient_grid_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_palette_grid_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_palette_grid_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_tool_grid_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_tool_grid_view_new (GimpDialogFactory *factory);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __DIALOGS_CONSTRUCTORS_H__ */
|
#endif /* __DIALOGS_CONSTRUCTORS_H__ */
|
||||||
|
@ -32,53 +32,75 @@
|
|||||||
|
|
||||||
|
|
||||||
GimpDialogFactory *global_dialog_factory = NULL;
|
GimpDialogFactory *global_dialog_factory = NULL;
|
||||||
|
GimpDialogFactory *global_dock_factory = NULL;
|
||||||
|
GimpDialogFactory *global_image_dock_factory = NULL;
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
dialogs_register (void)
|
dialogs_init (void)
|
||||||
{
|
{
|
||||||
GtkItemFactory *item_factory;
|
global_dialog_factory =
|
||||||
|
gimp_dialog_factory_new ("toplevel",
|
||||||
|
gimp_context_get_user (),
|
||||||
|
NULL);
|
||||||
|
|
||||||
item_factory = menus_get_dialogs_factory ();
|
global_dock_factory =
|
||||||
|
gimp_dialog_factory_new ("dock",
|
||||||
|
gimp_context_get_user (),
|
||||||
|
menus_get_dialogs_factory ());
|
||||||
|
|
||||||
global_dialog_factory = gimp_dialog_factory_new (gimp_context_get_user (),
|
global_image_dock_factory =
|
||||||
item_factory);
|
gimp_dialog_factory_new ("image-dock",
|
||||||
|
gimp_context_get_user (),
|
||||||
|
NULL);
|
||||||
|
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:image_list",
|
"gimp:image-list",
|
||||||
dialogs_image_list_view_new);
|
dialogs_image_list_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:brush_list",
|
"gimp:brush-list",
|
||||||
dialogs_brush_list_view_new);
|
dialogs_brush_list_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:pattern_list",
|
"gimp:pattern-list",
|
||||||
dialogs_pattern_list_view_new);
|
dialogs_pattern_list_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:gradient_list",
|
"gimp:gradient-list",
|
||||||
dialogs_gradient_list_view_new);
|
dialogs_gradient_list_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:palette_list",
|
"gimp:palette-list",
|
||||||
dialogs_palette_list_view_new);
|
dialogs_palette_list_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:tool_list",
|
"gimp:tool-list",
|
||||||
dialogs_tool_list_view_new);
|
dialogs_tool_list_view_new);
|
||||||
|
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:image_grid",
|
"gimp:image-grid",
|
||||||
dialogs_image_grid_view_new);
|
dialogs_image_grid_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:brush_grid",
|
"gimp:brush-grid",
|
||||||
dialogs_brush_grid_view_new);
|
dialogs_brush_grid_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:pattern_grid",
|
"gimp:pattern-grid",
|
||||||
dialogs_pattern_grid_view_new);
|
dialogs_pattern_grid_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:gradient_grid",
|
"gimp:gradient-grid",
|
||||||
dialogs_gradient_grid_view_new);
|
dialogs_gradient_grid_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:palette_grid",
|
"gimp:palette-grid",
|
||||||
dialogs_palette_grid_view_new);
|
dialogs_palette_grid_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:tool_grid",
|
"gimp:tool-grid",
|
||||||
dialogs_tool_grid_view_new);
|
dialogs_tool_grid_view_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dialogs_exit (void)
|
||||||
|
{
|
||||||
|
gtk_object_unref (GTK_OBJECT (global_dialog_factory));
|
||||||
|
gtk_object_unref (GTK_OBJECT (global_dock_factory));
|
||||||
|
gtk_object_unref (GTK_OBJECT (global_image_dock_factory));
|
||||||
|
|
||||||
|
global_dialog_factory = NULL;
|
||||||
|
global_dock_factory = NULL;
|
||||||
|
global_image_dock_factory = NULL;
|
||||||
|
}
|
||||||
|
@ -21,9 +21,12 @@
|
|||||||
|
|
||||||
|
|
||||||
extern GimpDialogFactory *global_dialog_factory;
|
extern GimpDialogFactory *global_dialog_factory;
|
||||||
|
extern GimpDialogFactory *global_dock_factory;
|
||||||
|
extern GimpDialogFactory *global_image_dock_factory;
|
||||||
|
|
||||||
|
|
||||||
void dialogs_register (void);
|
void dialogs_init (void);
|
||||||
|
void dialogs_exit (void);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __DIALOGS_H__ */
|
#endif /* __DIALOGS_H__ */
|
||||||
|
162
app/gimprc.c
162
app/gimprc.c
@ -40,6 +40,8 @@
|
|||||||
#include "tools/gimptool.h"
|
#include "tools/gimptool.h"
|
||||||
#include "tools/gimptoolinfo.h"
|
#include "tools/gimptoolinfo.h"
|
||||||
|
|
||||||
|
#include "widgets/gimpdialogfactory.h"
|
||||||
|
|
||||||
#include "app_procs.h"
|
#include "app_procs.h"
|
||||||
#include "appenv.h"
|
#include "appenv.h"
|
||||||
#include "color_notebook.h"
|
#include "color_notebook.h"
|
||||||
@ -92,6 +94,7 @@ typedef enum
|
|||||||
TT_XMENUPATH,
|
TT_XMENUPATH,
|
||||||
TT_XDEVICE,
|
TT_XDEVICE,
|
||||||
TT_XSESSIONINFO,
|
TT_XSESSIONINFO,
|
||||||
|
TT_XNEWSESSIONINFO,
|
||||||
TT_XCOLORHISTORY,
|
TT_XCOLORHISTORY,
|
||||||
TT_XUNITINFO,
|
TT_XUNITINFO,
|
||||||
TT_XPARASITE,
|
TT_XPARASITE,
|
||||||
@ -143,6 +146,7 @@ static gint parse_plug_in_def (gpointer val1p, gpointer val2p)
|
|||||||
static gint parse_device (gpointer val1p, gpointer val2p);
|
static gint parse_device (gpointer val1p, gpointer val2p);
|
||||||
static gint parse_menu_path (gpointer val1p, gpointer val2p);
|
static gint parse_menu_path (gpointer val1p, gpointer val2p);
|
||||||
static gint parse_session_info (gpointer val1p, gpointer val2p);
|
static gint parse_session_info (gpointer val1p, gpointer val2p);
|
||||||
|
static gint parse_new_session_info (gpointer val1p, gpointer val2p);
|
||||||
static gint parse_unit_info (gpointer val1p, gpointer val2p);
|
static gint parse_unit_info (gpointer val1p, gpointer val2p);
|
||||||
static gint parse_parasite (gpointer val1p, gpointer val2p);
|
static gint parse_parasite (gpointer val1p, gpointer val2p);
|
||||||
static gint parse_help_browser (gpointer val1p, gpointer val2p);
|
static gint parse_help_browser (gpointer val1p, gpointer val2p);
|
||||||
@ -327,6 +331,7 @@ static ParseFunc funcs[] =
|
|||||||
{ "menu-path", TT_XMENUPATH, NULL, NULL },
|
{ "menu-path", TT_XMENUPATH, NULL, NULL },
|
||||||
{ "device", TT_XDEVICE, NULL, NULL },
|
{ "device", TT_XDEVICE, NULL, NULL },
|
||||||
{ "session-info", TT_XSESSIONINFO, NULL, NULL },
|
{ "session-info", TT_XSESSIONINFO, NULL, NULL },
|
||||||
|
{ "new-session-info", TT_XNEWSESSIONINFO, NULL, NULL },
|
||||||
{ "color-history", TT_XCOLORHISTORY, NULL, NULL },
|
{ "color-history", TT_XCOLORHISTORY, NULL, NULL },
|
||||||
{ "unit-info", TT_XUNITINFO, NULL, NULL },
|
{ "unit-info", TT_XUNITINFO, NULL, NULL },
|
||||||
{ "monitor-xresolution", TT_DOUBLE, &monitor_xres, NULL },
|
{ "monitor-xresolution", TT_DOUBLE, &monitor_xres, NULL },
|
||||||
@ -357,24 +362,6 @@ static gint n_funcs = (sizeof (funcs) /
|
|||||||
sizeof (funcs[0]));
|
sizeof (funcs[0]));
|
||||||
|
|
||||||
|
|
||||||
static SessionInfo *session_infos[] =
|
|
||||||
{
|
|
||||||
&toolbox_session_info,
|
|
||||||
&lc_dialog_session_info,
|
|
||||||
&info_dialog_session_info,
|
|
||||||
&tool_options_session_info,
|
|
||||||
&palette_session_info,
|
|
||||||
&brush_select_session_info,
|
|
||||||
&pattern_select_session_info,
|
|
||||||
&gradient_select_session_info,
|
|
||||||
&device_status_session_info,
|
|
||||||
&error_console_session_info,
|
|
||||||
&document_index_session_info
|
|
||||||
};
|
|
||||||
static gint n_session_infos = (sizeof (session_infos) /
|
|
||||||
sizeof (session_infos[0]));
|
|
||||||
|
|
||||||
|
|
||||||
static ParseInfo parse_info = { NULL };
|
static ParseInfo parse_info = { NULL };
|
||||||
|
|
||||||
static GList *unknown_tokens = NULL;
|
static GList *unknown_tokens = NULL;
|
||||||
@ -907,6 +894,8 @@ parse_statement (void)
|
|||||||
return parse_device (funcs[i].val1p, funcs[i].val2p);
|
return parse_device (funcs[i].val1p, funcs[i].val2p);
|
||||||
case TT_XSESSIONINFO:
|
case TT_XSESSIONINFO:
|
||||||
return parse_session_info (funcs[i].val1p, funcs[i].val2p);
|
return parse_session_info (funcs[i].val1p, funcs[i].val2p);
|
||||||
|
case TT_XNEWSESSIONINFO:
|
||||||
|
return parse_new_session_info (funcs[i].val1p, funcs[i].val2p);
|
||||||
case TT_XCOLORHISTORY:
|
case TT_XCOLORHISTORY:
|
||||||
return parse_color_history (funcs[i].val1p, funcs[i].val2p);
|
return parse_color_history (funcs[i].val1p, funcs[i].val2p);
|
||||||
case TT_XUNITINFO:
|
case TT_XUNITINFO:
|
||||||
@ -2336,6 +2325,24 @@ parse_session_info (gpointer val1p,
|
|||||||
gint token;
|
gint token;
|
||||||
SessionInfo *info = NULL;
|
SessionInfo *info = NULL;
|
||||||
|
|
||||||
|
static SessionInfo *session_infos[] =
|
||||||
|
{
|
||||||
|
&toolbox_session_info,
|
||||||
|
&lc_dialog_session_info,
|
||||||
|
&info_dialog_session_info,
|
||||||
|
&tool_options_session_info,
|
||||||
|
&palette_session_info,
|
||||||
|
&brush_select_session_info,
|
||||||
|
&pattern_select_session_info,
|
||||||
|
&gradient_select_session_info,
|
||||||
|
&device_status_session_info,
|
||||||
|
&error_console_session_info,
|
||||||
|
&document_index_session_info
|
||||||
|
};
|
||||||
|
static gint n_session_infos = (sizeof (session_infos) /
|
||||||
|
sizeof (session_infos[0]));
|
||||||
|
|
||||||
|
|
||||||
token = peek_next_token ();
|
token = peek_next_token ();
|
||||||
if (!token || (token != TOKEN_STRING))
|
if (!token || (token != TOKEN_STRING))
|
||||||
return ERROR;
|
return ERROR;
|
||||||
@ -2409,6 +2416,124 @@ parse_session_info (gpointer val1p,
|
|||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gint
|
||||||
|
parse_new_session_info (gpointer val1p,
|
||||||
|
gpointer val2p)
|
||||||
|
{
|
||||||
|
gint token;
|
||||||
|
GimpDialogFactory *factory;
|
||||||
|
GimpSessionInfo *info = NULL;
|
||||||
|
|
||||||
|
token = peek_next_token ();
|
||||||
|
if (!token || (token != TOKEN_STRING))
|
||||||
|
goto error;
|
||||||
|
token = get_next_token ();
|
||||||
|
|
||||||
|
factory = gimp_dialog_factory_from_name (token_str);
|
||||||
|
|
||||||
|
if (! factory)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
token = peek_next_token ();
|
||||||
|
if (!token || (token != TOKEN_STRING))
|
||||||
|
goto error;
|
||||||
|
token = get_next_token ();
|
||||||
|
|
||||||
|
info = g_new0 (GimpSessionInfo, 1);
|
||||||
|
|
||||||
|
/* Parse options for session info */
|
||||||
|
|
||||||
|
while (peek_next_token () == TOKEN_LEFT_PAREN)
|
||||||
|
{
|
||||||
|
token = get_next_token ();
|
||||||
|
|
||||||
|
token = peek_next_token ();
|
||||||
|
if (!token || (token != TOKEN_SYMBOL))
|
||||||
|
goto error;
|
||||||
|
token = get_next_token ();
|
||||||
|
|
||||||
|
if (!strcmp ("position", token_sym))
|
||||||
|
{
|
||||||
|
token = peek_next_token ();
|
||||||
|
if (!token || (token != TOKEN_NUMBER))
|
||||||
|
goto error;
|
||||||
|
token = get_next_token ();
|
||||||
|
info->x = token_int;
|
||||||
|
|
||||||
|
token = peek_next_token ();
|
||||||
|
if (!token || (token != TOKEN_NUMBER))
|
||||||
|
goto error;
|
||||||
|
token = get_next_token ();
|
||||||
|
info->y = token_int;
|
||||||
|
}
|
||||||
|
else if (!strcmp ("size", token_sym))
|
||||||
|
{
|
||||||
|
token = peek_next_token ();
|
||||||
|
if (!token || (token != TOKEN_NUMBER))
|
||||||
|
goto error;
|
||||||
|
token = get_next_token ();
|
||||||
|
info->width = token_int;
|
||||||
|
|
||||||
|
token = peek_next_token ();
|
||||||
|
if (!token || (token != TOKEN_NUMBER))
|
||||||
|
goto error;
|
||||||
|
token = get_next_token ();
|
||||||
|
info->height = token_int;
|
||||||
|
}
|
||||||
|
else if (!strcmp ("open-on-exit", token_sym))
|
||||||
|
{
|
||||||
|
info->open = TRUE;
|
||||||
|
}
|
||||||
|
else if (!strcmp ("dock", token_sym))
|
||||||
|
{
|
||||||
|
while (peek_next_token () == TOKEN_LEFT_PAREN)
|
||||||
|
{
|
||||||
|
token = get_next_token ();
|
||||||
|
|
||||||
|
info->sub_dialogs = g_list_prepend (info->sub_dialogs, NULL);
|
||||||
|
|
||||||
|
while (peek_next_token () == TOKEN_STRING)
|
||||||
|
{
|
||||||
|
token = get_next_token ();
|
||||||
|
|
||||||
|
info->sub_dialogs->data =
|
||||||
|
g_list_append (info->sub_dialogs->data,
|
||||||
|
g_strdup (token_str));
|
||||||
|
}
|
||||||
|
|
||||||
|
token = peek_next_token ();
|
||||||
|
if (!token || (token != TOKEN_RIGHT_PAREN))
|
||||||
|
goto error;
|
||||||
|
token = get_next_token ();
|
||||||
|
}
|
||||||
|
|
||||||
|
info->sub_dialogs = g_list_reverse (info->sub_dialogs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
token = peek_next_token ();
|
||||||
|
if (!token || (token != TOKEN_RIGHT_PAREN))
|
||||||
|
goto error;
|
||||||
|
token = get_next_token ();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!token || (token != TOKEN_RIGHT_PAREN))
|
||||||
|
goto error;
|
||||||
|
token = get_next_token ();
|
||||||
|
|
||||||
|
factory->session_infos = g_list_append (factory->session_infos, info);
|
||||||
|
|
||||||
|
return OK;
|
||||||
|
|
||||||
|
error:
|
||||||
|
g_free (info);
|
||||||
|
|
||||||
|
return ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
parse_color_history (gpointer val1p,
|
parse_color_history (gpointer val1p,
|
||||||
gpointer val2p)
|
gpointer val2p)
|
||||||
@ -2750,6 +2875,7 @@ value_to_str (gchar *name)
|
|||||||
case TT_XMENUPATH:
|
case TT_XMENUPATH:
|
||||||
case TT_XDEVICE:
|
case TT_XDEVICE:
|
||||||
case TT_XSESSIONINFO:
|
case TT_XSESSIONINFO:
|
||||||
|
case TT_XNEWSESSIONINFO:
|
||||||
case TT_XCOLORHISTORY:
|
case TT_XCOLORHISTORY:
|
||||||
case TT_XUNITINFO:
|
case TT_XUNITINFO:
|
||||||
case TT_XPARASITE:
|
case TT_XPARASITE:
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
#include "widgets/gimpdialogfactory.h"
|
#include "widgets/gimpdialogfactory.h"
|
||||||
#include "widgets/gimpdock.h"
|
#include "widgets/gimpdock.h"
|
||||||
|
#include "widgets/gimpdockable.h"
|
||||||
#include "widgets/gimpdockbook.h"
|
#include "widgets/gimpdockbook.h"
|
||||||
|
|
||||||
#include "dialogs-commands.h"
|
#include "dialogs-commands.h"
|
||||||
@ -40,13 +41,13 @@ dialogs_add_tab_cmd_callback (GtkWidget *widget,
|
|||||||
|
|
||||||
if (dockbook && action)
|
if (dockbook && action)
|
||||||
{
|
{
|
||||||
GimpDockable *dockable;
|
GtkWidget *dockable;
|
||||||
|
|
||||||
dockable = gimp_dialog_factory_dialog_new (dockbook->dock->factory,
|
dockable = gimp_dialog_factory_dialog_new (dockbook->dock->factory,
|
||||||
GUINT_TO_POINTER (action));
|
GUINT_TO_POINTER (action));
|
||||||
|
|
||||||
if (dockable)
|
if (dockable)
|
||||||
gimp_dockbook_add (dockbook, dockable, -1);
|
gimp_dockbook_add (dockbook, GIMP_DOCKABLE (dockable), -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ static GtkWidget * dialogs_palette_tab_func (GimpDockable *dockable,
|
|||||||
GimpDockbook *dockbook,
|
GimpDockbook *dockbook,
|
||||||
gint size);
|
gint size);
|
||||||
|
|
||||||
static GimpDockable * dialogs_dockable_new (GtkWidget *widget,
|
static GtkWidget * dialogs_dockable_new (GtkWidget *widget,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
const gchar *short_name,
|
const gchar *short_name,
|
||||||
GimpDockableGetTabFunc get_tab_func);
|
GimpDockableGetTabFunc get_tab_func);
|
||||||
@ -67,7 +67,7 @@ static GimpDockable * dialogs_dockable_new (GtkWidget *widget,
|
|||||||
|
|
||||||
/* public functions */
|
/* public functions */
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_image_list_view_new (GimpDialogFactory *factory)
|
dialogs_image_list_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -82,7 +82,7 @@ dialogs_image_list_view_new (GimpDialogFactory *factory)
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_brush_list_view_new (GimpDialogFactory *factory)
|
dialogs_brush_list_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -99,7 +99,7 @@ dialogs_brush_list_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_brush_tab_func);
|
dialogs_brush_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_pattern_list_view_new (GimpDialogFactory *factory)
|
dialogs_pattern_list_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -116,7 +116,7 @@ dialogs_pattern_list_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_pattern_tab_func);
|
dialogs_pattern_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_gradient_list_view_new (GimpDialogFactory *factory)
|
dialogs_gradient_list_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -133,7 +133,7 @@ dialogs_gradient_list_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_gradient_tab_func);
|
dialogs_gradient_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_palette_list_view_new (GimpDialogFactory *factory)
|
dialogs_palette_list_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -150,7 +150,7 @@ dialogs_palette_list_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_palette_tab_func);
|
dialogs_palette_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_tool_list_view_new (GimpDialogFactory *factory)
|
dialogs_tool_list_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -168,7 +168,7 @@ dialogs_tool_list_view_new (GimpDialogFactory *factory)
|
|||||||
|
|
||||||
/* grid views */
|
/* grid views */
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_image_grid_view_new (GimpDialogFactory *factory)
|
dialogs_image_grid_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -183,7 +183,7 @@ dialogs_image_grid_view_new (GimpDialogFactory *factory)
|
|||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_brush_grid_view_new (GimpDialogFactory *factory)
|
dialogs_brush_grid_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -200,7 +200,7 @@ dialogs_brush_grid_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_brush_tab_func);
|
dialogs_brush_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_pattern_grid_view_new (GimpDialogFactory *factory)
|
dialogs_pattern_grid_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -217,7 +217,7 @@ dialogs_pattern_grid_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_pattern_tab_func);
|
dialogs_pattern_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_gradient_grid_view_new (GimpDialogFactory *factory)
|
dialogs_gradient_grid_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -234,7 +234,7 @@ dialogs_gradient_grid_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_gradient_tab_func);
|
dialogs_gradient_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_palette_grid_view_new (GimpDialogFactory *factory)
|
dialogs_palette_grid_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -251,7 +251,7 @@ dialogs_palette_grid_view_new (GimpDialogFactory *factory)
|
|||||||
dialogs_palette_tab_func);
|
dialogs_palette_tab_func);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_tool_grid_view_new (GimpDialogFactory *factory)
|
dialogs_tool_grid_view_new (GimpDialogFactory *factory)
|
||||||
{
|
{
|
||||||
GtkWidget *view;
|
GtkWidget *view;
|
||||||
@ -365,7 +365,7 @@ dialogs_palette_tab_func (GimpDockable *dockable,
|
|||||||
return preview;
|
return preview;
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
dialogs_dockable_new (GtkWidget *widget,
|
dialogs_dockable_new (GtkWidget *widget,
|
||||||
const gchar *name,
|
const gchar *name,
|
||||||
const gchar *short_name,
|
const gchar *short_name,
|
||||||
@ -380,5 +380,5 @@ dialogs_dockable_new (GtkWidget *widget,
|
|||||||
gtk_container_add (GTK_CONTAINER (dockable), widget);
|
gtk_container_add (GTK_CONTAINER (dockable), widget);
|
||||||
gtk_widget_show (widget);
|
gtk_widget_show (widget);
|
||||||
|
|
||||||
return GIMP_DOCKABLE (dockable);
|
return dockable;
|
||||||
}
|
}
|
||||||
|
@ -20,19 +20,19 @@
|
|||||||
#define __DIALOGS_CONSTRUCTORS_H__
|
#define __DIALOGS_CONSTRUCTORS_H__
|
||||||
|
|
||||||
|
|
||||||
GimpDockable * dialogs_image_list_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_image_list_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_brush_list_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_brush_list_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_pattern_list_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_pattern_list_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_gradient_list_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_gradient_list_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_palette_list_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_palette_list_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_tool_list_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_tool_list_view_new (GimpDialogFactory *factory);
|
||||||
|
|
||||||
GimpDockable * dialogs_image_grid_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_image_grid_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_brush_grid_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_brush_grid_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_pattern_grid_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_pattern_grid_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_gradient_grid_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_gradient_grid_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_palette_grid_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_palette_grid_view_new (GimpDialogFactory *factory);
|
||||||
GimpDockable * dialogs_tool_grid_view_new (GimpDialogFactory *factory);
|
GtkWidget * dialogs_tool_grid_view_new (GimpDialogFactory *factory);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __DIALOGS_CONSTRUCTORS_H__ */
|
#endif /* __DIALOGS_CONSTRUCTORS_H__ */
|
||||||
|
@ -32,53 +32,75 @@
|
|||||||
|
|
||||||
|
|
||||||
GimpDialogFactory *global_dialog_factory = NULL;
|
GimpDialogFactory *global_dialog_factory = NULL;
|
||||||
|
GimpDialogFactory *global_dock_factory = NULL;
|
||||||
|
GimpDialogFactory *global_image_dock_factory = NULL;
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
dialogs_register (void)
|
dialogs_init (void)
|
||||||
{
|
{
|
||||||
GtkItemFactory *item_factory;
|
global_dialog_factory =
|
||||||
|
gimp_dialog_factory_new ("toplevel",
|
||||||
|
gimp_context_get_user (),
|
||||||
|
NULL);
|
||||||
|
|
||||||
item_factory = menus_get_dialogs_factory ();
|
global_dock_factory =
|
||||||
|
gimp_dialog_factory_new ("dock",
|
||||||
|
gimp_context_get_user (),
|
||||||
|
menus_get_dialogs_factory ());
|
||||||
|
|
||||||
global_dialog_factory = gimp_dialog_factory_new (gimp_context_get_user (),
|
global_image_dock_factory =
|
||||||
item_factory);
|
gimp_dialog_factory_new ("image-dock",
|
||||||
|
gimp_context_get_user (),
|
||||||
|
NULL);
|
||||||
|
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:image_list",
|
"gimp:image-list",
|
||||||
dialogs_image_list_view_new);
|
dialogs_image_list_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:brush_list",
|
"gimp:brush-list",
|
||||||
dialogs_brush_list_view_new);
|
dialogs_brush_list_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:pattern_list",
|
"gimp:pattern-list",
|
||||||
dialogs_pattern_list_view_new);
|
dialogs_pattern_list_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:gradient_list",
|
"gimp:gradient-list",
|
||||||
dialogs_gradient_list_view_new);
|
dialogs_gradient_list_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:palette_list",
|
"gimp:palette-list",
|
||||||
dialogs_palette_list_view_new);
|
dialogs_palette_list_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:tool_list",
|
"gimp:tool-list",
|
||||||
dialogs_tool_list_view_new);
|
dialogs_tool_list_view_new);
|
||||||
|
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:image_grid",
|
"gimp:image-grid",
|
||||||
dialogs_image_grid_view_new);
|
dialogs_image_grid_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:brush_grid",
|
"gimp:brush-grid",
|
||||||
dialogs_brush_grid_view_new);
|
dialogs_brush_grid_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:pattern_grid",
|
"gimp:pattern-grid",
|
||||||
dialogs_pattern_grid_view_new);
|
dialogs_pattern_grid_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:gradient_grid",
|
"gimp:gradient-grid",
|
||||||
dialogs_gradient_grid_view_new);
|
dialogs_gradient_grid_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:palette_grid",
|
"gimp:palette-grid",
|
||||||
dialogs_palette_grid_view_new);
|
dialogs_palette_grid_view_new);
|
||||||
gimp_dialog_factory_register (global_dialog_factory,
|
gimp_dialog_factory_register (global_dock_factory,
|
||||||
"gimp:tool_grid",
|
"gimp:tool-grid",
|
||||||
dialogs_tool_grid_view_new);
|
dialogs_tool_grid_view_new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
dialogs_exit (void)
|
||||||
|
{
|
||||||
|
gtk_object_unref (GTK_OBJECT (global_dialog_factory));
|
||||||
|
gtk_object_unref (GTK_OBJECT (global_dock_factory));
|
||||||
|
gtk_object_unref (GTK_OBJECT (global_image_dock_factory));
|
||||||
|
|
||||||
|
global_dialog_factory = NULL;
|
||||||
|
global_dock_factory = NULL;
|
||||||
|
global_image_dock_factory = NULL;
|
||||||
|
}
|
||||||
|
@ -21,9 +21,12 @@
|
|||||||
|
|
||||||
|
|
||||||
extern GimpDialogFactory *global_dialog_factory;
|
extern GimpDialogFactory *global_dialog_factory;
|
||||||
|
extern GimpDialogFactory *global_dock_factory;
|
||||||
|
extern GimpDialogFactory *global_image_dock_factory;
|
||||||
|
|
||||||
|
|
||||||
void dialogs_register (void);
|
void dialogs_init (void);
|
||||||
|
void dialogs_exit (void);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __DIALOGS_H__ */
|
#endif /* __DIALOGS_H__ */
|
||||||
|
@ -59,7 +59,7 @@ gui_init (void)
|
|||||||
gximage_init ();
|
gximage_init ();
|
||||||
render_setup (transparency_type, transparency_size);
|
render_setup (transparency_type, transparency_size);
|
||||||
|
|
||||||
dialogs_register ();
|
dialogs_init ();
|
||||||
|
|
||||||
devices_init ();
|
devices_init ();
|
||||||
session_init ();
|
session_init ();
|
||||||
@ -120,6 +120,7 @@ gui_exit (void)
|
|||||||
render_free ();
|
render_free ();
|
||||||
tool_options_dialog_free ();
|
tool_options_dialog_free ();
|
||||||
save_sessionrc ();
|
save_sessionrc ();
|
||||||
|
dialogs_exit ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -834,44 +834,44 @@ static GimpItemFactoryEntry dialogs_entries[] =
|
|||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
|
|
||||||
{ { N_("/Add Tab/Image List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Image List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:image_list") },
|
GPOINTER_TO_UINT ("gimp:image-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Brush List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Brush List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:brush_list") },
|
GPOINTER_TO_UINT ("gimp:brush-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Pattern List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Pattern List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:pattern_list") },
|
GPOINTER_TO_UINT ("gimp:pattern-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Gradient List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Gradient List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:gradient_list") },
|
GPOINTER_TO_UINT ("gimp:gradient-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Palette List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Palette List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:palette_list") },
|
GPOINTER_TO_UINT ("gimp:palette-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Tool List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Tool List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:tool_list") },
|
GPOINTER_TO_UINT ("gimp:tool-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
|
|
||||||
{ { "/Add Tab/---", NULL, NULL, 0, "<Separator>" },
|
{ { "/Add Tab/---", NULL, NULL, 0, "<Separator>" },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
|
|
||||||
{ { N_("/Add Tab/Image Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Image Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:image_grid") },
|
GPOINTER_TO_UINT ("gimp:image-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Brush Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Brush Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:brush_grid") },
|
GPOINTER_TO_UINT ("gimp:brush-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Pattern Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Pattern Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:pattern_grid") },
|
GPOINTER_TO_UINT ("gimp:pattern-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Gradient Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Gradient Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:gradient_grid") },
|
GPOINTER_TO_UINT ("gimp:gradient-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Palette Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Palette Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:palette_grid") },
|
GPOINTER_TO_UINT ("gimp:palette-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Tool Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Tool Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:tool_grid") },
|
GPOINTER_TO_UINT ("gimp:tool-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
};
|
};
|
||||||
static guint n_dialogs_entries = (sizeof (dialogs_entries) /
|
static guint n_dialogs_entries = (sizeof (dialogs_entries) /
|
||||||
|
@ -49,6 +49,8 @@
|
|||||||
|
|
||||||
#include "apptypes.h"
|
#include "apptypes.h"
|
||||||
|
|
||||||
|
#include "widgets/gimpdialogfactory.h"
|
||||||
|
|
||||||
#include "app_procs.h"
|
#include "app_procs.h"
|
||||||
#include "appenv.h"
|
#include "appenv.h"
|
||||||
#include "color_notebook.h"
|
#include "color_notebook.h"
|
||||||
@ -73,6 +75,7 @@ GList *session_info_updates = NULL;
|
|||||||
|
|
||||||
|
|
||||||
/* global session variables */
|
/* global session variables */
|
||||||
|
|
||||||
SessionInfo toolbox_session_info =
|
SessionInfo toolbox_session_info =
|
||||||
{
|
{
|
||||||
"toolbox",
|
"toolbox",
|
||||||
@ -262,6 +265,8 @@ save_sessionrc (void)
|
|||||||
/* save window geometries */
|
/* save window geometries */
|
||||||
g_list_foreach (session_info_updates, (GFunc) sessionrc_write_info, fp);
|
g_list_foreach (session_info_updates, (GFunc) sessionrc_write_info, fp);
|
||||||
|
|
||||||
|
gimp_dialog_factories_session_save (fp);
|
||||||
|
|
||||||
/* save last tip shown */
|
/* save last tip shown */
|
||||||
fprintf (fp, "(last-tip-shown %d)\n\n", last_tip + 1);
|
fprintf (fp, "(last-tip-shown %d)\n\n", last_tip + 1);
|
||||||
|
|
||||||
@ -306,9 +311,13 @@ session_restore (void)
|
|||||||
|
|
||||||
/* reset the open state in the session_infos */
|
/* reset the open state in the session_infos */
|
||||||
g_list_foreach (session_info_updates, (GFunc)session_reset_open_state, NULL);
|
g_list_foreach (session_info_updates, (GFunc)session_reset_open_state, NULL);
|
||||||
|
|
||||||
|
gimp_dialog_factories_session_restore ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* internal function */
|
|
||||||
|
/* private functions */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
sessionrc_write_info (SessionInfo *info,
|
sessionrc_write_info (SessionInfo *info,
|
||||||
FILE *fp)
|
FILE *fp)
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "widgets/gimpcontainerlistview.h"
|
#include "widgets/gimpcontainerlistview.h"
|
||||||
#include "widgets/gimpcontainergridview.h"
|
#include "widgets/gimpcontainergridview.h"
|
||||||
#include "widgets/gimpdatafactoryview.h"
|
#include "widgets/gimpdatafactoryview.h"
|
||||||
|
#include "widgets/gimpdialogfactory.h"
|
||||||
#include "widgets/gimpdock.h"
|
#include "widgets/gimpdock.h"
|
||||||
#include "widgets/gimpdockable.h"
|
#include "widgets/gimpdockable.h"
|
||||||
#include "widgets/gimpdockbook.h"
|
#include "widgets/gimpdockbook.h"
|
||||||
@ -597,204 +598,47 @@ test_channel_list_cmd_callback (GtkWidget *widget,
|
|||||||
gimp_context_get_user ());
|
gimp_context_get_user ());
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget *
|
static void
|
||||||
test_brush_tab_func (GimpDockable *dockable,
|
test_dock_new (GimpViewType view_type)
|
||||||
GimpDockbook *dockbook,
|
|
||||||
gint size)
|
|
||||||
{
|
|
||||||
GimpContext *context;
|
|
||||||
GtkWidget *preview;
|
|
||||||
|
|
||||||
context = gimp_context_get_user ();
|
|
||||||
|
|
||||||
preview =
|
|
||||||
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_brush (context)),
|
|
||||||
size, size, 1,
|
|
||||||
FALSE, FALSE, FALSE);
|
|
||||||
|
|
||||||
gtk_signal_connect_object_while_alive
|
|
||||||
(GTK_OBJECT (context),
|
|
||||||
"brush_changed",
|
|
||||||
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
|
|
||||||
GTK_OBJECT (preview));
|
|
||||||
|
|
||||||
return preview;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GtkWidget *
|
|
||||||
test_pattern_tab_func (GimpDockable *dockable,
|
|
||||||
GimpDockbook *dockbook,
|
|
||||||
gint size)
|
|
||||||
{
|
|
||||||
GimpContext *context;
|
|
||||||
GtkWidget *preview;
|
|
||||||
|
|
||||||
context = gimp_context_get_user ();
|
|
||||||
|
|
||||||
preview =
|
|
||||||
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_pattern (context)),
|
|
||||||
size, size, 1,
|
|
||||||
FALSE, FALSE, FALSE);
|
|
||||||
|
|
||||||
gtk_signal_connect_object_while_alive
|
|
||||||
(GTK_OBJECT (context),
|
|
||||||
"pattern_changed",
|
|
||||||
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
|
|
||||||
GTK_OBJECT (preview));
|
|
||||||
|
|
||||||
return preview;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GtkWidget *
|
|
||||||
test_gradient_tab_func (GimpDockable *dockable,
|
|
||||||
GimpDockbook *dockbook,
|
|
||||||
gint size)
|
|
||||||
{
|
|
||||||
GimpContext *context;
|
|
||||||
GtkWidget *preview;
|
|
||||||
|
|
||||||
context = gimp_context_get_user ();
|
|
||||||
|
|
||||||
preview =
|
|
||||||
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_gradient (context)),
|
|
||||||
size, size, 1,
|
|
||||||
FALSE, FALSE, FALSE);
|
|
||||||
|
|
||||||
gtk_signal_connect_object_while_alive
|
|
||||||
(GTK_OBJECT (context),
|
|
||||||
"gradient_changed",
|
|
||||||
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
|
|
||||||
GTK_OBJECT (preview));
|
|
||||||
|
|
||||||
return preview;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GtkWidget *
|
|
||||||
test_palette_tab_func (GimpDockable *dockable,
|
|
||||||
GimpDockbook *dockbook,
|
|
||||||
gint size)
|
|
||||||
{
|
|
||||||
GimpContext *context;
|
|
||||||
GtkWidget *preview;
|
|
||||||
|
|
||||||
context = gimp_context_get_user ();
|
|
||||||
|
|
||||||
preview =
|
|
||||||
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_palette (context)),
|
|
||||||
size, size, 1,
|
|
||||||
FALSE, FALSE, FALSE);
|
|
||||||
|
|
||||||
gtk_signal_connect_object_while_alive
|
|
||||||
(GTK_OBJECT (context),
|
|
||||||
"palette_changed",
|
|
||||||
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
|
|
||||||
GTK_OBJECT (preview));
|
|
||||||
|
|
||||||
return preview;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
test_dock_new (GimpViewType view_type,
|
|
||||||
GimpContext *context)
|
|
||||||
{
|
{
|
||||||
GtkWidget *dock;
|
GtkWidget *dock;
|
||||||
GtkWidget *dockbook;
|
GtkWidget *dockbook;
|
||||||
GtkWidget *dockable;
|
GtkWidget *dockable;
|
||||||
GtkWidget *view;
|
|
||||||
|
|
||||||
dock = gimp_dock_new (global_dialog_factory);
|
dock = gimp_dock_new (global_dock_factory);
|
||||||
|
|
||||||
dockbook = gimp_dockbook_new ();
|
dockbook = gimp_dockbook_new ();
|
||||||
|
|
||||||
gimp_dock_add_book (GIMP_DOCK (dock), GIMP_DOCKBOOK (dockbook), 0);
|
gimp_dock_add_book (GIMP_DOCK (dock), GIMP_DOCKBOOK (dockbook), 0);
|
||||||
|
|
||||||
dockable = gimp_dockable_new (view_type == GIMP_VIEW_TYPE_LIST ?
|
dockable = gimp_dialog_factory_dialog_new (global_dock_factory,
|
||||||
"Brush List" : "Brush Grid",
|
view_type == GIMP_VIEW_TYPE_LIST ?
|
||||||
"Brushes",
|
"gimp:brush-list" :
|
||||||
test_brush_tab_func);
|
"gimp:brush-grid");
|
||||||
view = gimp_data_factory_view_new (view_type,
|
|
||||||
global_brush_factory,
|
|
||||||
NULL,
|
|
||||||
context,
|
|
||||||
32,
|
|
||||||
5, 3);
|
|
||||||
gtk_container_add (GTK_CONTAINER (dockable), view);
|
|
||||||
gtk_widget_show (view);
|
|
||||||
|
|
||||||
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
||||||
|
|
||||||
dockable = gimp_dockable_new (view_type == GIMP_VIEW_TYPE_LIST ?
|
dockable = gimp_dialog_factory_dialog_new (global_dock_factory,
|
||||||
"Pattern List" : "Pattern Grid",
|
view_type == GIMP_VIEW_TYPE_LIST ?
|
||||||
"Patterns",
|
"gimp:pattern-list" :
|
||||||
test_pattern_tab_func);
|
"gimp:pattern-grid");
|
||||||
view = gimp_data_factory_view_new (view_type,
|
|
||||||
global_pattern_factory,
|
|
||||||
NULL,
|
|
||||||
context,
|
|
||||||
32,
|
|
||||||
5, 3);
|
|
||||||
gtk_container_add (GTK_CONTAINER (dockable), view);
|
|
||||||
gtk_widget_show (view);
|
|
||||||
|
|
||||||
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
||||||
|
|
||||||
dockable = gimp_dockable_new (view_type == GIMP_VIEW_TYPE_LIST ?
|
dockable = gimp_dialog_factory_dialog_new (global_dock_factory,
|
||||||
"Gradient List" : "Gradient Grid",
|
view_type == GIMP_VIEW_TYPE_LIST ?
|
||||||
"Gradients",
|
"gimp:gradient-list" :
|
||||||
test_gradient_tab_func);
|
"gimp:gradient-grid");
|
||||||
view = gimp_data_factory_view_new (view_type,
|
|
||||||
global_gradient_factory,
|
|
||||||
NULL,
|
|
||||||
context,
|
|
||||||
32,
|
|
||||||
5, 3);
|
|
||||||
gtk_container_add (GTK_CONTAINER (dockable), view);
|
|
||||||
gtk_widget_show (view);
|
|
||||||
|
|
||||||
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
||||||
|
|
||||||
dockable = gimp_dockable_new (view_type == GIMP_VIEW_TYPE_LIST ?
|
dockable = gimp_dialog_factory_dialog_new (global_dock_factory,
|
||||||
"Palette List" : "Palette Grid",
|
view_type == GIMP_VIEW_TYPE_LIST ?
|
||||||
"Palettes",
|
"gimp:palette-list" :
|
||||||
test_palette_tab_func);
|
"gimp:palette-grid");
|
||||||
view = gimp_data_factory_view_new (view_type,
|
|
||||||
global_palette_factory,
|
|
||||||
NULL,
|
|
||||||
context,
|
|
||||||
32,
|
|
||||||
5, 3);
|
|
||||||
gtk_container_add (GTK_CONTAINER (dockable), view);
|
|
||||||
gtk_widget_show (view);
|
|
||||||
|
|
||||||
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
||||||
|
|
||||||
switch (view_type)
|
dockable = gimp_dialog_factory_dialog_new (global_dock_factory,
|
||||||
{
|
view_type == GIMP_VIEW_TYPE_LIST ?
|
||||||
case GIMP_VIEW_TYPE_LIST:
|
"gimp:tool-list" :
|
||||||
dockable = gimp_dockable_new ("Tool List", "Tools",
|
"gimp:tool-grid");
|
||||||
NULL);
|
|
||||||
view = gimp_container_list_view_new (global_tool_info_list,
|
|
||||||
context,
|
|
||||||
22,
|
|
||||||
5, 3);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GIMP_VIEW_TYPE_GRID:
|
|
||||||
dockable = gimp_dockable_new ("Tool Grid", "Tools",
|
|
||||||
NULL);
|
|
||||||
view = gimp_container_grid_view_new (global_tool_info_list,
|
|
||||||
context,
|
|
||||||
22,
|
|
||||||
5, 3);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
g_assert_not_reached ();
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (dockable), view);
|
|
||||||
gtk_widget_show (view);
|
|
||||||
|
|
||||||
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
||||||
|
|
||||||
gtk_widget_show (dock);
|
gtk_widget_show (dock);
|
||||||
@ -804,14 +648,12 @@ void
|
|||||||
test_list_dock_cmd_callback (GtkWidget *widget,
|
test_list_dock_cmd_callback (GtkWidget *widget,
|
||||||
gpointer client_data)
|
gpointer client_data)
|
||||||
{
|
{
|
||||||
test_dock_new (GIMP_VIEW_TYPE_LIST,
|
test_dock_new (GIMP_VIEW_TYPE_LIST);
|
||||||
gimp_context_get_user ());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
test_grid_dock_cmd_callback (GtkWidget *widget,
|
test_grid_dock_cmd_callback (GtkWidget *widget,
|
||||||
gpointer client_data)
|
gpointer client_data)
|
||||||
{
|
{
|
||||||
test_dock_new (GIMP_VIEW_TYPE_GRID,
|
test_dock_new (GIMP_VIEW_TYPE_GRID);
|
||||||
gimp_context_get_user ());
|
|
||||||
}
|
}
|
||||||
|
24
app/menus.c
24
app/menus.c
@ -834,44 +834,44 @@ static GimpItemFactoryEntry dialogs_entries[] =
|
|||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
|
|
||||||
{ { N_("/Add Tab/Image List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Image List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:image_list") },
|
GPOINTER_TO_UINT ("gimp:image-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Brush List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Brush List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:brush_list") },
|
GPOINTER_TO_UINT ("gimp:brush-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Pattern List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Pattern List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:pattern_list") },
|
GPOINTER_TO_UINT ("gimp:pattern-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Gradient List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Gradient List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:gradient_list") },
|
GPOINTER_TO_UINT ("gimp:gradient-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Palette List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Palette List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:palette_list") },
|
GPOINTER_TO_UINT ("gimp:palette-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Tool List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Tool List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:tool_list") },
|
GPOINTER_TO_UINT ("gimp:tool-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
|
|
||||||
{ { "/Add Tab/---", NULL, NULL, 0, "<Separator>" },
|
{ { "/Add Tab/---", NULL, NULL, 0, "<Separator>" },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
|
|
||||||
{ { N_("/Add Tab/Image Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Image Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:image_grid") },
|
GPOINTER_TO_UINT ("gimp:image-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Brush Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Brush Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:brush_grid") },
|
GPOINTER_TO_UINT ("gimp:brush-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Pattern Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Pattern Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:pattern_grid") },
|
GPOINTER_TO_UINT ("gimp:pattern-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Gradient Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Gradient Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:gradient_grid") },
|
GPOINTER_TO_UINT ("gimp:gradient-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Palette Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Palette Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:palette_grid") },
|
GPOINTER_TO_UINT ("gimp:palette-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Tool Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Tool Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:tool_grid") },
|
GPOINTER_TO_UINT ("gimp:tool-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
};
|
};
|
||||||
static guint n_dialogs_entries = (sizeof (dialogs_entries) /
|
static guint n_dialogs_entries = (sizeof (dialogs_entries) /
|
||||||
|
@ -834,44 +834,44 @@ static GimpItemFactoryEntry dialogs_entries[] =
|
|||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
|
|
||||||
{ { N_("/Add Tab/Image List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Image List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:image_list") },
|
GPOINTER_TO_UINT ("gimp:image-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Brush List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Brush List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:brush_list") },
|
GPOINTER_TO_UINT ("gimp:brush-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Pattern List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Pattern List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:pattern_list") },
|
GPOINTER_TO_UINT ("gimp:pattern-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Gradient List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Gradient List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:gradient_list") },
|
GPOINTER_TO_UINT ("gimp:gradient-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Palette List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Palette List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:palette_list") },
|
GPOINTER_TO_UINT ("gimp:palette-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Tool List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Tool List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:tool_list") },
|
GPOINTER_TO_UINT ("gimp:tool-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
|
|
||||||
{ { "/Add Tab/---", NULL, NULL, 0, "<Separator>" },
|
{ { "/Add Tab/---", NULL, NULL, 0, "<Separator>" },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
|
|
||||||
{ { N_("/Add Tab/Image Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Image Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:image_grid") },
|
GPOINTER_TO_UINT ("gimp:image-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Brush Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Brush Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:brush_grid") },
|
GPOINTER_TO_UINT ("gimp:brush-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Pattern Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Pattern Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:pattern_grid") },
|
GPOINTER_TO_UINT ("gimp:pattern-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Gradient Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Gradient Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:gradient_grid") },
|
GPOINTER_TO_UINT ("gimp:gradient-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Palette Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Palette Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:palette_grid") },
|
GPOINTER_TO_UINT ("gimp:palette-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Tool Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Tool Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:tool_grid") },
|
GPOINTER_TO_UINT ("gimp:tool-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
};
|
};
|
||||||
static guint n_dialogs_entries = (sizeof (dialogs_entries) /
|
static guint n_dialogs_entries = (sizeof (dialogs_entries) /
|
||||||
|
@ -49,6 +49,8 @@
|
|||||||
|
|
||||||
#include "apptypes.h"
|
#include "apptypes.h"
|
||||||
|
|
||||||
|
#include "widgets/gimpdialogfactory.h"
|
||||||
|
|
||||||
#include "app_procs.h"
|
#include "app_procs.h"
|
||||||
#include "appenv.h"
|
#include "appenv.h"
|
||||||
#include "color_notebook.h"
|
#include "color_notebook.h"
|
||||||
@ -73,6 +75,7 @@ GList *session_info_updates = NULL;
|
|||||||
|
|
||||||
|
|
||||||
/* global session variables */
|
/* global session variables */
|
||||||
|
|
||||||
SessionInfo toolbox_session_info =
|
SessionInfo toolbox_session_info =
|
||||||
{
|
{
|
||||||
"toolbox",
|
"toolbox",
|
||||||
@ -262,6 +265,8 @@ save_sessionrc (void)
|
|||||||
/* save window geometries */
|
/* save window geometries */
|
||||||
g_list_foreach (session_info_updates, (GFunc) sessionrc_write_info, fp);
|
g_list_foreach (session_info_updates, (GFunc) sessionrc_write_info, fp);
|
||||||
|
|
||||||
|
gimp_dialog_factories_session_save (fp);
|
||||||
|
|
||||||
/* save last tip shown */
|
/* save last tip shown */
|
||||||
fprintf (fp, "(last-tip-shown %d)\n\n", last_tip + 1);
|
fprintf (fp, "(last-tip-shown %d)\n\n", last_tip + 1);
|
||||||
|
|
||||||
@ -306,9 +311,13 @@ session_restore (void)
|
|||||||
|
|
||||||
/* reset the open state in the session_infos */
|
/* reset the open state in the session_infos */
|
||||||
g_list_foreach (session_info_updates, (GFunc)session_reset_open_state, NULL);
|
g_list_foreach (session_info_updates, (GFunc)session_reset_open_state, NULL);
|
||||||
|
|
||||||
|
gimp_dialog_factories_session_restore ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* internal function */
|
|
||||||
|
/* private functions */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
sessionrc_write_info (SessionInfo *info,
|
sessionrc_write_info (SessionInfo *info,
|
||||||
FILE *fp)
|
FILE *fp)
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include "widgets/gimpcontainerlistview.h"
|
#include "widgets/gimpcontainerlistview.h"
|
||||||
#include "widgets/gimpcontainergridview.h"
|
#include "widgets/gimpcontainergridview.h"
|
||||||
#include "widgets/gimpdatafactoryview.h"
|
#include "widgets/gimpdatafactoryview.h"
|
||||||
|
#include "widgets/gimpdialogfactory.h"
|
||||||
#include "widgets/gimpdock.h"
|
#include "widgets/gimpdock.h"
|
||||||
#include "widgets/gimpdockable.h"
|
#include "widgets/gimpdockable.h"
|
||||||
#include "widgets/gimpdockbook.h"
|
#include "widgets/gimpdockbook.h"
|
||||||
@ -597,204 +598,47 @@ test_channel_list_cmd_callback (GtkWidget *widget,
|
|||||||
gimp_context_get_user ());
|
gimp_context_get_user ());
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkWidget *
|
static void
|
||||||
test_brush_tab_func (GimpDockable *dockable,
|
test_dock_new (GimpViewType view_type)
|
||||||
GimpDockbook *dockbook,
|
|
||||||
gint size)
|
|
||||||
{
|
|
||||||
GimpContext *context;
|
|
||||||
GtkWidget *preview;
|
|
||||||
|
|
||||||
context = gimp_context_get_user ();
|
|
||||||
|
|
||||||
preview =
|
|
||||||
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_brush (context)),
|
|
||||||
size, size, 1,
|
|
||||||
FALSE, FALSE, FALSE);
|
|
||||||
|
|
||||||
gtk_signal_connect_object_while_alive
|
|
||||||
(GTK_OBJECT (context),
|
|
||||||
"brush_changed",
|
|
||||||
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
|
|
||||||
GTK_OBJECT (preview));
|
|
||||||
|
|
||||||
return preview;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GtkWidget *
|
|
||||||
test_pattern_tab_func (GimpDockable *dockable,
|
|
||||||
GimpDockbook *dockbook,
|
|
||||||
gint size)
|
|
||||||
{
|
|
||||||
GimpContext *context;
|
|
||||||
GtkWidget *preview;
|
|
||||||
|
|
||||||
context = gimp_context_get_user ();
|
|
||||||
|
|
||||||
preview =
|
|
||||||
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_pattern (context)),
|
|
||||||
size, size, 1,
|
|
||||||
FALSE, FALSE, FALSE);
|
|
||||||
|
|
||||||
gtk_signal_connect_object_while_alive
|
|
||||||
(GTK_OBJECT (context),
|
|
||||||
"pattern_changed",
|
|
||||||
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
|
|
||||||
GTK_OBJECT (preview));
|
|
||||||
|
|
||||||
return preview;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GtkWidget *
|
|
||||||
test_gradient_tab_func (GimpDockable *dockable,
|
|
||||||
GimpDockbook *dockbook,
|
|
||||||
gint size)
|
|
||||||
{
|
|
||||||
GimpContext *context;
|
|
||||||
GtkWidget *preview;
|
|
||||||
|
|
||||||
context = gimp_context_get_user ();
|
|
||||||
|
|
||||||
preview =
|
|
||||||
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_gradient (context)),
|
|
||||||
size, size, 1,
|
|
||||||
FALSE, FALSE, FALSE);
|
|
||||||
|
|
||||||
gtk_signal_connect_object_while_alive
|
|
||||||
(GTK_OBJECT (context),
|
|
||||||
"gradient_changed",
|
|
||||||
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
|
|
||||||
GTK_OBJECT (preview));
|
|
||||||
|
|
||||||
return preview;
|
|
||||||
}
|
|
||||||
|
|
||||||
static GtkWidget *
|
|
||||||
test_palette_tab_func (GimpDockable *dockable,
|
|
||||||
GimpDockbook *dockbook,
|
|
||||||
gint size)
|
|
||||||
{
|
|
||||||
GimpContext *context;
|
|
||||||
GtkWidget *preview;
|
|
||||||
|
|
||||||
context = gimp_context_get_user ();
|
|
||||||
|
|
||||||
preview =
|
|
||||||
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_palette (context)),
|
|
||||||
size, size, 1,
|
|
||||||
FALSE, FALSE, FALSE);
|
|
||||||
|
|
||||||
gtk_signal_connect_object_while_alive
|
|
||||||
(GTK_OBJECT (context),
|
|
||||||
"palette_changed",
|
|
||||||
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
|
|
||||||
GTK_OBJECT (preview));
|
|
||||||
|
|
||||||
return preview;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
test_dock_new (GimpViewType view_type,
|
|
||||||
GimpContext *context)
|
|
||||||
{
|
{
|
||||||
GtkWidget *dock;
|
GtkWidget *dock;
|
||||||
GtkWidget *dockbook;
|
GtkWidget *dockbook;
|
||||||
GtkWidget *dockable;
|
GtkWidget *dockable;
|
||||||
GtkWidget *view;
|
|
||||||
|
|
||||||
dock = gimp_dock_new (global_dialog_factory);
|
dock = gimp_dock_new (global_dock_factory);
|
||||||
|
|
||||||
dockbook = gimp_dockbook_new ();
|
dockbook = gimp_dockbook_new ();
|
||||||
|
|
||||||
gimp_dock_add_book (GIMP_DOCK (dock), GIMP_DOCKBOOK (dockbook), 0);
|
gimp_dock_add_book (GIMP_DOCK (dock), GIMP_DOCKBOOK (dockbook), 0);
|
||||||
|
|
||||||
dockable = gimp_dockable_new (view_type == GIMP_VIEW_TYPE_LIST ?
|
dockable = gimp_dialog_factory_dialog_new (global_dock_factory,
|
||||||
"Brush List" : "Brush Grid",
|
view_type == GIMP_VIEW_TYPE_LIST ?
|
||||||
"Brushes",
|
"gimp:brush-list" :
|
||||||
test_brush_tab_func);
|
"gimp:brush-grid");
|
||||||
view = gimp_data_factory_view_new (view_type,
|
|
||||||
global_brush_factory,
|
|
||||||
NULL,
|
|
||||||
context,
|
|
||||||
32,
|
|
||||||
5, 3);
|
|
||||||
gtk_container_add (GTK_CONTAINER (dockable), view);
|
|
||||||
gtk_widget_show (view);
|
|
||||||
|
|
||||||
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
||||||
|
|
||||||
dockable = gimp_dockable_new (view_type == GIMP_VIEW_TYPE_LIST ?
|
dockable = gimp_dialog_factory_dialog_new (global_dock_factory,
|
||||||
"Pattern List" : "Pattern Grid",
|
view_type == GIMP_VIEW_TYPE_LIST ?
|
||||||
"Patterns",
|
"gimp:pattern-list" :
|
||||||
test_pattern_tab_func);
|
"gimp:pattern-grid");
|
||||||
view = gimp_data_factory_view_new (view_type,
|
|
||||||
global_pattern_factory,
|
|
||||||
NULL,
|
|
||||||
context,
|
|
||||||
32,
|
|
||||||
5, 3);
|
|
||||||
gtk_container_add (GTK_CONTAINER (dockable), view);
|
|
||||||
gtk_widget_show (view);
|
|
||||||
|
|
||||||
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
||||||
|
|
||||||
dockable = gimp_dockable_new (view_type == GIMP_VIEW_TYPE_LIST ?
|
dockable = gimp_dialog_factory_dialog_new (global_dock_factory,
|
||||||
"Gradient List" : "Gradient Grid",
|
view_type == GIMP_VIEW_TYPE_LIST ?
|
||||||
"Gradients",
|
"gimp:gradient-list" :
|
||||||
test_gradient_tab_func);
|
"gimp:gradient-grid");
|
||||||
view = gimp_data_factory_view_new (view_type,
|
|
||||||
global_gradient_factory,
|
|
||||||
NULL,
|
|
||||||
context,
|
|
||||||
32,
|
|
||||||
5, 3);
|
|
||||||
gtk_container_add (GTK_CONTAINER (dockable), view);
|
|
||||||
gtk_widget_show (view);
|
|
||||||
|
|
||||||
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
||||||
|
|
||||||
dockable = gimp_dockable_new (view_type == GIMP_VIEW_TYPE_LIST ?
|
dockable = gimp_dialog_factory_dialog_new (global_dock_factory,
|
||||||
"Palette List" : "Palette Grid",
|
view_type == GIMP_VIEW_TYPE_LIST ?
|
||||||
"Palettes",
|
"gimp:palette-list" :
|
||||||
test_palette_tab_func);
|
"gimp:palette-grid");
|
||||||
view = gimp_data_factory_view_new (view_type,
|
|
||||||
global_palette_factory,
|
|
||||||
NULL,
|
|
||||||
context,
|
|
||||||
32,
|
|
||||||
5, 3);
|
|
||||||
gtk_container_add (GTK_CONTAINER (dockable), view);
|
|
||||||
gtk_widget_show (view);
|
|
||||||
|
|
||||||
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
||||||
|
|
||||||
switch (view_type)
|
dockable = gimp_dialog_factory_dialog_new (global_dock_factory,
|
||||||
{
|
view_type == GIMP_VIEW_TYPE_LIST ?
|
||||||
case GIMP_VIEW_TYPE_LIST:
|
"gimp:tool-list" :
|
||||||
dockable = gimp_dockable_new ("Tool List", "Tools",
|
"gimp:tool-grid");
|
||||||
NULL);
|
|
||||||
view = gimp_container_list_view_new (global_tool_info_list,
|
|
||||||
context,
|
|
||||||
22,
|
|
||||||
5, 3);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GIMP_VIEW_TYPE_GRID:
|
|
||||||
dockable = gimp_dockable_new ("Tool Grid", "Tools",
|
|
||||||
NULL);
|
|
||||||
view = gimp_container_grid_view_new (global_tool_info_list,
|
|
||||||
context,
|
|
||||||
22,
|
|
||||||
5, 3);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
g_assert_not_reached ();
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (dockable), view);
|
|
||||||
gtk_widget_show (view);
|
|
||||||
|
|
||||||
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
gimp_dock_add (GIMP_DOCK (dock), GIMP_DOCKABLE (dockable), -1, -1);
|
||||||
|
|
||||||
gtk_widget_show (dock);
|
gtk_widget_show (dock);
|
||||||
@ -804,14 +648,12 @@ void
|
|||||||
test_list_dock_cmd_callback (GtkWidget *widget,
|
test_list_dock_cmd_callback (GtkWidget *widget,
|
||||||
gpointer client_data)
|
gpointer client_data)
|
||||||
{
|
{
|
||||||
test_dock_new (GIMP_VIEW_TYPE_LIST,
|
test_dock_new (GIMP_VIEW_TYPE_LIST);
|
||||||
gimp_context_get_user ());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
test_grid_dock_cmd_callback (GtkWidget *widget,
|
test_grid_dock_cmd_callback (GtkWidget *widget,
|
||||||
gpointer client_data)
|
gpointer client_data)
|
||||||
{
|
{
|
||||||
test_dock_new (GIMP_VIEW_TYPE_GRID,
|
test_dock_new (GIMP_VIEW_TYPE_GRID);
|
||||||
gimp_context_get_user ());
|
|
||||||
}
|
}
|
||||||
|
@ -26,19 +26,12 @@
|
|||||||
|
|
||||||
#include "gimpdialogfactory.h"
|
#include "gimpdialogfactory.h"
|
||||||
#include "gimpdock.h"
|
#include "gimpdock.h"
|
||||||
|
#include "gimpdockbook.h"
|
||||||
|
#include "gimpdockable.h"
|
||||||
|
|
||||||
#include "gimpcontext.h"
|
#include "gimpcontext.h"
|
||||||
|
|
||||||
|
|
||||||
typedef struct _GimpDialogFactoryEntry GimpDialogFactoryEntry;
|
|
||||||
|
|
||||||
struct _GimpDialogFactoryEntry
|
|
||||||
{
|
|
||||||
gchar *identifier;
|
|
||||||
GimpDialogNewFunc new_func;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static void gimp_dialog_factory_class_init (GimpDialogFactoryClass *klass);
|
static void gimp_dialog_factory_class_init (GimpDialogFactoryClass *klass);
|
||||||
static void gimp_dialog_factory_init (GimpDialogFactory *factory);
|
static void gimp_dialog_factory_init (GimpDialogFactory *factory);
|
||||||
|
|
||||||
@ -80,9 +73,11 @@ gimp_dialog_factory_class_init (GimpDialogFactoryClass *klass)
|
|||||||
|
|
||||||
object_class = (GtkObjectClass *) klass;
|
object_class = (GtkObjectClass *) klass;
|
||||||
|
|
||||||
parent_class = gtk_type_class (GTK_TYPE_VBOX);
|
parent_class = gtk_type_class (GIMP_TYPE_OBJECT);
|
||||||
|
|
||||||
object_class->destroy = gimp_dialog_factory_destroy;
|
object_class->destroy = gimp_dialog_factory_destroy;
|
||||||
|
|
||||||
|
klass->factories = g_hash_table_new (g_str_hash, g_str_equal);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -90,7 +85,7 @@ gimp_dialog_factory_init (GimpDialogFactory *factory)
|
|||||||
{
|
{
|
||||||
factory->item_factory = NULL;
|
factory->item_factory = NULL;
|
||||||
factory->registered_dialogs = NULL;
|
factory->registered_dialogs = NULL;
|
||||||
factory->open_docks = NULL;
|
factory->open_dialogs = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -101,6 +96,9 @@ gimp_dialog_factory_destroy (GtkObject *object)
|
|||||||
|
|
||||||
factory = GIMP_DIALOG_FACTORY (object);
|
factory = GIMP_DIALOG_FACTORY (object);
|
||||||
|
|
||||||
|
g_hash_table_remove (GIMP_DIALOG_FACTORY_CLASS (object->klass)->factories,
|
||||||
|
GIMP_OBJECT (factory)->name);
|
||||||
|
|
||||||
for (list = factory->registered_dialogs; list; list = g_list_next (list))
|
for (list = factory->registered_dialogs; list; list = g_list_next (list))
|
||||||
{
|
{
|
||||||
GimpDialogFactoryEntry *entry;
|
GimpDialogFactoryEntry *entry;
|
||||||
@ -112,32 +110,68 @@ gimp_dialog_factory_destroy (GtkObject *object)
|
|||||||
}
|
}
|
||||||
|
|
||||||
g_list_free (factory->registered_dialogs);
|
g_list_free (factory->registered_dialogs);
|
||||||
g_list_free (factory->open_docks);
|
g_list_free (factory->open_dialogs);
|
||||||
|
|
||||||
if (GTK_OBJECT_CLASS (parent_class)->destroy)
|
if (GTK_OBJECT_CLASS (parent_class)->destroy)
|
||||||
GTK_OBJECT_CLASS (parent_class)->destroy (object);
|
GTK_OBJECT_CLASS (parent_class)->destroy (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDialogFactory *
|
GimpDialogFactory *
|
||||||
gimp_dialog_factory_new (GimpContext *context,
|
gimp_dialog_factory_new (const gchar *name,
|
||||||
|
GimpContext *context,
|
||||||
GtkItemFactory *item_factory)
|
GtkItemFactory *item_factory)
|
||||||
{
|
{
|
||||||
|
GimpDialogFactoryClass *factory_class;
|
||||||
GimpDialogFactory *factory;
|
GimpDialogFactory *factory;
|
||||||
|
|
||||||
|
g_return_val_if_fail (name != NULL, NULL);
|
||||||
|
|
||||||
g_return_val_if_fail (context != NULL, NULL);
|
g_return_val_if_fail (context != NULL, NULL);
|
||||||
g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL);
|
g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL);
|
||||||
|
|
||||||
g_return_val_if_fail (item_factory != NULL, NULL);
|
g_return_val_if_fail (! item_factory || GTK_IS_ITEM_FACTORY (item_factory),
|
||||||
g_return_val_if_fail (GTK_IS_ITEM_FACTORY (item_factory), NULL);
|
NULL);
|
||||||
|
|
||||||
|
factory_class =
|
||||||
|
GIMP_DIALOG_FACTORY_CLASS (gtk_type_class (GIMP_TYPE_DIALOG_FACTORY));
|
||||||
|
|
||||||
|
if (g_hash_table_lookup (factory_class->factories, name))
|
||||||
|
{
|
||||||
|
g_warning ("%s(): dialog factory \"%s\" already exists",
|
||||||
|
G_GNUC_FUNCTION, name);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
factory = gtk_type_new (GIMP_TYPE_DIALOG_FACTORY);
|
factory = gtk_type_new (GIMP_TYPE_DIALOG_FACTORY);
|
||||||
|
|
||||||
|
gimp_object_set_name (GIMP_OBJECT (factory), name);
|
||||||
|
|
||||||
|
g_hash_table_insert (factory_class->factories,
|
||||||
|
GIMP_OBJECT (factory)->name, factory);
|
||||||
|
|
||||||
factory->context = context;
|
factory->context = context;
|
||||||
factory->item_factory = item_factory;
|
factory->item_factory = item_factory;
|
||||||
|
|
||||||
return factory;
|
return factory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GimpDialogFactory *
|
||||||
|
gimp_dialog_factory_from_name (const gchar *name)
|
||||||
|
{
|
||||||
|
GimpDialogFactoryClass *factory_class;
|
||||||
|
GimpDialogFactory *factory;
|
||||||
|
|
||||||
|
g_return_val_if_fail (name != NULL, NULL);
|
||||||
|
|
||||||
|
factory_class =
|
||||||
|
GIMP_DIALOG_FACTORY_CLASS (gtk_type_class (GIMP_TYPE_DIALOG_FACTORY));
|
||||||
|
|
||||||
|
factory = (GimpDialogFactory *)
|
||||||
|
g_hash_table_lookup (factory_class->factories, name);
|
||||||
|
|
||||||
|
return factory;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
gimp_dialog_factory_register (GimpDialogFactory *factory,
|
gimp_dialog_factory_register (GimpDialogFactory *factory,
|
||||||
const gchar *identifier,
|
const gchar *identifier,
|
||||||
@ -159,7 +193,7 @@ gimp_dialog_factory_register (GimpDialogFactory *factory,
|
|||||||
entry);
|
entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
GimpDockable *
|
GtkWidget *
|
||||||
gimp_dialog_factory_dialog_new (GimpDialogFactory *factory,
|
gimp_dialog_factory_dialog_new (GimpDialogFactory *factory,
|
||||||
const gchar *identifier)
|
const gchar *identifier)
|
||||||
{
|
{
|
||||||
@ -177,7 +211,16 @@ gimp_dialog_factory_dialog_new (GimpDialogFactory *factory,
|
|||||||
|
|
||||||
if (! strcmp (identifier, entry->identifier))
|
if (! strcmp (identifier, entry->identifier))
|
||||||
{
|
{
|
||||||
return entry->new_func (factory);
|
GtkWidget *dialog;
|
||||||
|
|
||||||
|
dialog = entry->new_func (factory);
|
||||||
|
|
||||||
|
gtk_object_set_data (GTK_OBJECT (dialog), "gimp-dialog-factory",
|
||||||
|
factory);
|
||||||
|
gtk_object_set_data (GTK_OBJECT (dialog), "gimp-dialog-factory-entry",
|
||||||
|
entry);
|
||||||
|
|
||||||
|
return dialog;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,37 +228,306 @@ gimp_dialog_factory_dialog_new (GimpDialogFactory *factory,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
gimp_dialog_factory_add_dock (GimpDialogFactory *factory,
|
gimp_dialog_factory_add_toplevel (GimpDialogFactory *factory,
|
||||||
GimpDock *dock)
|
GtkWidget *toplevel)
|
||||||
{
|
{
|
||||||
|
GimpDialogFactory *toplevel_factory;
|
||||||
|
GimpDialogFactoryEntry *entry;
|
||||||
|
GimpSessionInfo *info;
|
||||||
|
GList *list;
|
||||||
|
|
||||||
g_return_if_fail (factory != NULL);
|
g_return_if_fail (factory != NULL);
|
||||||
g_return_if_fail (GIMP_IS_DIALOG_FACTORY (factory));
|
g_return_if_fail (GIMP_IS_DIALOG_FACTORY (factory));
|
||||||
g_return_if_fail (dock != NULL);
|
g_return_if_fail (toplevel != NULL);
|
||||||
g_return_if_fail (GIMP_IS_DOCK (dock));
|
g_return_if_fail (GTK_IS_WIDGET (toplevel));
|
||||||
|
|
||||||
if (g_list_find (factory->open_docks, dock))
|
if (g_list_find (factory->open_dialogs, toplevel))
|
||||||
{
|
{
|
||||||
g_warning ("%s(): dock already registered", G_GNUC_FUNCTION);
|
g_warning ("%s(): dialog already registered", G_GNUC_FUNCTION);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
factory->open_docks = g_list_prepend (factory->open_docks, dock);
|
toplevel_factory = gtk_object_get_data (GTK_OBJECT (toplevel),
|
||||||
|
"gimp-dialog-factory");
|
||||||
|
|
||||||
|
if (toplevel_factory && toplevel_factory != factory)
|
||||||
|
{
|
||||||
|
g_warning ("%s(): dialog was created by a different GimpDialogFactory",
|
||||||
|
G_GNUC_FUNCTION);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
entry = gtk_object_get_data (GTK_OBJECT (toplevel),
|
||||||
|
"gimp-dialog-factory-entry");
|
||||||
|
|
||||||
|
if (entry) /* toplevel was created by this factory */
|
||||||
|
{
|
||||||
|
for (list = factory->session_infos; list; list = g_list_next (list))
|
||||||
|
{
|
||||||
|
info = (GimpSessionInfo *) list->data;
|
||||||
|
|
||||||
|
if (info->toplevel_entry == entry)
|
||||||
|
{
|
||||||
|
info->open = TRUE;
|
||||||
|
info->widget = toplevel;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! list) /* didn't find a session info */
|
||||||
|
{
|
||||||
|
info = g_new0 (GimpSessionInfo, 1);
|
||||||
|
|
||||||
|
info->open = TRUE;
|
||||||
|
info->widget = toplevel;
|
||||||
|
info->toplevel_entry = entry;
|
||||||
|
|
||||||
|
factory->session_infos = g_list_append (factory->session_infos, info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else /* toplevel is a dock */
|
||||||
|
{
|
||||||
|
for (list = factory->session_infos; list; list = g_list_next (list))
|
||||||
|
{
|
||||||
|
info = (GimpSessionInfo *) list->data;
|
||||||
|
|
||||||
|
if (! info->widget) /* take the first empty slot */
|
||||||
|
{
|
||||||
|
info->open = TRUE;
|
||||||
|
info->widget = toplevel;
|
||||||
|
|
||||||
|
info->x = CLAMP (info->x, 0, gdk_screen_width () - 32);
|
||||||
|
info->y = CLAMP (info->y, 0, gdk_screen_height () - 32);
|
||||||
|
|
||||||
|
if (info->x && info->y)
|
||||||
|
gtk_widget_set_uposition (toplevel, info->x, info->y);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! list) /* didn't find a session info */
|
||||||
|
{
|
||||||
|
info = g_new0 (GimpSessionInfo, 1);
|
||||||
|
|
||||||
|
info->open = TRUE;
|
||||||
|
info->widget = toplevel;
|
||||||
|
|
||||||
|
factory->session_infos = g_list_append (factory->session_infos, info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
factory->open_dialogs = g_list_prepend (factory->open_dialogs, toplevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
gimp_dialog_factory_remove_dock (GimpDialogFactory *factory,
|
gimp_dialog_factory_remove_toplevel (GimpDialogFactory *factory,
|
||||||
GimpDock *dock)
|
GtkWidget *toplevel)
|
||||||
{
|
{
|
||||||
|
GimpDialogFactory *toplevel_factory;
|
||||||
|
GimpSessionInfo *session_info;
|
||||||
|
GList *list;
|
||||||
|
|
||||||
g_return_if_fail (factory != NULL);
|
g_return_if_fail (factory != NULL);
|
||||||
g_return_if_fail (GIMP_IS_DIALOG_FACTORY (factory));
|
g_return_if_fail (GIMP_IS_DIALOG_FACTORY (factory));
|
||||||
g_return_if_fail (dock != NULL);
|
g_return_if_fail (toplevel != NULL);
|
||||||
g_return_if_fail (GIMP_IS_DOCK (dock));
|
g_return_if_fail (GTK_IS_WIDGET (toplevel));
|
||||||
|
|
||||||
if (! g_list_find (factory->open_docks, dock))
|
if (! g_list_find (factory->open_dialogs, toplevel))
|
||||||
{
|
{
|
||||||
g_warning ("%s(): dock not registered", G_GNUC_FUNCTION);
|
g_warning ("%s(): dialog not registered", G_GNUC_FUNCTION);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
factory->open_docks = g_list_remove (factory->open_docks, dock);
|
factory->open_dialogs = g_list_remove (factory->open_dialogs, toplevel);
|
||||||
|
|
||||||
|
toplevel_factory = gtk_object_get_data (GTK_OBJECT (toplevel),
|
||||||
|
"gimp-dialog-factory");
|
||||||
|
|
||||||
|
if (toplevel_factory && toplevel_factory != factory)
|
||||||
|
{
|
||||||
|
g_warning ("%s(): dialog was created by a different GimpDialogFactory",
|
||||||
|
G_GNUC_FUNCTION);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (list = factory->session_infos; list; list = g_list_next (list))
|
||||||
|
{
|
||||||
|
session_info = (GimpSessionInfo *) list->data;
|
||||||
|
|
||||||
|
if (session_info->widget == toplevel)
|
||||||
|
{
|
||||||
|
session_info->open = FALSE;
|
||||||
|
session_info->widget = NULL;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gimp_dialog_factories_session_save_foreach (gchar *name,
|
||||||
|
GimpDialogFactory *factory,
|
||||||
|
FILE *fp)
|
||||||
|
{
|
||||||
|
GList *list;
|
||||||
|
|
||||||
|
for (list = factory->session_infos; list; list = g_list_next (list))
|
||||||
|
{
|
||||||
|
GimpSessionInfo *info;
|
||||||
|
|
||||||
|
info = (GimpSessionInfo *) list->data;
|
||||||
|
|
||||||
|
if (info->widget)
|
||||||
|
{
|
||||||
|
gdk_window_get_root_origin (info->widget->window,
|
||||||
|
&info->x, &info->y);
|
||||||
|
gdk_window_get_size (info->widget->window,
|
||||||
|
&info->width, &info->height);
|
||||||
|
|
||||||
|
info->open = GTK_WIDGET_VISIBLE (info->widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf (fp, "(new-session-info \"%s\" \"%s\"\n",
|
||||||
|
name,
|
||||||
|
info->toplevel_entry ? info->toplevel_entry->identifier : "dock");
|
||||||
|
fprintf (fp, " (position %d %d)\n", info->x, info->y);
|
||||||
|
fprintf (fp, " (size %d %d)", info->width, info->height);
|
||||||
|
|
||||||
|
if (info->open)
|
||||||
|
fprintf (fp, "\n (open-on-exit)");
|
||||||
|
|
||||||
|
if (! info->toplevel_entry && info->widget)
|
||||||
|
{
|
||||||
|
GimpDock *dock;
|
||||||
|
GList *books;
|
||||||
|
|
||||||
|
dock = GIMP_DOCK (info->widget);
|
||||||
|
|
||||||
|
fprintf (fp, "\n (dock ");
|
||||||
|
|
||||||
|
for (books = dock->dockbooks; books; books = g_list_next (books))
|
||||||
|
{
|
||||||
|
GimpDockbook *dockbook;
|
||||||
|
GList *pages;
|
||||||
|
|
||||||
|
dockbook = (GimpDockbook *) books->data;
|
||||||
|
|
||||||
|
fprintf (fp, "(");
|
||||||
|
|
||||||
|
for (pages = gtk_container_children (GTK_CONTAINER (dockbook));
|
||||||
|
pages;
|
||||||
|
pages = g_list_next (pages))
|
||||||
|
{
|
||||||
|
GimpDockable *dockable;
|
||||||
|
GimpDialogFactoryEntry *entry;
|
||||||
|
|
||||||
|
dockable = (GimpDockable *) pages->data;
|
||||||
|
|
||||||
|
entry = gtk_object_get_data (GTK_OBJECT (dockable),
|
||||||
|
"gimp-dialog-factory-entry");
|
||||||
|
|
||||||
|
if (entry)
|
||||||
|
fprintf (fp, "\"%s\"%s",
|
||||||
|
entry->identifier, pages->next ? " ": "");
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf (fp, ")%s", books->next ? "\n " : "");
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf (fp, ")");
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf (fp, ")\n\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gimp_dialog_factories_session_save (FILE *file)
|
||||||
|
{
|
||||||
|
GimpDialogFactoryClass *factory_class;
|
||||||
|
|
||||||
|
g_return_if_fail (file != NULL);
|
||||||
|
|
||||||
|
factory_class =
|
||||||
|
GIMP_DIALOG_FACTORY_CLASS (gtk_type_class (GIMP_TYPE_DIALOG_FACTORY));
|
||||||
|
|
||||||
|
g_hash_table_foreach (factory_class->factories,
|
||||||
|
(GHFunc) gimp_dialog_factories_session_save_foreach,
|
||||||
|
file);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gimp_dialog_factories_session_restore_foreach (gchar *name,
|
||||||
|
GimpDialogFactory *factory,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
GList *list;
|
||||||
|
|
||||||
|
for (list = factory->session_infos; list; list = g_list_next (list))
|
||||||
|
{
|
||||||
|
GimpSessionInfo *info;
|
||||||
|
|
||||||
|
info = (GimpSessionInfo *) list->data;
|
||||||
|
|
||||||
|
if (! info->open)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (info->toplevel_entry)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GimpDock *dock;
|
||||||
|
GList *books;
|
||||||
|
|
||||||
|
dock = GIMP_DOCK (gimp_dock_new (factory));
|
||||||
|
|
||||||
|
while ((books = info->sub_dialogs))
|
||||||
|
{
|
||||||
|
GimpDockbook *dockbook;
|
||||||
|
GList *pages;
|
||||||
|
|
||||||
|
dockbook = GIMP_DOCKBOOK (gimp_dockbook_new ());
|
||||||
|
|
||||||
|
gimp_dock_add_book (dock, dockbook, -1);
|
||||||
|
|
||||||
|
while ((pages = (GList *) books->data))
|
||||||
|
{
|
||||||
|
GtkWidget *dockable;
|
||||||
|
gchar *identifier;
|
||||||
|
|
||||||
|
identifier = (gchar *) pages->data;
|
||||||
|
|
||||||
|
dockable = gimp_dialog_factory_dialog_new (factory,
|
||||||
|
identifier);
|
||||||
|
|
||||||
|
if (dockable)
|
||||||
|
gimp_dockbook_add (dockbook, GIMP_DOCKABLE (dockable), -1);
|
||||||
|
|
||||||
|
books->data = g_list_remove (books->data, identifier);
|
||||||
|
g_free (identifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
info->sub_dialogs = g_list_remove (info->sub_dialogs,
|
||||||
|
info->sub_dialogs->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_widget_show (GTK_WIDGET (dock));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gimp_dialog_factories_session_restore (void)
|
||||||
|
{
|
||||||
|
GimpDialogFactoryClass *factory_class;
|
||||||
|
|
||||||
|
factory_class =
|
||||||
|
GIMP_DIALOG_FACTORY_CLASS (gtk_type_class (GIMP_TYPE_DIALOG_FACTORY));
|
||||||
|
|
||||||
|
g_hash_table_foreach (factory_class->factories,
|
||||||
|
(GHFunc) gimp_dialog_factories_session_restore_foreach,
|
||||||
|
NULL);
|
||||||
}
|
}
|
||||||
|
@ -23,10 +23,39 @@
|
|||||||
#define __GIMP_DIALOG_FACTORY_H__
|
#define __GIMP_DIALOG_FACTORY_H__
|
||||||
|
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "gimpobject.h"
|
#include "gimpobject.h"
|
||||||
|
|
||||||
|
|
||||||
typedef GimpDockable * (* GimpDialogNewFunc) (GimpDialogFactory *factory);
|
typedef GtkWidget * (* GimpDialogNewFunc) (GimpDialogFactory *factory);
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _GimpDialogFactoryEntry GimpDialogFactoryEntry;
|
||||||
|
|
||||||
|
struct _GimpDialogFactoryEntry
|
||||||
|
{
|
||||||
|
gchar *identifier;
|
||||||
|
GimpDialogNewFunc new_func;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _GimpSessionInfo GimpSessionInfo;
|
||||||
|
|
||||||
|
struct _GimpSessionInfo
|
||||||
|
{
|
||||||
|
gint x;
|
||||||
|
gint y;
|
||||||
|
gint width;
|
||||||
|
gint height;
|
||||||
|
|
||||||
|
gboolean open;
|
||||||
|
GtkWidget *widget;
|
||||||
|
|
||||||
|
/* only one of these is valid */
|
||||||
|
GimpDialogFactoryEntry *toplevel_entry;
|
||||||
|
GList *sub_dialogs; /* GList of GLists of entries */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#define GIMP_TYPE_DIALOG_FACTORY (gimp_dialog_factory_get_type ())
|
#define GIMP_TYPE_DIALOG_FACTORY (gimp_dialog_factory_get_type ())
|
||||||
@ -47,30 +76,39 @@ struct _GimpDialogFactory
|
|||||||
|
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
GList *registered_dialogs;
|
GList *registered_dialogs;
|
||||||
|
GList *session_infos;
|
||||||
|
|
||||||
GList *open_docks;
|
GList *open_dialogs;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GimpDialogFactoryClass
|
struct _GimpDialogFactoryClass
|
||||||
{
|
{
|
||||||
GimpObjectClass parent_class;
|
GimpObjectClass parent_class;
|
||||||
|
|
||||||
|
GHashTable *factories;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
GtkType gimp_dialog_factory_get_type (void);
|
GtkType gimp_dialog_factory_get_type (void);
|
||||||
GimpDialogFactory * gimp_dialog_factory_new (GimpContext *context,
|
GimpDialogFactory * gimp_dialog_factory_new (const gchar *name,
|
||||||
|
GimpContext *context,
|
||||||
GtkItemFactory *item_factory);
|
GtkItemFactory *item_factory);
|
||||||
|
|
||||||
|
GimpDialogFactory * gimp_dialog_factory_from_name (const gchar *name);
|
||||||
|
|
||||||
void gimp_dialog_factory_register (GimpDialogFactory *factory,
|
void gimp_dialog_factory_register (GimpDialogFactory *factory,
|
||||||
const gchar *identifier,
|
const gchar *identifier,
|
||||||
GimpDialogNewFunc new_func);
|
GimpDialogNewFunc new_func);
|
||||||
GimpDockable * gimp_dialog_factory_dialog_new (GimpDialogFactory *factory,
|
GtkWidget * gimp_dialog_factory_dialog_new (GimpDialogFactory *factory,
|
||||||
const gchar *identifier);
|
const gchar *identifier);
|
||||||
|
|
||||||
void gimp_dialog_factory_add_dock (GimpDialogFactory *factory,
|
void gimp_dialog_factory_add_toplevel (GimpDialogFactory *factory,
|
||||||
GimpDock *dock);
|
GtkWidget *toplevel);
|
||||||
void gimp_dialog_factory_remove_dock (GimpDialogFactory *factory,
|
void gimp_dialog_factory_remove_toplevel (GimpDialogFactory *factory,
|
||||||
GimpDock *dock);
|
GtkWidget *toplevel);
|
||||||
|
|
||||||
|
void gimp_dialog_factories_session_save (FILE *file);
|
||||||
|
void gimp_dialog_factories_session_restore (void);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __GIMP_DIALOG_FACTORY_H__ */
|
#endif /* __GIMP_DIALOG_FACTORY_H__ */
|
||||||
|
@ -136,7 +136,7 @@ gimp_dock_destroy (GtkObject *object)
|
|||||||
|
|
||||||
dock = GIMP_DOCK (object);
|
dock = GIMP_DOCK (object);
|
||||||
|
|
||||||
gimp_dialog_factory_remove_dock (dock->factory, dock);
|
gimp_dialog_factory_remove_toplevel (dock->factory, GTK_WIDGET (dock));
|
||||||
|
|
||||||
g_list_free (dock->dockbooks);
|
g_list_free (dock->dockbooks);
|
||||||
|
|
||||||
@ -156,7 +156,7 @@ gimp_dock_new (GimpDialogFactory *factory)
|
|||||||
|
|
||||||
dock->factory = factory;
|
dock->factory = factory;
|
||||||
|
|
||||||
gimp_dialog_factory_add_dock (dock->factory, dock);
|
gimp_dialog_factory_add_toplevel (dock->factory, GTK_WIDGET (dock));
|
||||||
|
|
||||||
return GTK_WIDGET (dock);
|
return GTK_WIDGET (dock);
|
||||||
}
|
}
|
||||||
|
@ -834,44 +834,44 @@ static GimpItemFactoryEntry dialogs_entries[] =
|
|||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
|
|
||||||
{ { N_("/Add Tab/Image List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Image List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:image_list") },
|
GPOINTER_TO_UINT ("gimp:image-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Brush List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Brush List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:brush_list") },
|
GPOINTER_TO_UINT ("gimp:brush-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Pattern List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Pattern List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:pattern_list") },
|
GPOINTER_TO_UINT ("gimp:pattern-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Gradient List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Gradient List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:gradient_list") },
|
GPOINTER_TO_UINT ("gimp:gradient-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Palette List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Palette List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:palette_list") },
|
GPOINTER_TO_UINT ("gimp:palette-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Tool List..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Tool List..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:tool_list") },
|
GPOINTER_TO_UINT ("gimp:tool-list") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
|
|
||||||
{ { "/Add Tab/---", NULL, NULL, 0, "<Separator>" },
|
{ { "/Add Tab/---", NULL, NULL, 0, "<Separator>" },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
|
|
||||||
{ { N_("/Add Tab/Image Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Image Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:image_grid") },
|
GPOINTER_TO_UINT ("gimp:image-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Brush Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Brush Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:brush_grid") },
|
GPOINTER_TO_UINT ("gimp:brush-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Pattern Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Pattern Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:pattern_grid") },
|
GPOINTER_TO_UINT ("gimp:pattern-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Gradient Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Gradient Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:gradient_grid") },
|
GPOINTER_TO_UINT ("gimp:gradient-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Palette Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Palette Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:palette_grid") },
|
GPOINTER_TO_UINT ("gimp:palette-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
{ { N_("/Add Tab/Tool Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
{ { N_("/Add Tab/Tool Grid..."), NULL, dialogs_add_tab_cmd_callback,
|
||||||
GPOINTER_TO_UINT ("gimp:tool_grid") },
|
GPOINTER_TO_UINT ("gimp:tool-grid") },
|
||||||
NULL, NULL },
|
NULL, NULL },
|
||||||
};
|
};
|
||||||
static guint n_dialogs_entries = (sizeof (dialogs_entries) /
|
static guint n_dialogs_entries = (sizeof (dialogs_entries) /
|
||||||
|
Reference in New Issue
Block a user