GnuCash 2.4.99
test-gnc-recurrence.c
00001 /* Copyright (C) 2005, Chris Shoemaker <c.shoemaker@cox.net>
00002  * This file is free software.  See COPYING for details. */
00003 
00004 /* test-gnc-recurrence.c:
00005  *
00006  *     When you close the window, a text description of the
00007  * recurrence is printed.
00008  *
00009  */
00010 
00011 #include "config.h"
00012 #include <glib.h>
00013 #include <gtk/gtk.h>
00014 #include <stdio.h>
00015 #include "gnc-recurrence.h"
00016 #include "Recurrence.h"
00017 
00018 static GtkWidget * mainwin;
00019 static GncRecurrence *rw;
00020 static GncRecurrenceComp *grc;
00021 
00022 static void get_list(GtkWidget *w)
00023 {
00024     gchar *s;
00025     GList *rlist;
00026     rlist = gnc_recurrence_comp_get_list(grc);
00027     s = recurrenceListToString(rlist);
00028     printf("%s\n", s);
00029 
00030     g_free(s);
00031     g_list_free(rlist);
00032 }
00033 
00034 static void changed(GtkWidget *widget)
00035 {
00036     gchar *s;
00037     const Recurrence *r;
00038 
00039     r = gnc_recurrence_get(rw);
00040     s = recurrenceToString(r);
00041     printf("%s\n", s);
00042     g_free(s);
00043 }
00044 
00045 static void die(GtkWidget *widget)
00046 {
00047     gtk_main_quit();
00048 }
00049 
00050 static void show_gnc_recurrence()
00051 {
00052     GDate d;
00053     Recurrence *r;
00054     GList *rl = NULL;
00055 
00056     rw = GNC_RECURRENCE(gnc_recurrence_new());
00057 
00058     r = g_new(Recurrence, 1);
00059     rl = g_list_append(rl, r);
00060     g_date_set_dmy(&d, 17, 4, 2005);
00061     recurrenceSet(r, 1, PERIOD_WEEK, &d, WEEKEND_ADJ_NONE);
00062 
00063     gnc_recurrence_set(rw, r);
00064     g_free(r);
00065 
00066     gtk_container_add(GTK_CONTAINER(mainwin), GTK_WIDGET(rw));
00067     g_signal_connect(rw, "changed", G_CALLBACK(changed), NULL);
00068 }
00069 
00070 static void show_gnc_recurrence_comp()
00071 {
00072     GList *rlist = NULL;
00073     Recurrence r[2];
00074 
00075     grc = (GncRecurrenceComp *)gnc_recurrence_comp_new();
00076 
00077     gtk_container_add(GTK_CONTAINER(mainwin), GTK_WIDGET(grc));
00078 
00079     recurrenceSet(&r[0], 1, PERIOD_MONTH, NULL, WEEKEND_ADJ_NONE);
00080     rlist = g_list_append(rlist, &r[0]);
00081     recurrenceSet(&r[1], 1, PERIOD_YEAR, NULL, WEEKEND_ADJ_NONE);
00082     rlist = g_list_append(rlist, &r[1]);
00083 
00084     gnc_recurrence_comp_set_list(grc, rlist);
00085     g_list_free(rlist);
00086 
00087     g_signal_connect(grc, "changed", G_CALLBACK(get_list), NULL);
00088     //rlist = gnc_recurrence_comp_get_list(grc);
00089 }
00090 
00091 
00092 int main (int argc, char ** argv)
00093 {
00094     gtk_init(&argc, &argv);
00095 
00096     mainwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
00097     g_signal_connect(mainwin, "delete-event", G_CALLBACK(die), NULL);
00098 
00099     if (argc > 1)
00100         show_gnc_recurrence();
00101     else
00102         show_gnc_recurrence_comp();
00103 
00104     gtk_widget_show_all(mainwin);
00105     gtk_main();
00106     return 0;
00107 }
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines