From bf18e633d0d7056a05d83649b857efdab6449e23 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Wed, 14 Dec 2016 15:49:08 +0100 Subject: [PATCH] Migrazione a libzakform di persona incarico. --- data/organigramma/form/persona_incarico.form | 169 ++++++++--------- data/organigramma/gui/organigramma.gui | 16 +- src/personaincarico.c | 186 ++++++++++++++++--- 3 files changed, 243 insertions(+), 128 deletions(-) diff --git a/data/organigramma/form/persona_incarico.form b/data/organigramma/form/persona_incarico.form index 10bd4d4..b5dc16a 100644 --- a/data/organigramma/form/persona_incarico.form +++ b/data/organigramma/form/persona_incarico.form @@ -1,96 +1,75 @@ - - - persona_incarichi
- - - - t - t - - - - - - - - - - - - - - - - - SELECT a.nome - FROM tipi_rapporto_lavoro AS a - WHERE a.id = ##key0::gint - - - - - - - - - - SELECT a.nome - FROM posizioni_economiche AS a - WHERE a.id = ##key0::gint - - - - - - - - - - SELECT a.nome - FROM tipi_prestazione AS a - WHERE a.id = ##key0::gint - - - - - - - - - - SELECT a.nome - FROM profili_professionali AS a - WHERE a.id = ##key0::gint - - - - - - - - - date - %d/%m/%Y - t - - - - - - date - %d/%m/%Y - - - - - - t - - - - - - - -
+ + + id + integer + TRUE + label129 + + + id_persone + integer + label130 + + + matricola + string + + entry34 + + + id_tipi_rapporto_lavoro + integer + + zakgtkdecoder11 + + + id_posizioni_economiche + integer + + zakgtkdecoder12 + + + id_tipi_prestazione + integer + + zakgtkdecoder13 + + + id_profili_professionali + integer + + zakgtkdecoder14 + + + da_data + datetime + + entry35 + %d/%m/%Y + + %d/%m/%Y + + + a_data + datetime + + entry36 + %d/%m/%Y + %d/%m/%Y + + + descrizione + string + + textview15 + + + + note + string + + textview14 + + + diff --git a/data/organigramma/gui/organigramma.gui b/data/organigramma/gui/organigramma.gui index d9e9d50..1f30c99 100644 --- a/data/organigramma/gui/organigramma.gui +++ b/data/organigramma/gui/organigramma.gui @@ -4944,9 +4944,10 @@ - + True False + True 1 @@ -4954,19 +4955,21 @@ - + True False + True 1 - 4 + 2 - + True False + True 1 @@ -4974,13 +4977,14 @@ - + True False + True 1 - 2 + 4 diff --git a/src/personaincarico.c b/src/personaincarico.c index f356878..de16efe 100644 --- a/src/personaincarico.c +++ b/src/personaincarico.c @@ -24,8 +24,11 @@ #include #include -#include -#include +#include +#include +#include +#include +#include #include #include "personaincarico.h" @@ -60,6 +63,10 @@ static void organigramma_persona_incarico_on_tipo_rapporto_lavoro_selezionato (g static void organigramma_persona_incarico_on_posizione_economica_selezionato (gpointer instance, guint id, gpointer user_data); static void organigramma_persona_incarico_on_tipo_prestazione_selezionato (gpointer instance, guint id, gpointer user_data); static void organigramma_persona_incarico_on_profilo_professionale_selezionato (gpointer instance, guint id, gpointer user_data); +static gchar *organigramma_persona_incarico_on_tipo_rapporto_lavoro_decode (gpointer instance, gchar *key, gpointer user_data); +static gchar *organigramma_persona_incarico_on_posizione_economica_decode (gpointer instance, gchar *key, gpointer user_data); +static gchar *organigramma_persona_incarico_on_tipo_prestazione_decode (gpointer instance, gchar *key, gpointer user_data); +static gchar *organigramma_persona_incarico_on_profilo_professionale_decode (gpointer instance, gchar *key, gpointer user_data); static void organigramma_persona_incarico_on_btn_ricerca_tipo_rapporto_lavoro_clicked (GtkButton *button, gpointer user_data); @@ -91,7 +98,8 @@ struct _OrganigrammaPersonaIncaricoPrivate { OrganigrammaCommons *commons; - GtkForm *form; + ZakFormGtkForm *form; + ZakFormGdaexProvider *form_provider; GtkWidget *w; @@ -165,13 +173,15 @@ OrganigrammaPersonaIncarico return NULL; } - priv->form = gtk_form_new (); - g_object_set (G_OBJECT (priv->form), "gdaex", priv->commons->gdaex, NULL); - gtk_form_load_from_file (priv->form, g_build_filename (priv->commons->formdir, "persona_incarico.form", NULL), priv->commons->gtkbuilder); + priv->form = zak_form_gtk_form_new (); + zak_form_gtk_form_set_gtkbuilder (priv->form, priv->commons->gtkbuilder); + zak_form_form_load_from_file (ZAK_FORM_FORM (priv->form), g_build_filename (priv->commons->formdir, "persona_incarico.form", NULL)); + + priv->form_provider = zak_form_gdaex_provider_new (priv->commons->gdaex, "persona_incarichi"); priv->w = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_persona_incarico")); - priv->objects = gtk_form_get_objects_by_name (priv->form, + priv->objects = zak_form_gtk_form_get_gobjects_by_name (priv->form, "label129", "label130", NULL); @@ -179,14 +189,22 @@ OrganigrammaPersonaIncarico g_signal_connect (priv->w, "delete-event", G_CALLBACK (organigramma_persona_incarico_on_w_organigramma_persona_incarico_delete_event), (gpointer)a); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "gtkformdecoder2"), + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder11"), "btn-browse-clicked", G_CALLBACK (organigramma_persona_incarico_on_btn_ricerca_tipo_rapporto_lavoro_clicked), (gpointer)a); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "gtkformdecoder5"), + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder12"), "btn-browse-clicked", G_CALLBACK (organigramma_persona_incarico_on_btn_ricerca_posizione_economica_clicked), (gpointer)a); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "gtkformdecoder4"), + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder13"), "btn-browse-clicked", G_CALLBACK (organigramma_persona_incarico_on_btn_ricerca_tipo_prestazione_clicked), (gpointer)a); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "gtkformdecoder3"), + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder14"), "btn-browse-clicked", G_CALLBACK (organigramma_persona_incarico_on_btn_ricerca_profilo_professionale_clicked), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder11"), + "decode", G_CALLBACK (organigramma_persona_incarico_on_tipo_rapporto_lavoro_decode), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder12"), + "decode", G_CALLBACK (organigramma_persona_incarico_on_posizione_economica_decode), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder13"), + "decode", G_CALLBACK (organigramma_persona_incarico_on_tipo_prestazione_decode), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder14"), + "decode", G_CALLBACK (organigramma_persona_incarico_on_profilo_professionale_decode), (gpointer)a); g_signal_connect (G_OBJECT (gtk_builder_get_object (priv->commons->gtkbuilder, "button98")), "clicked", G_CALLBACK (organigramma_persona_incarico_on_btn_annulla_clicked), (gpointer)a); @@ -195,13 +213,15 @@ OrganigrammaPersonaIncarico g_signal_connect (G_OBJECT (gtk_builder_get_object (priv->commons->gtkbuilder, "button158")), "clicked", G_CALLBACK (organigramma_persona_incarico_on_btn_salvaechiudi_clicked), (gpointer)a); + zak_form_form_clear (ZAK_FORM_FORM (priv->form)); + priv->id = id; if (priv->id == 0) { gtk_label_set_text (GTK_LABEL (priv->objects[LBL_ID]), ""); gtk_label_set_text (GTK_LABEL (priv->objects[LBL_ID_PERSONE]), g_strdup_printf ("%d", id_persone)); - gtk_form_set_as_origin (priv->form); + zak_form_form_set_as_original (ZAK_FORM_FORM (priv->form)); } else { @@ -237,12 +257,9 @@ GtkWidget static void organigramma_persona_incarico_carica (OrganigrammaPersonaIncarico *organigramma_persona_incarico) { - gchar *sql; - GdaDataModel *dm; - OrganigrammaPersonaIncaricoPrivate *priv = ORGANIGRAMMA_PERSONA_INCARICO_GET_PRIVATE (organigramma_persona_incarico); - if (gtk_form_fill_from_table (priv->form)) + if (zak_form_form_load (ZAK_FORM_FORM (priv->form), ZAK_FORM_IPROVIDER (priv->form_provider))) { } } @@ -250,27 +267,38 @@ organigramma_persona_incarico_carica (OrganigrammaPersonaIncarico *organigramma_ static void organigramma_persona_incarico_salva (OrganigrammaPersonaIncarico *organigramma_persona_incarico, gboolean chiudi) { - gchar *sql; + gboolean success; OrganigrammaPersonaIncaricoClass *klass = ORGANIGRAMMA_PERSONA_INCARICO_GET_CLASS (organigramma_persona_incarico); OrganigrammaPersonaIncaricoPrivate *priv = ORGANIGRAMMA_PERSONA_INCARICO_GET_PRIVATE (organigramma_persona_incarico); - if (!gtk_form_check (priv->form, FALSE, NULL, TRUE, priv->w, TRUE)) + if (!zak_form_gtk_form_is_valid (priv->form, priv->w)) { return; } + success = FALSE; + if (priv->id == 0) { - sql = gtk_form_get_sql (priv->form, GTK_FORM_SQL_INSERT); + guint new_id; + + new_id = gdaex_get_new_id (priv->commons->gdaex, + "persona_incarichi", + "id", + NULL); + + gtk_label_set_text (GTK_LABEL (priv->objects[LBL_ID]), g_strdup_printf ("%d", new_id)); + + success = zak_form_form_insert (ZAK_FORM_FORM (priv->form), ZAK_FORM_IPROVIDER (priv->form_provider)); } else { - sql = gtk_form_get_sql (priv->form, GTK_FORM_SQL_UPDATE); + success = zak_form_form_update (ZAK_FORM_FORM (priv->form), ZAK_FORM_IPROVIDER (priv->form_provider)); } - if (gdaex_execute (priv->commons->gdaex, sql) == 1) + if (success) { g_signal_emit (organigramma_persona_incarico, klass->aggiornato_signal_id, 0); @@ -279,7 +307,7 @@ organigramma_persona_incarico_salva (OrganigrammaPersonaIncarico *organigramma_p priv->id = strtol (gtk_label_get_text (GTK_LABEL (priv->objects[LBL_ID])), NULL, 10); } - gtk_form_set_as_origin (priv->form); + zak_form_form_set_as_original (ZAK_FORM_FORM (priv->form)); solipa_message_dialog (priv->w, GTK_MESSAGE_INFO, @@ -338,7 +366,7 @@ organigramma_persona_incarico_conferma_chiusura (OrganigrammaPersonaIncarico *or ret = TRUE; - if (gtk_form_is_changed (priv->form)) + if (zak_form_form_is_changed (ZAK_FORM_FORM (priv->form))) { if (solipa_message_dialog (priv->w, GTK_MESSAGE_QUESTION, @@ -368,7 +396,7 @@ organigramma_persona_incarico_on_tipo_rapporto_lavoro_selezionato (gpointer inst OrganigrammaPersonaIncaricoPrivate *priv = ORGANIGRAMMA_PERSONA_INCARICO_GET_PRIVATE (ia); - gtk_form_widget_set_value_stringify (gtk_form_get_form_widget_from_name (priv->form, "gtkformdecoder2"), + zak_gtk_decoder_set_key (ZAK_GTK_DECODER (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder11")), g_strdup_printf ("%d", id)); } @@ -379,7 +407,7 @@ organigramma_persona_incarico_on_posizione_economica_selezionato (gpointer insta OrganigrammaPersonaIncaricoPrivate *priv = ORGANIGRAMMA_PERSONA_INCARICO_GET_PRIVATE (ia); - gtk_form_widget_set_value_stringify (gtk_form_get_form_widget_from_name (priv->form, "gtkformdecoder5"), + zak_gtk_decoder_set_key (ZAK_GTK_DECODER (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder12")), g_strdup_printf ("%d", id)); } @@ -390,7 +418,7 @@ organigramma_persona_incarico_on_tipo_prestazione_selezionato (gpointer instance OrganigrammaPersonaIncaricoPrivate *priv = ORGANIGRAMMA_PERSONA_INCARICO_GET_PRIVATE (ia); - gtk_form_widget_set_value_stringify (gtk_form_get_form_widget_from_name (priv->form, "gtkformdecoder4"), + zak_gtk_decoder_set_key (ZAK_GTK_DECODER (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder13")), g_strdup_printf ("%d", id)); } @@ -401,10 +429,114 @@ organigramma_persona_incarico_on_profilo_professionale_selezionato (gpointer ins OrganigrammaPersonaIncaricoPrivate *priv = ORGANIGRAMMA_PERSONA_INCARICO_GET_PRIVATE (ia); - gtk_form_widget_set_value_stringify (gtk_form_get_form_widget_from_name (priv->form, "gtkformdecoder3"), + zak_gtk_decoder_set_key (ZAK_GTK_DECODER (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder14")), g_strdup_printf ("%d", id)); } +static gchar +*organigramma_persona_incarico_on_tipo_rapporto_lavoro_decode (gpointer instance, gchar *key, gpointer user_data) +{ + GString *ret; + gchar *sql; + GdaDataModel *dm; + + OrganigrammaPersonaIncarico *f = (OrganigrammaPersonaIncarico *)user_data; + OrganigrammaPersonaIncaricoPrivate *priv = ORGANIGRAMMA_PERSONA_INCARICO_GET_PRIVATE (f); + + ret = g_string_new (""); + + sql = g_strdup_printf ("SELECT nome" + " FROM tipi_rapporto_lavoro" + " WHERE id = %d", + strtol (key, NULL, 10)); + dm = gdaex_query (priv->commons->gdaex, sql); + g_free (sql); + if (!gdaex_data_model_is_empty (dm)) + { + g_string_append (ret, gdaex_data_model_get_value_stringify_at (dm, 0, 0)); + } + + return ret->str; +} + +static gchar +*organigramma_persona_incarico_on_posizione_economica_decode (gpointer instance, gchar *key, gpointer user_data) +{ + GString *ret; + gchar *sql; + GdaDataModel *dm; + + OrganigrammaPersonaIncarico *f = (OrganigrammaPersonaIncarico *)user_data; + OrganigrammaPersonaIncaricoPrivate *priv = ORGANIGRAMMA_PERSONA_INCARICO_GET_PRIVATE (f); + + ret = g_string_new (""); + + sql = g_strdup_printf ("SELECT nome" + " FROM posizioni_economiche" + " WHERE id = %d", + strtol (key, NULL, 10)); + dm = gdaex_query (priv->commons->gdaex, sql); + g_free (sql); + if (!gdaex_data_model_is_empty (dm)) + { + g_string_append (ret, gdaex_data_model_get_value_stringify_at (dm, 0, 0)); + } + + return ret->str; +} + +static gchar +*organigramma_persona_incarico_on_tipo_prestazione_decode (gpointer instance, gchar *key, gpointer user_data) +{ + GString *ret; + gchar *sql; + GdaDataModel *dm; + + OrganigrammaPersonaIncarico *f = (OrganigrammaPersonaIncarico *)user_data; + OrganigrammaPersonaIncaricoPrivate *priv = ORGANIGRAMMA_PERSONA_INCARICO_GET_PRIVATE (f); + + ret = g_string_new (""); + + sql = g_strdup_printf ("SELECT nome" + " FROM tipi_prestazione" + " WHERE id = %d", + strtol (key, NULL, 10)); + dm = gdaex_query (priv->commons->gdaex, sql); + g_free (sql); + if (!gdaex_data_model_is_empty (dm)) + { + g_string_append (ret, gdaex_data_model_get_value_stringify_at (dm, 0, 0)); + } + + return ret->str; +} + +static gchar +*organigramma_persona_incarico_on_profilo_professionale_decode (gpointer instance, gchar *key, gpointer user_data) +{ + GString *ret; + gchar *sql; + GdaDataModel *dm; + + OrganigrammaPersonaIncarico *f = (OrganigrammaPersonaIncarico *)user_data; + OrganigrammaPersonaIncaricoPrivate *priv = ORGANIGRAMMA_PERSONA_INCARICO_GET_PRIVATE (f); + + ret = g_string_new (""); + + sql = g_strdup_printf ("SELECT nome" + " FROM profili_professionali" + " WHERE id = %d", + strtol (key, NULL, 10)); + dm = gdaex_query (priv->commons->gdaex, sql); + g_free (sql); + if (!gdaex_data_model_is_empty (dm)) + { + g_string_append (ret, gdaex_data_model_get_value_stringify_at (dm, 0, 0)); + } + + return ret->str; +} + static void organigramma_persona_incarico_on_btn_ricerca_tipo_rapporto_lavoro_clicked (GtkButton *button, gpointer user_data) -- 2.49.0