dia r4090 - in trunk: . app data



Author: hans
Date: Mon Jul 14 21:03:47 2008
New Revision: 4090
URL: http://svn.gnome.org/viewvc/dia?rev=4090&view=rev

Log:
2008-07-14  Hans Breuer  <hans breuer org>
	[
	 Patch from Patrick Hallinan integrating the layers diaog into the
	 integrated UI
	]
	* app/app_procs.[ch] : only register the dialog for not integrated ui
	* app/interface.[ch] : creation of the new widget and ...
	* app/commands.[ch] : ... menu callbacks
	* app/layer_dialog.[ch] : conditionalized to resue most of the code in 
	the integrated UI context
	* app/menus.[ch] data/integrated-ui.xml : move layer visibility toggle 
	to View/Layers



Modified:
   trunk/ChangeLog
   trunk/app/app_procs.c
   trunk/app/commands.c
   trunk/app/commands.h
   trunk/app/interface.c
   trunk/app/interface.h
   trunk/app/layer_dialog.c
   trunk/app/layer_dialog.h
   trunk/app/menus.c
   trunk/app/menus.h
   trunk/data/integrated-ui.xml

Modified: trunk/app/app_procs.c
==============================================================================
--- trunk/app/app_procs.c	(original)
+++ trunk/app/app_procs.c	Mon Jul 14 21:03:47 2008
@@ -799,14 +799,15 @@
     /* further initialization *before* reading files */  
     active_tool = create_modify_tool();
 
-    if( prefs.use_integrated_ui )
+    if (prefs.use_integrated_ui) {
       create_integrated_ui();
-    else 
+    } else {
       create_toolbox();
-
-    persistence_register_window_create("layer_window",
-				       (NullaryFunc*)&create_layer_dialog);
-
+      /* for the integrated ui case it is integrated */
+      persistence_register_window_create("layer_window",
+				         (NullaryFunc*)&create_layer_dialog);
+    }
+      
     /*fill recent file menu */
     recent_file_history_init();
 

Modified: trunk/app/commands.c
==============================================================================
--- trunk/app/commands.c	(original)
+++ trunk/app/commands.c	Mon Jul 14 21:03:47 2008
@@ -1047,6 +1047,19 @@
   }
 }
 
+void
+view_layers_callback (GtkAction *action)
+{
+  if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION(action)) == TRUE)
+  {
+    integrated_ui_layer_view_show ();
+  }
+  else
+  {
+    integrated_ui_layer_view_hide ();
+  }
+}
+
 
 void
 objects_place_over_callback (GtkAction *action)
@@ -1241,3 +1254,4 @@
   undo_set_transactionpoint(dia->undo);
 }
 
+

Modified: trunk/app/commands.h
==============================================================================
--- trunk/app/commands.h	(original)
+++ trunk/app/commands.h	Mon Jul 14 21:03:47 2008
@@ -63,8 +63,10 @@
 void view_redraw_callback             (GtkAction *action);
 void view_diagram_properties_callback (GtkAction *action);
 
+/* Integrated UI callbacks */
 void view_main_toolbar_callback       (GtkAction *action);
 void view_main_statusbar_callback     (GtkAction *action);
+void view_layers_callback             (GtkAction *action);
 
 void objects_place_over_callback        (GtkAction *action);
 void objects_place_under_callback       (GtkAction *action);

Modified: trunk/app/interface.c
==============================================================================
--- trunk/app/interface.c	(original)
+++ trunk/app/interface.c	Mon Jul 14 21:03:47 2008
@@ -253,6 +253,7 @@
     GtkToolbar   * toolbar;
     GtkNotebook  * diagram_notebook;
     GtkStatusbar * statusbar;
+    GtkWidget    * layer_view;
 } ui;
 
 /*static*/ GtkTooltips *tool_tips;
@@ -1616,6 +1617,8 @@
   GtkAccelGroup *accel_group;
   GdkPixbuf *pixbuf;
 
+  GtkWidget *layer_view;
+	
 #ifdef GNOME
   window = gnome_app_new ("Dia", _("Diagram Editor"));
 #else
@@ -1657,6 +1660,10 @@
   gtk_box_pack_end (GTK_BOX (main_vbox), hbox, TRUE, TRUE, 0);
   gtk_widget_show (hbox);
   
