[gnumeric] Turn view properties dialog into instant-apply dialog.



commit 69f41f91194539aa1b8ba7ffbef624571e9e59ff
Author: Andreas J. Guelzow <aguelzow pyrshep ca>
Date:   Wed Nov 11 15:36:55 2009 -0700

    Turn view properties dialog into instant-apply dialog.
    
    2009-11-11  Andreas J. Guelzow <aguelzow pyrshep ca>
    
    	* dialog-doc-metadata.c (dialog_doc_meta_data_add_item): fix wrong
    	  key
    	* dialog-workbook-attr.c (AttrState): remove unneeded fields and
    	  add 2 new fields
    	(cb_page_select): deleted
    	(cb_widget_changed ): rewritten into instant-apply
    	(cb_attr_dialog_dialog_apply): deleted
    	(cb_attr_dialog_dialog_ok): deleted
    	(attr_dialog_init_toggle): rewritten
    	(attr_dialog_init_widget_page): new
    	(attr_dialog_init_autocompletion_page): new
    	(attr_dialog_init_protection_page): new
    	(attr_dialog_init_view_page): deleted
    	(attr_dialog_add_item): new
    	(attr_dialog_select_page_search): new
    	(attr_dialog_impl): set up page selector
    	* preferences.glade: minor border adjstment
    	* workbook-attr.glade: major adjustments

 NEWS                               |    3 +-
 component/Gnumeric-embed.xml.in    |    5 +-
 src/GNOME_Gnumeric-gtk.xml.in      |    5 +-
 src/HILDON_Gnumeric-gtk.xml.in     |    5 +-
 src/dialogs/ChangeLog              |   21 +++
 src/dialogs/dialog-doc-metadata.c  |    2 +-
 src/dialogs/dialog-workbook-attr.c |  301 ++++++++++++++++++++++--------------
 src/dialogs/preferences.glade      |    1 +
 src/dialogs/workbook-attr.glade    |  301 ++++++++++++++++++-----------------
 src/wbc-gtk-actions.c              |    2 +-
 10 files changed, 375 insertions(+), 271 deletions(-)
---
diff --git a/NEWS b/NEWS
index d3c31a6..7781ea8 100644
--- a/NEWS
+++ b/NEWS
@@ -2,7 +2,8 @@ Gnumeric 1.9.16
 
 Andreas:
 	* Clarify distinction between Document and View Properties.
