diff --git a/configure.ac b/configure.ac index fcddedf303..bf58ae4705 100644 --- a/configure.ac +++ b/configure.ac @@ -1277,6 +1277,7 @@ AC_CONFIG_FILES( src/gnome/ui/Makefile src/gnome-utils/Makefile src/gnome-utils/glade/Makefile + src/gnome-utils/gtkbuilder/Makefile src/gnome-utils/schemas/Makefile src/gnome-utils/test/Makefile src/gnome-utils/ui/Makefile diff --git a/src/gnome-utils/Makefile.am b/src/gnome-utils/Makefile.am index 2e0dd746eb..91184ed776 100644 --- a/src/gnome-utils/Makefile.am +++ b/src/gnome-utils/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = glade schemas . test ui +SUBDIRS = glade gtkbuilder schemas . test ui pkglib_LTLIBRARIES = libgncmod-gnome-utils.la diff --git a/src/gnome-utils/dialog-transfer.c b/src/gnome-utils/dialog-transfer.c index 0b21c4232f..ffda79f477 100644 --- a/src/gnome-utils/dialog-transfer.c +++ b/src/gnome-utils/dialog-transfer.c @@ -158,10 +158,22 @@ static Account *gnc_transfer_dialog_get_selected_account (XferDialog *dialog, static void gnc_transfer_dialog_set_selected_account (XferDialog *dialog, Account *account, XferDirection direction); + +void gnc_xfer_description_insert_cb(GtkEditable *editable, + const gchar *insert_text, + const gint insert_text_len, + gint *start_pos, + XferDialog *xferData); +gboolean gnc_xfer_description_key_press_cb( GtkEntry *entry, + GdkEventKey *event, + XferDialog *xferData ); +void gnc_xfer_dialog_fetch (GtkButton *button, XferDialog *xferData); +gboolean gnc_xfer_dialog_show_inc_exp_visible_cb (Account *account, + gpointer data); +void price_amount_radio_toggled_cb(GtkToggleButton *togglebutton, gpointer data); + void gnc_xfer_dialog_response_cb (GtkDialog *dialog, gint response, gpointer data); void gnc_xfer_dialog_close_cb(GtkDialog *dialog, gpointer data); -static gboolean gnc_xfer_dialog_show_inc_exp_visible_cb (Account *account, - gpointer data); /** Implementations **********************************************/ @@ -351,7 +363,7 @@ gnc_xfer_dialog_curr_acct_activate(XferDialog *xferData) } -static void +void price_amount_radio_toggled_cb(GtkToggleButton *togglebutton, gpointer data) { XferDialog *xferData = data; @@ -460,7 +472,7 @@ gnc_xfer_dialog_to_tree_selection_changed_cb (GtkTreeSelection *selection, gpoin gnc_xfer_dialog_reload_quickfill(xferData); } -static gboolean +gboolean gnc_xfer_dialog_show_inc_exp_visible_cb (Account *account, gpointer data) { @@ -494,6 +506,7 @@ gnc_xfer_dialog_fill_tree_view(XferDialog *xferData, GtkTreeSelection *selection; gboolean use_accounting_labels; AccountTreeFilterInfo info; + GtkBuilder *builder = g_object_get_data (G_OBJECT (xferData->dialog), "builder"); use_accounting_labels = gnc_gconf_get_bool(GCONF_GENERAL, KEY_ACCOUNTING_LABELS, NULL); @@ -511,21 +524,21 @@ gnc_xfer_dialog_fill_tree_view(XferDialog *xferData, */ if (use_accounting_labels) { - button = gnc_glade_lookup_widget (xferData->dialog, + button = GTK_WIDGET(gtk_builder_get_object (builder, (direction == XFER_DIALOG_TO) ? - "left_show_button" : "right_show_button"); - scroll_win = gnc_glade_lookup_widget (xferData->dialog, + "left_show_button" : "right_show_button")); + scroll_win = GTK_WIDGET(gtk_builder_get_object (builder, (direction == XFER_DIALOG_TO) ? - "left_trans_window" : "right_trans_window"); + "left_trans_window" : "right_trans_window")); } else { - button = gnc_glade_lookup_widget (xferData->dialog, + button = GTK_WIDGET(gtk_builder_get_object (builder, (direction == XFER_DIALOG_TO) ? - "right_show_button" : "left_show_button"); - scroll_win = gnc_glade_lookup_widget (xferData->dialog, + "right_show_button" : "left_show_button")); + scroll_win = GTK_WIDGET(gtk_builder_get_object (builder, (direction == XFER_DIALOG_TO) ? - "right_trans_window" : "left_trans_window"); + "right_trans_window" : "left_trans_window")); } tree_view = GTK_TREE_VIEW(gnc_tree_view_account_new(FALSE)); @@ -719,7 +732,7 @@ idle_select_region(gpointer data) * cursor position accordingly. It will not set the selection but will register * idle_select_region to do that once the program returns to its main loop. */ -static void +void gnc_xfer_description_insert_cb(GtkEditable *editable, const gchar *insert_text, const gint insert_text_len, @@ -781,7 +794,7 @@ gnc_xfer_description_insert_cb(GtkEditable *editable, g_free(new_text); } -static gboolean +gboolean gnc_xfer_description_key_press_cb( GtkEntry *entry, GdkEventKey *event, XferDialog *xferData ) @@ -1618,7 +1631,7 @@ gnc_xfer_dialog_close_cb(GtkDialog *dialog, gpointer data) } -static void +void gnc_xfer_dialog_fetch (GtkButton *button, XferDialog *xferData) { gnc_numeric rate; @@ -1674,25 +1687,23 @@ gnc_xfer_dialog_fetch (GtkButton *button, XferDialog *xferData) static void gnc_xfer_dialog_create(GtkWidget *parent, XferDialog *xferData) { - GtkWidget *dialog; - GladeXML *xml; + GtkWidget *dialog; + GtkBuilder *builder; gboolean use_accounting_labels; use_accounting_labels = gnc_gconf_get_bool(GCONF_GENERAL, KEY_ACCOUNTING_LABELS, NULL); ENTER(" "); - xml = gnc_glade_xml_new ("transfer.glade", "Transfer Dialog"); + builder = gtk_builder_new(); + gnc_builder_add_from_file (builder, "transfer.glade", "Transfer Dialog"); - dialog = glade_xml_get_widget (xml, "Transfer Dialog"); - xferData->dialog = dialog; - g_object_set_data_full (G_OBJECT (dialog), "xml", xml, g_object_unref); + xferData->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "Transfer Dialog")); + g_object_set_data_full (G_OBJECT (xferData->dialog), "builder", builder, g_object_unref); /* parent */ if (parent != NULL) - gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent)); - - glade_xml_signal_autoconnect_full(xml, gnc_glade_autoconnect_full_func, xferData); + gtk_window_set_transient_for (GTK_WINDOW (xferData->dialog), GTK_WINDOW (parent)); xferData->tips = gtk_tooltips_new(); @@ -1701,11 +1712,9 @@ gnc_xfer_dialog_create(GtkWidget *parent, XferDialog *xferData) /* default to quickfilling off of the "From" account. */ xferData->quickfill = XFER_DIALOG_FROM; - xferData->transferinfo_label = glade_xml_get_widget (xml, "transferinfo-label"); + xferData->transferinfo_label = GTK_WIDGET(gtk_builder_get_object (builder, "transferinfo-label")); - xferData->fetch_button = glade_xml_get_widget (xml, "fetch"); - glade_xml_signal_connect_data (xml, "gnc_xfer_dialog_fetch", - G_CALLBACK (gnc_xfer_dialog_fetch), xferData); + xferData->fetch_button = GTK_WIDGET(gtk_builder_get_object (builder, "fetch")); /* amount & date widgets */ { @@ -1715,7 +1724,7 @@ gnc_xfer_dialog_create(GtkWidget *parent, XferDialog *xferData) GtkWidget *hbox; amount = gnc_amount_edit_new(); - hbox = glade_xml_get_widget (xml, "amount_hbox"); + hbox = GTK_WIDGET(gtk_builder_get_object (builder, "amount_hbox")); gtk_box_pack_end(GTK_BOX(hbox), amount, TRUE, TRUE, 0); gnc_amount_edit_set_evaluate_on_enter (GNC_AMOUNT_EDIT (amount), TRUE); xferData->amount_edit = amount; @@ -1727,7 +1736,7 @@ gnc_xfer_dialog_create(GtkWidget *parent, XferDialog *xferData) date = gnc_date_edit_new(time (NULL), FALSE, FALSE); gnc_date_activates_default (GNC_DATE_EDIT(date), TRUE); - hbox = glade_xml_get_widget (xml, "date_hbox"); + hbox = GTK_WIDGET(gtk_builder_get_object (builder, "date_hbox")); gtk_box_pack_end(GTK_BOX(hbox), date, TRUE, TRUE, 0); xferData->date_entry = date; @@ -1738,19 +1747,13 @@ gnc_xfer_dialog_create(GtkWidget *parent, XferDialog *xferData) { GtkWidget *entry; - entry = glade_xml_get_widget (xml, "num_entry"); + entry = GTK_WIDGET(gtk_builder_get_object (builder, "num_entry")); xferData->num_entry = entry; - entry = glade_xml_get_widget (xml, "description_entry"); + entry = GTK_WIDGET(gtk_builder_get_object (builder, "description_entry")); xferData->description_entry = entry; - /* Get signals from the Description for quickfill. */ - g_signal_connect (G_OBJECT (entry), "insert_text", - G_CALLBACK (gnc_xfer_description_insert_cb), xferData); - g_signal_connect (G_OBJECT (entry), "key_press_event", - G_CALLBACK (gnc_xfer_description_key_press_cb), xferData); - - entry = glade_xml_get_widget (xml, "memo_entry"); + entry = GTK_WIDGET(gtk_builder_get_object (builder, "memo_entry")); xferData->memo_entry = entry; } @@ -1766,10 +1769,10 @@ gnc_xfer_dialog_create(GtkWidget *parent, XferDialog *xferData) see comment in function gnc_xfer_dialog_fill_tree_table */ if (use_accounting_labels) { - label = glade_xml_get_widget (xml, "right_trans_label"); + label = GTK_WIDGET(gtk_builder_get_object (builder, "right_trans_label")); xferData->from_transfer_label = label; - label = glade_xml_get_widget (xml, "left_trans_label"); + label = GTK_WIDGET(gtk_builder_get_object (builder, "left_trans_label")); xferData->to_transfer_label = label; text = g_strconcat ("", _("Credit Account"), "", NULL); @@ -1780,18 +1783,18 @@ gnc_xfer_dialog_create(GtkWidget *parent, XferDialog *xferData) gtk_label_set_markup (GTK_LABEL (xferData->to_transfer_label), text); g_free (text); - label = glade_xml_get_widget (xml, "right_currency_label"); + label = GTK_WIDGET(gtk_builder_get_object (builder, "right_currency_label")); xferData->from_currency_label = label; - label = glade_xml_get_widget (xml, "left_currency_label"); + label = GTK_WIDGET(gtk_builder_get_object (builder, "left_currency_label")); xferData->to_currency_label = label; } else { - label = glade_xml_get_widget (xml, "left_trans_label"); + label = GTK_WIDGET(gtk_builder_get_object (builder, "left_trans_label")); xferData->from_transfer_label = label; - label = glade_xml_get_widget (xml, "right_trans_label"); + label = GTK_WIDGET(gtk_builder_get_object (builder, "right_trans_label")); xferData->to_transfer_label = label; text = g_strconcat ("", _("Transfer From"), "", NULL); @@ -1801,17 +1804,17 @@ gnc_xfer_dialog_create(GtkWidget *parent, XferDialog *xferData) text = g_strconcat ("", _("Transfer To"), "", NULL); gtk_label_set_markup (GTK_LABEL (xferData->to_transfer_label), text); - label = glade_xml_get_widget (xml, "left_currency_label"); + label = GTK_WIDGET(gtk_builder_get_object (builder, "left_currency_label")); xferData->from_currency_label = label; - label = glade_xml_get_widget (xml, "right_currency_label"); + label = GTK_WIDGET(gtk_builder_get_object (builder, "right_currency_label")); xferData->to_currency_label = label; } - label = glade_xml_get_widget (xml, "conv_forward"); + label = GTK_WIDGET(gtk_builder_get_object (builder, "conv_forward")); xferData->conv_forward = label; - label = glade_xml_get_widget (xml, "conv_reverse"); + label = GTK_WIDGET(gtk_builder_get_object (builder, "conv_reverse")); xferData->conv_reverse = label; } @@ -1823,13 +1826,13 @@ gnc_xfer_dialog_create(GtkWidget *parent, XferDialog *xferData) GtkWidget *hbox; GtkWidget *button; - table = glade_xml_get_widget (xml, "curr_transfer_table"); + table = GTK_WIDGET(gtk_builder_get_object (builder, "curr_transfer_table")); xferData->curr_xfer_table = table; edit = gnc_amount_edit_new(); gnc_amount_edit_set_print_info(GNC_AMOUNT_EDIT(edit), gnc_default_print_info (FALSE)); - hbox = glade_xml_get_widget (xml, "price_hbox"); + hbox = GTK_WIDGET(gtk_builder_get_object (builder, "price_hbox")); gtk_box_pack_start(GTK_BOX(hbox), edit, TRUE, TRUE, 0); xferData->price_edit = edit; entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (edit)); @@ -1838,7 +1841,7 @@ gnc_xfer_dialog_create(GtkWidget *parent, XferDialog *xferData) gtk_entry_set_activates_default(GTK_ENTRY (entry), TRUE); edit = gnc_amount_edit_new(); - hbox = glade_xml_get_widget (xml, "right_amount_hbox"); + hbox = GTK_WIDGET(gtk_builder_get_object (builder, "right_amount_hbox")); gtk_box_pack_start(GTK_BOX(hbox), edit, TRUE, TRUE, 0); xferData->to_amount_edit = edit; entry = gnc_amount_edit_gtk_entry (GNC_AMOUNT_EDIT (edit)); @@ -1846,16 +1849,12 @@ gnc_xfer_dialog_create(GtkWidget *parent, XferDialog *xferData) G_CALLBACK (gnc_xfer_to_amount_update_cb), xferData); gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); - button = glade_xml_get_widget (xml, "price_radio"); + button = GTK_WIDGET(gtk_builder_get_object (builder, "price_radio")); xferData->price_radio = button; - g_signal_connect (G_OBJECT (xferData->price_radio), "toggled", - G_CALLBACK (price_amount_radio_toggled_cb), xferData); - button = glade_xml_get_widget (xml, "amount_radio"); + button = GTK_WIDGET(gtk_builder_get_object (builder, "amount_radio")); xferData->amount_radio = button; - g_signal_connect(G_OBJECT(xferData->amount_radio), "toggled", - G_CALLBACK(price_amount_radio_toggled_cb), - xferData); + if (use_accounting_labels) { gtk_label_set_text(GTK_LABEL(GTK_BIN(xferData->amount_radio)->child), @@ -1867,7 +1866,9 @@ gnc_xfer_dialog_create(GtkWidget *parent, XferDialog *xferData) _("To Amount:")); } } - gnc_restore_window_size (GCONF_SECTION, GTK_WINDOW (dialog)); + + gtk_builder_connect_signals(builder, xferData); + gnc_restore_window_size (GCONF_SECTION, GTK_WINDOW (xferData->dialog)); LEAVE(" "); } @@ -2038,9 +2039,10 @@ void gnc_xfer_dialog_add_user_specified_button( XferDialog *xferData, { if ( xferData && label && callback ) { - GtkWidget *button = gtk_button_new_with_label( label ); - GtkWidget *box = gnc_glade_lookup_widget (xferData->dialog, - "transfermain-vbox" ); + GtkBuilder *builder = g_object_get_data (G_OBJECT (xferData->dialog), "builder"); + GtkWidget *button = gtk_button_new_with_label( label ); + GtkWidget *box = GTK_WIDGET(gtk_builder_get_object (builder, + "transfermain-vbox" )); gtk_box_pack_end( GTK_BOX(box), button, FALSE, FALSE, 0 ); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (callback), user_data); gtk_widget_show( button ); diff --git a/src/gnome-utils/glade/Makefile.am b/src/gnome-utils/glade/Makefile.am index a4fa7ac71f..cea247933d 100644 --- a/src/gnome-utils/glade/Makefile.am +++ b/src/gnome-utils/glade/Makefile.am @@ -13,7 +13,6 @@ glade_DATA = \ gnc-date-format.glade \ gnc-gui-query.glade \ preferences.glade \ - totd.glade \ - transfer.glade + totd.glade EXTRA_DIST = $(glade_DATA) diff --git a/src/gnome-utils/gtkbuilder/Makefile.am b/src/gnome-utils/gtkbuilder/Makefile.am new file mode 100644 index 0000000000..c2b47f5f1a --- /dev/null +++ b/src/gnome-utils/gtkbuilder/Makefile.am @@ -0,0 +1,5 @@ +gtkbuilderdir = $(GNC_GTKBUILDER_DIR) +gtkbuilder_DATA = \ + transfer.glade + +EXTRA_DIST = $(gtkbuilder_DATA) diff --git a/src/gnome-utils/glade/transfer.glade b/src/gnome-utils/gtkbuilder/transfer.glade similarity index 85% rename from src/gnome-utils/glade/transfer.glade rename to src/gnome-utils/gtkbuilder/transfer.glade index 9845c3f40f..a84521f359 100644 --- a/src/gnome-utils/glade/transfer.glade +++ b/src/gnome-utils/gtkbuilder/transfer.glade @@ -1,37 +1,36 @@ - - + + - + 5 Transfer Funds dialog - False - + True vertical 2 - + True 5 vertical 18 - + True 2 2 6 - + True 0 <b>Basic Information</b> True - + 2 GTK_FILL @@ -39,11 +38,11 @@ - + True 0 - + 1 2 @@ -52,30 +51,30 @@ - + True 5 2 12 6 - + True 0 Amount: - + GTK_FILL - + True - + 1 2 @@ -83,11 +82,11 @@ - + True 0 Date: - + 1 2 @@ -96,13 +95,13 @@ - + True 3 - + 1 2 @@ -113,11 +112,11 @@ - + True 0 Num: - + 2 3 @@ -126,11 +125,11 @@ - + True True True - + 1 2 @@ -140,11 +139,11 @@ - + True 0 Description: - + 3 4 @@ -153,11 +152,13 @@ - + True True True - + + + 1 2 @@ -167,11 +168,11 @@ - + True 0 Memo: - + 4 5 @@ -180,11 +181,11 @@ - + True True True - + 1 2 @@ -193,7 +194,7 @@ - + 1 2 @@ -202,24 +203,24 @@ GTK_FILL - + False 0 - + True 4 5 6 - + True 0 - + 1 4 @@ -228,12 +229,12 @@ - + True 0 <b>Transfer From</b> True - + 2 GTK_FILL @@ -241,32 +242,32 @@ - + True 12 - + True 0 Currency: center - + False 0 - + True 1 center - + 1 - + 1 2 @@ -277,14 +278,14 @@ - + Show Income/Expense True True False True True - + 1 2 @@ -295,11 +296,11 @@ - + True 0 - + 2 3 @@ -309,12 +310,12 @@ - + True 0 <b>Transfer To</b> True - + 3 5 @@ -323,11 +324,11 @@ - + True 0 - + 3 4 @@ -338,32 +339,32 @@ - + True 12 - + True 0 Currency: center - + False 0 - + True 1 center - + 1 - + 4 5 @@ -374,14 +375,14 @@ - + Show Income/Expense True True False True True - + 4 5 @@ -392,7 +393,7 @@ - + True True automatic @@ -401,7 +402,7 @@ - + 4 5 @@ -410,7 +411,7 @@ - + True True automatic @@ -419,7 +420,7 @@ - + 1 2 @@ -427,24 +428,24 @@ 2 - + 1 - + True 2 2 6 - + True 0 <b>Currency Transfer</b> True - + 2 GTK_FILL @@ -452,11 +453,11 @@ - + True 0 - + 1 2 @@ -465,14 +466,14 @@ - + True 2 4 12 6 - + Exchange Rate: True True @@ -480,19 +481,19 @@ True True True - + GTK_FILL - + True - + 1 2 @@ -500,11 +501,11 @@ - + True 0 center - + 2 3 @@ -513,7 +514,7 @@ - + To Amount: True True @@ -521,7 +522,8 @@ True True price_radio - + + 1 2 @@ -530,12 +532,12 @@ - + True - + 1 2 @@ -546,11 +548,11 @@ - + True 0 center - + 2 3 @@ -561,25 +563,26 @@ - + True True True False + - + True 0 0 - + True 2 - + True gtk-connect - + False False @@ -587,22 +590,22 @@ - + True _Fetch Rate True - + False False 1 - + - + - + 3 4 @@ -613,7 +616,7 @@ - + 1 2 @@ -622,31 +625,30 @@ GTK_FILL - + False 2 - + 1 - + True end - + gtk-cancel - -6 True True True False True - + False False @@ -654,30 +656,33 @@ - + gtk-ok - -5 True True True True False True - + False False 1 - + False end 0 - + - - + + button + button1 + + +