diff --git a/gnucash/gnome-utils/gnc-recurrence.c b/gnucash/gnome-utils/gnc-recurrence.c index c6ab5db466..3ed858d02d 100644 --- a/gnucash/gnome-utils/gnc-recurrence.c +++ b/gnucash/gnome-utils/gnc-recurrence.c @@ -374,202 +374,4 @@ gnc_recurrence_new() return GTK_WIDGET(gr); } - -/* TODO: Maybe this stuff should go into another file. - * - */ -struct _GncRecurrenceComp -{ - GtkScrolledWindow widget; - - GtkWidget *vbox; - GtkWidget *hbox; - GtkWidget *hbb; - gint num_rec; - GtkButton *buttRemove; - GtkButton *buttAdd; - - GList *rlist; -}; - - -typedef struct -{ - GtkScrolledWindowClass parent_class; - void (*changed) (GncRecurrenceComp *gr); -} GncRecurrenceCompClass; - - -typedef enum -{ - GNCRECURRENCECOMP_CHANGED, - GNCRC_LAST_SIGNAL -} GNCRC_Signals; - - -static void grc_changed(GtkWidget *w, gpointer data) -{ - g_signal_emit_by_name(data, "changed"); -} - - -static void addRecurrence(GncRecurrenceComp *grc, GncRecurrence *gr) -{ - - gtk_box_pack_start(GTK_BOX(grc->vbox), GTK_WIDGET(gr), - FALSE, FALSE, 3); - g_signal_connect( G_OBJECT(gr), "changed", - G_CALLBACK(grc_changed), grc ); - grc->num_rec++; - - gtk_widget_set_sensitive(GTK_WIDGET(grc->buttRemove), (grc->num_rec > 1)); - g_signal_emit_by_name(G_OBJECT(grc), "changed"); - - -} - - -static void removeRecurrence(GncRecurrenceComp *grc) -{ - GList *children, *last; - - grc->num_rec--; - - children = gtk_container_get_children(GTK_CONTAINER(grc->vbox)); - last = g_list_last(children); - gtk_widget_destroy(GTK_WIDGET(last->data)); - g_list_free(children); - g_signal_emit_by_name(G_OBJECT(grc), "changed"); - - - gtk_widget_set_sensitive(GTK_WIDGET(grc->buttRemove), (grc->num_rec > 1)); - -} - - -static void addClicked(GtkButton *b, gpointer data) -{ - GncRecurrenceComp *grc = data; - GncRecurrence *gr; - - gr = GNC_RECURRENCE(gnc_recurrence_new()); - addRecurrence(grc, gr); -} - - -static void removeClicked(GtkButton *b, gpointer data) -{ - GncRecurrenceComp *grc = data; - - if (grc->num_rec > 1) - removeRecurrence(grc); -} - -G_DEFINE_TYPE (GncRecurrenceComp, gnc_recurrence_comp, GTK_TYPE_SCROLLED_WINDOW) - -void -gnc_recurrence_comp_set_list(GncRecurrenceComp *grc, const GList *rlist) -{ - const GList *iter; - - g_return_if_fail(grc); - - while (grc->num_rec > 0) - removeRecurrence(grc); - - for (iter = rlist; iter; iter = iter->next) - { - GncRecurrence *gr = GNC_RECURRENCE(gnc_recurrence_new()); - - gnc_recurrence_set(gr, (Recurrence *)iter->data); - addRecurrence(grc, gr); - } -} - - -GList * -gnc_recurrence_comp_get_list(GncRecurrenceComp *grc) -{ - GList *rlist = NULL, *children; - - children = gtk_container_get_children(GTK_CONTAINER(grc->vbox)); - for (GList *n = children; n; n = n->next) - { - const Recurrence *r = gnc_recurrence_get (GNC_RECURRENCE (n->data)); - rlist = g_list_prepend (rlist, (gpointer)r); - } - g_list_free(children); - return g_list_reverse (rlist); -} - - -static void -gnc_recurrence_comp_init(GncRecurrenceComp *grc) -{ - GtkWidget *vb; - - gtk_orientable_set_orientation (GTK_ORIENTABLE(grc), GTK_ORIENTATION_VERTICAL); - - grc->hbb = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); - grc->vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 1); - gtk_box_set_homogeneous (GTK_BOX (grc->vbox), FALSE); - grc->rlist = NULL; - - grc->buttAdd = GTK_BUTTON(gtk_button_new_with_mnemonic(_("_Add"))); - g_signal_connect(G_OBJECT(grc->buttAdd), "clicked", - G_CALLBACK(addClicked), grc); - grc->buttRemove = GTK_BUTTON(gtk_button_new_with_mnemonic(_("_Remove"))); - g_signal_connect(G_OBJECT(grc->buttRemove), "clicked", - G_CALLBACK(removeClicked), grc); - - gtk_box_pack_start(GTK_BOX(grc->hbb), GTK_WIDGET(grc->buttAdd), - FALSE, FALSE, 3); - gtk_box_pack_start(GTK_BOX(grc->hbb), GTK_WIDGET(grc->buttRemove), - FALSE, FALSE, 3); - - vb = gtk_box_new (GTK_ORIENTATION_VERTICAL, 1); - gtk_box_set_homogeneous (GTK_BOX (vb), FALSE); - gtk_box_pack_start(GTK_BOX(vb), GTK_WIDGET(grc->hbb), - FALSE, FALSE, 3); - gtk_box_pack_start(GTK_BOX(vb), GTK_WIDGET(grc->vbox), - FALSE, FALSE, 3); - - gtk_container_add (GTK_CONTAINER(grc), GTK_WIDGET(vb)); - - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(grc), - GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); - - grc->num_rec = 0; - gtk_widget_show_all(GTK_WIDGET(grc)); - addClicked(NULL, grc); -} - - -static void -gnc_recurrence_comp_class_init( GncRecurrenceCompClass *klass ) -{ - GObjectClass *object_class; - - object_class = G_OBJECT_CLASS (klass); - g_signal_new ("changed", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (GncRecurrenceCompClass, changed), - NULL, - NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, - 0); - - //object_class->finalize = gnc_recurrence_finalize; -} - -GtkWidget * -gnc_recurrence_comp_new() -{ - GncRecurrenceComp *grc; - grc = g_object_new(gnc_recurrence_comp_get_type(), NULL); - return GTK_WIDGET(grc); -} - /* ========================= END OF FILE =========================== */ diff --git a/gnucash/gnome-utils/gnc-recurrence.h b/gnucash/gnome-utils/gnc-recurrence.h index 61d37b1dcf..9aeb2d959f 100644 --- a/gnucash/gnome-utils/gnc-recurrence.h +++ b/gnucash/gnome-utils/gnc-recurrence.h @@ -41,7 +41,6 @@ (obj, GNC_TYPE_RECURRENCE) typedef struct _GncRecurrence GncRecurrence; -typedef struct _GncRecurrenceComp GncRecurrenceComp; GType gnc_recurrence_get_type(void); GtkWidget * gnc_recurrence_new(void); @@ -52,15 +51,4 @@ void gnc_recurrence_set(GncRecurrence *gr, const Recurrence *r); long as the GncRecurrence is around. */ const Recurrence * gnc_recurrence_get(GncRecurrence *gr); -/* "composite" recurrences */ -void gnc_recurrence_comp_set_list(GncRecurrenceComp *grc, const GList *r); - -/* The GList is newly-allocated, but the Recurrences are internally - owned. */ -GList * gnc_recurrence_comp_get_list(GncRecurrenceComp *grc); - -/* This works, but is not used. Kind of experimental... */ -GtkWidget * gnc_recurrence_comp_new(void); -GType gnc_recurrence_comp_get_type(void); - #endif diff --git a/gnucash/gnome-utils/test/CMakeLists.txt b/gnucash/gnome-utils/test/CMakeLists.txt index 1bdc265a84..1540c20707 100644 --- a/gnucash/gnome-utils/test/CMakeLists.txt +++ b/gnucash/gnome-utils/test/CMakeLists.txt @@ -9,11 +9,7 @@ set(GNOME_UTILS_GUI_TEST_LIBS test-core gnc-gnome-utils ) -#This is a GUI test -#gnc_add_test(test-gnc-recurrence test-gnc-recurrence.c -# GNOME_UTILS_GUI_TEST_INCLUDE_DIRS -# GNOME_UTILS_GUI_TEST_LIBS -# + set(GUILE_DEPENDS scm-gnome-utils test-core diff --git a/gnucash/gnome-utils/test/test-gnc-recurrence.c b/gnucash/gnome-utils/test/test-gnc-recurrence.c deleted file mode 100644 index bac7fb6759..0000000000 --- a/gnucash/gnome-utils/test/test-gnc-recurrence.c +++ /dev/null @@ -1,126 +0,0 @@ - /********************************************************************\ - * Copyright (C) 2005, Chris Shoemaker * - * 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, contact: * - * * - * Free Software Foundation Voice: +1-617-542-5942 * - * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 * - * Boston, MA 02110-1301, USA gnu@gnu.org * - * * -\********************************************************************/ - - -/* test-gnc-recurrence.c: - * - * When you close the window, a text description of the - * recurrence is printed. - * - */ - -#include -#include -#include -#include -#include "gnc-recurrence.h" -#include "Recurrence.h" - -static GtkWidget * mainwin; -static GncRecurrence *rw; -static GncRecurrenceComp *grc; - -static void get_list(GtkWidget *w) -{ - gchar *s; - GList *rlist; - rlist = gnc_recurrence_comp_get_list(grc); - s = recurrenceListToString(rlist); - printf("%s\n", s); - - g_free(s); - g_list_free(rlist); -} - -static void changed(GtkWidget *widget) -{ - gchar *s; - const Recurrence *r; - - r = gnc_recurrence_get(rw); - s = recurrenceToString(r); - printf("%s\n", s); - g_free(s); -} - -static void die(GtkWidget *widget) -{ - gtk_main_quit(); -} - -static void show_gnc_recurrence() -{ - GDate d; - Recurrence *r; - GList *rl = NULL; - - rw = GNC_RECURRENCE(gnc_recurrence_new()); - - r = g_new(Recurrence, 1); - rl = g_list_append(rl, r); - g_date_set_dmy(&d, 17, 4, 2005); - recurrenceSet(r, 1, PERIOD_WEEK, &d, WEEKEND_ADJ_NONE); - - gnc_recurrence_set(rw, r); - g_free(r); - - gtk_container_add(GTK_CONTAINER(mainwin), GTK_WIDGET(rw)); - g_signal_connect(rw, "changed", G_CALLBACK(changed), NULL); -} - -static void show_gnc_recurrence_comp() -{ - GList *rlist = NULL; - Recurrence r[2]; - - grc = (GncRecurrenceComp *)gnc_recurrence_comp_new(); - - gtk_container_add(GTK_CONTAINER(mainwin), GTK_WIDGET(grc)); - - recurrenceSet(&r[0], 1, PERIOD_MONTH, NULL, WEEKEND_ADJ_NONE); - rlist = g_list_append(rlist, &r[0]); - recurrenceSet(&r[1], 1, PERIOD_YEAR, NULL, WEEKEND_ADJ_NONE); - rlist = g_list_append(rlist, &r[1]); - - gnc_recurrence_comp_set_list(grc, rlist); - g_list_free(rlist); - - g_signal_connect(grc, "changed", G_CALLBACK(get_list), NULL); - //rlist = gnc_recurrence_comp_get_list(grc); -} - - -int main (int argc, char ** argv) -{ - gtk_init(&argc, &argv); - - mainwin = gtk_window_new(GTK_WINDOW_TOPLEVEL); - g_signal_connect(mainwin, "delete-event", G_CALLBACK(die), NULL); - - if (argc > 1) - show_gnc_recurrence(); - else - show_gnc_recurrence_comp(); - - gtk_widget_show_all(mainwin); - gtk_main(); - return 0; -}