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);
- /* */
+ /* */
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 @@
+
+
+
-
+