app/widgets/gimpdocked.[ch] moved button-bar API to the GimpDocked

2005-06-05  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpdocked.[ch]
	* app/widgets/gimpeditor.[ch]: moved button-bar API to the
	GimpDocked interface.

	* app/widgets/gimpcontainereditor.c: implement the new interface
	methods and proxy them to the embedded docked.

	* app/actions/dockable-actions.c
	* app/actions/dockable-commands.c: changed accordingly.
This commit is contained in:
Sven Neumann 2005-06-04 22:32:31 +00:00 committed by Sven Neumann
parent 95a573431a
commit f173198669
8 changed files with 253 additions and 175 deletions

View File

@ -1,3 +1,15 @@
2005-06-05 Sven Neumann <sven@gimp.org>
* app/widgets/gimpdocked.[ch]
* app/widgets/gimpeditor.[ch]: moved button-bar API to the
GimpDocked interface.
* app/widgets/gimpcontainereditor.c: implement the new interface
methods and proxy them to the embedded docked.
* app/actions/dockable-actions.c
* app/actions/dockable-commands.c: changed accordingly.
2005-06-04 Manish Singh <yosh@gimp.org>
* libgimp/gimpimagecombobox.h

View File

@ -34,7 +34,6 @@
#include "widgets/gimpdockable.h"
#include "widgets/gimpdockbook.h"
#include "widgets/gimpdocked.h"
#include "widgets/gimpeditor.h"
#include "widgets/gimphelp-ids.h"
#include "dialogs-actions.h"
@ -167,6 +166,7 @@ dockable_actions_update (GimpActionGroup *group,
{
GimpDockable *dockable;
GimpDockbook *dockbook;
GimpDocked *docked;
GimpDialogFactoryEntry *entry;
GimpContainerView *view;
GimpViewType view_type = -1;
@ -197,6 +197,8 @@ dockable_actions_update (GimpActionGroup *group,
return;
}
docked = gtk_bin_get_child (GTK_BIN (dockable));
gimp_dialog_factory_from_widget (GTK_WIDGET (dockable), &entry);
if (entry)
@ -291,7 +293,7 @@ dockable_actions_update (GimpActionGroup *group,
{
GimpDockedInterface *docked_iface;
docked_iface = GIMP_DOCKED_GET_INTERFACE (GTK_BIN (dockable)->child);
docked_iface = GIMP_DOCKED_GET_INTERFACE (docked);
if (tab_style == GIMP_TAB_STYLE_ICON)
SET_ACTIVE ("dockable-tab-style-icon", TRUE);
@ -324,19 +326,9 @@ dockable_actions_update (GimpActionGroup *group,
SET_SENSITIVE ("dockable-view-type-list", list_view_available);
}
if (GIMP_IS_EDITOR (GTK_BIN (dockable)->child))
{
GimpEditor *editor = GIMP_EDITOR (GTK_BIN (dockable)->child);
SET_VISIBLE ("dockable-show-button-bar",
gimp_editor_has_button_bar (editor));
SET_ACTIVE ("dockable-show-button-bar",
gimp_editor_get_show_button_bar (editor));
}
else
{
SET_VISIBLE ("dockable-show-button-bar", FALSE);
}
SET_VISIBLE ("dockable-show-button-bar", gimp_docked_has_button_bar (docked));
SET_ACTIVE ("dockable-show-button-bar",
gimp_docked_get_show_button_bar (docked));
#undef SET_ACTIVE
#undef SET_VISIBLE

View File

@ -32,7 +32,7 @@
#include "widgets/gimpdock.h"
#include "widgets/gimpdockable.h"
#include "widgets/gimpdockbook.h"
#include "widgets/gimpeditor.h"
#include "widgets/gimpdocked.h"
#include "widgets/gimpsessioninfo.h"
#include "dialogs/dialogs.h"
@ -173,12 +173,23 @@ dockable_toggle_view_cmd_callback (GtkAction *action,
preview_size = gimp_container_view_get_preview_size (old_view,
NULL);
new_dockable =
gimp_dialog_factory_dockable_new (dockbook->dock->dialog_factory,
dockbook->dock,
identifier,
preview_size);
if (new_dockable)
{
GimpDocked *old = GIMP_DOCKED (GTK_BIN (dockable)->child);
GimpDocked *new = GIMP_DOCKED (GTK_BIN (new_dockable)->child);
gboolean show;
show = gimp_docked_get_show_button_bar (old);
gimp_docked_set_show_button_bar (new, show);
}
/* Maybe gimp_dialog_factory_dockable_new() returned
* an already existing singleton dockable, so check
* if it already is attached to a dockbook.
@ -283,10 +294,9 @@ dockable_show_button_bar_cmd_callback (GtkAction *action,
if (dockable)
{
GtkWidget *child = gtk_bin_get_child (GTK_BIN (dockable));
gboolean show = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
if (GIMP_IS_EDITOR (child))
gimp_editor_set_show_button_bar (GIMP_EDITOR (child),
gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)));
gimp_docked_set_show_button_bar (GIMP_DOCKED (GTK_BIN (dockable)->child),
show);
}
}

View File

@ -69,6 +69,11 @@ static GimpUIManager * gimp_container_editor_get_menu(GimpDocked *docked,
const gchar **ui_path,
gpointer *popup_data);
static gboolean gimp_container_editor_has_button_bar (GimpDocked *docked);
static void gimp_container_editor_set_show_button_bar (GimpDocked *docked,
gboolean show);
static gboolean gimp_container_editor_get_show_button_bar (GimpDocked *docked);
static GtkVBoxClass *parent_class = NULL;
@ -130,9 +135,12 @@ gimp_container_editor_init (GimpContainerEditor *view)
static void
gimp_container_editor_docked_iface_init (GimpDockedInterface *docked_iface)
{
docked_iface->get_preview = gimp_container_editor_get_preview;
docked_iface->set_context = gimp_container_editor_set_context;
docked_iface->get_menu = gimp_container_editor_get_menu;
docked_iface->get_preview = gimp_container_editor_get_preview;
docked_iface->set_context = gimp_container_editor_set_context;
docked_iface->get_menu = gimp_container_editor_get_menu;
docked_iface->has_button_bar = gimp_container_editor_has_button_bar;
docked_iface->set_show_button_bar = gimp_container_editor_set_show_button_bar;
docked_iface->get_show_button_bar = gimp_container_editor_get_show_button_bar;
}
gboolean
@ -300,3 +308,28 @@ gimp_container_editor_get_menu (GimpDocked *docked,
return gimp_docked_get_menu (GIMP_DOCKED (editor->view), ui_path, popup_data);
}
static gboolean
gimp_container_editor_has_button_bar (GimpDocked *docked)
{
GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (docked);
return gimp_docked_has_button_bar (GIMP_DOCKED (editor->view));
}
static void
gimp_container_editor_set_show_button_bar (GimpDocked *docked,
gboolean show)
{
GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (docked);
gimp_docked_set_show_button_bar (GIMP_DOCKED (editor->view), show);
}
static gboolean
gimp_container_editor_get_show_button_bar (GimpDocked *docked)
{
GimpContainerEditor *editor = GIMP_CONTAINER_EDITOR (docked);
return gimp_docked_get_show_button_bar (GIMP_DOCKED (editor->view));
}

View File

@ -21,6 +21,8 @@
#include "config.h"
#include <string.h>
#include <gtk/gtk.h>
#include "widgets-types.h"
@ -29,6 +31,7 @@
#include "core/gimpmarshal.h"
#include "gimpdocked.h"
#include "gimpsessioninfo.h"
enum
@ -38,7 +41,12 @@ enum
};
static void gimp_docked_iface_base_init (GimpDockedInterface *docked_iface);
static void gimp_docked_iface_base_init (GimpDockedInterface *docked_iface);
static void gimp_docked_iface_set_aux_info (GimpDocked *docked,
GList *aux_info);
static GList * gimp_docked_iface_get_aux_info (GimpDocked *docked);
static guint docked_signals[LAST_SIGNAL] = { 0 };
@ -74,6 +82,12 @@ gimp_docked_iface_base_init (GimpDockedInterface *docked_iface)
{
static gboolean initialized = FALSE;
if (! docked_iface->get_aux_info)
{
docked_iface->get_aux_info = gimp_docked_iface_get_aux_info;
docked_iface->set_aux_info = gimp_docked_iface_set_aux_info;
}
if (! initialized)
{
docked_signals[TITLE_CHANGED] =
@ -89,6 +103,41 @@ gimp_docked_iface_base_init (GimpDockedInterface *docked_iface)
}
}
#define AUX_INFO_SHOW_BUTTON_BAR "show-button-bar"
static void
gimp_docked_iface_set_aux_info (GimpDocked *docked,
GList *aux_info)
{
GList *list;
for (list = aux_info; list; list = g_list_next (list))
{
GimpSessionInfoAux *aux = list->data;
if (strcmp (aux->name, AUX_INFO_SHOW_BUTTON_BAR) == 0)
{
gboolean show = g_ascii_strcasecmp (aux->value, "false");
gimp_docked_set_show_button_bar (docked, show);
}
}
}
static GList *
gimp_docked_iface_get_aux_info (GimpDocked *docked)
{
if (gimp_docked_has_button_bar (docked) &&
! gimp_docked_get_show_button_bar (docked))
{
return g_list_append (NULL,
gimp_session_info_aux_new (AUX_INFO_SHOW_BUTTON_BAR,
"false"));
}
return NULL;
}
void
gimp_docked_title_changed (GimpDocked *docked)
{
@ -191,3 +240,47 @@ gimp_docked_set_context (GimpDocked *docked,
if (docked_iface->set_context)
docked_iface->set_context (docked, context);
}
gboolean
gimp_docked_has_button_bar (GimpDocked *docked)
{
GimpDockedInterface *docked_iface;
g_return_val_if_fail (GIMP_IS_DOCKED (docked), FALSE);
docked_iface = GIMP_DOCKED_GET_INTERFACE (docked);
if (docked_iface->has_button_bar)
return docked_iface->has_button_bar (docked);
return FALSE;
}
void
gimp_docked_set_show_button_bar (GimpDocked *docked,
gboolean show)
{
GimpDockedInterface *docked_iface;
g_return_if_fail (GIMP_IS_DOCKED (docked));
docked_iface = GIMP_DOCKED_GET_INTERFACE (docked);
if (docked_iface->set_show_button_bar)
docked_iface->set_show_button_bar (docked, show ? TRUE : FALSE);
}
gboolean
gimp_docked_get_show_button_bar (GimpDocked *docked)
{
GimpDockedInterface *docked_iface;
g_return_val_if_fail (GIMP_IS_DOCKED (docked), FALSE);
docked_iface = GIMP_DOCKED_GET_INTERFACE (docked);
if (docked_iface->get_show_button_bar)
return docked_iface->get_show_button_bar (docked);
return FALSE;
}

View File

@ -36,44 +36,54 @@ struct _GimpDockedInterface
GTypeInterface base_iface;
/* signals */
void (* title_changed) (GimpDocked *docked);
void (* title_changed) (GimpDocked *docked);
/* virtual functions */
void (* set_aux_info) (GimpDocked *docked,
GList *aux_info);
GList * (* get_aux_info) (GimpDocked *docked);
void (* set_aux_info) (GimpDocked *docked,
GList *aux_info);
GList * (* get_aux_info) (GimpDocked *docked);
GtkWidget * (* get_preview) (GimpDocked *docked,
GimpContext *context,
GtkIconSize size);
GimpUIManager * (* get_menu) (GimpDocked *docked,
const gchar **ui_path,
gpointer *popup_data);
gchar * (* get_title) (GimpDocked *docked);
GtkWidget * (* get_preview) (GimpDocked *docked,
GimpContext *context,
GtkIconSize size);
GimpUIManager * (* get_menu) (GimpDocked *docked,
const gchar **ui_path,
gpointer *popup_data);
gchar * (* get_title) (GimpDocked *docked);
void (* set_context) (GimpDocked *docked,
GimpContext *context);
void (* set_context) (GimpDocked *docked,
GimpContext *context);
gboolean (* has_button_bar) (GimpDocked *docked);
void (* set_show_button_bar) (GimpDocked *docked,
gboolean show);
gboolean (* get_show_button_bar) (GimpDocked *docked);
};
GType gimp_docked_interface_get_type (void) G_GNUC_CONST;
GType gimp_docked_interface_get_type (void) G_GNUC_CONST;
void gimp_docked_title_changed (GimpDocked *docked);
void gimp_docked_title_changed (GimpDocked *docked);
void gimp_docked_set_aux_info (GimpDocked *docked,
GList *aux_info);
GList * gimp_docked_get_aux_info (GimpDocked *docked);
void gimp_docked_set_aux_info (GimpDocked *docked,
GList *aux_info);
GList * gimp_docked_get_aux_info (GimpDocked *docked);
GtkWidget * gimp_docked_get_preview (GimpDocked *docked,
GimpContext *context,
GtkIconSize size);
GimpUIManager * gimp_docked_get_menu (GimpDocked *docked,
const gchar **ui_path,
gpointer *popup_data);
gchar * gimp_docked_get_title (GimpDocked *docked);
GtkWidget * gimp_docked_get_preview (GimpDocked *docked,
GimpContext *context,
GtkIconSize size);
GimpUIManager * gimp_docked_get_menu (GimpDocked *docked,
const gchar **ui_path,
gpointer *popup_data);
gchar * gimp_docked_get_title (GimpDocked *docked);
void gimp_docked_set_context (GimpDocked *docked,
GimpContext *context);
void gimp_docked_set_context (GimpDocked *docked,
GimpContext *context);
gboolean gimp_docked_has_button_bar (GimpDocked *docked);
void gimp_docked_set_show_button_bar (GimpDocked *docked,
gboolean show);
gboolean gimp_docked_get_show_button_bar (GimpDocked *docked);
#endif /* __GIMP_DOCKED_H__ */

View File

@ -21,8 +21,6 @@
#include "config.h"
#include <string.h>
#include <gtk/gtk.h>
#include "libgimpwidgets/gimpwidgets.h"
@ -33,7 +31,6 @@
#include "gimpeditor.h"
#include "gimpdnd.h"
#include "gimpmenufactory.h"
#include "gimpsessioninfo.h"
#include "gimpuimanager.h"
#include "gimpwidgets-utils.h"
@ -53,8 +50,7 @@ enum
PROP_UI_PATH,
PROP_POPUP_DATA,
PROP_SHOW_NAME,
PROP_NAME,
PROP_SHOW_BUTTON_BAR
PROP_NAME
};
@ -77,15 +73,15 @@ static void gimp_editor_destroy (GtkObject *object);
static void gimp_editor_style_set (GtkWidget *widget,
GtkStyle *prev_style);
static void gimp_editor_set_aux_info (GimpDocked *docked,
GList *aux_info);
static GList * gimp_editor_get_aux_info (GimpDocked *docked);
static GimpUIManager * gimp_editor_get_menu (GimpDocked *docked,
const gchar **ui_path,
gpointer *popup_data);
static gboolean gimp_editor_has_button_bar (GimpDocked *docked);
static void gimp_editor_set_show_button_bar (GimpDocked *docked,
gboolean show);
static gboolean gimp_editor_get_show_button_bar (GimpDocked *docked);
static GimpUIManager * gimp_editor_get_menu (GimpDocked *docked,
const gchar **ui_path,
gpointer *popup_data);
static GtkIconSize gimp_editor_ensure_button_box (GimpEditor *editor);
static GtkIconSize gimp_editor_ensure_button_box (GimpEditor *editor);
static GtkVBoxClass *parent_class = NULL;
@ -186,13 +182,6 @@ gimp_editor_class_init (GimpEditorClass *klass)
G_PARAM_WRITABLE |
G_PARAM_CONSTRUCT));
g_object_class_install_property (object_class, PROP_SHOW_BUTTON_BAR,
g_param_spec_boolean ("show-button-bar",
NULL, NULL,
TRUE,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT));
gtk_widget_class_install_style_property (widget_class,
g_param_spec_int ("content_spacing",
NULL, NULL,
@ -226,6 +215,7 @@ gimp_editor_init (GimpEditor *editor)
editor->ui_path = NULL;
editor->popup_data = editor;
editor->button_box = NULL;
editor->show_button_bar = TRUE;
editor->name_label = g_object_new (GTK_TYPE_LABEL,
"xalign", 0.0,
@ -243,9 +233,10 @@ gimp_editor_docked_iface_init (GimpDockedInterface *docked_iface)
{
parent_docked_iface = g_type_interface_peek_parent (docked_iface);
docked_iface->set_aux_info = gimp_editor_set_aux_info;
docked_iface->get_aux_info = gimp_editor_get_aux_info;
docked_iface->get_menu = gimp_editor_get_menu;
docked_iface->get_menu = gimp_editor_get_menu;
docked_iface->has_button_bar = gimp_editor_has_button_bar;
docked_iface->set_show_button_bar = gimp_editor_set_show_button_bar;
docked_iface->get_show_button_bar = gimp_editor_get_show_button_bar;
}
static GObject *
@ -303,9 +294,6 @@ gimp_editor_set_property (GObject *object,
case PROP_NAME:
gimp_editor_set_name (editor, g_value_get_string (value));
break;
case PROP_SHOW_BUTTON_BAR:
gimp_editor_set_show_button_bar (editor, g_value_get_boolean (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@ -337,9 +325,6 @@ gimp_editor_get_property (GObject *object,
case PROP_SHOW_NAME:
g_object_get_property (G_OBJECT (editor->name_label), "visible", value);
break;
case PROP_SHOW_BUTTON_BAR:
g_value_set_boolean (value, editor->show_button_bar);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@ -396,51 +381,6 @@ gimp_editor_style_set (GtkWidget *widget,
gimp_editor_set_box_style (editor, GTK_BOX (editor->button_box));
}
#define AUX_INFO_SHOW_BUTTON_BAR "show-button-bar"
static void
gimp_editor_set_aux_info (GimpDocked *docked,
GList *aux_info)
{
GList *list;
if (parent_docked_iface && parent_docked_iface->set_aux_info)
parent_docked_iface->set_aux_info (docked, aux_info);
for (list = aux_info; list; list = g_list_next (list))
{
GimpSessionInfoAux *aux = list->data;
if (strcmp (aux->name, AUX_INFO_SHOW_BUTTON_BAR) == 0)
{
gboolean show = g_ascii_strcasecmp (aux->value, "false");
gimp_editor_set_show_button_bar (GIMP_EDITOR (docked), show);
}
}
}
static GList *
gimp_editor_get_aux_info (GimpDocked *docked)
{
GimpEditor *editor = GIMP_EDITOR (docked);
GList *aux_info = NULL;
if (parent_docked_iface && parent_docked_iface->set_aux_info)
aux_info = parent_docked_iface->get_aux_info (docked);
if (! editor->show_button_bar)
{
aux_info =
g_list_append (aux_info,
gimp_session_info_aux_new (AUX_INFO_SHOW_BUTTON_BAR,
"false"));
}
return aux_info;
}
static GimpUIManager *
gimp_editor_get_menu (GimpDocked *docked,
const gchar **ui_path,
@ -454,14 +394,47 @@ gimp_editor_get_menu (GimpDocked *docked,
return editor->ui_manager;
}
static gboolean
gimp_editor_has_button_bar (GimpDocked *docked)
{
GimpEditor *editor = GIMP_EDITOR (docked);
return editor->button_box != NULL;
}
static void
gimp_editor_set_show_button_bar (GimpDocked *docked,
gboolean show)
{
GimpEditor *editor = GIMP_EDITOR (docked);
if (show != editor->show_button_bar)
{
editor->show_button_bar = show;
if (editor->button_box)
{
if (show)
gtk_widget_show (editor->button_box);
else
gtk_widget_hide (editor->button_box);
}
}
}
static gboolean
gimp_editor_get_show_button_bar (GimpDocked *docked)
{
GimpEditor *editor = GIMP_EDITOR (docked);
return editor->show_button_bar;
}
GtkWidget *
gimp_editor_new (void)
{
GimpEditor *editor;
editor = g_object_new (GIMP_TYPE_EDITOR, NULL);
return GTK_WIDGET (editor);
return g_object_new (GIMP_TYPE_EDITOR, NULL);
}
void
@ -831,46 +804,6 @@ gimp_editor_set_box_style (GimpEditor *editor,
g_list_free (children);
}
gboolean
gimp_editor_has_button_bar (GimpEditor *editor)
{
g_return_val_if_fail (GIMP_IS_EDITOR (editor), FALSE);
return editor->button_box != NULL;
}
void
gimp_editor_set_show_button_bar (GimpEditor *editor,
gboolean show)
{
g_return_if_fail (GIMP_IS_EDITOR (editor));
show = show ? TRUE : FALSE;
if (show != editor->show_button_bar)
{
editor->show_button_bar = show;
if (editor->button_box)
{
if (show)
gtk_widget_show (editor->button_box);
else
gtk_widget_hide (editor->button_box);
}
g_object_notify (G_OBJECT (editor), "show-button-bar");
}
}
gboolean
gimp_editor_get_show_button_bar (GimpEditor *editor)
{
g_return_val_if_fail (GIMP_IS_EDITOR (editor), FALSE);
return editor->show_button_bar;
}
/* private functions */

View File

@ -96,10 +96,5 @@ void gimp_editor_set_name (GimpEditor *editor,
void gimp_editor_set_box_style (GimpEditor *editor,
GtkBox *box);
gboolean gimp_editor_has_button_bar (GimpEditor *editor);
void gimp_editor_set_show_button_bar (GimpEditor *editor,
gboolean show);
gboolean gimp_editor_get_show_button_bar (GimpEditor *editor);
#endif /* __GIMP_EDITOR_H__ */