[glabels/close-sidebar: 1/2] Experimental sidebar with close button.
- From: Jim Evins <jimevins src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glabels/close-sidebar: 1/2] Experimental sidebar with close button.
- Date: Sat, 12 Jun 2010 14:37:40 +0000 (UTC)
commit 82c2a568aee5292dac17a8acc99c3ead8b16ffc8
Author: Jim Evins <evins snaught com>
Date: Sat Jun 12 10:26:55 2010 -0400
Experimental sidebar with close button.
data/ui/object-editor.ui | 23 ++++++++++++++++++++++
src/object-editor-private.h | 10 +-------
src/object-editor.c | 45 ++++++++++++++++++++++++++++++++++++++----
src/object-editor.h | 4 +++
src/ui-commands.c | 18 +++++++++++++++++
src/ui-commands.h | 3 ++
src/ui-sidebar.c | 14 +++++++++++++
src/ui-sidebar.h | 2 +
src/ui.c | 17 ++++++++++++++-
9 files changed, 121 insertions(+), 15 deletions(-)
---
diff --git a/data/ui/object-editor.ui b/data/ui/object-editor.ui
index 395882f..11584be 100644
--- a/data/ui/object-editor.ui
+++ b/data/ui/object-editor.ui
@@ -42,6 +42,29 @@
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkButton" id="close_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Close sidebar.</property>
+ <property name="relief">none</property>
+ <property name="focus_on_click">False</property>
+ <child>
+ <object class="GtkImage" id="image6">
+ <property name="visible">True</property>
+ <property name="stock">gtk-close</property>
+ <property name="icon-size">1</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
diff --git a/src/object-editor-private.h b/src/object-editor-private.h
index c7ad1da..f151164 100644
--- a/src/object-editor-private.h
+++ b/src/object-editor-private.h
@@ -35,6 +35,8 @@ struct _glObjectEditorPrivate {
gdouble units_per_point;
+ GtkWidget *close_button;
+
GtkWidget *title_image;
GtkWidget *title_label;
GtkWidget *notebook;
@@ -167,14 +169,6 @@ struct _glObjectEditorPrivate {
gboolean stop_signals;
};
-enum {
- CHANGED,
- SIZE_CHANGED,
- LAST_SIGNAL
-};
-
-extern gint gl_object_editor_signals[LAST_SIGNAL];
-
void gl_object_editor_prepare_position_page (glObjectEditor *editor);
diff --git a/src/object-editor.c b/src/object-editor.c
index c792e7c..12f8b97 100644
--- a/src/object-editor.c
+++ b/src/object-editor.c
@@ -56,11 +56,18 @@
/* Private data types */
/*===========================================*/
+enum {
+ VISIBILITY_CHANGED,
+ LAST_SIGNAL
+};
+
/*===========================================*/
/* Private globals */
/*===========================================*/
+static guint signals[LAST_SIGNAL] = {0};
+
/*===========================================*/
/* Local function prototypes */
@@ -71,6 +78,8 @@ static void gl_object_editor_finalize (GObject *object);
static void set_object (glObjectEditor *editor,
glLabelObject *object);
+static void close_button_clicked_cb (glObjectEditor *editor);
+
static void prefs_changed_cb (glObjectEditor *editor);
static void label_changed_cb (glLabel *label,
@@ -105,7 +114,17 @@ gl_object_editor_class_init (glObjectEditorClass *class)
gl_object_editor_parent_class = g_type_class_peek_parent (class);
- object_class->finalize = gl_object_editor_finalize;
+ object_class->finalize = gl_object_editor_finalize;
+
+ signals[VISIBILITY_CHANGED] =
+ g_signal_new ("visibility_changed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (glObjectEditorClass, visibility_changed),
+ NULL, NULL,
+ gl_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
}
@@ -139,10 +158,11 @@ gl_object_editor_init (glObjectEditor *editor)
}
gl_builder_util_get_widgets (editor->priv->builder,
- "editor_vbox", &editor->priv->editor_vbox,
- "title_image", &editor->priv->title_image,
- "title_label", &editor->priv->title_label,
- "notebook", &editor->priv->notebook,
+ "editor_vbox", &editor->priv->editor_vbox,
+ "close_button", &editor->priv->close_button,
+ "title_image", &editor->priv->title_image,
+ "title_label", &editor->priv->title_label,
+ "notebook", &editor->priv->notebook,
NULL);
gtk_box_pack_start (GTK_BOX(editor),
@@ -168,6 +188,9 @@ gl_object_editor_init (glObjectEditor *editor)
gtk_widget_hide_all (editor->priv->notebook);
gtk_widget_set_no_show_all (editor->priv->notebook, TRUE);
+ g_signal_connect_swapped (G_OBJECT (editor->priv->close_button), "clicked",
+ G_CALLBACK (close_button_clicked_cb), editor);
+
gl_debug (DEBUG_EDITOR, "END");
}
@@ -445,6 +468,8 @@ set_object (glObjectEditor *editor,
gtk_notebook_set_current_page (GTK_NOTEBOOK (editor->priv->notebook), 0);
}
+ gtk_widget_show (GTK_WIDGET (editor));
+
g_signal_connect (G_OBJECT (object), "changed",
G_CALLBACK (object_changed_cb), editor);
}
@@ -473,6 +498,16 @@ set_object (glObjectEditor *editor,
/*--------------------------------------------------------------------------*/
+/* PRIVATE. Close button "clicked" callback. */
+/*--------------------------------------------------------------------------*/
+static void
+close_button_clicked_cb (glObjectEditor *editor)
+{
+ gtk_widget_hide (GTK_WIDGET (editor));
+}
+
+
+/*--------------------------------------------------------------------------*/
/* PRIVATE. Prefs changed callback. Update units related items. */
/*--------------------------------------------------------------------------*/
static void
diff --git a/src/object-editor.h b/src/object-editor.h
index d8f7095..f46b09f 100644
--- a/src/object-editor.h
+++ b/src/object-editor.h
@@ -60,6 +60,10 @@ struct _glObjectEditor
struct _glObjectEditorClass
{
GtkVBoxClass parent_class;
+
+ void (*visibility_changed) (glObjectEditor *editor,
+ gpointer user_data);
+
};
diff --git a/src/ui-commands.c b/src/ui-commands.c
index 89203b9..fc6d895 100644
--- a/src/ui-commands.c
+++ b/src/ui-commands.c
@@ -756,6 +756,24 @@ gl_ui_cmd_objects_create_barcode (GtkAction *action,
/*****************************************************************************/
+/** Objects/Properties command. */
+/*****************************************************************************/
+void
+gl_ui_cmd_objects_properties (GtkAction *action,
+ glWindow *window)
+{
+ gl_debug (DEBUG_COMMANDS, "START");
+
+ g_return_if_fail (action && GTK_IS_ACTION(action));
+ g_return_if_fail (window && GL_IS_WINDOW(window));
+
+ gtk_widget_show (gl_ui_sidebar_get_object_editor (window->sidebar));
+
+ gl_debug (DEBUG_COMMANDS, "END");
+}
+
+
+/*****************************************************************************/
/** Objects/Raise command. */
/*****************************************************************************/
void
diff --git a/src/ui-commands.h b/src/ui-commands.h
index aed362d..d4fbe26 100644
--- a/src/ui-commands.h
+++ b/src/ui-commands.h
@@ -145,6 +145,9 @@ void gl_ui_cmd_objects_create_image (GtkAction *action,
void gl_ui_cmd_objects_create_barcode (GtkAction *action,
glWindow *window);
+void gl_ui_cmd_objects_properties (GtkAction *action,
+ glWindow *window);
+
void gl_ui_cmd_objects_raise (GtkAction *action,
glWindow *window);
diff --git a/src/ui-sidebar.c b/src/ui-sidebar.c
index 60a1775..a94a5a9 100644
--- a/src/ui-sidebar.c
+++ b/src/ui-sidebar.c
@@ -165,6 +165,20 @@ gl_ui_sidebar_set_label (glUISidebar *sidebar,
}
+/****************************************************************************/
+/* Get object editor widget. */
+/****************************************************************************/
+GtkWidget *
+gl_ui_sidebar_get_object_editor (glUISidebar *sidebar)
+{
+ gl_debug (DEBUG_UI, "START");
+
+ gl_debug (DEBUG_UI, "END");
+
+ return sidebar->priv->editor;
+}
+
+
/*
* Local Variables: -- emacs
diff --git a/src/ui-sidebar.h b/src/ui-sidebar.h
index 3ff5f91..08e9690 100644
--- a/src/ui-sidebar.h
+++ b/src/ui-sidebar.h
@@ -59,6 +59,8 @@ GtkWidget *gl_ui_sidebar_new (void);
void gl_ui_sidebar_set_label (glUISidebar *sidebar,
glLabel *label);
+GtkWidget *gl_ui_sidebar_get_object_editor (glUISidebar *sidebar);
+
G_END_DECLS
diff --git a/src/ui.c b/src/ui.c
index b369f9d..f5afa6c 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -319,6 +319,13 @@ static GtkActionEntry entries[] = {
N_("Create barcode object"),
G_CALLBACK (gl_ui_cmd_objects_create_barcode) },
+ { "ObjectsProperties",
+ GL_STOCK_PROPERTIES,
+ N_("Properties"),
+ NULL,
+ N_("Edit object properties"),
+ G_CALLBACK (gl_ui_cmd_objects_properties) },
+
{ "ObjectsRaise",
GL_STOCK_ORDER_TOP,
N_("Bring to front"),
@@ -551,6 +558,8 @@ static const gchar *ui_info =
" <menuitem action='ObjectsCreateBarcode' />"
" </menu>"
" <separator />"
+" <menuitem action='ObjectsProperties' />"
+" <separator />"
" <menu action='ObjectsOrderMenu'>"
" <menuitem action='ObjectsRaise' />"
" <menuitem action='ObjectsLower' />"
@@ -613,6 +622,8 @@ static const gchar *ui_info =
" </toolbar>"
""
" <popup action='ContextMenu'>"
+" <menuitem action='ObjectsProperties' />"
+" <separator />"
" <menu action='ObjectsOrderMenu'>"
" <menuitem action='ObjectsRaise' />"
" <menuitem action='ObjectsLower' />"
@@ -675,6 +686,7 @@ static gchar* doc_verbs [] = {
"/ui/MenuBar/ObjectsMenu/ObjectsCreateMenu/ObjectsCreateEllipse",
"/ui/MenuBar/ObjectsMenu/ObjectsCreateMenu/ObjectsCreateImage",
"/ui/MenuBar/ObjectsMenu/ObjectsCreateMenu/ObjectsCreateBarcode",
+ "/ui/MenuBar/ObjectsMenu/ObjectsProperties",
"/ui/MenuBar/ObjectsMenu/ObjectsOrderMenu/ObjectsRaise",
"/ui/MenuBar/ObjectsMenu/ObjectsOrderMenu/ObjectsLower",
"/ui/MenuBar/ObjectsMenu/ObjectsRotateFlipMenu/ObjectsRotateLeft",
@@ -724,6 +736,7 @@ static gchar* selection_verbs [] = {
};
static gchar* atomic_selection_verbs [] = {
+ "/ui/MenuBar/ObjectsMenu/ObjectsProperties",
NULL
};
@@ -1146,8 +1159,8 @@ set_additional_properties (GtkUIManager *ui)
menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu_item));
descend_menu_set_always_show_image (GTK_MENU (menu));
- menu_item = gtk_ui_manager_get_widget (ui, "/MenuBar/ObjectsMenu/ObjectsMergeProperties");
- g_object_set (menu_item, "always-show-image", FALSE, NULL); /* Leave this one out. */
+ menu_item = gtk_ui_manager_get_widget (ui, "/ContextMenu/ObjectsProperties");
+ g_object_set (menu_item, "always-show-image", TRUE, NULL);
menu_item = gtk_ui_manager_get_widget (ui, "/ContextMenu/ObjectsOrderMenu/");
menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (menu_item));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]