+  /* Layer View  */
+  layer_view = create_layer_view_widget ();
+  gtk_box_pack_end (GTK_BOX (hbox), layer_view, FALSE, FALSE, 0);
+	 
   /* Diagram Notebook */
   notebook = gtk_notebook_new ();
   gtk_box_pack_end (GTK_BOX (hbox), notebook, TRUE, TRUE, 0);
@@ -1715,6 +1722,7 @@
   ui.toolbar          = GTK_TOOLBAR   (toolbar);
   ui.diagram_notebook = GTK_NOTEBOOK  (notebook);
   ui.statusbar        = GTK_STATUSBAR (statusbar);
+  ui.layer_view       =                layer_view;
 
   /* NOTE: These functions use ui.xxx assignments above and so must come after
    *       the user interface components are set.                              */
@@ -1889,6 +1897,46 @@
   }
 }
 
+/* Indicate if the integrated UI Layer View is showing.
+ * @return TRUE if showing, FALSE if not showing or doesn't exist 
+ */ 
+gboolean integrated_ui_layer_view_is_showing (void)
+{
+  if (ui.layer_view)
+  {
+    return GTK_WIDGET_VISIBLE (ui.layer_view)? TRUE : FALSE;
+  }
+  return FALSE;
+}
+
+void integrated_ui_layer_view_show (void)
+{
+  if (ui.layer_view)
+  {
+    GtkAction *action = NULL;
+    gtk_widget_show (ui.layer_view); 
+    action = menus_get_action (VIEW_LAYERS_ACTION);
+    if (action) 
+    {
+      gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE);
+    }
+  }
+}
+
+void integrated_ui_layer_view_hide (void)
+{
+  if (ui.layer_view)
+  {
+    GtkAction *action = NULL;
+    gtk_widget_hide (ui.layer_view); 
+    action = menus_get_action (VIEW_LAYERS_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 
  */ 
@@ -1928,3 +1976,4 @@
 }
 
 
+

Modified: trunk/app/interface.h
==============================================================================
--- trunk/app/interface.h	(original)
+++ trunk/app/interface.h	Mon Jul 14 21:03:47 2008
@@ -53,6 +53,10 @@
 void     integrated_ui_main_statusbar_show (void);
 void     integrated_ui_main_statusbar_hide (void);
 
+gboolean integrated_ui_layer_view_is_showing (void);
+void     integrated_ui_layer_view_show (void);
+void     integrated_ui_layer_view_hide (void);
+
 int is_integrated_ui (void);
 
 void create_display_shell(DDisplay *ddisp,

Modified: trunk/app/layer_dialog.c
==============================================================================
--- trunk/app/layer_dialog.c	(original)
+++ trunk/app/layer_dialog.c	Mon Jul 14 21:03:47 2008
@@ -40,6 +40,15 @@
 
 #include "dia-app-icons.h"
 
+struct LayerDialog {
+  GtkWidget *dialog;
+  GtkWidget *diagram_omenu;
+
+  GtkWidget *layer_list;
+
+  Diagram *diagram;
+};
+
 static struct LayerDialog *layer_dialog = NULL;
 
 typedef struct _ButtonData ButtonData;
@@ -121,7 +130,7 @@
 #define INSENSITIVE 2
 
 static GtkWidget *
-create_button_box(GtkWidget *parent)
+create_button_box(GtkWidget *parent, gboolean show_labels)
 {
   GtkWidget *button;
   GtkWidget *button_box;
@@ -130,7 +139,22 @@
   button_box = gtk_hbox_new (TRUE, 1);
 
   for (i=0;i<num_buttons;i++) {
+    if (show_labels == TRUE)
+    {
     button = gtk_button_new_from_stock(buttons[i].stock_name);
+    }
+    else
+    {
+      GtkWidget * image;
+ 
+      button = gtk_button_new ();
+      
+      image = gtk_image_new_from_stock (buttons[i].stock_name,
+                                        GTK_ICON_SIZE_BUTTON);
+
+      gtk_button_set_image (GTK_BUTTON (button), GTK_IMAGE(image));
+    }
+
     g_signal_connect_swapped (GTK_OBJECT (button), "clicked",
 			     G_CALLBACK(buttons[i].callback),
 			       GTK_OBJECT (parent));
@@ -140,8 +164,6 @@
 
     gtk_box_pack_start (GTK_BOX(button_box), button, TRUE, TRUE, 0);
 
-    layer_dialog->buttons[i] = button;
-    
     gtk_widget_show (button);
   }
 
@@ -202,6 +224,95 @@
   return TRUE;
 }
 
+void layer_view_hide_button_clicked (void * not_used)
+{
+  integrated_ui_layer_view_hide ();
+}
+
+GtkWidget * create_layer_view_widget (void)
+{
+  GtkWidget  *vbox;
+  GtkWidget  *hbox;
+  GtkWidget  *label;
+  GtkWidget  *hide_button;
+  GtkRcStyle *rcstyle;    /* For hide_button */   
+  GtkWidget  *image;      /* For hide_button */
+  GtkWidget  *list;
+  GtkWidget  *separator;
+  GtkWidget  *scrolled_win;
+  GtkWidget  *button_box;
+  
+  /* if layer_dialog were renamed to layer_view_data this would make
+   * more sense.
+   */
+  layer_dialog = g_new (struct LayerDialog, 1);
+
+  layer_dialog->diagram = NULL;
+
+  layer_dialog->dialog = vbox = gtk_vbox_new (FALSE, 1);
+    
+  hbox = gtk_hbox_new (FALSE, 1);
+  
+  label = gtk_label_new (_ ("Layers:"));
+  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
+  gtk_widget_show (label);
+  
+  layer_dialog->diagram_omenu = NULL;
+
+  /* Hide Button */
+  hide_button = gtk_button_new ();
+  gtk_button_set_relief (GTK_BUTTON (hide_button), GTK_RELIEF_NONE);
+  gtk_button_set_focus_on_click (GTK_BUTTON (hide_button), FALSE);
+
+  /* make it as small as possible */
+  rcstyle = gtk_rc_style_new ();
+  rcstyle->xthickness = rcstyle->ythickness = 0;
+  gtk_widget_modify_style (hide_button, rcstyle);
+  gtk_rc_style_unref (rcstyle);
+
+  image = gtk_image_new_from_stock (GTK_STOCK_CLOSE,
+                                    GTK_ICON_SIZE_MENU);
+
+  gtk_container_add (GTK_CONTAINER(hide_button), image);
+  gtk_signal_connect (GTK_OBJECT (hide_button), "clicked", 
+                      GTK_SIGNAL_FUNC (layer_view_hide_button_clicked), NULL);    
+    
+  gtk_box_pack_start (GTK_BOX (hbox), hide_button, FALSE, FALSE, 2);
+    
+  gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 2);
+  gtk_widget_show_all (hbox);
+
+  button_box = create_button_box(vbox, FALSE);
+  
+  gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, FALSE, 2);
+  gtk_widget_show (button_box);
+    
+  separator = gtk_hseparator_new();
+  gtk_box_pack_start(GTK_BOX(vbox), separator, FALSE, FALSE, 2);
+  gtk_widget_show (separator);
+
+  scrolled_win = gtk_scrolled_window_new (NULL, NULL);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
+				  GTK_POLICY_AUTOMATIC, 
+				  GTK_POLICY_AUTOMATIC);
+  gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 2);
+
+  layer_dialog->layer_list = list = gtk_list_new();
+
+  gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_BROWSE);
+  gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_win), list);
+  gtk_container_set_focus_vadjustment (GTK_CONTAINER (list),
+				       gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled_win)));
+  gtk_widget_show (scrolled_win);
+  gtk_widget_show (list);
+
+  g_signal_connect (GTK_OBJECT (list), "event",
+		      (GtkSignalFunc) layer_list_events,
+		      NULL);
+    
+  return vbox;
+}
+
 void
 create_layer_dialog(void)
 {
@@ -273,7 +384,7 @@
 		      (GtkSignalFunc) layer_list_events,
 		      NULL);
 