-	* Sort the translated labels in the prference dialog.
+	* Sort the translated labels in the preference dialog.
+	* Turn view properties dialog into instant-apply dialog.
 
 Jean:
 	* Fix cursor and cell edition on dark backgrounds. [#600656]
diff --git a/component/Gnumeric-embed.xml.in b/component/Gnumeric-embed.xml.in
index 3bac369..e471919 100644
--- a/component/Gnumeric-embed.xml.in
+++ b/component/Gnumeric-embed.xml.in
@@ -89,8 +89,9 @@
       </menu>
       <menuitem action="ViewStatusbar"/>
       <menuitem action="ViewFullScreen"/>
-      <menuitem action="ViewZoom"/>
       <menuitem action="FormatWorkbook"/>
+      <separator/>
+      <menuitem action="ViewZoom"/>
     </menu>
     <menu name="Insert" action="MenuInsert">
       <menuitem action="InsertCells"/>
@@ -144,6 +145,8 @@
         <menuitem action="SheetHideColHeader"/>
         <menuitem action="SheetHideRowHeader"/>
 	<menuitem action="SheetDirection"/>
+        <separator/>
+        <menuitem action="ViewZoom"/>
       </menu>
       <menuitem action="FormatAuto"/>
     </menu>
diff --git a/src/GNOME_Gnumeric-gtk.xml.in b/src/GNOME_Gnumeric-gtk.xml.in
index a4fa459..740fb8d 100644
--- a/src/GNOME_Gnumeric-gtk.xml.in
+++ b/src/GNOME_Gnumeric-gtk.xml.in
@@ -88,8 +88,9 @@
       </menu>
       <menuitem action="ViewStatusbar"/>
       <menuitem action="ViewFullScreen"/>
-      <menuitem action="ViewZoom"/>
       <menuitem action="FormatWorkbook"/>
+      <separator/>
+      <menuitem action="ViewZoom"/>
     </menu>
     <menu name="Insert" action="MenuInsert">
       <menuitem action="InsertCells"/>
@@ -143,6 +144,8 @@
         <menuitem action="SheetHideColHeader"/>
         <menuitem action="SheetHideRowHeader"/>
 	<menuitem action="SheetDirection"/>
+        <separator/>
+        <menuitem action="ViewZoom"/>
       </menu>
       <menuitem action="FormatAuto"/>
     </menu>
diff --git a/src/HILDON_Gnumeric-gtk.xml.in b/src/HILDON_Gnumeric-gtk.xml.in
index aa86e3c..f9e1cb7 100644
--- a/src/HILDON_Gnumeric-gtk.xml.in
+++ b/src/HILDON_Gnumeric-gtk.xml.in
@@ -94,10 +94,11 @@
       </menu>
       <menuitem action="ViewStatusbar"/>
       <menuitem action="ViewFullScreen"/>
+      <menuitem action="FormatWorkbook"/>
+      <separator/>
       <menuitem action="ViewZoom"/>
       <menuitem action="ViewZoomIn"/>
       <menuitem action="ViewZoomOut"/>
-      <menuitem action="FormatWorkbook"/>
      </menu>
     <menu name="Insert" action="MenuInsert">
       <menuitem action="InsertCells"/>
@@ -150,6 +151,8 @@
         <menuitem action="SheetHideGridlines"/>
         <menuitem action="SheetHideColHeader"/>
         <menuitem action="SheetHideRowHeader"/>
+        <separator/>
+        <menuitem action="ViewZoom"/>
       </menu>
       <menuitem action="FormatAuto"/>
     </menu>
diff --git a/src/dialogs/ChangeLog b/src/dialogs/ChangeLog
index 949438b..9d545a0 100644
--- a/src/dialogs/ChangeLog
+++ b/src/dialogs/ChangeLog
@@ -1,5 +1,26 @@
 2009-11-11  Andreas J. Guelzow <aguelzow pyrshep ca>
 
+	* dialog-doc-metadata.c (dialog_doc_meta_data_add_item): fix wrong
+	  key
+	* dialog-workbook-attr.c (AttrState): remove unneeded fields and 
+	  add 2 new fields
+	(cb_page_select): deleted
+	(cb_widget_changed ): rewritten into instant-apply
+	(cb_attr_dialog_dialog_apply): deleted
+	(cb_attr_dialog_dialog_ok): deleted
+	(attr_dialog_init_toggle): rewritten
+	(attr_dialog_init_widget_page): new
+	(attr_dialog_init_autocompletion_page): new
+	(attr_dialog_init_protection_page): new
+	(attr_dialog_init_view_page): deleted
+	(attr_dialog_add_item): new
+	(attr_dialog_select_page_search): new
+	(attr_dialog_impl): set up page selector
+	* preferences.glade: minor border adjstment
+	* workbook-attr.glade: major adjustments
+	
+2009-11-11  Andreas J. Guelzow <aguelzow pyrshep ca>
+
 	* dialog-doc-metadata.c: use more appropriate icon for statistics
 	* dialog-preferences.c (page_info): change the order of items to 
 	  index the required page directly
diff --git a/src/dialogs/dialog-doc-metadata.c b/src/dialogs/dialog-doc-metadata.c
index 9eca03d..ddf8e33 100644
--- a/src/dialogs/dialog-doc-metadata.c
+++ b/src/dialogs/dialog-doc-metadata.c
@@ -1568,7 +1568,7 @@ dialog_doc_meta_data_add_item (DialogDocMetaData *state, char const *page_name,
 	if (icon_name != NULL)
 		icon = gtk_widget_render_icon (state->dialog, icon_name,
 					       GTK_ICON_SIZE_MENU,
-					       "Gnumeric-Preference-Dialog");
+					       DOC_METADATA_KEY);
 	if ((parent_path != NULL) && gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (state->store),
 									  &parent, parent_path))
 		gtk_tree_store_append (state->store, &iter, &parent);
