dia r4090 - in trunk: . app data
- From: hans svn gnome org
- To: svn-commits-list gnome org
- Subject: dia r4090 - in trunk: . app data
- Date: Mon, 14 Jul 2008 21:03:47 +0000 (UTC)
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]