Hi,

This patch:

-Fixes startup warnings
-Reverts app_init changes.
-Adds Toolbar/Statusbar show/hide to Tabbed Interface View menu.
-Removes diagram main menu from right click on diagram.

Now I'm going to work on handling app exit with multiple diagrams modified
and adding the layer's dialog stuff to a tab.

Once those are done I think that the tabbed interface will actually be
usable.

Pat.
Index: app/commands.c
===================================================================
--- app/commands.c	(revision 3692)
+++ app/commands.c	(working copy)
@@ -969,8 +969,34 @@
   diagram_properties_show(ddisp->diagram);
 }
 
+void
+view_main_toolbar_callback (GtkAction *action)
+{
+  if (gtk_toggle_action_get_active (action) == TRUE)
+  {
+    integrated_ui_main_toolbar_show ();
+  }
+  else
+  {
+    integrated_ui_main_toolbar_hide ();
+  }
+}
 
 void
+view_main_statusbar_callback (GtkAction *action)
+{
+  if (gtk_toggle_action_get_active (action) == TRUE)
+  {
+    integrated_ui_main_statusbar_show ();
+  }
+  else
+  {
+    integrated_ui_main_statusbar_hide ();
+  }
+}
+
+
+void
 objects_place_over_callback (GtkAction *action)
 {
   diagram_place_over_selected(ddisplay_active_diagram());
Index: app/display.c
===================================================================
--- app/display.c	(revision 3692)
+++ app/display.c	(working copy)
@@ -825,8 +825,11 @@
 static void
 update_snap_grid_status(DDisplay *ddisp)
 {
-  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ddisp->grid_status),
-			       ddisp->grid.snap);
+  if (ddisp->grid_status)
+  {
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ddisp->grid_status),
+                                  ddisp->grid.snap);
+  }
 }
 
 /** Set the display's mainpoint magnetism setting, updating menu and button
@@ -855,8 +858,11 @@
 static void
 update_mainpoint_status(DDisplay *ddisp)
 {
-  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ddisp->mainpoint_status),
-			       ddisp->mainpoint_magnetism);
+  if (ddisp->mainpoint_status)
+  {
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ddisp->mainpoint_status),
+                                 ddisp->mainpoint_magnetism);
+  }
 }
 
 /** Scroll display to where point x,y (window coords) is visible */
Index: app/commands.h
===================================================================
--- app/commands.h	(revision 3692)
+++ app/commands.h	(working copy)
@@ -63,6 +63,9 @@
 void view_redraw_callback             (GtkAction *action);
 void view_diagram_properties_callback (GtkAction *action);
 
+void view_main_toolbar_callback       (GtkAction *action);
+void view_main_statusbar_callback     (GtkAction *action);
+
 void objects_place_over_callback        (GtkAction *action);
 void objects_place_under_callback       (GtkAction *action);
 void objects_place_up_callback          (GtkAction *action);
