From 54a1de1cace3be451d1d05cb242eed5a58437a0c Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Sat, 21 Dec 2019 17:26:52 +0100 Subject: [PATCH] Migrazione di vie a libgdaexgrid. --- data/territorio/gui/territorio.gui | 412 +++++++++++------------------ src/comuni.c | 3 +- src/vie.c | 128 ++++----- 3 files changed, 205 insertions(+), 338 deletions(-) diff --git a/data/territorio/gui/territorio.gui b/data/territorio/gui/territorio.gui index 22532ed..7725b6c 100644 --- a/data/territorio/gui/territorio.gui +++ b/data/territorio/gui/territorio.gui @@ -45,255 +45,6 @@ - - - - - - - - - - - - - - - - - - False - Vie - Territorio - True - center-on-parent - 550 - 400 - True - - - - - - True - False - 5 - vertical - 5 - - - True - False - <b>Vie</b> - True - - - False - True - 0 - - - - - True - True - etched-in - - - True - True - lstore_vie - True - True - 1 - - - - - - Nome - True - True - 1 - - - - 1 - - - - - - - Comune - True - True - 3 - - - - 3 - - - - - - - Provincia - True - True - 4 - - - - 4 - - - - - - - Regione - True - True - 4 - - - - 5 - - - - - - - - - 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-find - False - True - True - True - True - - - False - False - 4 - - - - - gtk-cancel - False - True - True - True - True - - - False - False - 5 - - - - - gtk-ok - False - True - True - True - True - - - False - False - 6 - - - - - False - True - 2 - - - - - False Aggregazione territoriale - Territorio @@ -2009,6 +1760,7 @@ 1 1 + 2 @@ -2035,9 +1787,6 @@ 2 - - - True @@ -2314,6 +2063,7 @@ 1 1 + 3 @@ -2352,12 +2102,6 @@ 3 - - - - - - True @@ -3390,6 +3134,158 @@ + + False + Vie - Territorio + True + center-on-parent + 550 + 400 + True + + + + + + True + False + 5 + vertical + 5 + + + True + False + <b>Vie</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 + 1 + + + + + gtk-edit + False + True + True + True + True + + + False + False + 2 + + + + + gtk-delete + False + True + True + True + True + + + False + False + 3 + + + + + gtk-find + False + True + True + True + True + + + False + False + 4 + + + + + gtk-cancel + False + True + True + True + True + + + False + False + 5 + + + + + gtk-ok + False + True + True + True + True + + + False + False + 6 + + + + + False + True + 2 + + + + + False diff --git a/src/comuni.c b/src/comuni.c index 8d8b870..010ce55 100644 --- a/src/comuni.c +++ b/src/comuni.c @@ -178,8 +178,7 @@ TerritorioComuni error = NULL; gtk_builder_add_objects_from_file (priv->commons->gtkbuilder, priv->commons->guifile, - g_strsplit (g_strconcat ("lstore_comuni|", - (selezione ? "w_comuni" : "vbox8"), + g_strsplit (g_strconcat ((selezione ? "w_comuni" : "vbox8"), NULL), "|", -1), &error); if (error != NULL) diff --git a/src/vie.c b/src/vie.c index 6d014c3..f14d2c8 100644 --- a/src/vie.c +++ b/src/vie.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 @@ -22,6 +22,7 @@ #include #include +#include #include #include "vie.h" @@ -55,8 +56,6 @@ 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, @@ -107,8 +106,10 @@ struct _TerritorioViePrivate TerritorioCommons *commons; GtkWidget *widget; + GdaExGrid *grid; + GtkWidget *wgrid; GtkTreeSelection *selection; - GtkListStore *lstore_vie; + GtkTreeStore *tstore_vie; GHashTable *parametri_ricerca; @@ -176,6 +177,8 @@ TerritorioVie GError *error; ZakAuthoIResource *ires1; + GdaExGridColumn *gcol; + TerritorioVie *a = TERRITORIO_VIE (g_object_new (territorio_vie_get_type (), NULL)); TerritorioViePrivate *priv = TERRITORIO_VIE_GET_PRIVATE (a); @@ -185,8 +188,7 @@ TerritorioVie error = NULL; gtk_builder_add_objects_from_file (priv->commons->gtkbuilder, priv->commons->guifile, - g_strsplit (g_strconcat ("lstore_vie|", - (selezione ? "w_vie" : "vbox14"), + g_strsplit (g_strconcat ((selezione ? "w_vie" : "vbox14"), NULL), "|", -1), &error); if (error != NULL) @@ -196,10 +198,39 @@ TerritorioVie } priv->widget = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, (selezione ? "w_vie" : "vbox14"))); - priv->selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gtk_builder_get_object (priv->commons->gtkbuilder, "treeview7"))); - priv->lstore_vie = GTK_LIST_STORE (gtk_builder_get_object (priv->commons->gtkbuilder, "lstore_vie")); - gtk_tree_view_set_search_equal_func (GTK_TREE_VIEW (gtk_builder_get_object (priv->commons->gtkbuilder, "treeview7")), search_func, NULL, NULL); + /* 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, "label39")))); + + 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 ("Nome", "nome", G_TYPE_STRING); + gdaex_grid_add_column (priv->grid, gcol); + + gcol = gdaex_grid_column_new ("ID Comuni", "id_comuni", G_TYPE_INT, TRUE, TRUE, TRUE, TRUE, -1); + gdaex_grid_add_column (priv->grid, gcol); + + gcol = gdaex_grid_column_new_defaults ("COmune", "comune", G_TYPE_STRING); + gdaex_grid_add_column (priv->grid, gcol); + + gcol = gdaex_grid_column_new_defaults ("Provincia", "provincia", G_TYPE_STRING); + gdaex_grid_add_column (priv->grid, gcol); + + gcol = gdaex_grid_column_new_defaults ("Regione", "regione", 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, "scrolledwindow7")), priv->wgrid); + gtk_widget_show (priv->wgrid); + + priv->selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->wgrid)); + priv->tstore_vie = GTK_TREE_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (priv->wgrid))); + + gtk_tree_view_set_search_equal_func (GTK_TREE_VIEW (priv->wgrid), search_func, NULL, NULL); if (priv->selezione) { @@ -215,15 +246,13 @@ 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"), "clicked", G_CALLBACK (territorio_vie_on_btn_modifica_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button47"), "clicked", G_CALLBACK (territorio_vie_on_btn_elimina_clicked), (gpointer)a); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "treeview7"), + g_signal_connect (priv->wgrid, "row-activated", G_CALLBACK (territorio_vie_on_trv_vie_row_activated), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button63"), "clicked", G_CALLBACK (territorio_vie_on_btn_trova_clicked), (gpointer)a); @@ -284,7 +313,7 @@ territorio_vie_carica (TerritorioVie *territorio_vie) TerritorioViePrivate *priv = TERRITORIO_VIE_GET_PRIVATE (territorio_vie); - gtk_list_store_clear (priv->lstore_vie); + gtk_tree_store_clear (priv->tstore_vie); sql_where = g_strdup (""); @@ -343,27 +372,12 @@ territorio_vie_carica (TerritorioVie *territorio_vie) " ORDER BY v.nome", sql_where); - dm = gdaex_query (priv->commons->gdaex, sql); - g_free (sql); - g_free (sql_where); - if (dm != NULL) - { - rows = gda_data_model_get_n_rows (dm); - for (row = 0; row < rows; row++) - { - gtk_list_store_append (priv->lstore_vie, &iter); - gtk_list_store_set (priv->lstore_vie, &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"), - COL_ID_COMUNI, gdaex_data_model_get_field_value_integer_at (dm, row, "id_comuni"), - COL_COMUNE, gdaex_data_model_get_field_value_stringify_at (dm, row, "comune"), - COL_PROVINCIA, gdaex_data_model_get_field_value_stringify_at (dm, row, "provincia"), - COL_REGIONE, gdaex_data_model_get_field_value_stringify_at (dm, row, "regione"), - -1); - } + gdaex_grid_fill_from_sql (priv->grid, + priv->commons->gdaex, + sql, + NULL); - g_object_unref (dm); - } + g_free (sql); } static void @@ -378,7 +392,7 @@ territorio_vie_modifica (TerritorioVie *territorio_vie) { GtkWidget *w; - gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_vie), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->tstore_vie), &iter, COL_ID, &id, -1); @@ -411,7 +425,7 @@ territorio_vie_selezionato (TerritorioVie *territorio_vie) if (gtk_tree_selection_get_selected (priv->selection, NULL, &iter)) { - gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_vie), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->tstore_vie), &iter, COL_ID, &id, -1); @@ -520,48 +534,6 @@ 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) @@ -625,7 +597,7 @@ territorio_vie_on_btn_elimina_clicked (GtkButton *button, if (gtk_tree_selection_get_selected (priv->selection, NULL, &iter)) { - gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_vie), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->tstore_vie), &iter, COL_ID, &id, COL_ID_COMUNI, &id_comuni, -1); -- 2.49.0