[prev in list] [next in list] [prev in thread] [next in thread] 

List:       dia-list
Subject:    semi-working tabbed interface
From:       "Patrick Hallinan" <patrick.j.hallinan () gmail ! com>
Date:       2007-05-29 1:33:30
Message-ID: 6bc4e26c0705281833n2aeadc90sa974b3205f65978e () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hi,

These are the changes:

+Synchronized the remaining menu items to diagram in the tabbed notebook.
+Removed right-click pop-up menu from dia-canvas.
+Fixed crasher bug when closing diagrams in tabbed notebook.

I found it difficult to get the View->Show Rulers menu item to work
correctly and while I was working on that I saw that sometimes the menu
items would not be ready during application startup, so I made this change
to app_init():

@@ -950,17 +954,13 @@
   if (dia_is_interactive && files == NULL && !nonew) {
     if (prefs.use_integrated_ui)
     {
-      /* Use the same function call to create a new diagram as that used by
-       * the menu and toolbar
*/
-      GList * list;
-      file_new_callback(NULL);
-      list = dia_open_diagrams();
-      if (list)
-      {
-        Diagram * diagram = list->data;
-        diagram_update_extents(diagram);
-        diagram->is_default = TRUE;
-      }
+      /* 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);

This moves the create-initial-diagram code to after the window is
initialized (I hope).  I don't know if it's OK to do this in an event
handler.

This also doesn't handle the case of loading diagrams on the command line.
I thought I'd check to see if this is OK before I do that.

Pat.

[Attachment #5 (text/html)]

Hi,<br><br>These are the changes:<br><br>+Synchronized the remaining menu items to \
diagram in the tabbed notebook.<br>+Removed right-click pop-up menu from \
dia-canvas.<br>+Fixed crasher bug when closing diagrams in tabbed notebook. <br><br>I \
found it difficult to get the View-&gt;Show Rulers menu item to work correctly and \
while I was working on that I saw that sometimes the menu items would not be ready \
during application startup, so I made this change to app_init(): <br><br>@@ -950,17 \
+954,13 @@<br>&nbsp;&nbsp; if (dia_is_interactive &amp;&amp; files == NULL &amp;&amp; \
!nonew) {<br>&nbsp;&nbsp;&nbsp;&nbsp; if \
(prefs.use_integrated_ui)<br>&nbsp;&nbsp;&nbsp;&nbsp; \
{<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Use the same function call to create a new \
diagram as that used by <br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * the menu and \
toolbar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& \
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb \
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
*/<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GList * \
list;<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file_new_callback(NULL);&nbsp; \
<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list = \
dia_open_diagrams();<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (list) \
<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
Diagram * diagram = list-&gt;data; <br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
diagram_update_extents(diagram);<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
diagram-&gt;is_default = TRUE;<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
}<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Add Diagram after window is shown \
*/<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GtkWidget *ui = \
interface_get_toolbox_shell();<br>+<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
g_signal_connect (G_OBJECT (ui),  \
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&quot;window-state-event&quot;,<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n \
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
integrated_ui_create_initial_diagrams_callback,<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs \
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
NULL);<br><br>This moves the create-initial-diagram code to after the window is \
initialized (I hope).&nbsp; I don&#39;t know if it&#39;s OK to do this in an event \
handler. <br><br>This also doesn&#39;t handle the case of loading diagrams on the \
command line.&nbsp; I thought I&#39;d check to see if this is OK before I do \
that.<br><br>Pat.<br>


["dia.diff" (text/x-patch)]

Index: app/commands.c
===================================================================
--- app/commands.c	(revision 3687)
+++ app/commands.c	(working copy)
@@ -867,28 +867,12 @@
   if (!ddisp) return;
 
   if (!gtk_toggle_action_get_active (action)) {
-    if (GTK_WIDGET_VISIBLE (ddisp->origin)) {
-      gtk_widget_unmap (ddisp->origin);
-      gtk_widget_unmap (ddisp->hrule);
-      gtk_widget_unmap (ddisp->vrule);
-      
-      GTK_WIDGET_UNSET_FLAGS (ddisp->origin, GTK_VISIBLE);
-      GTK_WIDGET_UNSET_FLAGS (ddisp->hrule, GTK_VISIBLE);
-      GTK_WIDGET_UNSET_FLAGS (ddisp->vrule, GTK_VISIBLE);
-      
-      gtk_widget_queue_resize (GTK_WIDGET (ddisp->origin->parent));
+    if (ddisp->rulers_are_showing) {
+      display_rulers_hide (ddisp);
     }
   } else {
-    if (!GTK_WIDGET_VISIBLE (ddisp->origin)) {
-      GTK_WIDGET_SET_FLAGS (ddisp->origin, GTK_VISIBLE);
-      GTK_WIDGET_SET_FLAGS (ddisp->hrule, GTK_VISIBLE);
-      GTK_WIDGET_SET_FLAGS (ddisp->vrule, GTK_VISIBLE);
-      
-      gtk_widget_map (ddisp->origin);
-      gtk_widget_map (ddisp->hrule);
-      gtk_widget_map (ddisp->vrule);
-      
-      gtk_widget_queue_resize (GTK_WIDGET (ddisp->origin->parent));
+    if (!ddisp->rulers_are_showing) {
+      display_rulers_show (ddisp);
     }
   }
 }
Index: app/display.c
===================================================================
--- app/display.c	(revision 3687)
+++ app/display.c	(working copy)
@@ -210,7 +210,7 @@
   }
   create_display_shell(ddisp, prefs.new_view.width, prefs.new_view.height,
 		       filename, prefs.new_view.use_menu_bar, !app_is_embedded());
-  
+
   ddisplay_update_statusbar (ddisp);
 
   ddisplay_set_origo(ddisp, ddisp->visible.left, ddisp->visible.top);
@@ -808,18 +808,13 @@
   GtkToggleAction *snap_to_grid;
   ddisp->grid.snap = snap;
 
-  if (is_integrated_ui ())
-  {
-     snap_to_grid = GTK_TOGGLE_ACTION (menus_get_action ("ViewSnaptogrid"));
-  }
-  else
-  {
     if (ddisp->menu_bar == NULL) {
       snap_to_grid = GTK_TOGGLE_ACTION (menus_get_action ("ViewSnaptogrid"));
+      if (is_integrated_ui ())
+         integrated_ui_toolbar_grid_snap_synchronize_to_display (ddisp);
     } else {
       snap_to_grid = GTK_TOGGLE_ACTION (gtk_action_group_get_action (ddisp->actions, \
"ViewSnaptogrid"));  }
-  }
   /* Currently, this can cause double emit, but that's a small problem.
    */
   gtk_toggle_action_set_active (snap_to_grid, ddisp->grid.snap);
@@ -844,6 +839,8 @@
 
   if (ddisp->menu_bar == NULL) {
     mainpoint_magnetism = GTK_TOGGLE_ACTION (menus_get_action \
("ViewSnaptoobjects")); +    if (is_integrated_ui ())
+      integrated_ui_toolbar_object_snap_synchronize_to_display (ddisp);
   } else {
     mainpoint_magnetism = GTK_TOGGLE_ACTION (gtk_action_group_get_action \
(ddisp->actions, "ViewSnaptoobjects"));  }
@@ -1099,8 +1096,10 @@
   /* This calls ddisplay_really_destroy */
   if (ddisp->is_standalone_window)
     gtk_widget_destroy (ddisp->shell);
-  else 
+  else {
     gtk_widget_destroy (ddisp->container);
+    ddisplay_really_destroy (ddisp);
+  }
 }
 
 static void
