From: Andrea Zagli Date: Thu, 14 Oct 2010 13:49:11 +0000 (+0200) Subject: Gestione tabella posizioni economiche. X-Git-Tag: 0.0.3~41 X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=e2b794679a1704eb2d6b603d1e7f0c0718d8b9f3;p=solipa%2Forganigramma Gestione tabella posizioni economiche. --- diff --git a/data/organigramma/form/Makefile.am b/data/organigramma/form/Makefile.am index d44d0cc..52a67f2 100644 --- a/data/organigramma/form/Makefile.am +++ b/data/organigramma/form/Makefile.am @@ -8,6 +8,7 @@ form_DATA = \ persona_recapito.form \ persona_ufficio.form \ persona_ufficio_recapito.form \ + posizione_economica.form \ struttura.form \ struttura_indirizzo.form \ tipo_nodo.form \ diff --git a/data/organigramma/form/posizione_economica.form b/data/organigramma/form/posizione_economica.form new file mode 100644 index 0000000..879c63f --- /dev/null +++ b/data/organigramma/form/posizione_economica.form @@ -0,0 +1,17 @@ + + + + posizioni_economiche
+ + + + t + t + + + + + + + +
diff --git a/data/organigramma/gui/organigramma.gui b/data/organigramma/gui/organigramma.gui index aab80aa..6265756 100644 --- a/data/organigramma/gui/organigramma.gui +++ b/data/organigramma/gui/organigramma.gui @@ -115,11 +115,19 @@ True - Tipi _rapporto di lavoro + Tipi rapporto di _lavoro True + + + True + _Posizioni economiche + True + + + @@ -6270,7 +6278,7 @@ - lbl_id_persona + lbl_id_persone 1 @@ -7182,4 +7190,260 @@ + + Posizioni economiche - Gestione organigramma + True + center-on-parent + 500 + 400 + True + + + True + 5 + vertical + 5 + + + True + <b>Posizioni economiche</b> + True + + + False + 0 + + + + + True + True + automatic + automatic + etched-in + + + True + True + lstore_posizioni_economiche + False + 0 + + + Nome + + + + 1 + + + + + + + + + 1 + + + + + True + 5 + end + + + gtk-new + True + True + True + True + + + False + False + 0 + + + + + gtk-edit + True + True + True + True + + + False + False + 1 + + + + + gtk-delete + True + True + True + True + + + False + False + 2 + + + + + gtk-cancel + True + True + True + True + + + False + False + 3 + + + + + gtk-ok + True + True + True + True + + + False + False + 4 + + + + + False + 2 + + + + + + + Posizione economica - Gestione organigramma + True + center-on-parent + True + + + True + 5 + vertical + 5 + + + True + 2 + 2 + 5 + 5 + + + True + 0 + lbl_id + + + 1 + 2 + GTK_FILL + + + + + True + 0 + ID + + + GTK_FILL + GTK_FILL + + + + + True + 0 + Nome + + + 1 + 2 + GTK_FILL + GTK_FILL + + + + + True + True + 50 + + + + 1 + 2 + 1 + 2 + GTK_FILL + + + + + 0 + + + + + True + 5 + end + + + gtk-cancel + True + True + True + True + + + False + False + 0 + + + + + gtk-save + True + True + True + True + + + False + False + 1 + + + + + False + 1 + + + + + diff --git a/docs/organigramma.sql b/docs/organigramma.sql index 258cf2d..a7bad30 100644 --- a/docs/organigramma.sql +++ b/docs/organigramma.sql @@ -4,7 +4,7 @@ -- Dumped from database version 8.4.4 -- Dumped by pg_dump version 9.0.0 --- Started on 2010-10-14 12:00:45 +-- Started on 2010-10-14 13:22:59 SET statement_timeout = 0; SET client_encoding = 'UTF8'; @@ -14,7 +14,7 @@ SET client_min_messages = warning; SET escape_string_warning = off; -- --- TOC entry 350 (class 2612 OID 16386) +-- TOC entry 352 (class 2612 OID 16386) -- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: - -- @@ -26,8 +26,8 @@ SET search_path = public, pg_catalog; SET default_with_oids = false; -- --- TOC entry 1537 (class 1259 OID 59279) --- Dependencies: 1832 1833 1834 3 +-- TOC entry 1539 (class 1259 OID 59279) +-- Dependencies: 1835 1836 1837 3 -- Name: nodi; Type: TABLE; Schema: public; Owner: - -- @@ -42,8 +42,8 @@ CREATE TABLE nodi ( -- --- TOC entry 1553 (class 1259 OID 61295) --- Dependencies: 1882 1883 1884 1885 3 +-- TOC entry 1555 (class 1259 OID 61295) +-- Dependencies: 1885 1886 1887 1888 3 -- Name: persona_nodi; Type: TABLE; Schema: public; Owner: - -- @@ -59,8 +59,8 @@ CREATE TABLE persona_nodi ( -- --- TOC entry 1554 (class 1259 OID 61307) --- Dependencies: 1886 1887 1888 1889 1890 1891 1892 3 +-- TOC entry 1556 (class 1259 OID 61307) +-- Dependencies: 1889 1890 1891 1892 1893 1894 1895 3 -- Name: persona_nodo_recapiti; Type: TABLE; Schema: public; Owner: - -- @@ -77,8 +77,8 @@ CREATE TABLE persona_nodo_recapiti ( -- --- TOC entry 1551 (class 1259 OID 61266) --- Dependencies: 1869 1870 1871 1872 1873 1874 3 +-- TOC entry 1553 (class 1259 OID 61266) +-- Dependencies: 1872 1873 1874 1875 1876 1877 3 -- Name: persona_recapiti; Type: TABLE; Schema: public; Owner: - -- @@ -94,8 +94,8 @@ CREATE TABLE persona_recapiti ( -- --- TOC entry 1550 (class 1259 OID 61243) --- Dependencies: 1867 1868 3 +-- TOC entry 1552 (class 1259 OID 61243) +-- Dependencies: 1870 1871 3 -- Name: persona_uffici; Type: TABLE; Schema: public; Owner: - -- @@ -111,8 +111,8 @@ CREATE TABLE persona_uffici ( -- --- TOC entry 1552 (class 1259 OID 61280) --- Dependencies: 1875 1876 1877 1878 1879 1880 1881 3 +-- TOC entry 1554 (class 1259 OID 61280) +-- Dependencies: 1878 1879 1880 1881 1882 1883 1884 3 -- Name: persona_ufficio_recapiti; Type: TABLE; Schema: public; Owner: - -- @@ -129,8 +129,8 @@ CREATE TABLE persona_ufficio_recapiti ( -- --- TOC entry 1548 (class 1259 OID 61227) --- Dependencies: 1861 1862 1863 1864 3 +-- TOC entry 1550 (class 1259 OID 61227) +-- Dependencies: 1864 1865 1866 1867 3 -- Name: persone; Type: TABLE; Schema: public; Owner: - -- @@ -145,8 +145,21 @@ CREATE TABLE persone ( -- --- TOC entry 1543 (class 1259 OID 59346) --- Dependencies: 1848 1849 1850 3 +-- TOC entry 1557 (class 1259 OID 61322) +-- Dependencies: 1896 1897 3 +-- Name: posizioni_economiche; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE posizioni_economiche ( + id integer NOT NULL, + nome character varying(255) DEFAULT ''::character varying, + status character varying(1) DEFAULT ''::character varying +); + + +-- +-- TOC entry 1545 (class 1259 OID 59346) +-- Dependencies: 1851 1852 1853 3 -- Name: struttura_indirizzi; Type: TABLE; Schema: public; Owner: - -- @@ -161,8 +174,8 @@ CREATE TABLE struttura_indirizzi ( -- --- TOC entry 1541 (class 1259 OID 59327) --- Dependencies: 1842 1843 1844 1845 1846 3 +-- TOC entry 1543 (class 1259 OID 59327) +-- Dependencies: 1845 1846 1847 1848 1849 3 -- Name: strutture; Type: TABLE; Schema: public; Owner: - -- @@ -177,8 +190,8 @@ CREATE TABLE strutture ( -- --- TOC entry 1538 (class 1259 OID 59290) --- Dependencies: 1835 1836 3 +-- TOC entry 1540 (class 1259 OID 59290) +-- Dependencies: 1838 1839 3 -- Name: tipi_nodo; Type: TABLE; Schema: public; Owner: - -- @@ -190,8 +203,8 @@ CREATE TABLE tipi_nodo ( -- --- TOC entry 1549 (class 1259 OID 61236) --- Dependencies: 1865 1866 3 +-- TOC entry 1551 (class 1259 OID 61236) +-- Dependencies: 1868 1869 3 -- Name: tipi_rapporto_lavoro; Type: TABLE; Schema: public; Owner: - -- @@ -203,8 +216,8 @@ CREATE TABLE tipi_rapporto_lavoro ( -- --- TOC entry 1539 (class 1259 OID 59297) --- Dependencies: 1837 1838 3 +-- TOC entry 1541 (class 1259 OID 59297) +-- Dependencies: 1840 1841 3 -- Name: tipi_recapito; Type: TABLE; Schema: public; Owner: - -- @@ -216,8 +229,8 @@ CREATE TABLE tipi_recapito ( -- --- TOC entry 1547 (class 1259 OID 61219) --- Dependencies: 1858 1859 1860 3 +-- TOC entry 1549 (class 1259 OID 61219) +-- Dependencies: 1861 1862 1863 3 -- Name: titoli; Type: TABLE; Schema: public; Owner: - -- @@ -230,8 +243,8 @@ CREATE TABLE titoli ( -- --- TOC entry 1540 (class 1259 OID 59311) --- Dependencies: 1839 1840 1841 3 +-- TOC entry 1542 (class 1259 OID 59311) +-- Dependencies: 1842 1843 1844 3 -- Name: uffici; Type: TABLE; Schema: public; Owner: - -- @@ -245,8 +258,8 @@ CREATE TABLE uffici ( -- --- TOC entry 1544 (class 1259 OID 59357) --- Dependencies: 1851 1852 3 +-- TOC entry 1546 (class 1259 OID 59357) +-- Dependencies: 1854 1855 3 -- Name: ufficio_nodi; Type: TABLE; Schema: public; Owner: - -- @@ -260,8 +273,8 @@ CREATE TABLE ufficio_nodi ( -- --- TOC entry 1545 (class 1259 OID 59399) --- Dependencies: 1853 1854 3 +-- TOC entry 1547 (class 1259 OID 59399) +-- Dependencies: 1856 1857 3 -- Name: ufficio_orari; Type: TABLE; Schema: public; Owner: - -- @@ -288,8 +301,8 @@ CREATE TABLE ufficio_orari ( -- --- TOC entry 1546 (class 1259 OID 59409) --- Dependencies: 1855 1856 1857 3 +-- TOC entry 1548 (class 1259 OID 59409) +-- Dependencies: 1858 1859 1860 3 -- Name: ufficio_recapiti; Type: TABLE; Schema: public; Owner: - -- @@ -305,8 +318,8 @@ CREATE TABLE ufficio_recapiti ( -- --- TOC entry 1542 (class 1259 OID 59340) --- Dependencies: 1847 3 +-- TOC entry 1544 (class 1259 OID 59340) +-- Dependencies: 1850 3 -- Name: vie; Type: TABLE; Schema: public; Owner: - -- @@ -317,8 +330,8 @@ CREATE TABLE vie ( -- --- TOC entry 1894 (class 2606 OID 59289) --- Dependencies: 1537 1537 +-- TOC entry 1899 (class 2606 OID 59289) +-- Dependencies: 1539 1539 -- Name: nodi_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -327,8 +340,8 @@ ALTER TABLE ONLY nodi -- --- TOC entry 1926 (class 2606 OID 61305) --- Dependencies: 1553 1553 +-- TOC entry 1931 (class 2606 OID 61305) +-- Dependencies: 1555 1555 -- Name: persona_nodi_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -337,8 +350,8 @@ ALTER TABLE ONLY persona_nodi -- --- TOC entry 1928 (class 2606 OID 61321) --- Dependencies: 1554 1554 +-- TOC entry 1933 (class 2606 OID 61321) +-- Dependencies: 1556 1556 -- Name: persona_nodo_recapiti_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -347,8 +360,8 @@ ALTER TABLE ONLY persona_nodo_recapiti -- --- TOC entry 1922 (class 2606 OID 61279) --- Dependencies: 1551 1551 +-- TOC entry 1927 (class 2606 OID 61279) +-- Dependencies: 1553 1553 -- Name: persona_recapiti_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -357,8 +370,8 @@ ALTER TABLE ONLY persona_recapiti -- --- TOC entry 1920 (class 2606 OID 61252) --- Dependencies: 1550 1550 +-- TOC entry 1925 (class 2606 OID 61252) +-- Dependencies: 1552 1552 -- Name: persona_uffici_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -367,8 +380,8 @@ ALTER TABLE ONLY persona_uffici -- --- TOC entry 1924 (class 2606 OID 61294) --- Dependencies: 1552 1552 +-- TOC entry 1929 (class 2606 OID 61294) +-- Dependencies: 1554 1554 -- Name: persona_ufficio_recapiti_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -377,8 +390,8 @@ ALTER TABLE ONLY persona_ufficio_recapiti -- --- TOC entry 1916 (class 2606 OID 61235) --- Dependencies: 1548 1548 +-- TOC entry 1921 (class 2606 OID 61235) +-- Dependencies: 1550 1550 -- Name: persone_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -387,8 +400,18 @@ ALTER TABLE ONLY persone -- --- TOC entry 1906 (class 2606 OID 59356) --- Dependencies: 1543 1543 +-- TOC entry 1935 (class 2606 OID 61328) +-- Dependencies: 1557 1557 +-- Name: posizioni_economiche_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY posizioni_economiche + ADD CONSTRAINT posizioni_economiche_pkey PRIMARY KEY (id); + + +-- +-- TOC entry 1911 (class 2606 OID 59356) +-- Dependencies: 1545 1545 -- Name: struttura_indirizzi_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -397,8 +420,8 @@ ALTER TABLE ONLY struttura_indirizzi -- --- TOC entry 1902 (class 2606 OID 59339) --- Dependencies: 1541 1541 +-- TOC entry 1907 (class 2606 OID 59339) +-- Dependencies: 1543 1543 -- Name: strutture_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -407,8 +430,8 @@ ALTER TABLE ONLY strutture -- --- TOC entry 1896 (class 2606 OID 59296) --- Dependencies: 1538 1538 +-- TOC entry 1901 (class 2606 OID 59296) +-- Dependencies: 1540 1540 -- Name: tipi_nodo_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -417,8 +440,8 @@ ALTER TABLE ONLY tipi_nodo -- --- TOC entry 1918 (class 2606 OID 61242) --- Dependencies: 1549 1549 +-- TOC entry 1923 (class 2606 OID 61242) +-- Dependencies: 1551 1551 -- Name: tipi_rapporto_lavoro_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -427,8 +450,8 @@ ALTER TABLE ONLY tipi_rapporto_lavoro -- --- TOC entry 1898 (class 2606 OID 59303) --- Dependencies: 1539 1539 +-- TOC entry 1903 (class 2606 OID 59303) +-- Dependencies: 1541 1541 -- Name: tipi_recapito_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -437,8 +460,8 @@ ALTER TABLE ONLY tipi_recapito -- --- TOC entry 1914 (class 2606 OID 61226) --- Dependencies: 1547 1547 +-- TOC entry 1919 (class 2606 OID 61226) +-- Dependencies: 1549 1549 -- Name: titoli_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -447,8 +470,8 @@ ALTER TABLE ONLY titoli -- --- TOC entry 1900 (class 2606 OID 59321) --- Dependencies: 1540 1540 +-- TOC entry 1905 (class 2606 OID 59321) +-- Dependencies: 1542 1542 -- Name: uffici_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -457,8 +480,8 @@ ALTER TABLE ONLY uffici -- --- TOC entry 1908 (class 2606 OID 59366) --- Dependencies: 1544 1544 +-- TOC entry 1913 (class 2606 OID 59366) +-- Dependencies: 1546 1546 -- Name: ufficio_nodi_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -467,8 +490,8 @@ ALTER TABLE ONLY ufficio_nodi -- --- TOC entry 1910 (class 2606 OID 59408) --- Dependencies: 1545 1545 +-- TOC entry 1915 (class 2606 OID 59408) +-- Dependencies: 1547 1547 -- Name: ufficio_orari_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -477,8 +500,8 @@ ALTER TABLE ONLY ufficio_orari -- --- TOC entry 1912 (class 2606 OID 59419) --- Dependencies: 1546 1546 +-- TOC entry 1917 (class 2606 OID 59419) +-- Dependencies: 1548 1548 -- Name: ufficio_recapiti_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -487,8 +510,8 @@ ALTER TABLE ONLY ufficio_recapiti -- --- TOC entry 1904 (class 2606 OID 59345) --- Dependencies: 1542 1542 +-- TOC entry 1909 (class 2606 OID 59345) +-- Dependencies: 1544 1544 -- Name: vie_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -496,7 +519,7 @@ ALTER TABLE ONLY vie ADD CONSTRAINT vie_pkey PRIMARY KEY (id); --- Completed on 2010-10-14 12:00:46 +-- Completed on 2010-10-14 13:23:00 -- -- PostgreSQL database dump complete diff --git a/src/Makefile.am b/src/Makefile.am index d4ad25f..2eb9295 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -31,6 +31,10 @@ organigramma_SOURCES = \ personaufficio.h \ personaufficiorecapito.c \ personaufficiorecapito.h \ + posizioneeconomica.c \ + posizioneeconomica.h \ + posizionieconomiche.c \ + posizionieconomiche.h \ struttura.c \ struttura.h \ strutturaindirizzo.c \ diff --git a/src/main.c b/src/main.c index 7c85aaa..5196207 100644 --- a/src/main.c +++ b/src/main.c @@ -30,6 +30,7 @@ #include "commons.h" #include "nodi.h" #include "persone.h" +#include "posizionieconomiche.h" #include "strutture.h" #include "tipinodo.h" #include "tipirapportolavoro.h" @@ -162,6 +163,19 @@ on_mnu_tabelle_tipi_rapporto_lavoro_activate (GtkMenuItem *menuitem, main_set_vbx_body_child (vbx); } +G_MODULE_EXPORT void +on_mnu_tabelle_posizioni_economiche_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + GtkWidget *vbx; + + PosizioniEconomiche *m = posizioni_economiche_new (commons, FALSE); + + vbx = posizioni_economiche_get_widget (m); + + main_set_vbx_body_child (vbx); +} + G_MODULE_EXPORT void on_mnu_help_about_activate (GtkMenuItem *menuitem, gpointer user_data) diff --git a/src/posizioneeconomica.c b/src/posizioneeconomica.c new file mode 100644 index 0000000..003e70a --- /dev/null +++ b/src/posizioneeconomica.c @@ -0,0 +1,336 @@ +/* + * Copyright (C) 2010 Andrea Zagli + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include + +#include "posizioneeconomica.h" + +static void posizione_economica_class_init (PosizioneEconomicaClass *klass); +static void posizione_economica_init (PosizioneEconomica *posizione_economica); + +static void posizione_economica_carica (PosizioneEconomica *posizione_economica); +static void posizione_economica_salva (PosizioneEconomica *posizione_economica); + +static gboolean posizione_economica_conferma_chiusura (PosizioneEconomica *posizione_economica); + +static void posizione_economica_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec); +static void posizione_economica_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec); + +static gboolean posizione_economica_on_w_posizione_economica_delete_event (GtkWidget *widget, + GdkEvent *event, + gpointer user_data); + +static void posizione_economica_on_btn_annulla_clicked (GtkButton *button, + gpointer user_data); +static void posizione_economica_on_btn_salva_clicked (GtkButton *button, + gpointer user_data); + +#define POSIZIONE_ECONOMICA_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TYPE_POSIZIONE_ECONOMICA, PosizioneEconomicaPrivate)) + +enum +{ + LBL_ID +}; + +typedef struct _PosizioneEconomicaPrivate PosizioneEconomicaPrivate; +struct _PosizioneEconomicaPrivate + { + Commons *commons; + + GtkForm *form; + + GtkWidget *w; + + GObject **objects; + + gint id; + }; + +G_DEFINE_TYPE (PosizioneEconomica, posizione_economica, G_TYPE_OBJECT) + +static void +posizione_economica_class_init (PosizioneEconomicaClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (object_class, sizeof (PosizioneEconomicaPrivate)); + + object_class->set_property = posizione_economica_set_property; + object_class->get_property = posizione_economica_get_property; + + /** + * PosizioneEconomica::aggiornato: + * @posizione_economica: + * + */ + klass->aggiornato_signal_id = g_signal_new ("aggiornato", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); +} + +static void +posizione_economica_init (PosizioneEconomica *posizione_economica) +{ + PosizioneEconomicaPrivate *priv = POSIZIONE_ECONOMICA_GET_PRIVATE (posizione_economica); +} + +/** + * posizione_economica_new: + * @commons: + * @id: + * + * Returns: the newly created #PosizioneEconomica object. + */ +PosizioneEconomica +*posizione_economica_new (Commons *commons, gint id) +{ + GError *error; + + PosizioneEconomica *a = POSIZIONE_ECONOMICA (g_object_new (posizione_economica_get_type (), NULL)); + + PosizioneEconomicaPrivate *priv = POSIZIONE_ECONOMICA_GET_PRIVATE (a); + + priv->commons = commons; + + error = NULL; + gtk_builder_add_objects_from_file (priv->commons->gtkbuilder, priv->commons->guifile, + g_strsplit ("w_posizione_economica", "|", -1), + &error); + if (error != NULL) + { + g_warning ("Errore: %s.", error->message); + return NULL; + } + + priv->form = gtk_form_new_from_file (g_build_filename (priv->commons->formdir, "posizione_economica.form", NULL), priv->commons->gtkbuilder); + + g_object_set (priv->form, "gdaex", priv->commons->gdaex, NULL); + + priv->w = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_posizione_economica")); + + priv->objects = gtk_form_get_objects_by_name (priv->form, + "label149", + NULL); + + g_signal_connect (priv->w, + "delete-event", G_CALLBACK (posizione_economica_on_w_posizione_economica_delete_event), (gpointer *)a); + + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button121"), + "clicked", G_CALLBACK (posizione_economica_on_btn_annulla_clicked), (gpointer *)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button122"), + "clicked", G_CALLBACK (posizione_economica_on_btn_salva_clicked), (gpointer *)a); + + priv->id = id; + + if (priv->id == 0) + { + gtk_label_set_text (GTK_LABEL (priv->objects[LBL_ID]), ""); + + gtk_form_set_as_origin (priv->form); + } + else + { + gtk_label_set_text (GTK_LABEL (priv->objects[LBL_ID]), g_strdup_printf ("%d", priv->id)); + posizione_economica_carica (a); + } + + return a; +} + +/** + * posizione_economica_get_widget: + * @posizione_economica: + * + */ +GtkWidget +*posizione_economica_get_widget (PosizioneEconomica *posizione_economica) +{ + PosizioneEconomicaPrivate *priv = POSIZIONE_ECONOMICA_GET_PRIVATE (posizione_economica); + + return priv->w; +} + +/* PRIVATE */ +static void +posizione_economica_carica (PosizioneEconomica *posizione_economica) +{ + PosizioneEconomicaPrivate *priv = POSIZIONE_ECONOMICA_GET_PRIVATE (posizione_economica); + + gtk_form_fill_from_table (priv->form); +} + +static void +posizione_economica_salva (PosizioneEconomica *posizione_economica) +{ + GError *error = NULL; + gchar *sql; + GtkWidget *dialog; + + GDate *da; + GDate *a; + + PosizioneEconomicaClass *klass = POSIZIONE_ECONOMICA_GET_CLASS (posizione_economica); + + PosizioneEconomicaPrivate *priv = POSIZIONE_ECONOMICA_GET_PRIVATE (posizione_economica); + + if (!gtk_form_check (priv->form, (priv->id != 0), NULL, TRUE, priv->w, TRUE)) + { + return; + } + + if (priv->id == 0) + { + sql = gtk_form_get_sql (priv->form, GTK_FORM_SQL_INSERT); + } + else + { + sql = gtk_form_get_sql (priv->form, GTK_FORM_SQL_UPDATE); + } + + if (gdaex_execute (priv->commons->gdaex, sql) == 1) + { + g_signal_emit (posizione_economica, klass->aggiornato_signal_id, 0); + + gtk_form_set_as_origin (priv->form); + + if (priv->id == 0) + { + priv->id = strtol (gtk_label_get_text (GTK_LABEL (priv->objects[LBL_ID])), NULL, 10); + } + + dialog = gtk_message_dialog_new (GTK_WINDOW (priv->w), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_OK, + "Salvataggio eseguito con successo."); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + } + else + { + if (priv->id == 0) + { + gtk_label_set_text (GTK_LABEL (priv->objects[LBL_ID]), ""); + } + + dialog = gtk_message_dialog_new (GTK_WINDOW (priv->w), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Errore durante il salvataggio."); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + } +} + +static void +posizione_economica_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) +{ + PosizioneEconomica *posizione_economica = POSIZIONE_ECONOMICA (object); + + PosizioneEconomicaPrivate *priv = POSIZIONE_ECONOMICA_GET_PRIVATE (posizione_economica); + + switch (property_id) + { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +posizione_economica_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) +{ + PosizioneEconomica *posizione_economica = POSIZIONE_ECONOMICA (object); + + PosizioneEconomicaPrivate *priv = POSIZIONE_ECONOMICA_GET_PRIVATE (posizione_economica); + + switch (property_id) + { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static gboolean +posizione_economica_conferma_chiusura (PosizioneEconomica *posizione_economica) +{ + GtkWidget *dialog; + + gboolean ret; + + PosizioneEconomicaPrivate *priv = POSIZIONE_ECONOMICA_GET_PRIVATE (posizione_economica); + + ret = TRUE; + if (gtk_form_is_changed (priv->form)) + { + dialog = gtk_message_dialog_new (GTK_WINDOW (priv->w), + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_QUESTION, + GTK_BUTTONS_YES_NO, + "Sicuro di voler chiudere senza salvare?"); + if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_NO) + { + ret = FALSE; + } + gtk_widget_destroy (dialog); + } + + return ret; +} + +/* CALLBACK */ +static gboolean +posizione_economica_on_w_posizione_economica_delete_event (GtkWidget *widget, + GdkEvent *event, + gpointer user_data) +{ + return !posizione_economica_conferma_chiusura ((PosizioneEconomica *)user_data); +} + +static void +posizione_economica_on_btn_annulla_clicked (GtkButton *button, + gpointer user_data) +{ + PosizioneEconomica *posizione_economica = (PosizioneEconomica *)user_data; + + PosizioneEconomicaPrivate *priv = POSIZIONE_ECONOMICA_GET_PRIVATE (posizione_economica); + + if (posizione_economica_conferma_chiusura (posizione_economica)) gtk_widget_destroy (priv->w); +} + +static void +posizione_economica_on_btn_salva_clicked (GtkButton *button, + gpointer user_data) +{ + posizione_economica_salva ((PosizioneEconomica *)user_data); +} diff --git a/src/posizioneeconomica.h b/src/posizioneeconomica.h new file mode 100644 index 0000000..7aeae5f --- /dev/null +++ b/src/posizioneeconomica.h @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2010 Andrea Zagli + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __POSIZIONE_ECONOMICA_LAVORO_H__ +#define __POSIZIONE_ECONOMICA_LAVORO_H__ + +#include +#include + +#include +#include + +#include "commons.h" + +G_BEGIN_DECLS + + +#define TYPE_POSIZIONE_ECONOMICA (posizione_economica_get_type ()) +#define POSIZIONE_ECONOMICA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_POSIZIONE_ECONOMICA, PosizioneEconomica)) +#define POSIZIONE_ECONOMICA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_POSIZIONE_ECONOMICA, PosizioneEconomicaClass)) +#define IS_POSIZIONE_ECONOMICA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_POSIZIONE_ECONOMICA)) +#define IS_POSIZIONE_ECONOMICA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_POSIZIONE_ECONOMICA)) +#define POSIZIONE_ECONOMICA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_POSIZIONE_ECONOMICA, PosizioneEconomicaClass)) + + +typedef struct _PosizioneEconomica PosizioneEconomica; +typedef struct _PosizioneEconomicaClass PosizioneEconomicaClass; + +struct _PosizioneEconomica + { + GObject parent; + }; + +struct _PosizioneEconomicaClass + { + GObjectClass parent_class; + + guint aggiornato_signal_id; + }; + +GType posizione_economica_get_type (void) G_GNUC_CONST; + +PosizioneEconomica *posizione_economica_new (Commons *commons, gint id); + +GtkWidget *posizione_economica_get_widget (PosizioneEconomica *posizione_economica); + + +G_END_DECLS + +#endif /* __POSIZIONE_ECONOMICA_LAVORO_H__ */ diff --git a/src/posizionieconomiche.c b/src/posizionieconomiche.c new file mode 100644 index 0000000..f50b83c --- /dev/null +++ b/src/posizionieconomiche.c @@ -0,0 +1,452 @@ +/* + * Copyright (C) 2010 Andrea Zagli + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "posizionieconomiche.h" +#include "posizioneeconomica.h" + +static void posizioni_economiche_class_init (PosizioniEconomicheClass *klass); +static void posizioni_economiche_init (PosizioniEconomiche *posizioni_economiche); + +static void posizioni_economiche_carica (PosizioniEconomiche *posizioni_economiche); +static void posizioni_economiche_modifica (PosizioniEconomiche *posizioni_economiche); + +static void posizioni_economiche_selezionato (PosizioniEconomiche *posizioni_economiche); +static void posizioni_economiche_on_posizione_aggiornato (gpointer instance, gpointer user_data); + +static void posizioni_economiche_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec); +static void posizioni_economiche_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec); + +static void posizioni_economiche_on_btn_nuovo_clicked (GtkButton *button, + gpointer user_data); +static void posizioni_economiche_on_btn_modifica_clicked (GtkButton *button, + gpointer user_data); +static void posizioni_economiche_on_btn_elimina_clicked (GtkButton *button, + gpointer user_data); +static void posizioni_economiche_on_trv_posizioni_economiche_row_activated (GtkTreeView *tree_view, + GtkTreePath *tree_path, + GtkTreeViewColumn *column, + gpointer user_data); + +static void posizioni_economiche_on_btn_annulla_clicked (GtkButton *button, + gpointer user_data); +static void posizioni_economiche_on_btn_seleziona_clicked (GtkButton *button, + gpointer user_data); + +#define POSIZIONI_ECONOMICHE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TYPE_POSIZIONI_ECONOMICHE, PosizioniEconomichePrivate)) + +enum +{ + COL_ID, + COL_NOME +}; + +typedef struct _PosizioniEconomichePrivate PosizioniEconomichePrivate; +struct _PosizioniEconomichePrivate + { + Commons *commons; + + GtkWidget *widget; + GtkTreeSelection *selection; + GtkListStore *lstore_posizioni_economiche; + + gboolean selezione; + GtkWindow *wtransient; + }; + +G_DEFINE_TYPE (PosizioniEconomiche, posizioni_economiche, G_TYPE_OBJECT) + +static void +posizioni_economiche_class_init (PosizioniEconomicheClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (object_class, sizeof (PosizioniEconomichePrivate)); + + object_class->set_property = posizioni_economiche_set_property; + object_class->get_property = posizioni_economiche_get_property; + + /** + * PosizioniEconomiche::selezionato: + * @posizioni_economiche: + * + */ + klass->selezionato_signal_id = g_signal_new ("selezionato", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__UINT, + G_TYPE_NONE, + 1, G_TYPE_UINT); +} + +static void +posizioni_economiche_init (PosizioniEconomiche *posizioni_economiche) +{ + PosizioniEconomichePrivate *priv = POSIZIONI_ECONOMICHE_GET_PRIVATE (posizioni_economiche); +} + +/** + * posizioni_economiche_new: + * @commons: + * @selezione: + * + * Returns: the newly created #PosizioniEconomiche object. + */ +PosizioniEconomiche +*posizioni_economiche_new (Commons *commons, gboolean selezione) +{ + GError *error; + + PosizioniEconomiche *a = POSIZIONI_ECONOMICHE (g_object_new (posizioni_economiche_get_type (), NULL)); + + PosizioniEconomichePrivate *priv = POSIZIONI_ECONOMICHE_GET_PRIVATE (a); + + priv->commons = commons; + priv->selezione = selezione; + + error = NULL; + gtk_builder_add_objects_from_file (priv->commons->gtkbuilder, priv->commons->guifile, + g_strsplit (g_strconcat ("lstore_posizioni_economiche|", + (selezione ? "w_posizioni_economiche" : "vbx_posizioni_economiche"), + NULL), "|", -1), + &error); + if (error != NULL) + { + g_warning ("Errore: %s.", error->message); + return NULL; + } + + priv->widget = GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, (selezione ? "w_posizioni_economiche" : "vbx_posizioni_economiche"))); + priv->selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (gtk_builder_get_object (priv->commons->gtkbuilder, "treeview20"))); + priv->lstore_posizioni_economiche = GTK_LIST_STORE (gtk_builder_get_object (priv->commons->gtkbuilder, "lstore_posizioni_economiche")); + + if (priv->selezione) + { + priv->wtransient = GTK_WINDOW (priv->widget); + } + else + { + priv->wtransient = GTK_WINDOW (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")); + } + + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button116"), + "clicked", G_CALLBACK (posizioni_economiche_on_btn_nuovo_clicked), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button117"), + "clicked", G_CALLBACK (posizioni_economiche_on_btn_modifica_clicked), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button118"), + "clicked", G_CALLBACK (posizioni_economiche_on_btn_elimina_clicked), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "treeview20"), + "row-activated", G_CALLBACK (posizioni_economiche_on_trv_posizioni_economiche_row_activated), (gpointer)a); + + if (priv->selezione) + { + gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "label148"))); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button119"), + "clicked", G_CALLBACK (posizioni_economiche_on_btn_annulla_clicked), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button120"), + "clicked", G_CALLBACK (posizioni_economiche_on_btn_seleziona_clicked), (gpointer)a); + } + else + { + gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "button119"))); + gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "button120"))); + } + + posizioni_economiche_carica (a); + + return a; +} + +/** + * posizioni_economiche_get_widget: + * @posizioni_economiche: + * + */ +GtkWidget +*posizioni_economiche_get_widget (PosizioniEconomiche *posizioni_economiche) +{ + PosizioniEconomichePrivate *priv = POSIZIONI_ECONOMICHE_GET_PRIVATE (posizioni_economiche); + + return priv->widget; +} + +/* PRIVATE */ +static void +posizioni_economiche_carica (PosizioniEconomiche *posizioni_economiche) +{ + GtkTreeIter iter; + GdaDataModel *dm; + + gint rows; + gint row; + + PosizioniEconomichePrivate *priv = POSIZIONI_ECONOMICHE_GET_PRIVATE (posizioni_economiche); + + gtk_list_store_clear (priv->lstore_posizioni_economiche); + + dm = gdaex_query (priv->commons->gdaex, + "SELECT c.id, c.nome" + " FROM posizioni_economiche AS c" + " WHERE c.status <> 'E'" + " ORDER BY c.nome"); + if (dm != NULL) + { + rows = gda_data_model_get_n_rows (dm); + for (row = 0; row < rows; row++) + { + gtk_list_store_append (priv->lstore_posizioni_economiche, &iter); + + gtk_list_store_set (priv->lstore_posizioni_economiche, &iter, + COL_ID, gdaex_data_model_get_field_value_stringify_at (dm, row, "id"), + COL_NOME, gdaex_data_model_get_field_value_stringify_at (dm, row, "nome"), + -1); + } + + g_object_unref (dm); + } +} + +static void +posizioni_economiche_modifica (PosizioniEconomiche *posizioni_economiche) +{ + GtkTreeIter iter; + gchar *id; + + PosizioniEconomichePrivate *priv = POSIZIONI_ECONOMICHE_GET_PRIVATE (posizioni_economiche); + + if (gtk_tree_selection_get_selected (priv->selection, NULL, &iter)) + { + GtkWidget *w; + + gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_posizioni_economiche), &iter, + COL_ID, &id, + -1); + + PosizioneEconomica *c = posizione_economica_new (priv->commons, strtol (id, NULL, 10)); + + g_signal_connect (G_OBJECT (c), "aggiornato", + G_CALLBACK (posizioni_economiche_on_posizione_aggiornato), (gpointer)posizioni_economiche); + + w = posizione_economica_get_widget (c); + if (priv->selezione) + { + gtk_window_set_transient_for (GTK_WINDOW (w), GTK_WINDOW (priv->widget)); + } + else + { + gtk_window_set_transient_for (GTK_WINDOW (w), GTK_WINDOW (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main"))); + } + gtk_widget_show (w); + } + else + { + GtkWidget *dialog = gtk_message_dialog_new (priv->wtransient, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare una posizione economica."); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + } +} + +static void +posizioni_economiche_selezionato (PosizioniEconomiche *posizioni_economiche) +{ + GtkTreeIter iter; + gchar *id; + + PosizioniEconomicheClass *klass = POSIZIONI_ECONOMICHE_GET_CLASS (posizioni_economiche); + PosizioniEconomichePrivate *priv = POSIZIONI_ECONOMICHE_GET_PRIVATE (posizioni_economiche); + + if (gtk_tree_selection_get_selected (priv->selection, NULL, &iter)) + { + gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_posizioni_economiche), &iter, + COL_ID, &id, + -1); + + g_signal_emit (G_OBJECT (posizioni_economiche), klass->selezionato_signal_id, 0, strtol (id, NULL, 10)); + + gtk_widget_destroy (priv->widget); + g_object_unref (G_OBJECT (posizioni_economiche)); + } + else + { + GtkWidget *dialog = gtk_message_dialog_new (priv->wtransient, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare una posizione economica."); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + } +} + +static void +posizioni_economiche_on_posizione_aggiornato (gpointer instance, gpointer user_data) +{ + posizioni_economiche_carica ((PosizioniEconomiche *)user_data); +} + +static void +posizioni_economiche_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) +{ + PosizioniEconomiche *posizioni_economiche = POSIZIONI_ECONOMICHE (object); + + PosizioniEconomichePrivate *priv = POSIZIONI_ECONOMICHE_GET_PRIVATE (posizioni_economiche); + + switch (property_id) + { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +posizioni_economiche_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) +{ + PosizioniEconomiche *posizioni_economiche = POSIZIONI_ECONOMICHE (object); + + PosizioniEconomichePrivate *priv = POSIZIONI_ECONOMICHE_GET_PRIVATE (posizioni_economiche); + + switch (property_id) + { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +/* CALLBACK */ +static void +posizioni_economiche_on_btn_nuovo_clicked (GtkButton *button, + gpointer user_data) +{ + GtkWidget *w; + + PosizioniEconomiche *posizioni_economiche = (PosizioniEconomiche *)user_data; + PosizioniEconomichePrivate *priv = POSIZIONI_ECONOMICHE_GET_PRIVATE (posizioni_economiche); + + PosizioneEconomica *c = posizione_economica_new (priv->commons, 0); + + g_signal_connect (G_OBJECT (c), "aggiornato", + G_CALLBACK (posizioni_economiche_on_posizione_aggiornato), (gpointer)posizioni_economiche); + + w = posizione_economica_get_widget (c); + gtk_window_set_transient_for (GTK_WINDOW (w), priv->wtransient); + gtk_widget_show (w); +} + +static void +posizioni_economiche_on_btn_modifica_clicked (GtkButton *button, + gpointer user_data) +{ + posizioni_economiche_modifica ((PosizioniEconomiche *)user_data); +} + +static void +posizioni_economiche_on_btn_elimina_clicked (GtkButton *button, + gpointer user_data) +{ + GtkWidget *dialog; + gboolean risp; + + GtkTreeIter iter; + gchar *id; + + PosizioniEconomiche *posizioni_economiche = (PosizioniEconomiche *)user_data; + PosizioniEconomichePrivate *priv = POSIZIONI_ECONOMICHE_GET_PRIVATE (posizioni_economiche); + + if (gtk_tree_selection_get_selected (priv->selection, NULL, &iter)) + { + dialog = gtk_message_dialog_new (priv->wtransient, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_QUESTION, + GTK_BUTTONS_YES_NO, + "Sicuro di voler eliminare la posizione economica selezionata?"); + risp = gtk_dialog_run (GTK_DIALOG (dialog)); + if (risp == GTK_RESPONSE_YES) + { + gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_posizioni_economiche), &iter, + COL_ID, &id, + -1); + + gdaex_execute (priv->commons->gdaex, + g_strdup_printf ("UPDATE posizioni_economiche SET status = 'E' WHERE id = %d", strtol (id, NULL, 10))); + + posizioni_economiche_carica (posizioni_economiche); + } + gtk_widget_destroy (dialog); + } + else + { + dialog = gtk_message_dialog_new (priv->wtransient, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare una posizione economica."); + gtk_dialog_run (GTK_DIALOG (dialog)); + gtk_widget_destroy (dialog); + } +} + +static void +posizioni_economiche_on_trv_posizioni_economiche_row_activated (GtkTreeView *tree_view, + GtkTreePath *tree_path, + GtkTreeViewColumn *column, + gpointer user_data) +{ + PosizioniEconomichePrivate *priv = POSIZIONI_ECONOMICHE_GET_PRIVATE ((PosizioniEconomiche *)user_data); + + if (priv->selezione) + { + posizioni_economiche_selezionato ((PosizioniEconomiche *)user_data); + } + else + { + posizioni_economiche_modifica ((PosizioniEconomiche *)user_data); + } +} + + +static void +posizioni_economiche_on_btn_annulla_clicked (GtkButton *button, + gpointer user_data) +{ + PosizioniEconomichePrivate *priv = POSIZIONI_ECONOMICHE_GET_PRIVATE ((PosizioniEconomiche *)user_data); + + gtk_widget_destroy (priv->widget); + g_object_unref (G_OBJECT (user_data)); +} + +static void +posizioni_economiche_on_btn_seleziona_clicked (GtkButton *button, + gpointer user_data) +{ + posizioni_economiche_selezionato ((PosizioniEconomiche *)user_data); +} diff --git a/src/posizionieconomiche.h b/src/posizionieconomiche.h new file mode 100644 index 0000000..e2954f1 --- /dev/null +++ b/src/posizionieconomiche.h @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2010 Andrea Zagli + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __POSIZIONI_ECONOMICHE_H__ +#define __POSIZIONI_ECONOMICHE_H__ + +#include +#include + +#include +#include + +#include "commons.h" + +G_BEGIN_DECLS + + +#define TYPE_POSIZIONI_ECONOMICHE (posizioni_economiche_get_type ()) +#define POSIZIONI_ECONOMICHE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_POSIZIONI_ECONOMICHE, PosizioniEconomiche)) +#define POSIZIONI_ECONOMICHE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_POSIZIONI_ECONOMICHE, PosizioniEconomicheClass)) +#define IS_POSIZIONI_ECONOMICHE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_POSIZIONI_ECONOMICHE)) +#define IS_POSIZIONI_ECONOMICHE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_POSIZIONI_ECONOMICHE)) +#define POSIZIONI_ECONOMICHE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_POSIZIONI_ECONOMICHE, PosizioniEconomicheClass)) + + +typedef struct _PosizioniEconomiche PosizioniEconomiche; +typedef struct _PosizioniEconomicheClass PosizioniEconomicheClass; + +struct _PosizioniEconomiche + { + GObject parent; + }; + +struct _PosizioniEconomicheClass + { + GObjectClass parent_class; + + guint selezionato_signal_id; + }; + +GType posizioni_economiche_get_type (void) G_GNUC_CONST; + +PosizioniEconomiche *posizioni_economiche_new (Commons *commons, gboolean selezione); + +GtkWidget *posizioni_economiche_get_widget (PosizioniEconomiche *posizioni_economiche); + + +G_END_DECLS + +#endif /* __POSIZIONI_ECONOMICHE_H__ */