diff --git a/src/dialogs/dialog-workbook-attr.c b/src/dialogs/dialog-workbook-attr.c
index c738b41..967f3da 100644
--- a/src/dialogs/dialog-workbook-attr.c
+++ b/src/dialogs/dialog-workbook-attr.c
@@ -34,6 +34,13 @@
 
 #define WORKBOOK_ATTRIBUTE_KEY "workbook-attribute-dialog"
 
+enum {
+	ITEM_ICON,
+	ITEM_NAME,
+	PAGE_NUMBER,
+	NUM_COLUMNS
+};
+
 typedef struct {
 	GladeXML	*gui;
 	GtkWidget	*dialog;
@@ -46,20 +53,8 @@ typedef struct {
 	WorkbookView     *wbv;
 	WBCGtk	 *wbcg;
 
-	struct {
-		GtkToggleButton	*show_hsb;
-		GtkToggleButton	*show_vsb;
-		GtkToggleButton	*show_tabs;
-		GtkToggleButton	*autocomplete;
-		GtkToggleButton	*is_protected;
-	} view;
-	struct {
-		gboolean	show_hsb;
-		gboolean	show_vsb;
-		gboolean	show_tabs;
-		gboolean	autocomplete;
-		gboolean	is_protected;
-	} old;
+	GtkTreeStore            *store;
+	GtkTreeView             *tview;
 } AttrState;
 
 /*****************************************************************************/
@@ -69,56 +64,17 @@ typedef struct {
  * invocations */
 static int attr_dialog_page = 0;
 
-/*
- * Callback routine to help remember which attribute tab was selected
- * between dialog invocations.
- */
-static void
-cb_page_select (G_GNUC_UNUSED GtkNotebook *notebook,
-		G_GNUC_UNUSED GtkNotebookPage *page,
-		gint page_num,  AttrState *state)
-{
-	if (!state->destroying)
-		attr_dialog_page = page_num;
-}
-
 /*****************************************************************************/
 
 static void
-cb_widget_changed (G_GNUC_UNUSED GtkWidget *widget, AttrState *state)
+cb_widget_changed (GtkWidget *widget, AttrState *state)
 {
-	gboolean changed;
-	changed =
-		!((gtk_toggle_button_get_active (state->view.show_hsb) == state->old.show_hsb) &&
-		  (gtk_toggle_button_get_active (state->view.show_vsb) == state->old.show_vsb) &&
-		  (gtk_toggle_button_get_active (state->view.show_tabs) == state->old.show_tabs) &&
-		  (gtk_toggle_button_get_active (state->view.autocomplete) == state->old.autocomplete) &&
-		  (gtk_toggle_button_get_active (state->view.is_protected) == state->old.is_protected));
-
-	gtk_widget_set_sensitive (state->ok_button, changed);
-	gtk_widget_set_sensitive (state->apply_button, changed);
-}
+	char const *key;
 
-/* Handler for the apply button */
-static void
-cb_attr_dialog_dialog_apply (G_GNUC_UNUSED GtkWidget *button,
-			     AttrState *state)
-{
-	state->old.show_hsb = gtk_toggle_button_get_active (state->view.show_hsb);
-	state->old.show_vsb = gtk_toggle_button_get_active (state->view.show_vsb);
-	state->old.show_tabs = gtk_toggle_button_get_active (state->view.show_tabs);
-	state->old.autocomplete = gtk_toggle_button_get_active (state->view.autocomplete);
-	state->old.is_protected = gtk_toggle_button_get_active (state->view.is_protected);
-
-	g_object_set (G_OBJECT (state->wbv),
-		      "show-horizontal-scrollbar", state->old.show_hsb,
-		      "show-vertical-scrollbar", state->old.show_vsb,
-		      "show-notebook-tabs", state->old.show_tabs,
-		      "do-auto-completion", state->old.autocomplete,
-		      "protected", state->old.is_protected,
+	key = g_object_get_data (G_OBJECT (widget), "GNUMERIC:VIEWPROPERTY"); 
+	g_object_set (G_OBJECT (state->wbv), 
+		      key, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)),
 		      NULL);
-
-	cb_widget_changed (NULL, state);
 }
 
 static void
@@ -130,13 +86,6 @@ cb_attr_dialog_dialog_close (G_GNUC_UNUSED GtkWidget *button,
 }
 
 static void
-cb_attr_dialog_dialog_ok (GtkWidget *button, AttrState *state)
-{
-	cb_attr_dialog_dialog_apply (button, state);
-	cb_attr_dialog_dialog_close (button, state);
-}
-
-static void
 cb_attr_dialog_dialog_destroy (AttrState *state)
 {
 	if (state->gui != NULL) {
@@ -150,55 +99,149 @@ cb_attr_dialog_dialog_destroy (AttrState *state)
 
 /*****************************************************************************/
 
-static GtkToggleButton *
-attr_dialog_init_toggle (AttrState *state, char const *name, gboolean val,
-			 gboolean *storage)
+static void
+attr_dialog_init_toggle (AttrState *state, char const *name, char const *key)
 {
 	GtkWidget *w = glade_xml_get_widget (state->gui, name);
+	gboolean val = FALSE;
+
+	g_object_get (G_OBJECT (state->wbv), key, &val, NULL); 
 	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), val);
+	
 	g_signal_connect (G_OBJECT (w),
 		"toggled",
 		G_CALLBACK (cb_widget_changed), state);
-	*storage = val;
+	g_object_set_data (G_OBJECT (w), "GNUMERIC:VIEWPROPERTY", (gpointer) key);
+	return;
+}
 
-	return GTK_TOGGLE_BUTTON (w);
+static void
+attr_dialog_init_widget_page (AttrState *state)
+{
+	attr_dialog_init_toggle 
+		(state,
+		 "WorkbookView::show_horizontal_scrollbar", "show_horizontal_scrollbar");
+	attr_dialog_init_toggle 
+		(state,
+		 "WorkbookView::show_vertical_scrollbar", "show_vertical_scrollbar");
+	attr_dialog_init_toggle 
+		(state,
+		 "WorkbookView::show_notebook_tabs", "show_notebook_tabs");
 }
 
-static GtkEntry *
-attr_dialog_init_entry (AttrState *state, char const *name, char const *val)
+static void
+attr_dialog_init_autocompletion_page (AttrState *state)
 {
-	GtkWidget *w = glade_xml_get_widget (state->gui, name);
-	gtk_entry_set_text (GTK_ENTRY (w), val);
-	g_signal_connect (G_OBJECT (w),
-		"changed",
-		G_CALLBACK (cb_widget_changed), state);
-	gnumeric_editable_enters (GTK_WINDOW (state->dialog), w);
-	return GTK_ENTRY (w);
+	attr_dialog_init_toggle 
+		(state,
+		 "WorkbookView::do_auto_completion", "do_auto_completion");
+}
+
+static void
+attr_dialog_init_protection_page (AttrState *state)
+{
+	attr_dialog_init_toggle 
+		(state,
+		 "WorkbookView::workbook_protected", "protected");
+}
+/*****************************************************************************/
+
+
+static void
+attr_dialog_add_item (AttrState *state, char const *page_name,
+			       char const *icon_name,
+			       int page, char const* parent_path)
+{
+	GtkTreeIter iter, parent;
+	GdkPixbuf * icon = NULL;
+
+	if (icon_name != NULL)
+		icon = gtk_widget_render_icon (state->dialog, icon_name,
+					       GTK_ICON_SIZE_MENU,
+					       WORKBOOK_ATTRIBUTE_KEY);
+	if ((parent_path != NULL) && gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (state->store),
+									  &parent, parent_path))
+		gtk_tree_store_append (state->store, &iter, &parent);
+	else
+		gtk_tree_store_append (state->store, &iter, NULL);
+
+	gtk_tree_store_set (state->store, &iter,
+			    ITEM_ICON, icon,
+			    ITEM_NAME, _(page_name),
+			    PAGE_NUMBER, page,
+			    -1);
+	if (icon != NULL)
+		g_object_unref (icon);
+}
+
+typedef struct {
+	char const *page_name;
+	char const *icon_name;
+	char const *parent_path;
+	int  const page;
+	void (*page_initializer) (AttrState *state);
+} page_info_t;
+
+static page_info_t const page_info[] = {
+	{N_("Widgets"),         "Gnumeric_ObjectScrollbar",      NULL, 0, &attr_dialog_init_widget_page          },
+	{N_("Protection"),      GTK_STOCK_DIALOG_AUTHENTICATION, NULL, 1 ,&attr_dialog_init_protection_page      },
+	{N_("Auto Completion"), NULL,                            NULL, 2 ,&attr_dialog_init_autocompletion_page  },
+	{NULL, NULL, NULL, -1, NULL},
+};
+
+typedef struct {
+	int  const page;
+	GtkTreePath *path;
+} page_search_t;
+
+static gboolean   
+attr_dialog_select_page_search (GtkTreeModel *model,
+				GtkTreePath *path,
+				GtkTreeIter *iter,
+				page_search_t *pst)
+{
+	int page;
+	gtk_tree_model_get (model, iter, PAGE_NUMBER, &page, -1);
+	if (page == pst->page) {
+		pst->path = gtk_tree_path_copy (path);
+		return TRUE;
+	} else
+		return FALSE;
 }
 
 static void
