GnuCash  2.6.99
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
test-gnc-recurrence.c
1 /* Copyright (C) 2005, Chris Shoemaker <[email protected]>
2  * This file is free software. See COPYING for details. */
3 
4 /* test-gnc-recurrence.c:
5  *
6  * When you close the window, a text description of the
7  * recurrence is printed.
8  *
9  */
10 
11 #include "config.h"
12 #include <glib.h>
13 #include <gtk/gtk.h>
14 #include <stdio.h>
15 #include "gnc-recurrence.h"
16 #include "Recurrence.h"
17 
18 static GtkWidget * mainwin;
19 static GncRecurrence *rw;
20 static GncRecurrenceComp *grc;
21 
22 static void get_list(GtkWidget *w)
23 {
24  gchar *s;
25  GList *rlist;
26  rlist = gnc_recurrence_comp_get_list(grc);
27  s = recurrenceListToString(rlist);
28  printf("%s\n", s);
29 
30  g_free(s);
31  g_list_free(rlist);
32 }
33 
34 static void changed(GtkWidget *widget)
35 {
36  gchar *s;
37  const Recurrence *r;
38 
39  r = gnc_recurrence_get(rw);
40  s = recurrenceToString(r);
41  printf("%s\n", s);
42  g_free(s);
43 }
44 
45 static void die(GtkWidget *widget)
46 {
47  gtk_main_quit();
48 }
49 
50 static void show_gnc_recurrence()
51 {
52  GDate d;
53  Recurrence *r;
54  GList *rl = NULL;
55 
56  rw = GNC_RECURRENCE(gnc_recurrence_new());
57 
58  r = g_new(Recurrence, 1);
59  rl = g_list_append(rl, r);
60  g_date_set_dmy(&d, 17, 4, 2005);
61  recurrenceSet(r, 1, PERIOD_WEEK, &d, WEEKEND_ADJ_NONE);
62 
63  gnc_recurrence_set(rw, r);
64  g_free(r);
65 
66  gtk_container_add(GTK_CONTAINER(mainwin), GTK_WIDGET(rw));
67  g_signal_connect(rw, "changed", G_CALLBACK(changed), NULL);
68 }
69 
70 static void show_gnc_recurrence_comp()
71 {
72  GList *rlist = NULL;
73  Recurrence r[2];
74 
75  grc = (GncRecurrenceComp *)gnc_recurrence_comp_new();
76 
77  gtk_container_add(GTK_CONTAINER(mainwin), GTK_WIDGET(grc));
78 
79  recurrenceSet(&r[0], 1, PERIOD_MONTH, NULL, WEEKEND_ADJ_NONE);
80  rlist = g_list_append(rlist, &r[0]);
81  recurrenceSet(&r[1], 1, PERIOD_YEAR, NULL, WEEKEND_ADJ_NONE);
82  rlist = g_list_append(rlist, &r[1]);
83 
84  gnc_recurrence_comp_set_list(grc, rlist);
85  g_list_free(rlist);
86 
87  g_signal_connect(grc, "changed", G_CALLBACK(get_list), NULL);
88  //rlist = gnc_recurrence_comp_get_list(grc);
89 }
90 
91 
92 int main (int argc, char ** argv)
93 {
94  gtk_init(&argc, &argv);
95 
96  mainwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
97  g_signal_connect(mainwin, "delete-event", G_CALLBACK(die), NULL);
98 
99  if (argc > 1)
100  show_gnc_recurrence();
101  else
102  show_gnc_recurrence_comp();
103 
104  gtk_widget_show_all(mainwin);
105  gtk_main();
106  return 0;
107 }