@@ -1220,9 +1219,9 @@
 
 
   ddisplay_do_update_menu_sensitivity (ddisp);
-  
+
   gtk_toggle_action_set_active (rulers,
-				 GTK_WIDGET_VISIBLE (ddisp->hrule) ? 1 : 0); 
+                                ddisp->rulers_are_showing); 
   gtk_toggle_action_set_active (visible_grid,
 				 ddisp->grid.visible);
   gtk_toggle_action_set_active (snap_to_grid,
@@ -1340,6 +1339,54 @@
   gdk_window_set_cursor(ddisp->canvas->window, cursor);
 }
 
+/**
+ * Shows the rulers and sets flag ddisp->rulers_are_showing.  This
+ * is needed to detect whether a show() has been issued.  There is a 
+ * delay between the time that gtk_widget_show() is called and the time
+ * when GTK_WIDGET_IS_VISIBLE(w) will indicate true.
+ * @param ddisp The display to show the rulers on.
+ */
+void display_rulers_show (DDisplay *ddisp)
+{
+  if (ddisp)
+  {
+    GtkWidget *parent = GTK_WIDGET (ddisp->origin->parent);
+
+    gtk_widget_show (ddisp->origin);
+    gtk_widget_show (ddisp->hrule);
+    gtk_widget_show (ddisp->vrule);
+
+    if (GTK_WIDGET_VISIBLE (parent))
+      gtk_widget_queue_resize (parent);
+
+    ddisp->rulers_are_showing = TRUE;
+  }
+}
+
+/**
+ * Hides the rulers and resets the flag ddisp->rulers_are_showing.  This
+ * is needed to detect whether a hide() has been issued.  There is a 
+ * delay between the time that gtk_widget_hide() is called and the time
+ * when GTK_WIDGET_IS_VISIBLE(w) will indicate false.
+ * @param ddisp The display to hide the rulers on.
+ */
+void display_rulers_hide (DDisplay *ddisp)
+{
+  if (ddisp)
+  {
+    GtkWidget *parent = GTK_WIDGET (ddisp->origin->parent);
+
+    gtk_widget_hide (ddisp->origin);
+    gtk_widget_hide (ddisp->hrule);
+    gtk_widget_hide (ddisp->vrule);
+    
+    if (GTK_WIDGET_VISIBLE (parent))
+      gtk_widget_queue_resize (parent);
+
+    ddisp->rulers_are_showing = FALSE;
+  }
+}
+
 void 
 ddisplay_update_statusbar(DDisplay *ddisp)
 {
@@ -1393,12 +1440,12 @@
 
         /* Snap to grid */
         ddisplay_set_snap_to_grid (ddisp, ddisp->grid.snap); /* menus */
-        integrated_ui_toolbar_grid_snap_synchronize_to_display (ddisp);
 
         /* Object snapping */
         ddisplay_set_snap_to_objects (ddisp, ddisp->mainpoint_magnetism);
-        integrated_ui_toolbar_object_snap_synchronize_to_display (ddisp);
 
+        display_update_menu_state (ddisp);
+
       }
     } else {
       /* TODO: Prevent gtk_window_set_transient_for() in Integrated UI case */
Index: app/display.h
===================================================================
--- app/display.h	(revision 3687)
+++ app/display.h	(working copy)
@@ -102,6 +102,8 @@
 
   /* Points to widget containing the diagram if not standalone window */
   GtkWidget *container; 
+
+  gboolean rulers_are_showing;
 };
 
 extern GdkCursor *default_cursor;
