]> saetta.ns0.it Git - zakform/tests/commitdiff
Test ini provider.
authorAndrea Zagli <azagli@libero.it>
Mon, 2 May 2016 15:29:04 +0000 (17:29 +0200)
committerAndrea Zagli <azagli@libero.it>
Mon, 2 May 2016 15:29:04 +0000 (17:29 +0200)
.gitignore
configure.ac
src/Makefile.am
src/gtk_ini.c [new file with mode: 0644]

index e503f7cba4fbadc9fa66d47a4e27866895174054..4d9045043eb50fe17642d59dfa00adb4767f1978 100644 (file)
@@ -51,3 +51,4 @@ Rules-quot
 *.exe
 *.csv
 gtk_gdaex
+gtk_ini
\ No newline at end of file
index 82331439175b433f6165db85d8ff4fab9adeddb6..e45c10d054ce10eb8b371be549cfed0c0dde7a82 100644 (file)
@@ -34,8 +34,9 @@ AM_GLIB_GNU_GETTEXT
 
 # Checks for libraries.
 PKG_CHECK_MODULES(ZAKFORMTESTS, [libzakform
-                                libzakformgtk
-                                                                libzakformgdaex])
+                                 libzakformgtk
+                                 libzakformgdaex
+                                 libzakformini])
 
 AC_SUBST(ZAKFORMTESTS_CFLAGS)
 AC_SUBST(ZAKFORMTESTS_LIBS)
index 0e17ba8a6146950946aa8a502a9458d1329a6726..d5f5a58ed6418ff4e18ea2132674c9b5d4044c5f 100644 (file)
@@ -8,4 +8,5 @@ AM_CPPFLAGS = $(WARN_CFLAGS) \
 LIBS = $(ZAKFORMTESTS_LIBS)
 
 noinst_PROGRAMS = \
-                  gtk_gdaex
+                  gtk_gdaex \
+                  gtk_ini
diff --git a/src/gtk_ini.c b/src/gtk_ini.c
new file mode 100644 (file)
index 0000000..cf17500
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2016 Andrea Zagli <azagli@libero.it>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+       #include <config.h>
+#endif
+
+#include <libzakform/libzakform.h>
+#include <libzakformgtk/libzakformgtk.h>
+#include <libzakformini/libzakformini.h>
+
+GtkWidget *w;
+
+ZakFormGtkForm *form;
+ZakFormIniProvider *provider;
+
+void
+load_clicked (GtkButton *button,
+                         gpointer   user_data)
+{
+       zak_form_form_load (ZAK_FORM_FORM (form), ZAK_FORM_IPROVIDER (provider));
+}
+
+void
+insert_clicked (GtkButton *button,
+                               gpointer   user_data)
+{
+       zak_form_form_insert (ZAK_FORM_FORM (form), ZAK_FORM_IPROVIDER (provider));
+}
+
+void
+update_clicked (GtkButton *button,
+                               gpointer   user_data)
+{
+       zak_form_form_update (ZAK_FORM_FORM (form), ZAK_FORM_IPROVIDER (provider));
+}
+
+void
+is_valid_clicked (GtkButton *button,
+                                 gpointer   user_data)
+{
+       zak_form_gtk_form_is_valid (form, w);
+}
+
+void
+is_changed_clicked (GtkButton *button,
+                                       gpointer   user_data)
+{
+       if (zak_form_form_is_changed (ZAK_FORM_FORM (form)))
+               {
+                       GtkWidget *dialog;
+
+                       dialog = gtk_message_dialog_new (GTK_WINDOW (w),
+                                                                                        GTK_DIALOG_DESTROY_WITH_PARENT,
+                                                                                        GTK_MESSAGE_WARNING,
+                                                                                        GTK_BUTTONS_OK,
+                                                                                        "Form is changed.");
+                       gtk_dialog_run (GTK_DIALOG (dialog));
+                       gtk_widget_destroy (dialog);
+               }
+}
+
+int
+main (int argc, char *argv[])
+{
+       GtkBuilder *builder;
+
+       gtk_init (&argc, &argv);
+
+       builder = gtk_builder_new ();
+       gtk_builder_add_objects_from_file (builder, GUIDIR "/main.ui",
+                                                                          g_strsplit ("w_main"
+                                                                                                  "|adjustment1", "|", -1), NULL);
+
+       w = GTK_WIDGET (gtk_builder_get_object (builder, "w_main"));
+
+       g_signal_connect (w, "delete-event",
+                                         gtk_main_quit, NULL);
+
+       g_signal_connect (gtk_builder_get_object (builder, "button1"), "clicked",
+                                         G_CALLBACK (load_clicked), NULL);
+       g_signal_connect (gtk_builder_get_object (builder, "button2"), "clicked",
+                                         G_CALLBACK (insert_clicked), NULL);
+       g_signal_connect (gtk_builder_get_object (builder, "button3"), "clicked",
+                                         G_CALLBACK (update_clicked), NULL);
+       g_signal_connect (gtk_builder_get_object (builder, "button4"), "clicked",
+                                         G_CALLBACK (is_valid_clicked), NULL);
+       g_signal_connect (gtk_builder_get_object (builder, "button5"), "clicked",
+                                         G_CALLBACK (is_changed_clicked), NULL);
+
+       form = zak_form_gtk_form_new ();
+       zak_form_gtk_form_set_gtkbuilder (form, builder);
+       zak_form_form_load_from_file (ZAK_FORM_FORM (form), XMLDIR "/main.xml");
+       zak_form_form_clear (ZAK_FORM_FORM (form));
+       zak_form_form_set_as_original (ZAK_FORM_FORM (form));
+
+       provider = zak_form_ini_provider_new_from_file (argv[1], "clients");
+
+       gtk_widget_show_all (w);
+
+       gtk_main ();
+
+       return 0;
+}