From ef173161c8742449bed36975e2d6afcc8c384606 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Sun, 13 Nov 2016 10:49:46 +0100 Subject: [PATCH] Tolta la combobox titoli in persana (refs #645 #646). --- configure.ac | 1 + data/organigramma/form/persona.form | 13 +++++---- data/organigramma/gui/organigramma.gui | 27 +++++++---------- src/persona.c | 40 ++++++++++++++++++++++++-- 4 files changed, 57 insertions(+), 24 deletions(-) diff --git a/configure.ac b/configure.ac index 2003879..6300c91 100644 --- a/configure.ac +++ b/configure.ac @@ -47,6 +47,7 @@ PKG_CHECK_MODULES(ORGANIGRAMMA, [gio-2.0 >= 2.36 libzakutils libgdaexgrid libgtkform >= 0.5.0 + libgtkformui >= 0.5.0 libzakconfi >= 0.10.0 libzakauthe >= 0.5.99 libzakautho >= 0.0.5 diff --git a/data/organigramma/form/persona.form b/data/organigramma/form/persona.form index fcb243b..50999e3 100644 --- a/data/organigramma/form/persona.form +++ b/data/organigramma/form/persona.form @@ -20,11 +20,14 @@ - - 0 - - SELECT id, descrizione FROM titoli WHERE status <> 'E' ORDER BY descrizione - + + + + SELECT a.descrizione + FROM titoli AS a + WHERE a.id = ##key0::gint + + diff --git a/data/organigramma/gui/organigramma.gui b/data/organigramma/gui/organigramma.gui index 02dc7ff..42c6a49 100644 --- a/data/organigramma/gui/organigramma.gui +++ b/data/organigramma/gui/organigramma.gui @@ -803,23 +803,6 @@ 2 - - - True - False - True - - - - 1 - - - - - 1 - 3 - - True @@ -1944,6 +1927,16 @@ 0 + + + True + False + + + 1 + 3 + + True diff --git a/src/persona.c b/src/persona.c index a6ad87b..4108536 100644 --- a/src/persona.c +++ b/src/persona.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -35,6 +36,7 @@ #include "personaufficio.h" #include "personaufficiorecapito.h" #include "personarecapito.h" +#include "titoli.h" static void organigramma_persona_class_init (OrganigrammaPersonaClass *klass); static void organigramma_persona_init (OrganigrammaPersona *persona); @@ -74,12 +76,15 @@ static void organigramma_persona_on_ufficio_aggiornato (gpointer instance, gpoin static void organigramma_persona_on_ufficio_recapito_aggiornato (gpointer instance, gpointer user_data); 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 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, GdkEvent *event, gpointer user_data); +static void organigramma_persona_on_btn_ricerca_titolo_clicked (GtkButton *button, + gpointer user_data); static void organigramma_persona_on_btn_ricerca_comune_clicked (GtkButton *button, gpointer user_data); @@ -297,8 +302,7 @@ OrganigrammaPersona error = NULL; gtk_builder_add_objects_from_file (priv->commons->gtkbuilder, priv->commons->guifile, g_strsplit (g_strconcat ( - "lstore_titoli" - "|lstore_persona_incarichi" + "lstore_persona_incarichi" "|lstore_persona_nodi" "|lstore_persona_nodo_recapiti" "|lstore_persona_uffici" @@ -344,6 +348,8 @@ 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"), + "btn-browse-clicked", G_CALLBACK (organigramma_persona_on_btn_ricerca_titolo_clicked), (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); @@ -1188,6 +1194,17 @@ 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) { @@ -1206,6 +1223,25 @@ organigramma_persona_on_w_organigramma_persona_delete_event (GtkWidget *widget, return !organigramma_persona_conferma_chiusura ((OrganigrammaPersona *)user_data); } +static void +organigramma_persona_on_btn_ricerca_titolo_clicked (GtkButton *button, + gpointer user_data) +{ + GtkWidget *w; + + OrganigrammaPersona *ia = (OrganigrammaPersona *)user_data; + OrganigrammaPersonaPrivate *priv = ORGANIGRAMMA_PERSONA_GET_PRIVATE (ia); + + OrganigrammaTitoli *c = organigramma_titoli_new (priv->commons, TRUE); + + g_signal_connect (G_OBJECT (c), "selezionato", + G_CALLBACK (organigramma_persona_on_titolo_selezionato), user_data); + + w = organigramma_titoli_get_widget (c); + gtk_window_set_transient_for (GTK_WINDOW (w), GTK_WINDOW (priv->w)); + gtk_widget_show (w); +} + static void organigramma_persona_on_btn_ricerca_comune_clicked (GtkButton *button, gpointer user_data) -- 2.49.0