From 8fd865444bbf861738ae3da17fb022b534d3d618 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Sun, 13 Nov 2016 10:02:33 +0100 Subject: [PATCH] Migrato l'elenco tipi rapporto di lavoro a GdaExGrid (refs #833). --- data/organigramma/gui/organigramma.gui | 319 +++++++++++-------------- src/tipirapportolavoro.c | 75 +++--- 2 files changed, 189 insertions(+), 205 deletions(-) diff --git a/data/organigramma/gui/organigramma.gui b/data/organigramma/gui/organigramma.gui index 1fd104d..9a6df94 100644 --- a/data/organigramma/gui/organigramma.gui +++ b/data/organigramma/gui/organigramma.gui @@ -3259,163 +3259,6 @@ - - False - Tipi prestazione - Gestione organigramma - True - center-on-parent - 500 - 400 - True - - - True - False - 5 - vertical - 5 - - - True - False - <b>Tipi prestazione</b> - True - - - False - True - 0 - - - - - True - True - etched-in - - - True - True - lstore_tipi_prestazione - False - 0 - - - - - - Nome - - - - 1 - - - - - - - - - True - True - 1 - - - - - True - False - 5 - end - - - gtk-new - True - True - True - True - - - False - False - 0 - - - - - gtk-edit - True - True - True - True - - - False - False - 1 - - - - - gtk-delete - True - True - True - True - - - False - False - 2 - - - - - gtk-cancel - True - True - True - True - - - False - False - 3 - - - - - gtk-ok - True - True - True - True - - - False - False - 4 - - - - - False - True - 2 - - - - - - - - - - - - - False Incarico - Gestione organigramma @@ -3526,7 +3369,6 @@ True False True - lstore_tipi_rapporto_lavoro @@ -3784,26 +3626,26 @@ - + False - Tipi rapporto di lavoro - Gestione organigramma + Tipi prestazione - Gestione organigramma True center-on-parent 500 400 True - + True False 5 vertical 5 - + True False - <b>Tipi rapporto di lavoro</b> + <b>Tipi prestazione</b> True @@ -3813,25 +3655,25 @@ - + True True etched-in - + True True - lstore_tipi_rapporto_lavoro + lstore_tipi_prestazione False 0 - + Nome - + 1 @@ -3848,13 +3690,13 @@ - + True False 5 end - + gtk-new True True @@ -3868,7 +3710,7 @@ - + gtk-edit True True @@ -3882,7 +3724,7 @@ - + gtk-delete True True @@ -3896,7 +3738,7 @@ - + gtk-cancel True True @@ -3910,7 +3752,7 @@ - + gtk-ok True True @@ -8695,6 +8537,135 @@ + + False + Tipi rapporto di lavoro - Gestione organigramma + True + center-on-parent + 500 + 400 + True + + + True + False + 5 + vertical + 5 + + + True + False + <b>Tipi rapporto di lavoro</b> + True + + + False + True + 0 + + + + + True + True + etched-in + + + + + + True + True + 1 + + + + + True + False + 5 + end + + + gtk-new + True + True + True + True + + + False + False + 0 + + + + + gtk-edit + True + True + True + True + + + False + False + 1 + + + + + gtk-delete + True + True + True + True + + + False + False + 2 + + + + + gtk-cancel + True + True + True + True + + + False + False + 3 + + + + + gtk-ok + True + True + True + True + + + False + False + 4 + + + + + False + True + 2 + + + + + False Tipi recapito - Gestione organigramma diff --git a/src/tipirapportolavoro.c b/src/tipirapportolavoro.c index 43e49e6..29a7537 100644 --- a/src/tipirapportolavoro.c +++ b/src/tipirapportolavoro.c @@ -17,6 +17,11 @@ * */ +#ifdef HAVE_CONFIG_H + #include +#endif + +#include #include #include @@ -71,8 +76,10 @@ struct _OrganigrammaTipiRapportoLavoroPrivate OrganigrammaCommons *commons; GtkWidget *widget; + GdaExGrid *grid; + GtkWidget *wgrid; GtkTreeSelection *selection; - GtkListStore *lstore_tipi_rapporto_lavoro; + GtkTreeStore *tstore_tipi_rapporto_lavoro; gboolean selezione; GtkWindow *wtransient; @@ -125,6 +132,8 @@ OrganigrammaTipiRapportoLavoro GError *error; ZakAuthoIResource *ires1; + GdaExGridColumn *gcol; + OrganigrammaTipiRapportoLavoro *a = ORGANIGRAMMA_TIPI_RAPPORTO_LAVORO (g_object_new (organigramma_tipi_rapporto_lavoro_get_type (), NULL)); OrganigrammaTipiRapportoLavoroPrivate *priv = ORGANIGRAMMA_TIPI_RAPPORTO_LAVORO_GET_PRIVATE (a); @@ -134,9 +143,8 @@ OrganigrammaTipiRapportoLavoro error = NULL; gtk_builder_add_objects_from_file (priv->commons->gtkbuilder, priv->commons->guifile, - g_strsplit (g_strconcat ("lstore_tipi_rapporto_lavoro|", - (selezione ? "w_tipi_rapporto_lavoro" : "vbx_tipi_rapporto_lavoro"), - NULL), "|", -1), + g_strsplit ((selezione ? "w_tipi_rapporto_lavoro" : "vbx_tipi_rapporto_lavoro"), + "|", -1), &error); if (error != NULL) { @@ -145,8 +153,6 @@ OrganigrammaTipiRapportoLavoro } priv->widget = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, (selezione ? "w_tipi_rapporto_lavoro" : "vbx_tipi_rapporto_lavoro"))); - priv->selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gtk_builder_get_object (priv->commons->gtkbuilder, "treeview19"))); - priv->lstore_tipi_rapporto_lavoro = GTK_LIST_STORE (gtk_builder_get_object (priv->commons->gtkbuilder, "lstore_tipi_rapporto_lavoro")); if (priv->selezione) { @@ -157,13 +163,33 @@ OrganigrammaTipiRapportoLavoro priv->wtransient = GTK_WINDOW (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")); } + /* 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, "label143")))); + + gcol = gdaex_grid_column_new ("ID", "id", G_TYPE_INT, TRUE, TRUE, TRUE, FALSE, -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); + + 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, "scrolledwindow33")), priv->wgrid); + gtk_widget_show (priv->wgrid); + + priv->selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->wgrid)); + priv->tstore_tipi_rapporto_lavoro = GTK_TREE_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (priv->wgrid))); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button109"), "clicked", G_CALLBACK (organigramma_tipi_rapporto_lavoro_on_btn_nuovo_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button110"), "clicked", G_CALLBACK (organigramma_tipi_rapporto_lavoro_on_btn_modifica_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button111"), "clicked", G_CALLBACK (organigramma_tipi_rapporto_lavoro_on_btn_elimina_clicked), (gpointer)a); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "treeview19"), + g_signal_connect (priv->wgrid, "row-activated", G_CALLBACK (organigramma_tipi_rapporto_lavoro_on_trv_organigramma_tipi_rapporto_lavoro_row_activated), (gpointer)a); if (priv->selezione) @@ -219,35 +245,22 @@ organigramma_tipi_rapporto_lavoro_carica (OrganigrammaTipiRapportoLavoro *tipi_r OrganigrammaTipiRapportoLavoroPrivate *priv = ORGANIGRAMMA_TIPI_RAPPORTO_LAVORO_GET_PRIVATE (tipi_rapporto_lavoro); - gtk_list_store_clear (priv->lstore_tipi_rapporto_lavoro); + gtk_tree_store_clear (priv->tstore_tipi_rapporto_lavoro); sql = g_strdup_printf ("SELECT c.id, c.nome" " FROM tipi_rapporto_lavoro AS c" " WHERE c.status <> 'E'" " ORDER BY c.nome"); dm = gdaex_query (priv->commons->gdaex, sql); + gdaex_fill_treemodel_from_sql (priv->commons->gdaex, GTK_TREE_MODEL (priv->tstore_tipi_rapporto_lavoro), sql, NULL, NULL); g_free (sql); - if (dm != NULL) - { - rows = gda_data_model_get_n_rows (dm); - for (row = 0; row < rows; row++) - { - gtk_list_store_append (priv->lstore_tipi_rapporto_lavoro, &iter); - gtk_list_store_set (priv->lstore_tipi_rapporto_lavoro, &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"), - -1); - } - - g_object_unref (dm); - } } static void organigramma_tipi_rapporto_lavoro_modifica (OrganigrammaTipiRapportoLavoro *tipi_rapporto_lavoro) { GtkTreeIter iter; - gchar *id; + guint id; OrganigrammaTipiRapportoLavoroPrivate *priv = ORGANIGRAMMA_TIPI_RAPPORTO_LAVORO_GET_PRIVATE (tipi_rapporto_lavoro); @@ -255,11 +268,11 @@ organigramma_tipi_rapporto_lavoro_modifica (OrganigrammaTipiRapportoLavoro *tipi { GtkWidget *w; - gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_tipi_rapporto_lavoro), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->tstore_tipi_rapporto_lavoro), &iter, COL_ID, &id, -1); - OrganigrammaTipoRapportoLavoro *c = organigramma_tipo_rapporto_lavoro_new (priv->commons, strtol (id, NULL, 10)); + OrganigrammaTipoRapportoLavoro *c = organigramma_tipo_rapporto_lavoro_new (priv->commons, id); g_signal_connect (G_OBJECT (c), "aggiornato", G_CALLBACK (organigramma_tipi_rapporto_lavoro_on_costo_aggiornato), (gpointer)tipi_rapporto_lavoro); @@ -281,18 +294,18 @@ static void organigramma_tipi_rapporto_lavoro_selezionato (OrganigrammaTipiRapportoLavoro *tipi_rapporto_lavoro) { GtkTreeIter iter; - gchar *id; + guint id; OrganigrammaTipiRapportoLavoroClass *klass = ORGANIGRAMMA_TIPI_RAPPORTO_LAVORO_GET_CLASS (tipi_rapporto_lavoro); OrganigrammaTipiRapportoLavoroPrivate *priv = ORGANIGRAMMA_TIPI_RAPPORTO_LAVORO_GET_PRIVATE (tipi_rapporto_lavoro); if (gtk_tree_selection_get_selected (priv->selection, NULL, &iter)) { - gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_tipi_rapporto_lavoro), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->tstore_tipi_rapporto_lavoro), &iter, COL_ID, &id, -1); - g_signal_emit (G_OBJECT (tipi_rapporto_lavoro), klass->selezionato_signal_id, 0, strtol (id, NULL, 10)); + g_signal_emit (G_OBJECT (tipi_rapporto_lavoro), klass->selezionato_signal_id, 0, id); gtk_widget_destroy (priv->widget); g_object_unref (G_OBJECT (tipi_rapporto_lavoro)); @@ -372,7 +385,7 @@ organigramma_tipi_rapporto_lavoro_on_btn_elimina_clicked (GtkButton *button, gpointer user_data) { GtkTreeIter iter; - gchar *id; + guint id; OrganigrammaTipiRapportoLavoro *tipi_rapporto_lavoro = (OrganigrammaTipiRapportoLavoro *)user_data; OrganigrammaTipiRapportoLavoroPrivate *priv = ORGANIGRAMMA_TIPI_RAPPORTO_LAVORO_GET_PRIVATE (tipi_rapporto_lavoro); @@ -384,12 +397,12 @@ organigramma_tipi_rapporto_lavoro_on_btn_elimina_clicked (GtkButton *button, GTK_BUTTONS_YES_NO, "Sicuro di voler eliminare il tipo rapporto lavoro selezionato?") == GTK_RESPONSE_YES) { - gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_tipi_rapporto_lavoro), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->tstore_tipi_rapporto_lavoro), &iter, COL_ID, &id, -1); gdaex_execute (priv->commons->gdaex, - g_strdup_printf ("UPDATE tipi_rapporto_lavoro SET status = 'E' WHERE id = %d", strtol (id, NULL, 10))); + g_strdup_printf ("UPDATE tipi_rapporto_lavoro SET status = 'E' WHERE id = %d", id)); organigramma_tipi_rapporto_lavoro_carica (tipi_rapporto_lavoro); } -- 2.49.0