Index: app/app_procs.c
===================================================================
--- app/app_procs.c	(revision 3692)
+++ app/app_procs.c	(working copy)
@@ -954,13 +954,16 @@
   if (dia_is_interactive && files == NULL && !nonew) {
     if (prefs.use_integrated_ui)
     {
-      /* Add Diagram after window is shown */
-      GtkWidget *ui = interface_get_toolbox_shell();
-
-      g_signal_connect (G_OBJECT (ui), 
-                       "window-state-event",
-                        integrated_ui_create_initial_diagrams_callback,
-                        NULL);
+      GList * list;
+    
+      file_new_callback(NULL);  
+      list = dia_open_diagrams();
+      if (list) 
+      {
+        Diagram * diagram = list->data;
+        diagram_update_extents(diagram);
+        diagram->is_default = TRUE;
+      }
     }
     else
     {
@@ -984,26 +987,6 @@
   dynobj_refresh_init();
 }
 
-static void
-integrated_ui_create_initial_diagrams_callback (GtkWidget *widget,
-                                                gpointer   user_data)
-{
-  GList * list;
-
-  file_new_callback(NULL);  
-  list = dia_open_diagrams();
-  if (list) 
-  {
-    Diagram * diagram = list->data;
-    diagram_update_extents(diagram);
-    diagram->is_default = TRUE;
-  }
-
-  g_signal_handler_disconnect (widget, 
-                               integrated_ui_create_initial_diagrams_callback);
-}
-
-
 #if 0
 /* app_procs.c: warning: `set_true_callback' defined but not used */
 static void
Index: app/interface.c
===================================================================
--- app/interface.c	(revision 3692)
+++ app/interface.c	(working copy)
@@ -494,7 +494,7 @@
   gtk_container_add (GTK_CONTAINER(close_button), image);
   gtk_signal_connect (GTK_OBJECT (close_button), "clicked", 
                       GTK_SIGNAL_FUNC (close_notebook_page_callback), ddisp->container);
-  /* <from GEdit/> */
+  /* </from GEdit> */
 
   gtk_box_pack_start( GTK_BOX(tab_label_container), close_button, FALSE, FALSE, 0 );
   gtk_widget_show (close_button);
@@ -559,7 +559,7 @@
   /*  Canvas  */
   ddisp->canvas = dia_canvas_new();
   
-  /* Dia's canvas does it' double buffering alone so switch off GTK's */
+  /* Dia's canvas does it's double buffering alone so switch off GTK's */
   gtk_widget_set_double_buffered (ddisp->canvas, FALSE);
 
   gtk_widget_set_events (ddisp->canvas, CANVAS_EVENT_MASK);
@@ -574,9 +574,7 @@
 		    G_CALLBACK(display_drop_callback), NULL);
   g_signal_connect (GTK_OBJECT (ddisp->canvas), "drag_data_received",
 		    G_CALLBACK(display_data_received_callback), ddisp);
-/*
-  gtk_object_set_user_data (GTK_OBJECT (ddisp->canvas), (gpointer) ddisp);
-*/
+
   /*  place all the widgets  */
   gtk_table_attach (GTK_TABLE (table), ddisp->origin, 0, 1, 0, 1,
                     GTK_FILL, GTK_FILL, 0, 0);
@@ -596,29 +594,23 @@
 
   ddisp->common_toolbar = ui.toolbar;
 
+  /* Stand-alone window menubar */
   ddisp->menu_bar = NULL;
 
-  /* Zoom status pseudo-optionmenu */
+  /* Stand-alone window Zoom status/menu */
   ddisp->zoom_status = NULL;
 
-  /* Grid on/off button */
+  /* Stand-alone window Grid on/off button */
   ddisp->grid_status = NULL;
-  ddisp->mainpoint_status = dia_toggle_button_new_with_icons(dia_mainpoints_on_icon,
-							dia_mainpoints_off_icon);
 
-  g_signal_connect(G_OBJECT(ddisp->mainpoint_status), "toggled",
-		   G_CALLBACK (interface_toggle_mainpoint_magnetism), ddisp);
-  gtk_tooltips_set_tip(tool_tips, ddisp->mainpoint_status,
-		       _("Toggles object snapping for this window."), NULL);
-  gtk_box_pack_start (GTK_BOX (status_hbox), ddisp->mainpoint_status,
-		      FALSE, FALSE, 0);
+  /* Stand-alone window Object Snapping button */
+  ddisp->mainpoint_status = NULL;
 
+  gtk_widget_show (ddisp->container);
+  gtk_widget_show (table);
   gtk_widget_show (ddisp->hsb);
   gtk_widget_show (ddisp->vsb);
   display_rulers_show (ddisp);
-  gtk_widget_show (table);
-  gtk_widget_show (ddisp->container);
-
   gtk_widget_show (ddisp->canvas);
 
   /* Ensure that the the new page is showing */
@@ -1593,8 +1585,6 @@
   /* Applicatioon Statusbar */
   statusbar = gtk_statusbar_new ();
   gtk_box_pack_end (GTK_BOX (main_vbox), statusbar, FALSE, TRUE, 0);
-  gtk_widget_show (statusbar);
-
   /* HBox for everything below the menubar and toolbars */
   hbox = gtk_hbox_new(FALSE, 0);
   gtk_box_pack_end (GTK_BOX (main_vbox), hbox, TRUE, TRUE, 0);
@@ -1658,6 +1648,11 @@
   ui.diagram_notebook = GTK_NOTEBOOK  (notebook);
   ui.statusbar        = GTK_STATUSBAR (statusbar);
 
