From: Andrea Zagli Date: Sat, 2 Dec 2017 11:13:32 +0000 (+0100) Subject: Migrazione a libzakform di persona. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=refs%2Fheads%2Fzakform;p=solipa%2Forganigramma Migrazione a libzakform di persona. --- diff --git a/data/organigramma/form/persona.form b/data/organigramma/form/persona.form index 50999e3..170afd2 100644 --- a/data/organigramma/form/persona.form +++ b/data/organigramma/form/persona.form @@ -1,77 +1,75 @@ - - - persone
- - - - t - t - - - - - - - - - - t - - - - - - - SELECT a.descrizione - FROM titoli AS a - WHERE a.id = ##key0::gint - - - - - - - - - date - %d/%m/%Y - - - - - - - - - - - f - f - - - - - - entry27 - territorio - - SELECT c.nome FROM comuni AS c WHERE c.id = ##label110::gint - - - - - - - - - - - - - - - - - -
+ + + id + integer + + TRUE + label67 + + + nome + string + + entry14 + + + cognome + string + + entry17 + + + + id_titoli + integer + + gtkformdecoder24 + + + data_nascita + datetime + + entry20 + %d/%m/%Y + %d/%m/%Y + + + indirizzo + string + + entry26 + + + citta + string + FALSE + FALSE + entry27 + + + id_citta + integer + + label110 + + + cap + string + + entry29 + + + codice_fiscale + string + + entry28 + + + + descrizione + string + + textview8 + + diff --git a/data/organigramma/gui/organigramma.gui b/data/organigramma/gui/organigramma.gui index 1424c81..aff2306 100644 --- a/data/organigramma/gui/organigramma.gui +++ b/data/organigramma/gui/organigramma.gui @@ -1,5 +1,5 @@ - + @@ -1852,6 +1852,7 @@ True True True + 16 ● False False @@ -1935,7 +1936,7 @@ - + True False diff --git a/src/persona.c b/src/persona.c index 7f8965a..c0da112 100644 --- a/src/persona.c +++ b/src/persona.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2016 Andrea Zagli + * Copyright (C) 2010-2017 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,9 +22,11 @@ #endif #include -#include -#include -#include +#include +#include +#include +#include +#include #include #include @@ -77,6 +79,7 @@ static void organigramma_persona_on_ufficio_recapito_aggiornato (gpointer instan static void organigramma_persona_on_recapito_aggiornato (gpointer instance, gpointer user_data); static void organigramma_persona_on_titolo_selezionato (gpointer instance, guint id, gpointer user_data); +static gchar *organigramma_persona_on_titolo_decode (gpointer instance, gchar *key, gpointer user_data); static void organigramma_persona_on_comune_selezionato (gpointer instance, guint id, gpointer user_data); static gboolean organigramma_persona_on_w_organigramma_persona_delete_event (GtkWidget *widget, @@ -230,7 +233,8 @@ struct _OrganigrammaPersonaPrivate { OrganigrammaCommons *commons; - GtkForm *form; + ZakFormGtkForm *form; + ZakFormGdaexProvider *form_provider; GtkWidget *w; @@ -316,14 +320,15 @@ OrganigrammaPersona return NULL; } - priv->form = gtk_form_new (); - g_object_set (G_OBJECT (priv->form), "gdaex", priv->commons->gdaex, NULL); - gtk_form_add_db_connection_gdaex (priv->form, "territorio", commons->territorio_commons->gdaex); - gtk_form_load_from_file (priv->form, g_build_filename (priv->commons->formdir, "persona.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.form", NULL)); + + priv->form_provider = zak_form_gdaex_provider_new (priv->commons->gdaex, "persone"); priv->w = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_persona")); - priv->objects = gtk_form_get_objects_by_name (priv->form, + priv->objects = zak_form_gtk_form_get_gobjects_by_name (priv->form, "label67", "lstore_persona_incarichi", "lstore_persona_nodi", @@ -348,8 +353,11 @@ OrganigrammaPersona g_signal_connect (priv->sel_uffici, "changed", G_CALLBACK (organigramma_persona_on_uffici_sel_changed), (gpointer)a); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "gtkformdecoder24"), + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder17"), "btn-browse-clicked", G_CALLBACK (organigramma_persona_on_btn_ricerca_titolo_clicked), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder17"), + "decode", G_CALLBACK (organigramma_persona_on_titolo_decode), (gpointer)a); + g_signal_connect (G_OBJECT (gtk_builder_get_object (priv->commons->gtkbuilder, "button89")), "clicked", G_CALLBACK (organigramma_persona_on_btn_ricerca_comune_clicked), (gpointer)a); @@ -414,7 +422,7 @@ OrganigrammaPersona g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button153"), "clicked", G_CALLBACK (organigramma_persona_on_btn_salvaechiudi_clicked), (gpointer)a); - gtk_form_clear (priv->form); + zak_form_form_clear (ZAK_FORM_FORM (priv->form)); priv->id = id; @@ -422,9 +430,9 @@ OrganigrammaPersona { gtk_label_set_text (GTK_LABEL (priv->objects[LBL_ID]), ""); - gtk_form_set_as_origin (priv->form); + zak_form_form_set_as_original (ZAK_FORM_FORM (priv->form)); - gtk_form_set_sensitive_by_name (priv->form, FALSE, "notebook1", NULL); + gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (commons->gtkbuilder, "notebook1")), FALSE); } else { @@ -493,7 +501,7 @@ organigramma_persona_carica (OrganigrammaPersona *persona) { OrganigrammaPersonaPrivate *priv = ORGANIGRAMMA_PERSONA_GET_PRIVATE (persona); - if (gtk_form_fill_from_table (priv->form)) + if (zak_form_form_load (ZAK_FORM_FORM (priv->form), ZAK_FORM_IPROVIDER (priv->form_provider))) { organigramma_persona_carica_incarichi (persona); organigramma_persona_carica_nodi (persona); @@ -507,46 +515,47 @@ organigramma_persona_carica (OrganigrammaPersona *persona) static void organigramma_persona_salva (OrganigrammaPersona *persona, gboolean chiudi) { - gchar *sql; + gboolean success; OrganigrammaPersonaClass *klass = ORGANIGRAMMA_PERSONA_GET_CLASS (persona); OrganigrammaPersonaPrivate *priv = ORGANIGRAMMA_PERSONA_GET_PRIVATE (persona); - if (!gtk_form_check (priv->form, (priv->id != 0), NULL, TRUE, priv->w, TRUE)) + if (!zak_form_gtk_form_is_valid (priv->form, priv->w)) { return; } - if (!solipa_chk_codice_fiscale (gtk_entry_get_text (GTK_ENTRY (gtk_builder_get_object (priv->commons->gtkbuilder, "entry28"))), TRUE)) - { - solipa_message_dialog (priv->w, - GTK_MESSAGE_WARNING, - GTK_BUTTONS_OK, - "Codice fiscale errato."); - gtk_widget_grab_focus (GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "entry28"))); - 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, + "uffici", + "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 (persona, klass->aggiornato_signal_id, 0); - gtk_form_set_as_origin (priv->form); + zak_form_form_set_as_original (ZAK_FORM_FORM (priv->form)); if (priv->id == 0) { priv->id = strtol (gtk_label_get_text (GTK_LABEL (priv->objects[LBL_ID])), NULL, 10); - gtk_form_set_sensitive_by_name (priv->form, TRUE, "notebook1", NULL); + gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "notebook1")), TRUE); } solipa_message_dialog (priv->w, @@ -1125,7 +1134,7 @@ organigramma_persona_conferma_chiusura (OrganigrammaPersona *persona) OrganigrammaPersonaPrivate *priv = ORGANIGRAMMA_PERSONA_GET_PRIVATE (persona); 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, @@ -1140,6 +1149,42 @@ organigramma_persona_conferma_chiusura (OrganigrammaPersona *persona) } /* CALLBACK */ +static void +organigramma_persona_on_titolo_selezionato (gpointer instance, guint id, gpointer user_data) +{ + OrganigrammaPersona *f = (OrganigrammaPersona *)user_data; + OrganigrammaPersonaPrivate *priv = ORGANIGRAMMA_PERSONA_GET_PRIVATE (f); + + zak_gtk_decoder_set_key (ZAK_GTK_DECODER (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder17")), + g_strdup_printf ("%d", id)); +} + +static gchar +*organigramma_persona_on_titolo_decode (gpointer instance, gchar *key, gpointer user_data) +{ + GString *ret; + gchar *sql; + GdaDataModel *dm; + + OrganigrammaPersona *f = (OrganigrammaPersona *)user_data; + OrganigrammaPersonaPrivate *priv = ORGANIGRAMMA_PERSONA_GET_PRIVATE (f); + + ret = g_string_new (""); + + sql = g_strdup_printf ("SELECT descrizione" + " FROM titoli" + " 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_on_incarico_aggiornato (gpointer instance, gpointer user_data) { @@ -1194,17 +1239,6 @@ organigramma_persona_on_recapito_aggiornato (gpointer instance, gpointer user_da organigramma_persona_carica_recapiti (persona); } -static void -organigramma_persona_on_titolo_selezionato (gpointer instance, guint id, gpointer user_data) -{ - OrganigrammaPersona *ia = (OrganigrammaPersona *)user_data; - - OrganigrammaPersonaPrivate *priv = ORGANIGRAMMA_PERSONA_GET_PRIVATE (ia); - - gtk_form_widget_set_value_stringify (gtk_form_get_form_widget_from_name (priv->form, "gtkformdecoder24"), - g_strdup_printf ("%d", id)); -} - static void organigramma_persona_on_comune_selezionato (gpointer instance, guint id, gpointer user_data) {