-attr_dialog_init_view_page (AttrState *state)
+attr_dialog_select_page (AttrState *state, int page)
 {
-	state->view.show_hsb     = attr_dialog_init_toggle (state,
-		"WorkbookView::show_horizontal_scrollbar",
-		state->wbv->show_horizontal_scrollbar,
-		&state->old.show_hsb);
-	state->view.show_vsb     = attr_dialog_init_toggle (state,
-		"WorkbookView::show_vertical_scrollbar",
-		state->wbv->show_vertical_scrollbar,
-		&state->old.show_vsb);
-	state->view.show_tabs    = attr_dialog_init_toggle (state,
-		"WorkbookView::show_notebook_tabs",
-		state->wbv->show_notebook_tabs,
-		&state->old.show_tabs);
-	state->view.autocomplete = attr_dialog_init_toggle (state,
-		"WorkbookView::do_auto_completion",
-		state->wbv->do_auto_completion,
-		&state->old.autocomplete);
-	state->view.is_protected = attr_dialog_init_toggle (state,
-		"WorkbookView::workbook_protected",
-		state->wbv->is_protected,
-		&state->old.is_protected);
+	page_search_t pst = {page, NULL};
+
+	if (page >= 0)
+		gtk_tree_model_foreach (GTK_TREE_MODEL (state->store),
+					(GtkTreeModelForeachFunc) attr_dialog_select_page_search,
+					&pst);
+	
+	if (pst.path == NULL)
+		pst.path = gtk_tree_path_new_from_string ("0");
+
+	if (pst.path != NULL) {
+		gtk_tree_view_set_cursor (state->tview, pst.path, NULL, FALSE);
+		gtk_tree_view_expand_row (state->tview, pst.path, TRUE);
+		gtk_tree_path_free (pst.path);
+	}
+}
+
+static void
+cb_attr_dialog_selection_changed (GtkTreeSelection *selection,
+				  AttrState *state)
+{
+	GtkTreeIter iter;
+
+	if (gtk_tree_selection_get_selected (selection, NULL, &iter)) {
+		gtk_tree_model_get (GTK_TREE_MODEL (state->store), &iter,
+				    PAGE_NUMBER, &attr_dialog_page,
+				    -1);
+		gtk_notebook_set_current_page (GTK_NOTEBOOK (state->notebook), attr_dialog_page);
+	} else
+		attr_dialog_select_page (state, attr_dialog_page);
 }
 
 /*****************************************************************************/