+  /* NOTE: These functions use ui.xxx assignments above and so must come after
+   *       the user interface components are set.                              */
+  integrated_ui_main_toolbar_show ();
+  integrated_ui_main_statusbar_show ();
+
   /* For access outside here: */
   g_object_set_data (G_OBJECT (ui.main_window), DIA_MAIN_NOTEBOOK, notebook);
 
@@ -1785,3 +1780,76 @@
 
   return toolbox_shell;
 }
+
+/* Indicate if the integrated UI toolbar is showing.
+ * @return TRUE if showing, FALSE if not showing or doesn't exist 
+ */ 
+gboolean integrated_ui_main_toolbar_is_showing (void)
+{
+  if (ui.toolbar)
+  {
+    return GTK_WIDGET_VISIBLE (ui.toolbar)? TRUE : FALSE;
+  }
+  return FALSE;
+}
+
+/* show() integrated UI main toolbar and set pulldown menu action. */
+void integrated_ui_main_toolbar_show (void)
+{
+  if (ui.toolbar)
+  {
+    gtk_widget_show (GTK_WIDGET (ui.toolbar));
+    GtkAction * action = menus_get_action (VIEW_MAIN_TOOLBAR_ACTION);
+    if (action)
+      gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
+  }
+}
+
+/* hide() integrated UI main toolbar and reset pulldown menu action. */
+void integrated_ui_main_toolbar_hide (void)
+{
+  if (ui.toolbar)
+  {
+    gtk_widget_hide (GTK_WIDGET (ui.toolbar));
+    GtkAction * action = menus_get_action (VIEW_MAIN_TOOLBAR_ACTION);
+    if (action)
+      gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), FALSE);
+  }
+}
+
+/* Indicate if the integrated UI statusbar is showing.
+ * @return TRUE if showing, FALSE if not showing or doesn't exist 
+ */ 
+gboolean integrated_ui_main_statusbar_is_showing (void)
+{
+  if (ui.statusbar)
+  {
+    return GTK_WIDGET_VISIBLE (ui.statusbar)? TRUE : FALSE;
+  }
+}
+
+/* show() integrated UI main statusbar and set pulldown menu action. */
+void integrated_ui_main_statusbar_show (void)
+{
+  if (ui.statusbar)
+  {
+    gtk_widget_show (GTK_WIDGET (ui.statusbar));
+    GtkAction * action = menus_get_action (VIEW_MAIN_STATUSBAR_ACTION);
+    if (action)
+      gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
+  }
+}
+
+/* hide() integrated UI main statusbar and reset pulldown menu action. */
+void integrated_ui_main_statusbar_hide (void)
+{
+  if (ui.statusbar)
+  {
+    gtk_widget_hide (GTK_WIDGET (ui.statusbar));
+    GtkAction * action = menus_get_action (VIEW_MAIN_STATUSBAR_ACTION);
+    if (action)
+      gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), FALSE);
+  }
+}
+
+
Index: app/interface.h
===================================================================
--- app/interface.h	(revision 3692)
+++ app/interface.h	(working copy)
@@ -45,7 +45,17 @@
 
 void create_integrated_ui (void);
 
+gboolean integrated_ui_main_toolbar_is_showing (void);
+void     integrated_ui_main_toolbar_show (void);
+void     integrated_ui_main_toolbar_hide (void);
+
+gboolean integrated_ui_main_statusbar_is_showing (void);
+void     integrated_ui_main_statusbar_show (void);
+void     integrated_ui_main_statusbar_hide (void);
+
+/*
 void synchronize_ui_to_active_display (DDisplay *ddisp);
+*/
 
 int is_integrated_ui (void);
 
