From: Andrea Zagli Date: Thu, 23 May 2013 13:05:16 +0000 (+0200) Subject: Trasformata la tabella uffici in albero. X-Git-Tag: 0.0.3~16 X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=6dcc44974d4cc5f99f4ef25a557cb584c8a1dee4;p=solipa%2Forganigramma Trasformata la tabella uffici in albero. --- diff --git a/data/organigramma/form/ufficio.form b/data/organigramma/form/ufficio.form index d2ab817..04e82ea 100644 --- a/data/organigramma/form/ufficio.form +++ b/data/organigramma/form/ufficio.form @@ -10,6 +10,24 @@ + + + f + f + + + + + + entry48 + + SELECT nome FROM uffici WHERE id = ##label169::gint + + + + + + f @@ -25,7 +43,6 @@ - t diff --git a/data/organigramma/gui/organigramma.gui b/data/organigramma/gui/organigramma.gui index ccf416f..7982b82 100644 --- a/data/organigramma/gui/organigramma.gui +++ b/data/organigramma/gui/organigramma.gui @@ -260,14 +260,6 @@ - - - - - - - - @@ -324,6 +316,14 @@ + + + + + + + + False Gestione organigramma @@ -7197,9 +7197,10 @@ True True - lstore_uffici + tstore_uffici False - 0 + True + 1 Nome @@ -7323,7 +7324,7 @@ True False - 8 + 9 2 5 5 @@ -7335,8 +7336,8 @@ Nome - 4 - 5 + 5 + 6 GTK_FILL GTK_FILL @@ -7355,8 +7356,8 @@ 1 2 - 4 - 5 + 5 + 6 GTK_FILL @@ -7369,8 +7370,8 @@ Descrizione - 5 - 6 + 6 + 7 GTK_FILL GTK_FILL @@ -7392,8 +7393,8 @@ 1 2 - 5 - 6 + 6 + 7 @@ -7429,67 +7430,12 @@ Struttura - 2 - 3 + 3 + 4 GTK_FILL GTK_FILL - - - True - False - 5 - - - True - True - False - ● - False - False - True - True - - - True - True - 0 - - - - - ... - True - True - True - - - False - True - 1 - - - - - False - lbl_id_strutture - - - False - True - 2 - - - - - 1 - 2 - 2 - 3 - GTK_FILL - - True @@ -7618,8 +7564,8 @@ 2 - 6 - 7 + 7 + 8 @@ -7873,8 +7819,8 @@ 2 - 7 - 8 + 8 + 9 @@ -8017,9 +7963,136 @@ + 2 + 4 + 5 + + + + + True + False + 5 + + + True + True + False + ● + True + False + False + True + True + + + True + True + 0 + + + + + ... + True + True + True + + + False + True + 1 + + + + + False + lbl_id_strutture + + + False + True + 2 + + + + + 1 2 3 4 + GTK_FILL + + + + + True + False + 5 + + + True + True + False + ● + True + gtk-clear + False + True + True + True + + + True + True + 0 + + + + + ... + True + True + True + + + False + True + 1 + + + + + False + lbl_id_uffici + + + False + True + 2 + + + + + 1 + 2 + 2 + 3 + GTK_FILL + + + + + True + False + 0 + Ufficio + + + 2 + 3 + GTK_FILL + GTK_FILL diff --git a/src/nodi.c b/src/nodi.c index 44936b9..c616d6c 100644 --- a/src/nodi.c +++ b/src/nodi.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2012 Andrea Zagli + * Copyright (C) 2010-2013 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -17,6 +17,10 @@ * */ +#ifdef HAVE_CONFIG_H + #include +#endif + #include #include diff --git a/src/titoli.c b/src/titoli.c index 6d26654..a0a3757 100644 --- a/src/titoli.c +++ b/src/titoli.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2012 Andrea Zagli + * Copyright (C) 2010-2013 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -17,6 +17,10 @@ * */ +#ifdef HAVE_CONFIG_H + #include +#endif + #include #include diff --git a/src/uffici.c b/src/uffici.c index 6581814..24efa31 100644 --- a/src/uffici.c +++ b/src/uffici.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2012 Andrea Zagli + * Copyright (C) 2010-2013 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -17,6 +17,10 @@ * */ +#ifdef HAVE_CONFIG_H + #include +#endif + #include #include @@ -77,7 +81,7 @@ struct _OrganigrammaUfficiPrivate GtkWidget *widget; GtkTreeSelection *selection; - GtkListStore *lstore_uffici; + GtkTreeStore *tstore_uffici; gboolean selezione; GtkWindow *wtransient; @@ -156,7 +160,7 @@ OrganigrammaUffici error = NULL; gtk_builder_add_objects_from_file (priv->commons->gtkbuilder, priv->commons->guifile, - g_strsplit (g_strconcat ("lstore_uffici|", + g_strsplit (g_strconcat ("tstore_uffici|", (selezione ? "w_uffici" : "vbx_uffici"), NULL), "|", -1), @@ -169,7 +173,7 @@ OrganigrammaUffici priv->widget = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, (selezione ? "w_uffici" : "vbx_uffici"))); priv->selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gtk_builder_get_object (priv->commons->gtkbuilder, "treeview4"))); - priv->lstore_uffici = GTK_LIST_STORE (gtk_builder_get_object (priv->commons->gtkbuilder, "lstore_uffici")); + priv->tstore_uffici = GTK_TREE_STORE (gtk_builder_get_object (priv->commons->gtkbuilder, "tstore_uffici")); if (priv->selezione) { @@ -233,7 +237,7 @@ GtkWidget /* PRIVATE */ static void -organigramma_uffici_carica (OrganigrammaUffici *uffici) +organigramma_uffici_carica_figli (OrganigrammaUffici *uffici, GtkTreeIter *iter_parent, guint id_uffici) { GtkTreeIter iter; @@ -249,12 +253,12 @@ organigramma_uffici_carica (OrganigrammaUffici *uffici) OrganigrammaUfficiClass *klass = ORGANIGRAMMA_UFFICI_GET_CLASS (uffici); OrganigrammaUfficiPrivate *priv = ORGANIGRAMMA_UFFICI_GET_PRIVATE (uffici); - gtk_list_store_clear (priv->lstore_uffici); - sql = g_strdup_printf ("SELECT c.id, c.nome" " FROM uffici AS c" " WHERE c.status <> 'E'" - " ORDER BY c.nome"); + " AND id_uffici = %d" + " ORDER BY c.nome", + id_uffici); dm = gdaex_query (priv->commons->gdaex, sql); g_free (sql); if (dm != NULL) @@ -274,11 +278,13 @@ organigramma_uffici_carica (OrganigrammaUffici *uffici) if (toshow) { - gtk_list_store_append (priv->lstore_uffici, &iter); - gtk_list_store_set (priv->lstore_uffici, &iter, + gtk_tree_store_append (priv->tstore_uffici, &iter, iter_parent); + gtk_tree_store_set (priv->tstore_uffici, &iter, COL_ID, id, COL_NOME, gdaex_data_model_get_field_value_stringify_at (dm, row, "nome"), -1); + + organigramma_uffici_carica_figli (uffici, &iter, id); } } @@ -286,6 +292,17 @@ organigramma_uffici_carica (OrganigrammaUffici *uffici) } } +static void +organigramma_uffici_carica (OrganigrammaUffici *uffici) +{ + OrganigrammaUfficiClass *klass = ORGANIGRAMMA_UFFICI_GET_CLASS (uffici); + OrganigrammaUfficiPrivate *priv = ORGANIGRAMMA_UFFICI_GET_PRIVATE (uffici); + + gtk_tree_store_clear (priv->tstore_uffici); + + organigramma_uffici_carica_figli (uffici, NULL, 0); +} + static void organigramma_uffici_modifica (OrganigrammaUffici *uffici) { @@ -298,7 +315,7 @@ organigramma_uffici_modifica (OrganigrammaUffici *uffici) { GtkWidget *w; - gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_uffici), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->tstore_uffici), &iter, COL_ID, &id, -1); @@ -331,7 +348,7 @@ organigramma_uffici_selezionato (OrganigrammaUffici *uffici) if (gtk_tree_selection_get_selected (priv->selection, NULL, &iter)) { - gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_uffici), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->tstore_uffici), &iter, COL_ID, &id, -1); @@ -435,7 +452,7 @@ organigramma_uffici_on_btn_elimina_clicked (GtkButton *button, GTK_BUTTONS_YES_NO, "Sicuro di voler eliminare l'ufficio selezionato?") == GTK_RESPONSE_YES) { - gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_uffici), &iter, + gtk_tree_model_get (GTK_TREE_MODEL (priv->tstore_uffici), &iter, COL_ID, &id, -1); diff --git a/src/ufficio.c b/src/ufficio.c index d6cdf42..c297a62 100644 --- a/src/ufficio.c +++ b/src/ufficio.c @@ -26,6 +26,7 @@ #include #include "ufficio.h" +#include "uffici.h" #include "strutture.h" #include "ufficionodo.h" #include "ufficioorario.h" @@ -64,13 +65,22 @@ static void organigramma_ufficio_on_stanza_aggiornato (gpointer instance, gpoint static void organigramma_ufficio_on_recapito_aggiornato (gpointer instance, gpointer user_data); static void organigramma_ufficio_on_orario_aggiornato (gpointer instance, gpointer user_data); +static void organigramma_ufficio_on_organigramma_ufficio_selezionato (gpointer instance, guint id, gpointer user_data); + +static void organigramma_ufficio_on_organigramma_ufficio_pulisci (GtkEntry *entry, + GtkEntryIconPosition icon_pos, + GdkEvent *event, + gpointer user_data); +static void organigramma_ufficio_on_btn_organigramma_ufficio_clicked (GtkButton *button, + gpointer user_data); + static void organigramma_ufficio_on_struttura_selezionato (gpointer instance, guint id, gpointer user_data); static gboolean organigramma_ufficio_on_w_organigramma_ufficio_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data); -static void organigramma_ufficio_on_btn_organigramma_ufficio_clicked (GtkButton *button, +static void organigramma_ufficio_on_btn_organigramma_struttura_clicked (GtkButton *button, gpointer user_data); static void organigramma_ufficio_on_btn_nodo_nuovo_clicked (GtkButton *button, @@ -272,9 +282,14 @@ OrganigrammaUfficio g_signal_connect (priv->w, "delete-event", G_CALLBACK (organigramma_ufficio_on_w_organigramma_ufficio_delete_event), (gpointer)a); - g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button31"), + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "entry48"), + "icon-press", G_CALLBACK (organigramma_ufficio_on_organigramma_ufficio_pulisci), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button164"), "clicked", G_CALLBACK (organigramma_ufficio_on_btn_organigramma_ufficio_clicked), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button31"), + "clicked", G_CALLBACK (organigramma_ufficio_on_btn_organigramma_struttura_clicked), (gpointer)a); + g_signal_connect (G_OBJECT (gtk_builder_get_object (priv->commons->gtkbuilder, "button28")), "clicked", G_CALLBACK (organigramma_ufficio_on_btn_nodo_nuovo_clicked), (gpointer)a); g_signal_connect (G_OBJECT (gtk_builder_get_object (priv->commons->gtkbuilder, "button42")), @@ -805,6 +820,28 @@ organigramma_ufficio_conferma_chiusura (OrganigrammaUfficio *ufficio) } /* CALLBACK */ +static void +organigramma_ufficio_on_organigramma_ufficio_selezionato (gpointer instance, guint id, gpointer user_data) +{ + OrganigrammaUfficio *f = (OrganigrammaUfficio *)user_data; + OrganigrammaUfficioPrivate *priv = ORGANIGRAMMA_UFFICIO_GET_PRIVATE (f); + + gtk_form_widget_set_value_stringify (gtk_form_get_form_widget_from_name (priv->form, "label169"), g_strdup_printf ("%d", id)); +} + +static void +organigramma_ufficio_on_organigramma_ufficio_pulisci (GtkEntry *entry, + GtkEntryIconPosition icon_pos, + GdkEvent *event, + gpointer user_data) +{ + OrganigrammaUfficio *f = (OrganigrammaUfficio *)user_data; + OrganigrammaUfficioPrivate *priv = ORGANIGRAMMA_UFFICIO_GET_PRIVATE (f); + + gtk_label_set_text (GTK_LABEL (gtk_builder_get_object (priv->commons->gtkbuilder, "label169")), ""); + gtk_entry_set_text (GTK_ENTRY (gtk_builder_get_object (priv->commons->gtkbuilder, "entry48")), ""); +} + static void organigramma_ufficio_on_struttura_selezionato (gpointer instance, guint id, gpointer user_data) { @@ -868,6 +905,26 @@ organigramma_ufficio_on_btn_organigramma_ufficio_clicked (GtkButton *button, OrganigrammaUfficioPrivate *priv = ORGANIGRAMMA_UFFICIO_GET_PRIVATE (rf); + OrganigrammaUffici *c = organigramma_uffici_new (priv->commons, TRUE); + + g_signal_connect (G_OBJECT (c), "selezionato", + G_CALLBACK (organigramma_ufficio_on_organigramma_ufficio_selezionato), user_data); + + w = organigramma_uffici_get_widget (c); + gtk_window_set_transient_for (GTK_WINDOW (w), GTK_WINDOW (priv->w)); + gtk_widget_show (w); +} + +static void +organigramma_ufficio_on_btn_organigramma_struttura_clicked (GtkButton *button, + gpointer user_data) +{ + GtkWidget *w; + + OrganigrammaUfficio *rf = (OrganigrammaUfficio *)user_data; + + OrganigrammaUfficioPrivate *priv = ORGANIGRAMMA_UFFICIO_GET_PRIVATE (rf); + OrganigrammaStrutture *c = organigramma_strutture_new (priv->commons, TRUE); g_signal_connect (G_OBJECT (c), "selezionato",