@@ -207,6 +250,10 @@ static void
 attr_dialog_impl (AttrState *state)
 {
 	GtkWidget *dialog = glade_xml_get_widget (state->gui, "WorkbookAttr");
+	GtkTreeViewColumn *column;
+	GtkTreeSelection  *selection;
+	int i;
+
 	g_return_if_fail (dialog != NULL);
 
 	/* Initialize */
@@ -214,29 +261,42 @@ attr_dialog_impl (AttrState *state)
 	state->notebook                 = glade_xml_get_widget (state->gui, "notebook");
 	state->destroying               = FALSE;
 
-	attr_dialog_init_view_page (state);
+	state->tview = GTK_TREE_VIEW(glade_xml_get_widget (state->gui, "itemlist"));
+	state->store = gtk_tree_store_new (NUM_COLUMNS,
+					   GDK_TYPE_PIXBUF,
+					   G_TYPE_STRING,
+					   G_TYPE_INT);
+	gtk_tree_view_set_model (state->tview, GTK_TREE_MODEL(state->store));
+	selection = gtk_tree_view_get_selection (state->tview);
+	gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+	column = gtk_tree_view_column_new_with_attributes ("",
+							   gtk_cell_renderer_pixbuf_new (),
+							   "pixbuf", ITEM_ICON,
+							   NULL);
+	gtk_tree_view_append_column (state->tview, column);
+	column = gtk_tree_view_column_new_with_attributes ("",
+							   gtk_cell_renderer_text_new (),
+							   "text", ITEM_NAME,
+							   NULL);
+	gtk_tree_view_append_column (state->tview, column);
+	gtk_tree_view_set_expander_column (state->tview, column);
+
+	g_signal_connect (selection,
+			  "changed",
+			  G_CALLBACK (cb_attr_dialog_selection_changed), state);
+
+	for (i = 0; page_info[i].page > -1; i++) {
+		const page_info_t *this_page =  &page_info[i];
+		this_page->page_initializer (state);
+		attr_dialog_add_item (state, this_page->page_name, this_page->icon_name, 
+					       this_page->page, this_page->parent_path);
+	}
 
-	/* Select the same page the last invocation used */
-	gtk_notebook_set_current_page (
-		GTK_NOTEBOOK (state->notebook),
-		attr_dialog_page);
-        g_signal_connect (
-		G_OBJECT (state->notebook),
-		"switch_page",
-		G_CALLBACK (cb_page_select), state);
-
-	state->ok_button = glade_xml_get_widget (state->gui, "ok_button");
-	g_signal_connect (G_OBJECT (state->ok_button),
-			  "clicked",
-			  G_CALLBACK (cb_attr_dialog_dialog_ok), state);
-	state->apply_button = glade_xml_get_widget (state->gui, "apply_button");
-	g_signal_connect (G_OBJECT (state->apply_button),
-			  "clicked",
-			  G_CALLBACK (cb_attr_dialog_dialog_apply), state);
+	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (state->store), ITEM_NAME, GTK_SORT_ASCENDING);
+	
 	g_signal_connect (G_OBJECT (glade_xml_get_widget (state->gui, "close_button")),
 			  "clicked",
 			  G_CALLBACK (cb_attr_dialog_dialog_close), state);
