[gnumeric] Some changes to the paste-special dialog in prep for feature addition



commit b45529b83a19d8289452be6a77ca8971aec4ae9e
Author: Andreas J. Guelzow <aguelzow pyrshep ca>
Date:   Thu Dec 17 10:49:11 2009 -0700

    Some changes to the paste-special dialog in prep for feature addition
    
    2009-12-17  Andreas J. Guelzow <aguelzow pyrshep ca>
    
    	* POTFILES.skip: added src/dialogs/paste-special.glade
    
    2009-12-17  Andreas J. Guelzow <aguelzow pyrshep ca>
    
    	* POTFILES.in: added src/dialogs/paste-special.glade
    
    2009-12-17  Andreas J. Guelzow <aguelzow pyrshep ca>
    
    	* Makefile.am: add paste-special.glade
    	* dialog-paste-special.c: rewrite completely
    	* help.h: add GNUMERIC_HELP_LINK_PASTE_SPECIAL
    	* paste-special.glade: new

 po-functions/ChangeLog             |    4 +
 po-functions/POTFILES.skip         |    1 +
 po/ChangeLog                       |    4 +
 po/POTFILES.in                     |    1 +
 src/dialogs/ChangeLog              |    7 +
 src/dialogs/Makefile.am            |    1 +
 src/dialogs/dialog-paste-special.c |  354 ++++++++++++++++---------------
 src/dialogs/help.h                 |    3 +
 src/dialogs/paste-special.glade    |  405 ++++++++++++++++++++++++++++++++++++
 9 files changed, 611 insertions(+), 169 deletions(-)
---
diff --git a/po-functions/ChangeLog b/po-functions/ChangeLog
index 58444b0..3064dff 100644
--- a/po-functions/ChangeLog
+++ b/po-functions/ChangeLog
@@ -1,3 +1,7 @@
+2009-12-17  Andreas J. Guelzow <aguelzow pyrshep ca>
+
+	* POTFILES.skip: added src/dialogs/paste-special.glade
+
 2009-12-15  Morten Welinder <terra gnome org>
 
 	* Release 1.9.17
diff --git a/po-functions/POTFILES.skip b/po-functions/POTFILES.skip
index 6a28373..dc2bfd2 100644
--- a/po-functions/POTFILES.skip
+++ b/po-functions/POTFILES.skip
@@ -112,6 +112,7 @@ src/dialogs/merge.glade
 src/dialogs/moving-averages.glade
 src/dialogs/normality-tests.glade
 src/dialogs/paste-names.glade
+src/dialogs/paste-special.glade
 src/dialogs/plugin-manager.glade
 src/dialogs/preferences.glade
 src/dialogs/print.glade
diff --git a/po/ChangeLog b/po/ChangeLog
index 2558bdb..0bc5c23 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,3 +1,7 @@
+2009-12-17  Andreas J. Guelzow <aguelzow pyrshep ca>
+
+	* POTFILES.in: added src/dialogs/paste-special.glade
+
 2009-12-15  Morten Welinder <terra gnome org>
 
 	* Release 1.9.17
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 9c7da09..f5c8b57 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -236,6 +236,7 @@ src/dialogs/merge.glade
 src/dialogs/moving-averages.glade
 src/dialogs/normality-tests.glade
 src/dialogs/paste-names.glade
+src/dialogs/paste-special.glade
 src/dialogs/plugin-manager.glade
 src/dialogs/preferences.glade
 src/dialogs/print.glade
diff --git a/src/dialogs/ChangeLog b/src/dialogs/ChangeLog
index d6ad528..07c5dce 100644
--- a/src/dialogs/ChangeLog
+++ b/src/dialogs/ChangeLog
@@ -1,3 +1,10 @@
+2009-12-17  Andreas J. Guelzow <aguelzow pyrshep ca>
+
+	* Makefile.am: add paste-special.glade
+	* dialog-paste-special.c: rewrite completely
+	* help.h: add GNUMERIC_HELP_LINK_PASTE_SPECIAL
+	* paste-special.glade: new
+	
 2009-12-15  Morten Welinder <terra gnome org>
 
 	* Release 1.9.17
diff --git a/src/dialogs/Makefile.am b/src/dialogs/Makefile.am
index 43c44b0..7f24ecc 100644
--- a/src/dialogs/Makefile.am
+++ b/src/dialogs/Makefile.am
@@ -140,6 +140,7 @@ glade_DATA = 				\
 	sign-test.glade			\
 	sign-test-two.glade		\
 	paste-names.glade		\
+	paste-special.glade		\
 	plugin-manager.glade		\
 	preferences.glade 		\
 	rank.glade			\
diff --git a/src/dialogs/dialog-paste-special.c b/src/dialogs/dialog-paste-special.c
index 67503a5..bc5aade 100644
--- a/src/dialogs/dialog-paste-special.c
+++ b/src/dialogs/dialog-paste-special.c
@@ -24,6 +24,7 @@
 #include <glib/gi18n-lib.h>
 #include <gnumeric.h>
 #include "dialogs.h"
+#include "help.h"
 
 #include <wbc-gtk.h>
 #include <gui-util.h>
@@ -33,223 +34,238 @@
 
 #include <gtk/gtk.h>
 
-typedef struct {
-	WBCGtk *wbcg;
-	GtkDialog	*dialog;
-	GtkWidget	*op_frame;
-	struct {
-		GtkWidget *btn;
-		gboolean   val;
-	} transpose, skip_blanks;
-	GSList		*type_group, *op_group;
-	int		type, op;
-} PasteSpecialState;
-
-#define BUTTON_PASTE_LINK 0
-
-#define GNM_PASTE_SPECIAL_KEY	"gnm-paste-special"
-
+static char const * const paste_type_group[] = {
+	"paste-type-all",
+	"paste-type-content",
+	"paste-type-as-value",
+	"paste-type-formats",
+	"paste-type-comments",
+	NULL
+};
 static struct {
-	char const *name;
-	gboolean allows_operations;
-} const paste_types [] = {
-	/* xgettext : The accelerators for All, Content, As Value, Formats,
-	 *	Comments, None, Add, Subtract, Multiply, Divide, Transpose,
-	 *	Skip Blanks, Paste Link, Cancel, Ok are all on the same page
-	 *	try to keep them from conflicting */
-	{ N_("_All"),      TRUE },
-	{ N_("Cont_ent"),  TRUE },
-	{ N_("As _Value"), TRUE },
-	{ N_("_Formats"),  FALSE },
-	{ N_("Co_mments"),  FALSE },
-	{ NULL, FALSE }
+	gboolean permit_cell_ops;
+	int paste_enum;
+} paste_type_group_props[] = {
+	{TRUE, PASTE_ALL_TYPES},
+	{TRUE, PASTE_CONTENTS},
+	{TRUE, PASTE_AS_VALUES},
+	{FALSE, PASTE_FORMATS},
+	{FALSE, PASTE_COMMENTS},
 };
-
-static const char * const paste_ops[] = {
-	N_("_None"),
-	N_("A_dd"),
-	N_("_Subtract"),
-	N_("M_ultiply"),
-	N_("D_ivide"),
+static char const * const cell_operation_group[] = {
+	"cell-operation-none",	
+	"cell-operation-add",	
+	"cell-operation-subtract",	
+	"cell-operation-multiply",	
+	"cell-operation-divide",	
 	NULL
 };
+static struct {
+	int paste_enum;
+} cell_operation_props[] = {
+	{0},
+	{PASTE_OPER_ADD},
+	{PASTE_OPER_SUB},
+	{PASTE_OPER_MULT},
+	{PASTE_OPER_DIV},
+};
+static char const * const region_operation_group[] = {
+	"region-operation-none",
+	"region-operation-transpose",
+	NULL
+};
+static struct {
+	int paste_enum;
+} region_operation_props[] = {
+	{0},
+	{PASTE_TRANSPOSE},
+};
+
+typedef struct {
+	GladeXML  *gui;
+	GtkWidget *dialog;
+	GtkWidget *ok_button;
+	GtkWidget *cancel_button;
+	GtkWidget *link_button;
+	GtkWidget *help_button;
+	char const *help_link;
+	Sheet	  *sheet;
+	SheetView *sv;
+	Workbook  *wb;
+	WBCGtk  *wbcg;
+} PasteSpecialState;
+
+#define GNM_PASTE_SPECIAL_KEY	"gnm-paste-special"
 
 /* The "Paste Link" button should be grayed-out, unless type "All" is
-   selected, operation "None" is selected, and "Transpose" and "Skip
-   Blanks" are not selected.  */
+   selected, cell operation "None" is selected,
+   region operation "None" is selected, and "Skip
+   Blanks" is not selected.  */
 static void
 paste_link_set_sensitive (PasteSpecialState *state)
 {
 	gboolean sensitive =
-		(gtk_radio_group_get_selected (state->type_group) == 0) &&
-		(gtk_radio_group_get_selected (state->op_group) == 0) &&
-		!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (state->transpose.btn)) &&
-		!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (state->skip_blanks.btn));
+		(!gtk_toggle_button_get_active 
+		 (GTK_TOGGLE_BUTTON (glade_xml_get_widget (state->gui,"skip-blanks")))
+		 && 0 == gnumeric_glade_group_value (state->gui, paste_type_group)
+		 && 0 == gnumeric_glade_group_value (state->gui, cell_operation_group)
+		 && 0 == gnumeric_glade_group_value (state->gui, region_operation_group));
+	gtk_widget_set_sensitive (state->link_button, sensitive);
+}
 
-	gtk_dialog_set_response_sensitive (state->dialog,
-		BUTTON_PASTE_LINK, sensitive);
+static void
+cb_destroy (PasteSpecialState *state)
+{
+	if (state->gui != NULL)
+		g_object_unref (G_OBJECT (state->gui));
+	wbcg_edit_finish (state->wbcg, WBC_EDIT_REJECT, NULL);
+	g_free (state);
 }
 
 static void
-cb_type_toggle (G_GNUC_UNUSED GtkWidget *ignored,
-		PasteSpecialState *state)
+dialog_paste_special_type_toggled_cb (GtkWidget *button, PasteSpecialState *state)
 {
-	state->type = gtk_radio_group_get_selected (state->type_group);
-	gtk_widget_set_sensitive (state->op_frame,
-		paste_types [state->type].allows_operations);
-	paste_link_set_sensitive (state);
+	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button))) {
+		int i = gnumeric_glade_group_value (state->gui, paste_type_group);
+		char const * const *group;
+		gboolean permit_cell_ops = paste_type_group_props[i].permit_cell_ops;
+
+		for (group = cell_operation_group; *group != NULL; group++) 
+			gtk_widget_set_sensitive (glade_xml_get_widget (state->gui,*group),
+						  permit_cell_ops);
+		paste_link_set_sensitive (state);
+	}
 }
 
 static void
-cb_op_toggle (G_GNUC_UNUSED GtkWidget *ignored,
-	      PasteSpecialState *state)
+dialog_paste_special_cell_op_toggled_cb (GtkWidget *button, PasteSpecialState *state)
 {
-	state->op = gtk_radio_group_get_selected (state->op_group);
-	paste_link_set_sensitive (state);
+	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button))) {
+		paste_link_set_sensitive (state);		
+	}
 }
 
 static void
-cb_transpose (GtkWidget *widget, PasteSpecialState *state)
+dialog_paste_special_region_op_toggled_cb (GtkWidget *button, PasteSpecialState *state)
 {
-	state->transpose.val = GTK_TOGGLE_BUTTON (widget)->active;
-	paste_link_set_sensitive (state);
+	if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button))) {
+		paste_link_set_sensitive (state);		
+	}
 }
 static void
-cb_skip_blanks (GtkWidget *widget, PasteSpecialState *state)
+dialog_paste_special_skip_blanks_toggled_cb (GtkWidget *button, PasteSpecialState *state)
 {
-	state->skip_blanks.val = GTK_TOGGLE_BUTTON (widget)->active;
-	paste_link_set_sensitive (state);
+		paste_link_set_sensitive (state);		
 }
 
 static void
-cb_paste_special_response (GtkWidget *dialog,
-			   gint response_id, PasteSpecialState *state)
+cb_tool_cancel_clicked (G_GNUC_UNUSED GtkWidget *button,
+			PasteSpecialState *state)
 {
-	int result = 0;
-	if (response_id == GTK_RESPONSE_HELP)
-		return;
-	if (response_id == GTK_RESPONSE_OK) {
-		switch (state->type) {
-		case 0: result = PASTE_ALL_TYPES;	break;
-		case 1: result = PASTE_CONTENTS;	break;
-		case 2: result = PASTE_AS_VALUES;	break;
-		case 3: result = PASTE_FORMATS;		break;
-		case 4: result = PASTE_COMMENTS;	break;
-		}
-
-		if (paste_types [state->type].allows_operations) {
-			switch (state->op) {
-			case 1 : result |= PASTE_OPER_ADD;  break;
-			case 2 : result |= PASTE_OPER_SUB;  break;
-			case 3 : result |= PASTE_OPER_MULT; break;
-			case 4 : result |= PASTE_OPER_DIV;  break;
-			}
-		}
-		if (state->transpose.val)
-			result |= PASTE_TRANSPOSE;
-		if (state->skip_blanks.val)
-			result |= PASTE_SKIP_BLANKS;
-	} else if (response_id == BUTTON_PASTE_LINK)
-		result = PASTE_LINK;
-
-	if (result != 0) {
-		WorkbookControl *wbc = WORKBOOK_CONTROL (state->wbcg);
-		SheetView *sv = wb_control_cur_sheet_view (wbc);
-		cmd_paste_to_selection (wbc, sv, result);
+	gtk_widget_destroy (state->dialog);
+	return;
+}
+
+static void
+cb_tool_ok_clicked (G_GNUC_UNUSED GtkWidget *button,
+			PasteSpecialState *state)
+{
+	int result;
+	int paste_type = gnumeric_glade_group_value (state->gui, paste_type_group);
+	int region_op_type = gnumeric_glade_group_value (state->gui, region_operation_group);
+		
+	result = paste_type_group_props[paste_type].paste_enum 
+		| region_operation_props[region_op_type].paste_enum;
+
+	if (paste_type_group_props[paste_type].permit_cell_ops) {
+		int cell_op_type = gnumeric_glade_group_value (state->gui, cell_operation_group);
+		result |= cell_operation_props[cell_op_type].paste_enum;
 	}
-	gtk_object_destroy (GTK_OBJECT (dialog));
+
+	if (gtk_toggle_button_get_active 
+	    (GTK_TOGGLE_BUTTON (glade_xml_get_widget (state->gui,"skip-blanks"))))
+		result |= PASTE_SKIP_BLANKS;
+
+	cmd_paste_to_selection (WORKBOOK_CONTROL (state->wbcg), state->sv, result);
+	gtk_widget_destroy (state->dialog);
+	return;
+}
+
+static void
+cb_tool_paste_link_clicked (G_GNUC_UNUSED GtkWidget *button,
+			PasteSpecialState *state)
+{
+	cmd_paste_to_selection (WORKBOOK_CONTROL (state->wbcg), state->sv, PASTE_LINK);
+	gtk_widget_destroy (state->dialog);
+	return;
 }
 
 void
 dialog_paste_special (WBCGtk *wbcg)
 {
 	PasteSpecialState *state;
-	GtkWidget *tmp, *hbox, *vbox, *f1, *f1v, *op_box, *first_button = NULL;
-	int i;
+	GladeXML *gui;
+	char const * const *group;
 
 	if (gnumeric_dialog_raise_if_exists (wbcg, GNM_PASTE_SPECIAL_KEY))
 		return;
+	gui = gnm_glade_xml_new (GO_CMD_CONTEXT (wbcg),
+		"paste-special.glade", NULL, NULL);
+	if (gui == NULL)
+		return;
 
-	tmp = gtk_dialog_new_with_buttons (_("Paste Special"),
-		wbcg_toplevel (wbcg),
-		GTK_DIALOG_DESTROY_WITH_PARENT,
-		_("Paste _Link"),	BUTTON_PASTE_LINK,
-		GTK_STOCK_CANCEL,	GTK_RESPONSE_CANCEL,
-		GTK_STOCK_OK,		GTK_RESPONSE_OK,
-		NULL);
 	state = g_new0 (PasteSpecialState, 1);
 	state->wbcg   = wbcg;
-	state->dialog = GTK_DIALOG (tmp);
-	gtk_dialog_set_default_response (state->dialog, GTK_RESPONSE_OK);
-
-	f1  = gtk_frame_new (_("Paste type"));
-	f1v = gtk_vbox_new (TRUE, 0);
-	gtk_container_add (GTK_CONTAINER (f1), f1v);
-
-	state->op_frame  = gtk_frame_new (_("Operation"));
-	op_box = gtk_vbox_new (TRUE, 0);
-	gtk_container_add (GTK_CONTAINER (state->op_frame), op_box);
-
-	state->type = 0;
-	state->type_group = NULL;
-	for (i = 0; paste_types[i].name; i++){
-		GtkWidget *r = gtk_radio_button_new_with_mnemonic (state->type_group,
-			_(paste_types[i].name));
-		state->type_group = GTK_RADIO_BUTTON (r)->group;
-		g_signal_connect (G_OBJECT (r),
-			"toggled",
-			G_CALLBACK (cb_type_toggle), state);
-		gtk_box_pack_start (GTK_BOX (f1v), r, TRUE, TRUE, 0);
-		if (i == 0)
-			first_button = r;
-	}
-
-	state->op = 0;
-	state->op_group = NULL;
-	for (i = 0; paste_ops[i]; i++){
-		GtkWidget *r = gtk_radio_button_new_with_mnemonic (state->op_group,
-			_(paste_ops[i]));
-		state->op_group = GTK_RADIO_BUTTON (r)->group;
-		g_signal_connect (G_OBJECT (r),
-			"toggled",
-			G_CALLBACK (cb_op_toggle), state);
-		gtk_box_pack_start (GTK_BOX (op_box), r, TRUE, TRUE, 0);
-	}
+	state->gui    = gui;
+	state->dialog =  glade_xml_get_widget (state->gui, "paste-special");
+	state->sheet = wbcg_cur_sheet (wbcg);
+	state->sv = wb_control_cur_sheet_view (WORKBOOK_CONTROL (wbcg));
 
-	hbox = gtk_hbox_new (TRUE, 0);
+	g_return_if_fail (state->dialog != NULL);
 
-	state->transpose.btn = gtk_check_button_new_with_mnemonic (_("_Transpose"));
-	g_signal_connect (G_OBJECT (state->transpose.btn),
-		"toggled",
-		G_CALLBACK (cb_transpose), state);
-	gtk_box_pack_start (GTK_BOX (hbox), state->transpose.btn, TRUE, TRUE, 0);
+	state->link_button = glade_xml_get_widget (state->gui,"paste-link_button");
+	g_signal_connect (G_OBJECT (state->link_button),
+			  "clicked",
+			  G_CALLBACK (cb_tool_paste_link_clicked), state);
+	state->help_button = glade_xml_get_widget (state->gui, "help_button");
+	gnumeric_init_help_button (state->help_button, GNUMERIC_HELP_LINK_PASTE_SPECIAL);
+	state->cancel_button = glade_xml_get_widget (state->gui, "cancel_button");
+	g_signal_connect (G_OBJECT (state->cancel_button),
+			  "clicked",
+			  G_CALLBACK (cb_tool_cancel_clicked), state);
+	state->ok_button = glade_xml_get_widget (state->gui, "ok_button");
+	g_signal_connect (G_OBJECT (state->ok_button),
+			  "clicked",
+			  G_CALLBACK (cb_tool_ok_clicked), state);
+	
 
-	state->skip_blanks.btn = gtk_check_button_new_with_mnemonic (_("Skip _Blanks"));
-	g_signal_connect (G_OBJECT (state->skip_blanks.btn),
-		"toggled",
-		G_CALLBACK (cb_skip_blanks), state);
-	gtk_box_pack_start (GTK_BOX (hbox), state->skip_blanks.btn, TRUE, TRUE, 0);
+	for (group = paste_type_group; *group != NULL; group++) 
+		g_signal_connect_after (glade_xml_get_widget (state->gui,*group),
+					"toggled",
+					G_CALLBACK (dialog_paste_special_type_toggled_cb), state);
+	for (group = cell_operation_group; *group != NULL; group++) 
+		g_signal_connect_after (glade_xml_get_widget (state->gui,*group),
+					"toggled",
+					G_CALLBACK (dialog_paste_special_cell_op_toggled_cb), state);
+	for (group = region_operation_group; *group != NULL; group++) 
+		g_signal_connect_after (glade_xml_get_widget (state->gui,*group),
+					"toggled",
+					G_CALLBACK (dialog_paste_special_region_op_toggled_cb), state);
+	g_signal_connect_after (glade_xml_get_widget (state->gui, "skip-blanks"),
+				"toggled",
+				G_CALLBACK (dialog_paste_special_skip_blanks_toggled_cb), state);
+	paste_link_set_sensitive (state);	
 
-	vbox = gtk_vbox_new (FALSE, 0);
-	gtk_box_pack_start (GTK_BOX (vbox), f1, TRUE, TRUE, 0);
-	gtk_box_pack_start (GTK_BOX (vbox), state->op_frame, TRUE, TRUE, 0);
-	gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
+	gnm_dialog_setup_destroy_handlers (GTK_DIALOG (state->dialog), wbcg,
+					   GNM_DIALOG_DESTROY_SHEET_REMOVED);
 
-	gtk_box_pack_start (GTK_BOX (state->dialog->vbox), vbox, TRUE, TRUE, 0);
-	gtk_widget_show_all (vbox);
-	gtk_widget_grab_focus (first_button);
+	gnumeric_keyed_dialog (wbcg, GTK_WINDOW (state->dialog),
+			       GNM_PASTE_SPECIAL_KEY);
 
-	gnm_dialog_setup_destroy_handlers (GTK_DIALOG (state->dialog),
-					   state->wbcg,
-					   GNM_DIALOG_DESTROY_CURRENT_SHEET_REMOVED);
-
-	/* a candidate for merging into attach guru */
-	g_signal_connect (G_OBJECT (state->dialog), "response",
-		G_CALLBACK (cb_paste_special_response), state);
+	wbc_gtk_attach_guru (state->wbcg, state->dialog);
 	g_object_set_data_full (G_OBJECT (state->dialog),
-		"state", state, (GDestroyNotify) g_free);
-	go_gtk_nonmodal_dialog (wbcg_toplevel (state->wbcg),
-				   GTK_WINDOW (state->dialog));
-	wbc_gtk_attach_guru (state->wbcg, GTK_WIDGET (state->dialog));
-	gtk_widget_show_all (GTK_WIDGET (state->dialog));
+				"state", state,
+				(GDestroyNotify) cb_destroy);
+
+	gtk_widget_show (state->dialog);
 }
diff --git a/src/dialogs/help.h b/src/dialogs/help.h
index f7005c8..949f929 100644
--- a/src/dialogs/help.h
+++ b/src/dialogs/help.h
@@ -189,4 +189,7 @@
 /* dialog-doc-metadata.c */
 #define GNUMERIC_HELP_LINK_METADATA ""
 
+/* dialog-paste-special.c */
+#define GNUMERIC_HELP_LINK_PASTE_SPECIAL ""
+
 #endif /* GNUMERIC_HELP_H */
diff --git a/src/dialogs/paste-special.glade b/src/dialogs/paste-special.glade
new file mode 100644
index 0000000..ba1d2cf
--- /dev/null
+++ b/src/dialogs/paste-special.glade
@@ -0,0 +1,405 @@
+<?xml version="1.0"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.6 -->
+  <!-- interface-naming-policy toplevel-contextual -->
+  <widget class="GtkDialog" id="paste-special">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Paste Special</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <widget class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <widget class="GtkTable" id="table1">
+            <property name="visible">True</property>
+            <property name="n_rows">2</property>
+            <property name="n_columns">3</property>
+            <property name="column_spacing">5</property>
+            <property name="row_spacing">5</property>
+            <child>
+              <widget class="GtkFrame" id="frame1">
+                <property name="visible">True</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">out</property>
+                <child>
+                  <widget class="GtkAlignment" id="alignment1">
+                    <property name="visible">True</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <widget class="GtkVBox" id="vbox1">
+                        <property name="visible">True</property>
+                        <child>
+                          <widget class="GtkRadioButton" id="paste-type-all">
+                            <property name="label" translatable="yes">_All</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="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </widget>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkRadioButton" id="paste-type-content">
+                            <property name="label" translatable="yes">Cont_ent</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="active">True</property>
+                            <property name="draw_indicator">True</property>
+                            <property name="group">paste-type-all</property>
+                          </widget>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkRadioButton" id="paste-type-as-value">
+                            <property name="label" translatable="yes">As _Value</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>
+                            <property name="group">paste-type-all</property>
+                          </widget>
+                          <packing>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkRadioButton" id="paste-type-formats">
+                            <property name="label" translatable="yes">_Formats</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>
+                            <property name="group">paste-type-all</property>
+                          </widget>
+                          <packing>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkRadioButton" id="paste-type-comments">
+                            <property name="label" translatable="yes">Co_mments</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>
+                            <property name="group">paste-type-all</property>
+                          </widget>
+                          <packing>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="Paste-Type">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Paste type&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </widget>
+                  <packing>
+                    <property name="type">label_item</property>
+                  </packing>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkFrame" id="frame2">
+                <property name="visible">True</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">out</property>
+                <child>
+                  <widget class="GtkAlignment" id="alignment2">
+                    <property name="visible">True</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <widget class="GtkVBox" id="vbox2">
+                        <property name="visible">True</property>
+                        <child>
+                          <widget class="GtkRadioButton" id="region-operation-none">
+                            <property name="label" translatable="yes">None</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="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </widget>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkRadioButton" id="region-operation-transpose">
+                            <property name="label" translatable="yes">_Transpose</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>
+                            <property name="group">region-operation-none</property>
+                          </widget>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkRadioButton" id="region-operation-flip-h">
+                            <property name="label" translatable="yes">Flip Hori_zontally</property>
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</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="group">region-operation-none</property>
+                          </widget>
+                          <packing>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkRadioButton" id="region-operation-transpose2">
+                            <property name="label" translatable="yes">Fli_p Vertically</property>
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</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="group">region-operation-none</property>
+                          </widget>
+                          <packing>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label2">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Region operation&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </widget>
+                  <packing>
+                    <property name="type">label_item</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkCheckButton" id="skip-blanks">
+                <property name="label" translatable="yes">Skip _Blanks</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">3</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkFrame" id="frame3">
+                <property name="visible">True</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">out</property>
+                <child>
+                  <widget class="GtkAlignment" id="alignment3">
+                    <property name="visible">True</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <widget class="GtkVBox" id="vbox3">
+                        <property name="visible">True</property>
+                        <child>
+                          <widget class="GtkRadioButton" id="cell-operation-none">
+                            <property name="label" translatable="yes">_None</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="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </widget>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkRadioButton" id="cell-operation-add">
+                            <property name="label" translatable="yes">A_dd</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>
+                            <property name="group">cell-operation-none</property>
+                          </widget>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkRadioButton" id="cell-operation-subtract">
+                            <property name="label" translatable="yes">_Subtract</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>
+                            <property name="group">cell-operation-none</property>
+                          </widget>
+                          <packing>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkRadioButton" id="cell-operation-multiply">
+                            <property name="label" translatable="yes">M_ultiply</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>
+                            <property name="group">cell-operation-none</property>
+                          </widget>
+                          <packing>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkRadioButton" id="cell-operation-divide">
+                            <property name="label" translatable="yes">D_ivide</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>
+                            <property name="group">cell-operation-none</property>
+                          </widget>
+                          <packing>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label3">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Cell operation&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </widget>
+                  <packing>
+                    <property name="type">label_item</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <widget class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <widget class="GtkButton" id="help_button">
+                <property name="label">gtk-help</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="paste-link_button">
+                <property name="label" translatable="yes">Paste _Link</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">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">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="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>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>



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