From: Andrea Zagli <azagli@libero.it> Date: Tue, 13 Dec 2016 09:05:14 +0000 (+0100) Subject: Migrazione a libzakform di persona recapito. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=82beb04bb8f9f450683fa71f67319ae116df668e;p=solipa%2Forganigramma Migrazione a libzakform di persona recapito. --- diff --git a/configure.ac b/configure.ac index 2176fc0..0f1fb0f 100644 --- a/configure.ac +++ b/configure.ac @@ -51,6 +51,7 @@ PKG_CHECK_MODULES(ORGANIGRAMMA, [gio-2.0 >= 2.36 libzakform libzakformgtk libzakformgdaex + libzakformgtkdecoder libzakconfi >= 0.10.0 libzakauthe >= 0.5.99 libzakautho >= 0.0.5 diff --git a/data/organigramma/form/persona_recapito.form b/data/organigramma/form/persona_recapito.form index 993b2fe..a78fee2 100644 --- a/data/organigramma/form/persona_recapito.form +++ b/data/organigramma/form/persona_recapito.form @@ -1,46 +1,40 @@ <?xml version="1.0"?> -<gtkform> - - <table>persona_recapiti</table> - - <widget type="label" name="label103"> - <field type="integer" name="id"> - <is-key>t</is-key> - <auto-increment>t</auto-increment> - </field> - </widget> - - <widget type="label" name="label107"> - <field type="integer" name="id_persone"> - </field> - </widget> - - <widget type="decoder" name="gtkformdecoder10" label="label102"> - <decoder> - <sql> - SELECT a.nome - FROM tipi_recapito AS a - WHERE a.id = ##key0::gint - </sql> - </decoder> - <field type="integer" name="id_tipi_recapito"> - <obligatory>t</obligatory> - </field> - </widget> - - <widget type="entry" name="entry25" label="label105"> - <field type="text" name="recapito"> - <obligatory>t</obligatory> - </field> - </widget> - - <widget type="textview" name="textview11" label="label101"> - <field type="text" name="note" /> - </widget> - - <widget type="checkbox" name="checkbutton10" label="label106"> - <field type="boolean" name="privato"> - </field> - </widget> - -</gtkform> +<zakform> + <element type="zak_form_gtk_form_element_label"> + <name>id</name> + <type>integer</type> + <is-key>TRUE</is-key> + <widget>label103</widget> + </element> + <element type="zak_form_gtk_form_element_label"> + <name>id_persone</name> + <type>integer</type> + <widget>label107</widget> + </element> + <element type="zak_form_gtk_form_element_decoder"> + <name>id_tipi_recapito</name> + <type>integer</type> + <label>label102</label> + <widget>zakgtkdecoder1</widget> + <validator type="zak_form_element_validator_notempty">0</validator> + </element> + <element type="zak_form_gtk_form_element_entry"> + <name>recapito</name> + <type>string</type> + <label>label105</label> + <widget>entry25</widget> + <validator type="zak_form_element_validator_notempty"/> + </element> + <element type="zak_form_gtk_form_element_textview"> + <name>note</name> + <type>string</type> + <label>label101</label> + <widget>textview11</widget> + </element> + <element type="zak_form_gtk_form_element_check"> + <name>privato</name> + <type>boolean</type> + <label>label106</label> + <widget>checkbutton10</widget> + </element> +</zakform> diff --git a/data/organigramma/gui/organigramma.gui b/data/organigramma/gui/organigramma.gui index 8b60a18..165cc60 100644 --- a/data/organigramma/gui/organigramma.gui +++ b/data/organigramma/gui/organigramma.gui @@ -3,6 +3,7 @@ <interface> <requires lib="gtk+" version="3.20"/> <requires lib="gtkformui" version="0.0"/> + <requires lib="zakgtkdecoder" version="0.0"/> <object class="GtkAdjustment" id="adj_dmon"> <property name="upper">31</property> <property name="step_increment">1</property> @@ -641,7 +642,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -2007,7 +2008,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -2676,7 +2677,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -3923,7 +3924,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -4090,7 +4091,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -4251,7 +4252,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -4490,7 +4491,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -4706,7 +4707,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -5046,7 +5047,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -5261,7 +5262,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -5487,7 +5488,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -5627,7 +5628,7 @@ </packing> </child> <child> - <object class="GtkFormDecoder" id="gtkformdecoder10"> + <object class="ZakGtkDecoder" id="zakgtkdecoder1"> <property name="visible">True</property> <property name="can_focus">False</property> </object> @@ -5700,7 +5701,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -5993,7 +5994,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -6219,7 +6220,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -6351,7 +6352,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -6490,7 +6491,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -6622,7 +6623,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -6754,7 +6755,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -6893,7 +6894,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -7025,7 +7026,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -7164,7 +7165,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -7440,7 +7441,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -7634,7 +7635,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -7864,7 +7865,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -7996,7 +7997,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -8128,7 +8129,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -8260,7 +8261,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -8392,7 +8393,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -8524,7 +8525,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -8759,7 +8760,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -8898,7 +8899,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -9037,7 +9038,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -9209,7 +9210,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -9341,7 +9342,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -9507,7 +9508,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -9783,7 +9784,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -9977,7 +9978,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -10138,7 +10139,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -10351,7 +10352,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> @@ -10571,7 +10572,7 @@ </child> </object> </child> - <child> + <child type="titlebar"> <placeholder/> </child> </object> diff --git a/src/personarecapito.c b/src/personarecapito.c index 5ecb8be..b6f37c2 100644 --- a/src/personarecapito.c +++ b/src/personarecapito.c @@ -24,8 +24,11 @@ #include <glib/gprintf.h> #include <libzakautho/autoz.h> -#include <libgtkform/form.h> -#include <libgtkformui/gtkformdecoder.h> +#include <libzakgtkdecoder/libzakgtkdecoder.h> +#include <libzakform/libzakform.h> +#include <libzakformgtk/libzakformgtk.h> +#include <libzakformgdaex/libzakformgdaex.h> +#include <libzakformgtkdecoder/libzakformgtkdecoder.h> #include <libsolipa/utils.h> #include "personarecapito.h" @@ -38,6 +41,7 @@ static void organigramma_persona_recapito_carica (OrganigrammaPersonaRecapito *o static void organigramma_persona_recapito_salva (OrganigrammaPersonaRecapito *organigramma_persona_recapito, gboolean chiudi); static void organigramma_persona_recapito_on_tipo_recapito_selezionato (gpointer instance, guint id, gpointer user_data); +static gchar *organigramma_persona_recapito_on_tipo_recapito_decode (gpointer instance, gchar *key, gpointer user_data); static gboolean organigramma_persona_recapito_conferma_chiusura (OrganigrammaPersonaRecapito *organigramma_persona_recapito); @@ -78,7 +82,8 @@ struct _OrganigrammaPersonaRecapitoPrivate { OrganigrammaCommons *commons; - GtkForm *form; + ZakFormGtkForm *form; + ZakFormGdaexProvider *form_provider; GtkWidget *w; @@ -152,13 +157,15 @@ OrganigrammaPersonaRecapito 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_recapito.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_recapito.form", NULL)); + + priv->form_provider = zak_form_gdaex_provider_new (priv->commons->gdaex, "persona_recapiti"); priv->w = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_persona_recapito")); - priv->objects = gtk_form_get_objects_by_name (priv->form, + priv->objects = zak_form_gtk_form_get_gobjects_by_name (priv->form, "label103", "label107", NULL); @@ -166,8 +173,10 @@ OrganigrammaPersonaRecapito g_signal_connect (priv->w, "delete-event", G_CALLBACK (organigramma_persona_recapito_on_w_organigramma_persona_recapito_delete_event), (gpointer)a); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "gtkformdecoder10"), + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder1"), "btn-browse-clicked", G_CALLBACK (organigramma_persona_recapito_on_btn_tipo_recapito_clicked), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder1"), + "decode", G_CALLBACK (organigramma_persona_recapito_on_tipo_recapito_decode), (gpointer)a); g_signal_connect (G_OBJECT (gtk_builder_get_object (priv->commons->gtkbuilder, "button87")), "clicked", G_CALLBACK (organigramma_persona_recapito_on_btn_annulla_clicked), (gpointer)a); @@ -176,7 +185,7 @@ OrganigrammaPersonaRecapito g_signal_connect (G_OBJECT (gtk_builder_get_object (priv->commons->gtkbuilder, "button163")), "clicked", G_CALLBACK (organigramma_persona_recapito_on_btn_salvaechiudi_clicked), (gpointer)a); - gtk_form_clear (priv->form); + zak_form_form_clear (ZAK_FORM_FORM (priv->form)); priv->id = id; if (priv->id == 0) @@ -184,7 +193,7 @@ OrganigrammaPersonaRecapito 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 { @@ -220,12 +229,9 @@ GtkWidget static void organigramma_persona_recapito_carica (OrganigrammaPersonaRecapito *organigramma_persona_recapito) { - gchar *sql; - GdaDataModel *dm; - OrganigrammaPersonaRecapitoPrivate *priv = ORGANIGRAMMA_PERSONA_RECAPITO_GET_PRIVATE (organigramma_persona_recapito); - if (gtk_form_fill_from_table (priv->form)) + if (zak_form_form_load (ZAK_FORM_FORM (priv->form), ZAK_FORM_IPROVIDER (priv->form_provider))) { } } @@ -233,27 +239,38 @@ organigramma_persona_recapito_carica (OrganigrammaPersonaRecapito *organigramma_ static void organigramma_persona_recapito_salva (OrganigrammaPersonaRecapito *organigramma_persona_recapito, gboolean chiudi) { - gchar *sql; + gboolean success; OrganigrammaPersonaRecapitoClass *klass = ORGANIGRAMMA_PERSONA_RECAPITO_GET_CLASS (organigramma_persona_recapito); OrganigrammaPersonaRecapitoPrivate *priv = ORGANIGRAMMA_PERSONA_RECAPITO_GET_PRIVATE (organigramma_persona_recapito); - 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_recapiti", + "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_recapito, klass->aggiornato_signal_id, 0); @@ -262,7 +279,7 @@ organigramma_persona_recapito_salva (OrganigrammaPersonaRecapito *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, @@ -321,7 +338,7 @@ organigramma_persona_recapito_conferma_chiusura (OrganigrammaPersonaRecapito *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, @@ -342,10 +359,36 @@ organigramma_persona_recapito_on_tipo_recapito_selezionato (gpointer instance, g OrganigrammaPersonaRecapito *f = (OrganigrammaPersonaRecapito *)user_data; OrganigrammaPersonaRecapitoPrivate *priv = ORGANIGRAMMA_PERSONA_RECAPITO_GET_PRIVATE (f); - gtk_form_widget_set_value_stringify (gtk_form_get_form_widget_from_name (priv->form, "gtkformdecoder10"), + zak_gtk_decoder_set_key (ZAK_GTK_DECODER (gtk_builder_get_object (priv->commons->gtkbuilder, "zakgtkdecoder1")), g_strdup_printf ("%d", id)); } +static gchar +*organigramma_persona_recapito_on_tipo_recapito_decode (gpointer instance, gchar *key, gpointer user_data) +{ + GString *ret; + gchar *sql; + GdaDataModel *dm; + + OrganigrammaPersonaRecapito *f = (OrganigrammaPersonaRecapito *)user_data; + OrganigrammaPersonaRecapitoPrivate *priv = ORGANIGRAMMA_PERSONA_RECAPITO_GET_PRIVATE (f); + + ret = g_string_new (""); + + sql = g_strdup_printf ("SELECT nome" + " FROM tipi_recapito" + " 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 gboolean organigramma_persona_recapito_on_w_organigramma_persona_recapito_delete_event (GtkWidget *widget, GdkEvent *event,