-	cb_widget_changed (NULL, state);
 
 	gnumeric_init_help_button (
 		glade_xml_get_widget (state->gui, "help_button"),
@@ -275,4 +335,7 @@ dialog_workbook_attr (WBCGtk *wbcg)
 	state->wb   = wb_control_get_workbook (WORKBOOK_CONTROL (wbcg));
 
 	attr_dialog_impl (state);
+
+	/* Select the same page the last invocation used */
+	attr_dialog_select_page (state, attr_dialog_page);
 }
diff --git a/src/dialogs/preferences.glade b/src/dialogs/preferences.glade
index d738d80..7ce854d 100644
--- a/src/dialogs/preferences.glade
+++ b/src/dialogs/preferences.glade
@@ -20,6 +20,7 @@
 	<widget class="GtkHBox" id="hbox1">
 	  <property name="visible">True</property>
 	  <property name="spacing">12</property>
+          <property name="border_width">5</property>
 	  <child>
 	    <widget class="GtkScrolledWindow" id="scrolledwindow1">
 	      <property name="visible">True</property>
diff --git a/src/dialogs/workbook-attr.glade b/src/dialogs/workbook-attr.glade
index e0ee7ea..3b23cfe 100644
--- a/src/dialogs/workbook-attr.glade
+++ b/src/dialogs/workbook-attr.glade
@@ -9,169 +9,209 @@
         <property name="visible">True</property>
         <property name="spacing">6</property>
         <child>
