|
GnuCash 2.4.99
|
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 }
1.7.4