Index: app/disp_callbacks.c
===================================================================
--- app/disp_callbacks.c	(revision 3692)
+++ app/disp_callbacks.c	(working copy)
@@ -600,7 +600,7 @@
               if (transient_tool)
                 break;
               if (ddisp->menu_bar == NULL) {
-                if (bevent->state & GDK_CONTROL_MASK) {
+                if (bevent->state & GDK_CONTROL_MASK || is_integrated_ui ()) {
                       /* for two button mouse users ... */
                   popup_object_menu(ddisp, bevent);
                   break;
Index: app/menus.c
===================================================================
--- app/menus.c	(revision 3692)
+++ app/menus.c	(working copy)
@@ -90,6 +90,13 @@
     { "FileTree", NULL, N_("_Diagram tree..."), "F8", NULL, G_CALLBACK (diagtree_show_callback) }
 };
 
+/* Toggle-Actions for toolbox menu */
+static const GtkToggleActionEntry integrated_ui_view_toggle_entries[] = 
+{
+    { VIEW_MAIN_TOOLBAR_ACTION,   NULL, N_("Show Toolbar"),   NULL, NULL, G_CALLBACK (view_main_toolbar_callback) },
+    { VIEW_MAIN_STATUSBAR_ACTION, NULL, N_("Show Statusbar"), NULL, NULL, G_CALLBACK (view_main_statusbar_callback) }
+};
+
 /* Actions for diagram window */
 static const GtkActionEntry display_entries[] =
 {
@@ -823,6 +830,8 @@
                 G_N_ELEMENTS (toolbox_entries), NULL);
   gtk_action_group_add_actions (integrated_ui_actions, display_entries, 
                 G_N_ELEMENTS (display_entries), NULL);
+  gtk_action_group_add_toggle_actions (integrated_ui_actions, integrated_ui_view_toggle_entries, 
+                G_N_ELEMENTS (integrated_ui_view_toggle_entries), NULL);
   gtk_action_group_add_toggle_actions (integrated_ui_actions, toolbox_toggle_entries,
                 G_N_ELEMENTS (toolbox_toggle_entries), 
                 NULL);
Index: app/menus.h
===================================================================
--- app/menus.h	(revision 3692)
+++ app/menus.h	(working copy)
@@ -94,5 +94,8 @@
 void            menus_set_recent       (GtkActionGroup *actions);
 void            menus_clear_recent     (void);
 
+#define VIEW_MAIN_TOOLBAR_ACTION     "ViewMainToolbar"
+#define VIEW_MAIN_STATUSBAR_ACTION   "ViewMainStatusbar"
+
 #endif /* MENUS_H */
 
Index: lib/diainteractiverenderer.c
===================================================================
--- lib/diainteractiverenderer.c	(revision 3692)
+++ lib/diainteractiverenderer.c	(working copy)
@@ -74,8 +74,6 @@
   g_return_if_fail (irenderer != NULL);
   g_return_if_fail (irenderer->set_size != NULL);
 
-printf(__FILE__": dia_renderer_set_size()--->  %d  <--------------\n", __LINE__);
   irenderer->set_size (renderer, window, width, height);
-printf(__FILE__": dia_renderer_set_size()--->  %d  <--------------\n", __LINE__);
 }
 
Index: data/integrated-ui.xml
===================================================================
--- data/integrated-ui.xml	(revision 3692)
+++ data/integrated-ui.xml	(working copy)
@@ -68,13 +68,16 @@
 			<menuitem name="ViewShowall" action="ViewShowall" />
 			<separator name="ViewSep1" />
 			<menuitem name="ViewFullscreen" action="ViewFullscreen" />
+			<menuitem name="ViewMainToolbar" action="ViewMainToolbar" />
+			<menuitem name="ViewMainStatusbar" action="ViewMainStatusbar" />
+			<separator name="ViewSep2" />
 			<menuitem name="ViewAntialiased" action="ViewAntialiased" />
 			<menuitem name="ViewShowgrid" action="ViewShowgrid" />
 			<menuitem name="ViewSnaptogrid" action="ViewSnaptogrid" />
 			<menuitem name="ViewSnaptoobjects" action="ViewSnaptoobjects" />
 			<menuitem name="ViewShowrulers" action="ViewShowrulers" />
 			<menuitem name="ViewShowconnectionpoints" action="ViewShowconnectionpoints" />
-			<separator name="ViewSep2" />
+			<separator name="ViewSep3" />
 			<menuitem name="ViewNewview" action="ViewNewview" />
 			<menuitem name="ViewCloneview" action="ViewCloneview" />
 			<menuitem name="ViewRedraw" action="ViewRedraw" />
_______________________________________________
Dia-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/dia-list
FAQ at http://live.gnome.org/Dia/Faq
Main page at http://live.gnome.org/Dia

Reply via email to