-          <widget class="GtkNotebook" id="notebook">
+          <widget class="GtkHBox" id="hbox1">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
             <property name="border_width">5</property>
+            <property name="spacing">12</property>
             <child>
-              <widget class="GtkTable" id="table1">
+              <widget class="GtkScrolledWindow" id="scrolledwindow1">
+                <property name="width_request">160</property>
                 <property name="visible">True</property>
-                <property name="border_width">12</property>
-                <property name="n_rows">3</property>
-                <property name="n_columns">2</property>
-                <property name="column_spacing">12</property>
-                <property name="row_spacing">6</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">in</property>
                 <child>
-                  <widget class="GtkCheckButton" id="WorkbookView::do_auto_completion">
-                    <property name="label" translatable="yes">A_uto Complete Text in Cells</property>
+                  <widget class="GtkTreeView" id="itemlist">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
-                    <property name="draw_indicator">True</property>
+                    <property name="headers_visible">False</property>
+                    <property name="headers_clickable">False</property>
                   </widget>
-                  <packing>
-                    <property name="right_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
                 </child>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkNotebook" id="notebook">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="show_tabs">False</property>
+                <property name="show_border">False</property>
                 <child>
-                  <widget class="GtkCheckButton" id="WorkbookView::show_notebook_tabs">
-                    <property name="label" translatable="yes">Notebook _Tabs for Sheets</property>
+                  <widget class="GtkVBox" id="vbox2">
                     <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
-                    <property name="draw_indicator">True</property>
+                    <child>
+                      <widget class="GtkCheckButton" id="WorkbookView::show_notebook_tabs">
+                        <property name="label" translatable="yes">Notebook _Tabs for Sheets</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="draw_indicator">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkCheckButton" id="WorkbookView::show_horizontal_scrollbar">
+                        <property name="label" translatable="yes">_Horizontal Scrollbar</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="draw_indicator">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkCheckButton" id="WorkbookView::show_vertical_scrollbar">
+                        <property name="label" translatable="yes">_Vertical Scrollbar</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="draw_indicator">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
                   </widget>
-                  <packing>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
                 </child>
                 <child>
-                  <widget class="GtkCheckButton" id="WorkbookView::show_horizontal_scrollbar">
-                    <property name="label" translatable="yes">_Horizontal Scrollbar</property>
+                  <widget class="GtkLabel" id="label1">
                     <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="has_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
-                    <property name="draw_indicator">True</property>
+                    <property name="label" translatable="yes">View</property>
+                    <property name="justify">center</property>
                   </widget>
                   <packing>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="y_options"></property>
+                    <property name="tab_fill">False</property>
+                    <property name="type">tab</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkCheckButton" id="WorkbookView::show_vertical_scrollbar">
-                    <property name="label" translatable="yes">_Vertical Scrollbar</property>
+                  <widget class="GtkTable" id="table2">
                     <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
-                    <property name="draw_indicator">True</property>
+                    <property name="n_rows">2</property>
+                    <property name="n_columns">2</property>
+                    <property name="column_spacing">12</property>
+                    <property name="row_spacing">6</property>
+                    <child>
+                      <widget class="GtkCheckButton" id="WorkbookView::workbook_protected">
+                        <property name="label" translatable="yes">_Protect Workbook</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="draw_indicator">True</property>
+                      </widget>
+                      <packing>
+                        <property name="right_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkEntry" id="password_entry">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip" translatable="yes">Unimplementented</property>
+                        <property name="visibility">False</property>
+                        <property name="invisible_char">&#x2022;</property>
+                      </widget>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label7">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="yalign">0</property>
+                        <property name="label" translatable="yes">Pa_ssword:</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">password_entry</property>
+                      </widget>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
                   </widget>
                   <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="y_options"></property>
+                    <property name="position">1</property>
                   </packing>
                 </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label1">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">View</property>
