[glabels/close-sidebar: 1/2] Experimental sidebar with close button.



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]