-  button_box = create_button_box(dialog);
+  button_box = create_button_box(dialog, TRUE);
   
   gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, FALSE, 2);
   gtk_widget_show (button_box);
@@ -521,6 +632,11 @@
   int i;
   int current_nr;
 
+  if (layer_dialog->diagram_omenu == NULL)
+  {
+    return;
+  }
+
   if (layer_dialog == NULL || layer_dialog->dialog == NULL) {
     if (!dia_open_diagrams())
       return; /* shortcut; maybe session end w/o this dialog */
@@ -591,9 +707,12 @@
 void
 layer_dialog_show()
 {
+  if (is_integrated_ui () == FALSE)
+  {   
   if (layer_dialog == NULL || layer_dialog->dialog == NULL)
     create_layer_dialog();
   gtk_window_present(GTK_WINDOW(layer_dialog->dialog));
+  }
 }
 
 /*
@@ -631,7 +750,7 @@
   layer_dialog->diagram = dia;
   if (dia != NULL) {
     i = g_list_index(dia_open_diagrams(), dia);
-    if (i >= 0)
+    if (i >= 0 && layer_dialog->diagram_omenu != NULL)
       gtk_option_menu_set_history(GTK_OPTION_MENU(layer_dialog->diagram_omenu),
 				  i);
   }

Modified: trunk/app/layer_dialog.h
==============================================================================
--- trunk/app/layer_dialog.h	(original)
+++ trunk/app/layer_dialog.h	Mon Jul 14 21:03:47 2008
@@ -21,22 +21,14 @@
 #include <gtk/gtk.h>
 #include "diagram.h"
 
-struct LayerDialog {
-  GtkWidget *dialog;
-  GtkWidget *diagram_omenu;
-
-  GtkWidget *layer_list;
-
-  Diagram *diagram;
-
-  GtkWidget *buttons[4];
-};
 
 void create_layer_dialog(void);
 void layer_dialog_update_diagram_list(void);
 void layer_dialog_show(void);
 void layer_dialog_set_diagram(Diagram *dia);
 
+/* Integrated UI component */
+GtkWidget * create_layer_view_widget (void);
 
 /* DiaLayerWidget: */
 #define DIA_LAYER_WIDGET(obj)          \
@@ -92,3 +84,4 @@
 
 #endif /* LAYER_DIALOG_H */
 
+

Modified: trunk/app/menus.c
==============================================================================
--- trunk/app/menus.c	(original)
+++ trunk/app/menus.c	Mon Jul 14 21:03:47 2008
@@ -99,7 +99,8 @@
 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) }