-                <property name="justify">center</property>
-              </widget>
-              <packing>
-                <property name="tab_fill">False</property>
-                <property name="type">tab</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkTable" id="table2">
-                <property name="visible">True</property>
-                <property name="border_width">12</property>
-                <property name="n_rows">2</property>
-                <property name="n_columns">2</property>
-                <property name="column_spacing">12</property>
-                <property name="row_spacing">6</property>
                 <child>
-                  <widget class="GtkCheckButton" id="WorkbookView::workbook_protected">
-                    <property name="label" translatable="yes">_Protect Workbook</property>
+                  <widget class="GtkLabel" id="label2">
                     <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
-                    <property name="draw_indicator">True</property>
+                    <property name="label" translatable="yes">Protection</property>
+                    <property name="justify">center</property>
                   </widget>
                   <packing>
-                    <property name="right_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
+                    <property name="position">1</property>
+                    <property name="tab_fill">False</property>
+                    <property name="type">tab</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkEntry" id="password_entry">
+                  <widget class="GtkVBox" id="vbox1">
                     <property name="visible">True</property>
-                    <property name="sensitive">False</property>
-                    <property name="tooltip" translatable="yes">Unimplementented</property>
-                    <property name="visibility">False</property>
+                    <child>
+                      <widget class="GtkCheckButton" id="WorkbookView::do_auto_completion">
+                        <property name="label" translatable="yes">A_uto Complete Text in Cells</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="draw_indicator">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
                   </widget>
                   <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="y_options"></property>
+                    <property name="position">2</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkLabel" id="label7">
+                  <widget class="GtkLabel" id="label3">
                     <property name="visible">True</property>
-                    <property name="sensitive">False</property>
-                    <property name="yalign">0</property>
-                    <property name="label" translatable="yes">Pa_ssword:</property>
-                    <property name="use_underline">True</property>
-                    <property name="mnemonic_widget">password_entry</property>
+                    <property name="label" translatable="yes">page 3</property>
                   </widget>
                   <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
+                    <property name="position">2</property>
+                    <property name="tab_fill">False</property>
+                    <property name="type">tab</property>
                   </packing>
                 </child>
               </widget>
               <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label2">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">Protection</property>
-                <property name="justify">center</property>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-                <property name="tab_fill">False</property>
-                <property name="type">tab</property>
+                <property name="pack_type">end</property>
+                <property name="position">0</property>
               </packing>
             </child>
           </widget>
           <packing>
+            <property name="padding">1</property>
             <property name="position">1</property>
           </packing>
         </child>
@@ -194,22 +234,7 @@
                 <property name="position">0</property>
               </packing>
             </child>
-            <child>
-              <widget class="GtkButton" id="apply_button">
-                <property name="label">gtk-apply</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
+           <child>
               <widget class="GtkButton" id="close_button">
                 <property name="label">gtk-close</property>
                 <property name="visible">True</property>
@@ -224,22 +249,6 @@
                 <property name="position">2</property>
               </packing>
             </child>
-            <child>
-              <widget class="GtkButton" id="ok_button">
-                <property name="label">gtk-ok</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">3</property>
-              </packing>
-            </child>
           </widget>
           <packing>
             <property name="expand">False</property>
diff --git a/src/wbc-gtk-actions.c b/src/wbc-gtk-actions.c
index 305ce24..e3c8c8a 100644
--- a/src/wbc-gtk-actions.c
+++ b/src/wbc-gtk-actions.c
@@ -2372,7 +2372,7 @@ static GtkToggleActionEntry const toggle_actions[] = {
 	{ "SheetDisplayFormulas", NULL, N_("Display _Formulas"),
 		"<control>quoteleft", N_("Display the value of a formula or the formula itself"),
 		G_CALLBACK (cb_sheet_pref_display_formulas) },
-	{ "SheetHideZeros", NULL, N_("Hide _Zeros"),
+	{ "SheetHideZeros", NULL, N_("_Hide Zeros"),
 		NULL, N_("Toggle whether or not to display zeros as blanks"),
 		G_CALLBACK (cb_sheet_pref_hide_zero) },
 	{ "SheetHideGridlines", NULL, N_("Hide _Gridlines"),



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