@@ -154,6 +156,9 @@
 void ddisplay_set_cursor(DDisplay *ddisp, GdkCursor *cursor);
 void ddisplay_set_all_cursor(GdkCursor *cursor);
 
+void display_rulers_show (DDisplay *ddisp);
+void display_rulers_hide (DDisplay *ddisp);
+
 gboolean ddisplay_scroll(DDisplay *ddisp, Point *delta);
 gboolean ddisplay_autoscroll(DDisplay *ddisp, int x, int y);
 void ddisplay_scroll_up(DDisplay *ddisp);
Index: app/app_procs.c
===================================================================
--- app/app_procs.c	(revision 3687)
+++ app/app_procs.c	(working copy)
@@ -99,6 +99,10 @@
 extern DiaExportFilter png_export_filter;
 #endif
 
+static void
+integrated_ui_create_initial_diagrams_callback (GtkWidget *widget,
+                                                gpointer   user_data);
+
 static gboolean
 handle_initial_diagram(const char *input_file_name, 
 		       const char *export_file_name,
@@ -950,17 +954,13 @@
   if (dia_is_interactive && files == NULL && !nonew) {
     if (prefs.use_integrated_ui)
     {
-      /* Use the same function call to create a new diagram as that used by
-       * the menu and toolbar                                               */
-      GList * list;
-      file_new_callback(NULL);  
-      list = dia_open_diagrams();
-      if (list) 
-      {
-        Diagram * diagram = list->data;
-        diagram_update_extents(diagram);
-        diagram->is_default = TRUE;
-      }
+      /* 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);
     }
     else
     {
@@ -984,6 +984,26 @@
   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/dia_embedd.c
===================================================================
--- app/dia_embedd.c	(revision 3687)
+++ app/dia_embedd.c	(working copy)
@@ -64,6 +64,7 @@
     gtk_widget_show(ddisp->origin);
     gtk_widget_show(ddisp->hrule);
     gtk_widget_show(ddisp->vrule);
+    ddisp->rulers_are_showing = TRUE;
     gtk_widget_show(ddisp->hsb);
     gtk_widget_show(ddisp->vsb);
     gtk_widget_show(ddisp->zoom_status->parent);
@@ -74,6 +75,7 @@
     gtk_widget_hide(ddisp->origin);
     gtk_widget_hide(ddisp->hrule);
     gtk_widget_hide(ddisp->vrule);
+    ddisp->rulers_are_showing = FALSE;
     gtk_widget_hide(ddisp->hsb);
     gtk_widget_hide(ddisp->vsb);
     gtk_widget_hide(ddisp->zoom_status->parent);
Index: app/interface.c
===================================================================
--- app/interface.c	(revision 3687)
+++ app/interface.c	(working copy)
@@ -423,41 +423,18 @@
 }
 
 /**
- * Updates toolbar and menu items to reflect the active display
+ * @param button The notebook close button.
+ * @param user_data Container widget (e.g. VBox).
  */
-void synchronize_ui_to_active_display (DDisplay *ddisp)
-{
-  /* TOOLBAR ITEM */
-
-  /* Zoom */
- 
-  /* Snap-to-grid */
-
-  /* Object Snapping */
-  
-}
-
-
-/**
- * @param ddisp The diagram display object that a window is created for
- * @param width Diagram widgth
- * @param height Diagram Height
- * @param title Window title
- * @param use_mbar Flag to indicate whether to add a menubar to the window
- * @param top_level_window
- */
 void
 close_notebook_page_callback (GtkButton *button,
                               gpointer   user_data)
 {
   GtkBox      *page     = user_data;
-  GtkNotebook *notebook = g_object_get_data (G_OBJECT (page), "GtkNotebook"); 
-  gint         page_num = gtk_notebook_page_num (notebook, GTK_WIDGET(page)); 
   DDisplay    *ddisp    = g_object_get_data (G_OBJECT (page), "DDisplay");
- 
+
+  /* When the page widget is destroyed it removes itself from the notebook */
   ddisplay_close (ddisp);
-  /*gtk_notebook_remove_page (notebook, page_num);*/
-  /* gtk_widget_destroy( GTK_WIDGET (page)); */
 }
 
 /**
@@ -482,9 +459,17 @@
   ddisp->is_standalone_window = FALSE;
 
   ddisp->shell = GTK_WIDGET (ui.main_window);
+
+  /* Statusbar */
+  ddisp->modified_status = GTK_WIDGET (ui.statusbar);
  
   /* Create a new tab page */
   ddisp->container = gtk_vbox_new(FALSE, 0);
+  gtk_widget_set_events (ddisp->container,
+                         GDK_POINTER_MOTION_MASK |
+                         GDK_POINTER_MOTION_HINT_MASK |
+                         GDK_FOCUS_CHANGE_MASK);
+
   tab_label_container = gtk_hbox_new(FALSE,3);
   
   label = gtk_label_new( title );
@@ -515,19 +500,10 @@
   gtk_widget_show (close_button);
   gtk_widget_show (image);
 
-  gtk_notebook_append_page (GTK_NOTEBOOK(ui.diagram_notebook),
-                            ddisp->container,
-                            tab_label_container);
-
   g_object_set_data (G_OBJECT (ddisp->container), "DDisplay",  ddisp);
   g_object_set_data (G_OBJECT (ddisp->container), "tab-label", label);
   g_object_set_data (G_OBJECT (ddisp->container), "window",    ui.main_window);
 
-  gtk_widget_set_events (ddisp->container,
-                         GDK_POINTER_MOTION_MASK |
-                         GDK_POINTER_MOTION_HINT_MASK |
-                         GDK_FOCUS_CHANGE_MASK);
-
   /*  the table containing all widgets  */
   table = gtk_table_new (3, 3, FALSE);
   gtk_table_set_col_spacing (GTK_TABLE (table), 0, 1);
@@ -618,34 +594,18 @@
   gtk_table_attach (GTK_TABLE (table), navigation_button, 2, 3, 2, 3,
                     GTK_FILL, GTK_FILL, 0, 0);
 
-  /* the statusbars */
-  status_hbox = gtk_hbox_new (FALSE, 2);
-
   ddisp->common_toolbar = ui.toolbar;
 
-  /* TODO: Migrate Zoom, Grid Status to main window toolbar */
+  ddisp->menu_bar = NULL;
+
   /* Zoom status pseudo-optionmenu */
   ddisp->zoom_status = NULL;
-/*create_zoom_widget(ddisp);
-  zoom_hbox = gtk_hbox_new(FALSE, 0);
-  zoom_label = gtk_label_new(_("Zoom"));
-  gtk_box_pack_start (GTK_BOX(zoom_hbox), zoom_label,
-		      FALSE, FALSE, 0);
-  gtk_box_pack_start (GTK_BOX(zoom_hbox), ddisp->zoom_status,
-		      FALSE, FALSE, 0);
 
-  gtk_box_pack_start (GTK_BOX (status_hbox), zoom_hbox, FALSE, FALSE, 0);
-*/
-
   /* Grid on/off button */
   ddisp->grid_status = NULL;
-/*
-  g_signal_connect(G_OBJECT(ddisp->grid_status), "toggled",
-		   G_CALLBACK (grid_toggle_snap), ddisp);
-*/
   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,
@@ -653,41 +613,29 @@
   gtk_box_pack_start (GTK_BOX (status_hbox), ddisp->mainpoint_status,
 		      FALSE, FALSE, 0);
 
-  /* Statusbar */
-  ddisp->modified_status = GTK_WIDGET (ui.statusbar);
-/*
-  gtk_box_pack_start (GTK_BOX (status_hbox), ddisp->modified_status,
-		      TRUE, TRUE, 0);
-
-  gtk_table_attach (GTK_TABLE (table), status_hbox, 0, 3, 3, 4,
-                    GTK_FILL, GTK_FILL, 0, 0);
-*/
-
   gtk_widget_show (ddisp->hsb);
   gtk_widget_show (ddisp->vsb);
-  gtk_widget_show (ddisp->origin);
-  gtk_widget_show (ddisp->hrule);
-  gtk_widget_show (ddisp->vrule);
-/* Zoom-status not migrated yet */
-/*
-  gtk_widget_show (ddisp->zoom_status);
-  gtk_widget_show (zoom_hbox);
-  gtk_widget_show (zoom_label);
-*/
-  gtk_widget_show (status_hbox);
+  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 */
-  gtk_notebook_set_current_page (ui.diagram_notebook,
-                                 gtk_notebook_get_n_pages (ui.diagram_notebook)-1);
- 
+  if (gtk_notebook_get_n_pages (ui.diagram_notebook) > 1)
+  {
+    gtk_notebook_set_current_page (ui.diagram_notebook,
+                                   gtk_notebook_get_n_pages \
(ui.diagram_notebook)-1); +  }
+
   integrated_ui_toolbar_grid_snap_synchronize_to_display (ddisp);
 
   integrated_ui_toolbar_object_snap_synchronize_to_display (ddisp);
 
+  gtk_notebook_append_page (GTK_NOTEBOOK(ui.diagram_notebook),
+                            ddisp->container,
+                            tab_label_container);
+
   /* TODO: Figure out how to detect if anti-aliased renderer was set */
   /** For the distributed display this is called when the ddisp->canvas is shown.
    * The show causes a GDK_CONFIGURE event but this is not happening here.  If this
@@ -963,9 +911,7 @@
 
   gtk_widget_show (ddisp->hsb);
   gtk_widget_show (ddisp->vsb);
-  gtk_widget_show (ddisp->origin);
-  gtk_widget_show (ddisp->hrule);
-  gtk_widget_show (ddisp->vrule);
+  display_rulers_show (ddisp);
   gtk_widget_show (ddisp->zoom_status);
   gtk_widget_show (zoom_hbox);
   gtk_widget_show (zoom_label);
Index: app/menus.c
===================================================================
--- app/menus.c	(revision 3687)
+++ app/menus.c	(working copy)
@@ -61,6 +61,9 @@
 static void
 add_toolbox_plugin_actions (GtkUIManager *ui_manager);
 
+static gchar*
+build_ui_filename (const gchar* name);
+
 /* Actions common to toolbox and diagram window */
 static const GtkActionEntry common_entries[] =
 {
@@ -329,22 +332,6 @@
   return TRUE;
 }
 
-/**
- * Temporary hack
- */
-static gboolean 
-toolbar_callback (GtkWidget *toolbar, gpointer data) 
-{
-  if (data)
-  {
-    void (*callback)(GtkAction *action);
-
-    callback = data;
-    callback(NULL);
-  }
-  return FALSE;
-}
-
 static void
 integrated_ui_toolbar_grid_snap_set_state(int state)
 {
@@ -360,7 +347,7 @@
  * @param param Display to synchronize to.
  */
 void
-integrated_ui_toolbar_object_snap_synchronize_to_display(gpointer *param)
+integrated_ui_toolbar_object_snap_synchronize_to_display(gpointer param)
 {
   DDisplay *ddisp = param;
   if (ddisp && ddisp->common_toolbar)
@@ -392,7 +379,7 @@
  * @param param Display to synchronize to.
  */
 void
-integrated_ui_toolbar_grid_snap_synchronize_to_display(gpointer *param)
+integrated_ui_toolbar_grid_snap_synchronize_to_display(gpointer param)
 {
   DDisplay *ddisp = param;
   if (ddisp && ddisp->common_toolbar)
@@ -445,40 +432,20 @@
   GtkWidget   *w;
   GtkAction   *action;
   int          i;
+  GError      *error = NULL;
+  const gchar *uifile;
 
-  struct item_t {
-    const gchar * stock_id;
-    void (*callback)(GtkAction *);
-  } item[] = {  
-    { GTK_STOCK_NEW,      file_new_callback },
-    { GTK_STOCK_OPEN,     file_open_callback },
-    { GTK_STOCK_SAVE,     file_save_callback },
-    { GTK_STOCK_SAVE_AS,  file_save_as_callback },
-    { 0 },
-    { GTK_STOCK_ZOOM_IN,  view_zoom_in_callback },
-    { GTK_STOCK_ZOOM_OUT, view_zoom_out_callback },
-  };
-  size_t num_items = sizeof(item)/sizeof(struct item_t);
-
-  toolbar = GTK_TOOLBAR (gtk_toolbar_new ());
-
-  for(i = 0 ; i < num_items ; i++)
-  {
-    if (item[i].stock_id)
-    {
-      button = gtk_tool_button_new_from_stock (item[i].stock_id);
-      gtk_toolbar_insert (toolbar, button, -1);
-      gtk_signal_connect (GTK_OBJECT (button),"clicked", 
-                          GTK_SIGNAL_FUNC (toolbar_callback), item[i].callback);
-      gtk_widget_show (GTK_WIDGET (button));
-    }
-    else
-    {
-      sep = gtk_separator_tool_item_new ();
-      gtk_toolbar_insert (toolbar, sep, -1);
-      gtk_widget_show (GTK_WIDGET (sep));
-    }
+  uifile = build_ui_filename ("ui/toolbar-ui.xml");
+  if (!gtk_ui_manager_add_ui_from_file (integrated_ui_manager, uifile, &error)) {
+    g_warning ("building menus failed: %s", error->message);
+    g_error_free (error);
+    error = NULL;
+    toolbar = GTK_TOOLBAR (gtk_toolbar_new ());
   }
+  else {
+    toolbar =  gtk_ui_manager_get_widget (integrated_ui_manager, "/Toolbar");
+  }
+  g_free (uifile);  
 
   tool_item = gtk_tool_item_new ();
   w = gtk_label_new ("100%");
Index: app/menus.h
===================================================================
--- app/menus.h	(revision 3687)
+++ app/menus.h	(working copy)
@@ -73,10 +73,10 @@
 integrated_ui_toolbar_set_zoom_text (GtkToolbar *toolbar, const gchar * text);
 
 void 
-integrated_ui_toolbar_grid_snap_synchronize_to_display (gpointer *ddisp);
+integrated_ui_toolbar_grid_snap_synchronize_to_display (gpointer ddisp);
 
 void
-integrated_ui_toolbar_object_snap_synchronize_to_display (gpointer *ddisp);
+integrated_ui_toolbar_object_snap_synchronize_to_display (gpointer ddisp);
 
 /* TODO: rename: menus_get_integrated_ui_menubar() */
 void            menus_get_integrated_ui_menubar  (GtkWidget **menubar, GtkWidget \
                **toolbar, 
Index: lib/diainteractiverenderer.c
===================================================================
--- lib/diainteractiverenderer.c	(revision 3687)
+++ lib/diainteractiverenderer.c	(working copy)
@@ -74,6 +74,8 @@
   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/toolbar.xml
===================================================================
--- data/toolbar.xml	(revision 3687)
+++ data/toolbar.xml	(working copy)
@@ -1,6 +0,0 @@
-<ui>
-  <toolbar name="Toolbar">
-    <toolitem name="" action=""/>
-    <separator/>
-  </toolbar>
-</ui>
Index: data/toolbar-ui.xml
===================================================================
--- data/toolbar-ui.xml	(revision 3687)
+++ data/toolbar-ui.xml	(working copy)
@@ -1,6 +1,11 @@
 <ui>
   <toolbar name="Toolbar">
-    <toolitem name="" action=""/>
-    <separator/>
+	<toolitem name="FileNew" action="FileNew" />
+	<toolitem name="FileOpen" action="FileOpen" />
+	<toolitem name="FileSave" action="FileSave" />
+	<toolitem name="FileSaveas" action="FileSaveas" />
+	<separator/>
+	<toolitem name="ViewZoomin" action="ViewZoomin" />
+	<toolitem name="ViewZoomout" action="ViewZoomout" />
   </toolbar>
 </ui>



_______________________________________________
Dia-list mailing list
Dia-list@gnome.org
http://mail.gnome.org/mailman/listinfo/dia-list
FAQ at http://live.gnome.org/Dia/Faq
Main page at http://live.gnome.org/Dia



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic