From: Andrea Zagli <a.zagli@comune.scandicci.fi.it> Date: Thu, 29 Dec 2011 09:34:05 +0000 (+0100) Subject: Aggiunto il pulsante esporta a tutti gli elenchi (closes #282). X-Git-Tag: gtk3~4 X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=594117385cf6bf346c9073eb5a17be4c4c75749c;p=solipa%2Fterritorio Aggiunto il pulsante esporta a tutti gli elenchi (closes #282). --- diff --git a/configure.ac b/configure.ac index b3ddb8e..b9255b5 100644 --- a/configure.ac +++ b/configure.ac @@ -31,7 +31,7 @@ PKG_CHECK_MODULES(TERRITORIO, [gio-2.0 >= 2.20 libgtkform >= 0.3.1 libgtkformui >= 0.3.1 libaute >= 0.0.2 - libautoz >= 0.0.1 + libautoz >= 0.0.2 libsolipa >= 0.3.1]) AC_SUBST(TERRITORIO_CFLAGS) diff --git a/data/territorio/gui/territorio.gui b/data/territorio/gui/territorio.gui index fe77032..803dab2 100644 --- a/data/territorio/gui/territorio.gui +++ b/data/territorio/gui/territorio.gui @@ -364,6 +364,21 @@ <property name="can_focus">False</property> <property name="spacing">5</property> <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="button43"> + <property name="label" translatable="yes">E_sporta</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> <child> <object class="GtkButton" id="button36"> <property name="label">gtk-new</property> @@ -376,7 +391,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">0</property> + <property name="position">1</property> </packing> </child> <child> @@ -391,7 +406,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> <child> @@ -406,7 +421,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">2</property> + <property name="position">3</property> </packing> </child> <child> @@ -421,7 +436,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">3</property> + <property name="position">4</property> </packing> </child> <child> @@ -436,7 +451,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">4</property> + <property name="position">5</property> </packing> </child> </object> @@ -1261,6 +1276,21 @@ <property name="can_focus">False</property> <property name="spacing">5</property> <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="button59"> + <property name="label" translatable="yes">E_sporta</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> <child> <object class="GtkButton" id="button15"> <property name="label">gtk-new</property> @@ -1273,7 +1303,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">0</property> + <property name="position">1</property> </packing> </child> <child> @@ -1288,7 +1318,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> <child> @@ -1303,7 +1333,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">2</property> + <property name="position">3</property> </packing> </child> <child> @@ -1318,7 +1348,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">3</property> + <property name="position">4</property> </packing> </child> <child> @@ -1333,7 +1363,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">4</property> + <property name="position">5</property> </packing> </child> <child> @@ -1348,7 +1378,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">5</property> + <property name="position">6</property> </packing> </child> </object> @@ -1825,6 +1855,21 @@ <property name="can_focus">False</property> <property name="spacing">5</property> <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="button54"> + <property name="label" translatable="yes">E_sporta</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> <child> <object class="GtkButton" id="button8"> <property name="label">gtk-new</property> @@ -1837,7 +1882,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">0</property> + <property name="position">1</property> </packing> </child> <child> @@ -1852,7 +1897,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> <child> @@ -1867,7 +1912,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">2</property> + <property name="position">3</property> </packing> </child> <child> @@ -1882,7 +1927,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">3</property> + <property name="position">4</property> </packing> </child> <child> @@ -1897,7 +1942,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">4</property> + <property name="position">5</property> </packing> </child> </object> @@ -2469,6 +2514,21 @@ <property name="can_focus">False</property> <property name="spacing">5</property> <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="button50"> + <property name="label" translatable="yes">E_sporta</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> <child> <object class="GtkButton" id="button1"> <property name="label">gtk-new</property> @@ -2481,7 +2541,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">0</property> + <property name="position">1</property> </packing> </child> <child> @@ -2496,7 +2556,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> <child> @@ -2511,7 +2571,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">2</property> + <property name="position">3</property> </packing> </child> <child> @@ -2526,7 +2586,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">3</property> + <property name="position">4</property> </packing> </child> <child> @@ -2541,7 +2601,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">4</property> + <property name="position">5</property> </packing> </child> </object> @@ -2886,6 +2946,21 @@ <property name="can_focus">False</property> <property name="spacing">5</property> <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="button44"> + <property name="label" translatable="yes">E_sporta</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> <child> <object class="GtkButton" id="button29"> <property name="label">gtk-new</property> @@ -2898,7 +2973,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">0</property> + <property name="position">1</property> </packing> </child> <child> @@ -2913,7 +2988,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> <child> @@ -2928,7 +3003,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">2</property> + <property name="position">3</property> </packing> </child> <child> @@ -2943,7 +3018,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">3</property> + <property name="position">4</property> </packing> </child> <child> @@ -2958,7 +3033,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">4</property> + <property name="position">5</property> </packing> </child> </object> @@ -3413,6 +3488,21 @@ <property name="can_focus">False</property> <property name="spacing">5</property> <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="button64"> + <property name="label" translatable="yes">E_sporta</property> + <property name="use_action_appearance">False</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> <child> <object class="GtkButton" id="button45"> <property name="label">gtk-new</property> @@ -3425,7 +3515,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">0</property> + <property name="position">1</property> </packing> </child> <child> @@ -3440,7 +3530,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">1</property> + <property name="position">2</property> </packing> </child> <child> @@ -3455,7 +3545,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">2</property> + <property name="position">3</property> </packing> </child> <child> @@ -3470,7 +3560,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">3</property> + <property name="position">4</property> </packing> </child> <child> @@ -3485,7 +3575,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">4</property> + <property name="position">5</property> </packing> </child> <child> @@ -3500,7 +3590,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">5</property> + <property name="position">6</property> </packing> </child> </object> diff --git a/src/aggregazioniterritoriali.c b/src/aggregazioniterritoriali.c index d0cba5d..6cfee4d 100644 --- a/src/aggregazioniterritoriali.c +++ b/src/aggregazioniterritoriali.c @@ -40,6 +40,8 @@ static void territorio_aggregazioni_territoriali_get_property (GObject *object, GValue *value, GParamSpec *pspec); +static void territorio_aggregazioni_territoriali_on_btn_esporta_clicked (GtkButton *button, + gpointer user_data); static void territorio_aggregazioni_territoriali_on_btn_nuovo_clicked (GtkButton *button, gpointer user_data); static void territorio_aggregazioni_territoriali_on_btn_modifica_clicked (GtkButton *button, @@ -135,8 +137,9 @@ TerritorioAggregazioniTerritoriali error = NULL; gtk_builder_add_objects_from_file (priv->commons->gtkbuilder, priv->commons->guifile, g_strsplit (g_strconcat ("lstore_aggregazioni_territoriali|", - (selezione ? "w_aggregazioni_territoriali" : "vbox12"), - NULL), "|", -1), + (selezione ? "w_aggregazioni_territoriali" : "vbox12"), + NULL), + "|", -1), &error); if (error != NULL) { @@ -157,6 +160,8 @@ TerritorioAggregazioniTerritoriali priv->wtransient = GTK_WINDOW (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")); } + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button43"), + "clicked", G_CALLBACK (territorio_aggregazioni_territoriali_on_btn_esporta_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button36"), "clicked", G_CALLBACK (territorio_aggregazioni_territoriali_on_btn_nuovo_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button37"), @@ -269,13 +274,10 @@ territorio_aggregazioni_territoriali_modifica (TerritorioAggregazioniTerritorial } else { - GtkWidget *dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare un'aggregazione territoriale"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare un'aggregazione territoriale"); } } @@ -301,13 +303,10 @@ territorio_aggregazioni_territoriali_selezionato (TerritorioAggregazioniTerritor } else { - GtkWidget *dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare un'aggregazione territoriale"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare un'aggregazione territoriale"); } } @@ -321,7 +320,6 @@ static void territorio_aggregazioni_territoriali_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { TerritorioAggregazioniTerritoriali *territorio_aggregazioni_territoriali = TERRITORIO_AGGREGAZIONI_TERRITORIALI (object); - TerritorioAggregazioniTerritorialiPrivate *priv = TERRITORIO_AGGREGAZIONI_TERRITORIALI_GET_PRIVATE (territorio_aggregazioni_territoriali); switch (property_id) @@ -336,7 +334,6 @@ static void territorio_aggregazioni_territoriali_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { TerritorioAggregazioniTerritoriali *territorio_aggregazioni_territoriali = TERRITORIO_AGGREGAZIONI_TERRITORIALI (object); - TerritorioAggregazioniTerritorialiPrivate *priv = TERRITORIO_AGGREGAZIONI_TERRITORIALI_GET_PRIVATE (territorio_aggregazioni_territoriali); switch (property_id) @@ -348,6 +345,48 @@ territorio_aggregazioni_territoriali_get_property (GObject *object, guint proper } /* CALLBACK */ +static void +territorio_aggregazioni_territoriali_on_btn_esporta_clicked (GtkButton *button, + gpointer user_data) +{ + GtkWidget *transient; + + guint ret; + + TerritorioAggregazioniTerritoriali *territorio_aggregazioni_territoriali = (TerritorioAggregazioniTerritoriali *)user_data; + TerritorioAggregazioniTerritorialiPrivate *priv = TERRITORIO_AGGREGAZIONI_TERRITORIALI_GET_PRIVATE (territorio_aggregazioni_territoriali); + + gchar **columns_title = g_strsplit ("ID|Tipo|Aggregazione", "|", -1); + + if (priv->selezione) + { + transient = priv->widget; + } + else + { + transient = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")); + } + + ret = solipa_gtktreemodel_to_csv_gui (priv->commons->solipa, GTK_WINDOW (transient), GTK_TREE_MODEL (priv->lstore_aggregazioni_territoriali), + columns_title, g_strv_length (columns_title)); + if (ret == 1) + { + solipa_message_dialog (transient, + GTK_MESSAGE_INFO, + GTK_BUTTONS_OK, + "Salvataggio eseguito con successo."); + } + else if (ret == 0) + { + solipa_message_dialog (transient, + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Errore durante il salvataggio."); + } + + g_strfreev (columns_title); +} + static void territorio_aggregazioni_territoriali_on_btn_nuovo_clicked (GtkButton *button, gpointer user_data) @@ -434,13 +473,10 @@ territorio_aggregazioni_territoriali_on_btn_elimina_clicked (GtkButton *button, } else { - dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare un'aggregazione territoriale"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare un'aggregazione territoriale"); } } diff --git a/src/province.c b/src/province.c index 9717d39..c9c1ab7 100644 --- a/src/province.c +++ b/src/province.c @@ -52,6 +52,8 @@ static gboolean territorio_province_on_key_release_event (GtkWidget *widget, static void territorio_province_on_map (GtkWidget *widget, gpointer user_data); +static void territorio_province_on_btn_esporta_clicked (GtkButton *button, + gpointer user_data); static void territorio_province_on_btn_nuovo_clicked (GtkButton *button, gpointer user_data); static void territorio_province_on_btn_modifica_clicked (GtkButton *button, @@ -200,6 +202,8 @@ TerritorioProvince priv->signal_map = g_signal_connect (priv->widget, "map", G_CALLBACK (territorio_province_on_map), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button59"), + "clicked", G_CALLBACK (territorio_province_on_btn_esporta_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button15"), "clicked", G_CALLBACK (territorio_province_on_btn_nuovo_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button16"), @@ -315,7 +319,6 @@ territorio_province_carica (TerritorioProvince *territorio_province) for (row = 0; row < rows; row++) { gtk_list_store_append (priv->lstore_province, &iter); - gtk_list_store_set (priv->lstore_province, &iter, COL_ID, gdaex_data_model_get_field_value_integer_at (dm, row, "id"), COL_NOME, gdaex_data_model_get_field_value_stringify_at (dm, row, "nome"), @@ -355,13 +358,10 @@ territorio_province_modifica (TerritorioProvince *territorio_province) } else { - GtkWidget *dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare una provincia."); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare una provincia."); } } @@ -387,13 +387,10 @@ territorio_province_selezionato (TerritorioProvince *territorio_province) } else { - GtkWidget *dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare una provincia."); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare una provincia."); } } @@ -488,6 +485,48 @@ territorio_province_on_map (GtkWidget *widget, g_signal_handler_disconnect (G_OBJECT (priv->widget), priv->signal_map); } +static void +territorio_province_on_btn_esporta_clicked (GtkButton *button, + gpointer user_data) +{ + GtkWidget *transient; + + guint ret; + + TerritorioProvince *territorio_province = (TerritorioProvince *)user_data; + TerritorioProvincePrivate *priv = TERRITORIO_PROVINCE_GET_PRIVATE (territorio_province); + + gchar **columns_title = g_strsplit ("ID|Provincia|Sigla|Regione", "|", -1); + + if (priv->selezione) + { + transient = priv->widget; + } + else + { + transient = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")); + } + + ret = solipa_gtktreemodel_to_csv_gui (priv->commons->solipa, GTK_WINDOW (transient), GTK_TREE_MODEL (priv->lstore_province), + columns_title, g_strv_length (columns_title)); + if (ret == 1) + { + solipa_message_dialog (transient, + GTK_MESSAGE_INFO, + GTK_BUTTONS_OK, + "Salvataggio eseguito con successo."); + } + else if (ret == 0) + { + solipa_message_dialog (transient, + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Errore durante il salvataggio."); + } + + g_strfreev (columns_title); +} + static void territorio_province_on_btn_nuovo_clicked (GtkButton *button, gpointer user_data) @@ -532,9 +571,6 @@ territorio_province_on_btn_elimina_clicked (GtkButton *button, { AutozIResource *ires1; - GtkWidget *dialog; - gboolean risp; - GtkTreeIter iter; guint id; @@ -553,13 +589,10 @@ territorio_province_on_btn_elimina_clicked (GtkButton *button, return; } - dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_QUESTION, - GTK_BUTTONS_YES_NO, - "Sicuro di voler eliminare la provincia selezionata?"); - risp = gtk_dialog_run (GTK_DIALOG (dialog)); - if (risp == GTK_RESPONSE_YES) + if (solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_QUESTION, + GTK_BUTTONS_YES_NO, + "Sicuro di voler eliminare la provincia selezionata?") == GTK_RESPONSE_YES) { gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_province), &iter, COL_ID, &id, @@ -570,17 +603,13 @@ territorio_province_on_btn_elimina_clicked (GtkButton *button, territorio_province_carica (territorio_province); } - gtk_widget_destroy (dialog); } else { - dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare una provincia."); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare una provincia."); } } diff --git a/src/regioni.c b/src/regioni.c index 3819232..4854206 100644 --- a/src/regioni.c +++ b/src/regioni.c @@ -46,6 +46,8 @@ static gboolean territorio_regioni_on_key_release_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data); +static void territorio_regioni_on_btn_esporta_clicked (GtkButton *button, + gpointer user_data); static void territorio_regioni_on_btn_nuovo_clicked (GtkButton *button, gpointer user_data); static void territorio_regioni_on_btn_modifica_clicked (GtkButton *button, @@ -140,8 +142,9 @@ TerritorioRegioni error = NULL; gtk_builder_add_objects_from_file (priv->commons->gtkbuilder, priv->commons->guifile, g_strsplit (g_strconcat ("lstore_regioni|", - (selezione ? "w_regioni" : "vbox4"), - NULL), "|", -1), + (selezione ? "w_regioni" : "vbox4"), + NULL), + "|", -1), &error); if (error != NULL) { @@ -165,6 +168,8 @@ TerritorioRegioni g_signal_connect (priv->widget, "key-release-event", G_CALLBACK (territorio_regioni_on_key_release_event), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button54"), + "clicked", G_CALLBACK (territorio_regioni_on_btn_esporta_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button8"), "clicked", G_CALLBACK (territorio_regioni_on_btn_nuovo_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button9"), @@ -238,7 +243,6 @@ territorio_regioni_carica (TerritorioRegioni *territorio_regioni) for (row = 0; row < rows; row++) { gtk_list_store_append (priv->lstore_regioni, &iter); - gtk_list_store_set (priv->lstore_regioni, &iter, COL_ID, gdaex_data_model_get_field_value_integer_at (dm, row, "id"), COL_NOME, gdaex_data_model_get_field_value_stringify_at (dm, row, "nome"), @@ -276,13 +280,10 @@ territorio_regioni_modifica (TerritorioRegioni *territorio_regioni) } else { - GtkWidget *dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare una regione"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare una regione"); } } @@ -308,13 +309,10 @@ territorio_regioni_selezionato (TerritorioRegioni *territorio_regioni) } else { - GtkWidget *dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare una regione"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare una regione"); } } @@ -372,6 +370,48 @@ territorio_regioni_on_key_release_event (GtkWidget *widget, return FALSE; } +static void +territorio_regioni_on_btn_esporta_clicked (GtkButton *button, + gpointer user_data) +{ + GtkWidget *transient; + + guint ret; + + TerritorioRegioni *territorio_regioni = (TerritorioRegioni *)user_data; + TerritorioRegioniPrivate *priv = TERRITORIO_REGIONI_GET_PRIVATE (territorio_regioni); + + gchar **columns_title = g_strsplit ("ID|Regione", "|", -1); + + if (priv->selezione) + { + transient = priv->widget; + } + else + { + transient = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")); + } + + ret = solipa_gtktreemodel_to_csv_gui (priv->commons->solipa, GTK_WINDOW (transient), GTK_TREE_MODEL (priv->lstore_regioni), + columns_title, g_strv_length (columns_title)); + if (ret == 1) + { + solipa_message_dialog (transient, + GTK_MESSAGE_INFO, + GTK_BUTTONS_OK, + "Salvataggio eseguito con successo."); + } + else if (ret == 0) + { + solipa_message_dialog (transient, + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Errore durante il salvataggio."); + } + + g_strfreev (columns_title); +} + static void territorio_regioni_on_btn_nuovo_clicked (GtkButton *button, gpointer user_data) @@ -416,9 +456,6 @@ territorio_regioni_on_btn_elimina_clicked (GtkButton *button, { AutozIResource *ires1; - GtkWidget *dialog; - gboolean risp; - GtkTreeIter iter; guint id; @@ -437,13 +474,10 @@ territorio_regioni_on_btn_elimina_clicked (GtkButton *button, return; } - dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_QUESTION, - GTK_BUTTONS_YES_NO, - "Sicuro di voler eliminare la regione selezionata?"); - risp = gtk_dialog_run (GTK_DIALOG (dialog)); - if (risp == GTK_RESPONSE_YES) + if (solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_QUESTION, + GTK_BUTTONS_YES_NO, + "Sicuro di voler eliminare la regione selezionata?") == GTK_RESPONSE_YES) { gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_regioni), &iter, COL_ID, &id, @@ -454,17 +488,13 @@ territorio_regioni_on_btn_elimina_clicked (GtkButton *button, territorio_regioni_carica (territorio_regioni); } - gtk_widget_destroy (dialog); } else { - dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare una regione"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare una regione"); } } diff --git a/src/stati.c b/src/stati.c index b9a61fc..0404acd 100644 --- a/src/stati.c +++ b/src/stati.c @@ -46,6 +46,8 @@ static gboolean territorio_stati_on_key_release_event (GtkWidget *widget, GdkEventKey *event, gpointer user_data); +static void territorio_stati_on_btn_esporta_clicked (GtkButton *button, + gpointer user_data); static void territorio_stati_on_btn_nuovo_clicked (GtkButton *button, gpointer user_data); static void territorio_stati_on_btn_modifica_clicked (GtkButton *button, @@ -165,6 +167,8 @@ TerritorioStati g_signal_connect (priv->widget, "key-release-event", G_CALLBACK (territorio_stati_on_key_release_event), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button50"), + "clicked", G_CALLBACK (territorio_stati_on_btn_esporta_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button1"), "clicked", G_CALLBACK (territorio_stati_on_btn_nuovo_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button2"), @@ -238,7 +242,6 @@ territorio_stati_carica (TerritorioStati *territorio_stati) for (row = 0; row < rows; row++) { gtk_list_store_append (priv->lstore_stati, &iter); - gtk_list_store_set (priv->lstore_stati, &iter, COL_ID, gdaex_data_model_get_field_value_integer_at (dm, row, "id"), COL_NOME, gdaex_data_model_get_field_value_stringify_at (dm, row, "nome"), @@ -276,13 +279,10 @@ territorio_stati_modifica (TerritorioStati *territorio_stati) } else { - GtkWidget *dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare uno stato"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare uno stato"); } } @@ -308,13 +308,10 @@ territorio_stati_selezionato (TerritorioStati *territorio_stati) } else { - GtkWidget *dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare uno stato"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare uno stato"); } } @@ -372,6 +369,48 @@ territorio_stati_on_key_release_event (GtkWidget *widget, return FALSE; } +static void +territorio_stati_on_btn_esporta_clicked (GtkButton *button, + gpointer user_data) +{ + GtkWidget *transient; + + guint ret; + + TerritorioStati *territorio_stati = (TerritorioStati *)user_data; + TerritorioStatiPrivate *priv = TERRITORIO_STATI_GET_PRIVATE (territorio_stati); + + gchar **columns_title = g_strsplit ("ID|Stato", "|", -1); + + if (priv->selezione) + { + transient = priv->widget; + } + else + { + transient = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")); + } + + ret = solipa_gtktreemodel_to_csv_gui (priv->commons->solipa, GTK_WINDOW (transient), GTK_TREE_MODEL (priv->lstore_stati), + columns_title, g_strv_length (columns_title)); + if (ret == 1) + { + solipa_message_dialog (transient, + GTK_MESSAGE_INFO, + GTK_BUTTONS_OK, + "Salvataggio eseguito con successo."); + } + else if (ret == 0) + { + solipa_message_dialog (transient, + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Errore durante il salvataggio."); + } + + g_strfreev (columns_title); +} + static void territorio_stati_on_btn_nuovo_clicked (GtkButton *button, gpointer user_data) @@ -458,13 +497,10 @@ territorio_stati_on_btn_elimina_clicked (GtkButton *button, } else { - dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare uno stato"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare uno stato"); } } diff --git a/src/tipiaggregazioneterritoriale.c b/src/tipiaggregazioneterritoriale.c index 600fc0f..2dee419 100644 --- a/src/tipiaggregazioneterritoriale.c +++ b/src/tipiaggregazioneterritoriale.c @@ -40,6 +40,8 @@ static void territorio_tipi_aggregazione_territoriale_get_property (GObject *obj GValue *value, GParamSpec *pspec); +static void territorio_tipi_aggregazione_territoriale_on_btn_esporta_clicked (GtkButton *button, + gpointer user_data); static void territorio_tipi_aggregazione_territoriale_on_btn_nuovo_clicked (GtkButton *button, gpointer user_data); static void territorio_tipi_aggregazione_territoriale_on_btn_modifica_clicked (GtkButton *button, @@ -134,8 +136,9 @@ TerritorioTipiAggregazioneTerritoriale error = NULL; gtk_builder_add_objects_from_file (priv->commons->gtkbuilder, priv->commons->guifile, g_strsplit (g_strconcat ("lstore_tipi_aggregazione_territoriale|", - (selezione ? "w_tipi_aggregazione_territoriale" : "vbox10"), - NULL), "|", -1), + (selezione ? "w_tipi_aggregazione_territoriale" : "vbox10"), + NULL), + "|", -1), &error); if (error != NULL) { @@ -156,6 +159,8 @@ TerritorioTipiAggregazioneTerritoriale priv->wtransient = GTK_WINDOW (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")); } + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button44"), + "clicked", G_CALLBACK (territorio_tipi_aggregazione_territoriale_on_btn_esporta_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button29"), "clicked", G_CALLBACK (territorio_tipi_aggregazione_territoriale_on_btn_nuovo_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button30"), @@ -229,7 +234,6 @@ territorio_tipi_aggregazione_territoriale_carica (TerritorioTipiAggregazioneTerr for (row = 0; row < rows; row++) { gtk_list_store_append (priv->lstore_tipi_aggregazione_territoriale, &iter); - gtk_list_store_set (priv->lstore_tipi_aggregazione_territoriale, &iter, COL_ID, gdaex_data_model_get_field_value_stringify_at (dm, row, "id"), COL_NOME, gdaex_data_model_get_field_value_stringify_at (dm, row, "nome"), @@ -267,13 +271,10 @@ territorio_tipi_aggregazione_territoriale_modifica (TerritorioTipiAggregazioneTe } else { - GtkWidget *dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare un tipo aggregazione territoriale"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare un tipo aggregazione territoriale."); } } @@ -299,13 +300,10 @@ territorio_tipi_aggregazione_territoriale_selezionato (TerritorioTipiAggregazion } else { - GtkWidget *dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare un tipo aggregazione territoriale"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare un tipo aggregazione territoriale."); } } @@ -344,6 +342,48 @@ territorio_tipi_aggregazione_territoriale_get_property (GObject *object, guint p } /* CALLBACK */ +static void +territorio_tipi_aggregazione_territoriale_on_btn_esporta_clicked (GtkButton *button, + gpointer user_data) +{ + GtkWidget *transient; + + guint ret; + + TerritorioTipiAggregazioneTerritoriale *territorio_tipi_aggregazione_territoriale = (TerritorioTipiAggregazioneTerritoriale *)user_data; + TerritorioTipiAggregazioneTerritorialePrivate *priv = TERRITORIO_TIPI_AGGREGAZIONE_TERRITORIALE_GET_PRIVATE (territorio_tipi_aggregazione_territoriale); + + gchar **columns_title = g_strsplit ("ID|Tipo aggregazione", "|", -1); + + if (priv->selezione) + { + transient = priv->widget; + } + else + { + transient = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")); + } + + ret = solipa_gtktreemodel_to_csv_gui (priv->commons->solipa, GTK_WINDOW (transient), GTK_TREE_MODEL (priv->lstore_tipi_aggregazione_territoriale), + columns_title, g_strv_length (columns_title)); + if (ret == 1) + { + solipa_message_dialog (transient, + GTK_MESSAGE_INFO, + GTK_BUTTONS_OK, + "Salvataggio eseguito con successo."); + } + else if (ret == 0) + { + solipa_message_dialog (transient, + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Errore durante il salvataggio."); + } + + g_strfreev (columns_title); +} + static void territorio_tipi_aggregazione_territoriale_on_btn_nuovo_clicked (GtkButton *button, gpointer user_data) @@ -430,13 +470,10 @@ territorio_tipi_aggregazione_territoriale_on_btn_elimina_clicked (GtkButton *but } else { - dialog = gtk_message_dialog_new (priv->wtransient, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Occorre prima selezionare un tipo aggregazione territoriale"); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + solipa_message_dialog (GTK_WIDGET (priv->wtransient), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare un tipo aggregazione territoriale"); } } @@ -458,7 +495,6 @@ territorio_tipi_aggregazione_territoriale_on_trv_tipi_aggregazione_territoriale_ } } - static void territorio_tipi_aggregazione_territoriale_on_btn_annulla_clicked (GtkButton *button, gpointer user_data) diff --git a/src/vie.c b/src/vie.c index 7bad6e0..0e5207c 100644 --- a/src/vie.c +++ b/src/vie.c @@ -54,6 +54,8 @@ static gboolean territorio_vie_on_key_release_event (GtkWidget *widget, static void territorio_vie_on_map (GtkWidget *widget, gpointer user_data); +static void territorio_vie_on_btn_esporta_clicked (GtkButton *button, + gpointer user_data); static void territorio_vie_on_btn_nuovo_clicked (GtkButton *button, gpointer user_data); static void territorio_vie_on_btn_modifica_clicked (GtkButton *button, @@ -212,6 +214,8 @@ TerritorioVie priv->signal_map = g_signal_connect (priv->widget, "map", G_CALLBACK (territorio_vie_on_map), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button64"), + "clicked", G_CALLBACK (territorio_vie_on_btn_esporta_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button45"), "clicked", G_CALLBACK (territorio_vie_on_btn_nuovo_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button46"), @@ -515,6 +519,48 @@ territorio_vie_on_map (GtkWidget *widget, g_signal_handler_disconnect (G_OBJECT (priv->widget), priv->signal_map); } +static void +territorio_vie_on_btn_esporta_clicked (GtkButton *button, + gpointer user_data) +{ + GtkWidget *transient; + + guint ret; + + TerritorioVie *territorio_vie = (TerritorioVie *)user_data; + TerritorioViePrivate *priv = TERRITORIO_VIE_GET_PRIVATE (territorio_vie); + + gchar **columns_title = g_strsplit ("ID|Via|{SKIP}|Comune|Provincia|Regione", "|", -1); + + if (priv->selezione) + { + transient = priv->widget; + } + else + { + transient = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")); + } + + ret = solipa_gtktreemodel_to_csv_gui (priv->commons->solipa, GTK_WINDOW (transient), GTK_TREE_MODEL (priv->lstore_vie), + columns_title, g_strv_length (columns_title)); + if (ret == 1) + { + solipa_message_dialog (transient, + GTK_MESSAGE_INFO, + GTK_BUTTONS_OK, + "Salvataggio eseguito con successo."); + } + else if (ret == 0) + { + solipa_message_dialog (transient, + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Errore durante il salvataggio."); + } + + g_strfreev (columns_title); +} + static void territorio_vie_on_btn_nuovo_clicked (GtkButton *button, gpointer user_data)