From 455f6d0efaea2f2af8d979de89a76f3063b82b3e Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Sat, 21 Dec 2019 15:38:35 +0100 Subject: [PATCH] Migrato aggregazioni_territoriali a libgdaexgrid. --- .../form/aggregazione_territoriale.form | 2 +- data/territorio/gui/territorio.gui | 345 +++++++----------- src/aggregazioniterritoriali.c | 136 +++---- 3 files changed, 189 insertions(+), 294 deletions(-) diff --git a/data/territorio/form/aggregazione_territoriale.form b/data/territorio/form/aggregazione_territoriale.form index 299ec15..dd80e65 100644 --- a/data/territorio/form/aggregazione_territoriale.form +++ b/data/territorio/form/aggregazione_territoriale.form @@ -13,7 +13,7 @@ integer zakgtkdecoder1 - + 0 nome diff --git a/data/territorio/gui/territorio.gui b/data/territorio/gui/territorio.gui index 36d35a7..22532ed 100644 --- a/data/territorio/gui/territorio.gui +++ b/data/territorio/gui/territorio.gui @@ -45,214 +45,6 @@ - - - - - - - - - - - - False - Aggregazioni territoriali - Territorio - True - center-on-parent - 550 - 400 - True - - - - - - True - False - 5 - vertical - 5 - - - True - False - <b>Aggregazioni territoriali</b> - True - - - False - True - 0 - - - - - True - True - etched-in - - - True - True - lstore_aggregazioni_territoriali - False - True - 2 - - - - - - Tipo - True - True - 1 - - - - 1 - - - - - - - Nome - True - True - 2 - - - - 2 - - - - - - - - - True - True - 1 - - - - - True - False - 5 - end - - - E_sporta - False - True - True - True - True - - - False - False - 0 - - - - - gtk-new - False - True - True - True - True - - - False - False - 1 - - - - - gtk-edit - False - True - True - True - True - - - False - False - 2 - - - - - gtk-delete - False - True - True - True - True - - - False - False - 3 - - - - - gtk-cancel - False - True - True - True - True - - - False - False - 4 - - - - - gtk-ok - False - True - True - True - True - - - False - False - 5 - - - - - False - True - 2 - - - - - - - - - - - - - @@ -665,6 +457,143 @@ + + False + Aggregazioni territoriali - Territorio + True + center-on-parent + 550 + 400 + True + + + + + + True + False + 5 + vertical + 5 + + + True + False + <b>Aggregazioni territoriali</b> + True + + + False + True + 0 + + + + + True + True + etched-in + + + + + + True + True + 1 + + + + + True + False + 5 + end + + + gtk-new + False + True + True + True + True + + + False + False + 0 + + + + + gtk-edit + False + True + True + True + True + + + False + False + 2 + + + + + gtk-delete + False + True + True + True + True + + + False + False + 3 + + + + + gtk-cancel + False + True + True + True + True + + + False + False + 4 + + + + + gtk-ok + False + True + True + True + True + + + False + False + 5 + + + + + False + True + 2 + + + + + False Comune - Territorio diff --git a/src/aggregazioniterritoriali.c b/src/aggregazioniterritoriali.c index b2e1cca..7025c17 100644 --- a/src/aggregazioniterritoriali.c +++ b/src/aggregazioniterritoriali.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2016 Andrea Zagli + * Copyright (C) 2010-2019 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -19,6 +19,7 @@ #include #include +#include #include "aggregazioniterritoriali.h" #include "aggregazioneterritoriale.h" @@ -41,8 +42,6 @@ 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, @@ -74,8 +73,10 @@ struct _TerritorioAggregazioniTerritorialiPrivate TerritorioCommons *commons; GtkWidget *widget; + GdaExGrid *grid; + GtkWidget *wgrid; GtkTreeSelection *selection; - GtkListStore *lstore_aggregazioni_territoriali; + GtkTreeStore *tstore_aggregazioni_territoriali; gboolean selezione; GtkWindow *wtransient; @@ -128,6 +129,8 @@ TerritorioAggregazioniTerritoriali GError *error; ZakAuthoIResource *ires1; + GdaExGridColumn *gcol; + TerritorioAggregazioniTerritoriali *a = TERRITORIO_AGGREGAZIONI_TERRITORIALI (g_object_new (territorio_aggregazioni_territoriali_get_type (), NULL)); TerritorioAggregazioniTerritorialiPrivate *priv = TERRITORIO_AGGREGAZIONI_TERRITORIALI_GET_PRIVATE (a); @@ -149,8 +152,28 @@ TerritorioAggregazioniTerritoriali } priv->widget = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, (selezione ? "w_aggregazioni_territoriali" : "vbox12"))); - priv->selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gtk_builder_get_object (priv->commons->gtkbuilder, "treeview6"))); - priv->lstore_aggregazioni_territoriali = GTK_LIST_STORE (gtk_builder_get_object (priv->commons->gtkbuilder, "lstore_aggregazioni_territoriali")); + + /* creo la gdaexgrid */ + priv->grid = gdaex_grid_new (); + gdaex_grid_set_solipa (priv->grid, priv->commons->solipa); + gdaex_grid_set_title (priv->grid, gtk_label_get_text (GTK_LABEL (gtk_builder_get_object (priv->commons->gtkbuilder, "label30")))); + + gcol = gdaex_grid_column_new ("ID", "id", G_TYPE_INT, TRUE, TRUE, TRUE, TRUE, -1); + gdaex_grid_add_column (priv->grid, gcol); + + gcol = gdaex_grid_column_new_defaults ("Tipo", "tipo", G_TYPE_STRING); + gdaex_grid_add_column (priv->grid, gcol); + + gcol = gdaex_grid_column_new_defaults ("Nome", "nome", G_TYPE_STRING); + gdaex_grid_add_column (priv->grid, gcol); + + priv->wgrid = gdaex_grid_get_widget (priv->grid); + gtk_tree_view_set_search_column (GTK_TREE_VIEW (priv->wgrid), 1); + gtk_container_add (GTK_CONTAINER (gtk_builder_get_object (priv->commons->gtkbuilder, "scrolledwindow6")), priv->wgrid); + gtk_widget_show (priv->wgrid); + + priv->selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->wgrid)); + priv->tstore_aggregazioni_territoriali = GTK_TREE_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (priv->wgrid))); if (priv->selezione) { @@ -161,15 +184,13 @@ 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"), "clicked", G_CALLBACK (territorio_aggregazioni_territoriali_on_btn_modifica_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button38"), "clicked", G_CALLBACK (territorio_aggregazioni_territoriali_on_btn_elimina_clicked), (gpointer)a); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "treeview6"), + g_signal_connect (priv->wgrid, "row-activated", G_CALLBACK (territorio_aggregazioni_territoriali_on_trv_territorio_aggregazioni_territoriali_row_activated), (gpointer)a); if (priv->selezione) @@ -216,43 +237,30 @@ static void territorio_aggregazioni_territoriali_carica (TerritorioAggregazioniTerritoriali *territorio_aggregazioni_territoriali) { GtkTreeIter iter; - GdaDataModel *dm; - - gint rows; - gint row; + gchar *sql; TerritorioAggregazioniTerritorialiPrivate *priv = TERRITORIO_AGGREGAZIONI_TERRITORIALI_GET_PRIVATE (territorio_aggregazioni_territoriali); - gtk_list_store_clear (priv->lstore_aggregazioni_territoriali); + gtk_tree_store_clear (priv->tstore_aggregazioni_territoriali); - dm = gdaex_query (priv->commons->gdaex, - "SELECT c.id, t.nome AS tipo, c.nome" - " FROM aggregazioni_territoriali AS c" - " INNER JOIN tipi_aggregazione_territoriale AS t ON c.id_tipi_aggregazione_territoriale = t.id" - " WHERE c.status <> 'E'" - " ORDER BY t.nome, c.nome"); - if (dm != NULL) - { - rows = gda_data_model_get_n_rows (dm); - for (row = 0; row < rows; row++) - { - gtk_list_store_append (priv->lstore_aggregazioni_territoriali, &iter); - gtk_list_store_set (priv->lstore_aggregazioni_territoriali, &iter, - COL_ID, gdaex_data_model_get_field_value_stringify_at (dm, row, "id"), - COL_TIPO, gdaex_data_model_get_field_value_stringify_at (dm, row, "tipo"), - COL_NOME, gdaex_data_model_get_field_value_stringify_at (dm, row, "nome"), - -1); - } + sql = g_strdup_printf ("SELECT c.id, t.nome AS tipo, c.nome" + " FROM aggregazioni_territoriali AS c" + " INNER JOIN tipi_aggregazione_territoriale AS t ON c.id_tipi_aggregazione_territoriale = t.id" + " WHERE c.status <> 'E'" + " ORDER BY t.nome, c.nome"); + gdaex_grid_fill_from_sql (priv->grid, + priv->commons->gdaex, + sql, + NULL); - g_object_unref (dm); - } + g_free (sql); } static void territorio_aggregazioni_territoriali_modifica (TerritorioAggregazioniTerritoriali *territorio_aggregazioni_territoriali) { GtkTreeIter iter; - gchar *id; + guint id; TerritorioAggregazioniTerritorialiPrivate *priv = TERRITORIO_AGGREGAZIONI_TERRITORIALI_GET_PRIVATE (territorio_aggregazioni_territoriali); @@ -260,11 +268,11 @@ territorio_aggregazioni_territoriali_modifica (TerritorioAggregazioniTerritorial { GtkWidget *w; - gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_aggregazioni_territoriali), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->tstore_aggregazioni_territoriali), &iter, COL_ID, &id, -1); - TerritorioAggregazioneTerritoriale *c = territorio_aggregazione_territoriale_new (priv->commons, strtol (id, NULL, 10)); + TerritorioAggregazioneTerritoriale *c = territorio_aggregazione_territoriale_new (priv->commons, id); g_signal_connect (G_OBJECT (c), "aggiornato", G_CALLBACK (territorio_aggregazioni_territoriali_on_aggregazione_territoriale_aggiornato), (gpointer)territorio_aggregazioni_territoriali); @@ -286,18 +294,18 @@ static void territorio_aggregazioni_territoriali_selezionato (TerritorioAggregazioniTerritoriali *territorio_aggregazioni_territoriali) { GtkTreeIter iter; - gchar *id; + guint id; TerritorioAggregazioniTerritorialiClass *klass = TERRITORIO_AGGREGAZIONI_TERRITORIALI_GET_CLASS (territorio_aggregazioni_territoriali); TerritorioAggregazioniTerritorialiPrivate *priv = TERRITORIO_AGGREGAZIONI_TERRITORIALI_GET_PRIVATE (territorio_aggregazioni_territoriali); if (gtk_tree_selection_get_selected (priv->selection, NULL, &iter)) { - gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_aggregazioni_territoriali), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->tstore_aggregazioni_territoriali), &iter, COL_ID, &id, -1); - g_signal_emit (G_OBJECT (territorio_aggregazioni_territoriali), klass->selezionato_signal_id, 0, strtol (id, NULL, 10)); + g_signal_emit (G_OBJECT (territorio_aggregazioni_territoriali), klass->selezionato_signal_id, 0, id); gtk_widget_destroy (priv->widget); g_object_unref (G_OBJECT (territorio_aggregazioni_territoriali)); @@ -346,48 +354,6 @@ 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) @@ -433,7 +399,7 @@ territorio_aggregazioni_territoriali_on_btn_elimina_clicked (GtkButton *button, ZakAuthoIResource *ires1; GtkTreeIter iter; - gchar *id; + guint id; TerritorioAggregazioniTerritoriali *territorio_aggregazioni_territoriali = (TerritorioAggregazioniTerritoriali *)user_data; TerritorioAggregazioniTerritorialiPrivate *priv = TERRITORIO_AGGREGAZIONI_TERRITORIALI_GET_PRIVATE (territorio_aggregazioni_territoriali); @@ -455,12 +421,12 @@ territorio_aggregazioni_territoriali_on_btn_elimina_clicked (GtkButton *button, GTK_BUTTONS_YES_NO, "Sicuro di voler eliminare l'aggregazione territoriale selezionata?") == GTK_RESPONSE_YES) { - gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_aggregazioni_territoriali), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->tstore_aggregazioni_territoriali), &iter, COL_ID, &id, -1); gdaex_execute (priv->commons->gdaex, - g_strdup_printf ("UPDATE aggregazioni_territoriali SET status = 'E' WHERE id = %s", id)); + g_strdup_printf ("UPDATE aggregazioni_territoriali SET status = 'E' WHERE id = %d", id)); territorio_aggregazioni_territoriali_carica (territorio_aggregazioni_territoriali); } -- 2.49.0