+    { VIEW_MAIN_STATUSBAR_ACTION, NULL, N_("Show Statusbar"), NULL, NULL, G_CALLBACK (view_main_statusbar_callback) },
+    { VIEW_LAYERS_ACTION,         NULL, N_("Show Layers"),    NULL, NULL, G_CALLBACK (view_layers_callback) }
 };
 
 /* Actions for diagram window */

Modified: trunk/app/menus.h
==============================================================================
--- trunk/app/menus.h	(original)
+++ trunk/app/menus.h	Mon Jul 14 21:03:47 2008
@@ -112,6 +112,8 @@
 
 #define VIEW_MAIN_TOOLBAR_ACTION     "ViewMainToolbar"
 #define VIEW_MAIN_STATUSBAR_ACTION   "ViewMainStatusbar"
+#define VIEW_LAYERS_ACTION           "ViewLayers"
 
 #endif /* MENUS_H */
 
+

Modified: trunk/data/integrated-ui.xml
==============================================================================
--- trunk/data/integrated-ui.xml	(original)
+++ trunk/data/integrated-ui.xml	Mon Jul 14 21:03:47 2008
@@ -49,7 +49,6 @@
 			<menuitem name="EditPastetext" action="EditPastetext" />
 			<separator name="EditSep4" />
 			<menuitem name="DiagramProperties" action="DiagramProperties" />
-			<menuitem name="DiagramLayers" action="DiagramLayers" />
 		</menu>
 		<menu name="View" action="View">
 			<menuitem name="ViewZoomin" action="ViewZoomin" />
@@ -72,6 +71,7 @@
 			<separator name="ViewSep1" />
 			<menuitem name="ViewFullscreen" action="ViewFullscreen" />
 			<menuitem name="ViewMainToolbar" action="ViewMainToolbar" />
+			<menuitem name="ViewLayers" action="ViewLayers" />
 			<menuitem name="ViewMainStatusbar" action="ViewMainStatusbar" />
 			<separator name="ViewSep2" />
 			<menuitem name="ViewAntialiased" action="ViewAntialiased" />



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]