/** * Show a dialog to set wether we want the rows/columns lines, * the background color, the titles... * * \param operation GtkPrintOperation responsible of this job. * \param null Not used. * * \return A newly allocated widget. */ GtkWidget * print_transactions_list_layout_config ( GtkPrintOperation * operation, gpointer null ) { GtkWidget *check_button; GtkWidget *label; GtkWidget *hbox; GtkWidget *entry; GtkWidget *font_button_transactions; GtkWidget *font_button_title; gchar *fontname_transactions; gchar *fontname_title; GtkWidget *init_date_entry; GtkWidget *final_date_entry; GtkWidget *vbox; GtkWidget *paddingbox; GtkSizeGroup * size_group; size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); vbox = gtk_vbox_new ( FALSE, 6 ); gtk_container_set_border_width ( GTK_CONTAINER(vbox), 12 ); paddingbox = new_paddingbox_with_title ( vbox, FALSE, _("Layout") ); /* set up the title and dates, this is never saved, so ask each time */ /* title line */ hbox = gtk_hbox_new (FALSE, 10); gtk_box_pack_start (GTK_BOX (paddingbox), hbox, FALSE, FALSE, 0); entry = gsb_automem_entry_new (&title_string, NULL, NULL); check_button = gsb_autofunc_checkbutton_new (_("Print a title: "), gsb_data_print_config_get_draw_title (), G_CALLBACK (sens_desensitive_pointeur), entry, G_CALLBACK (gsb_data_print_config_set_draw_title), 0); gtk_box_pack_start (GTK_BOX (hbox), check_button, FALSE, FALSE, 0); gtk_widget_set_sensitive (entry, gsb_data_print_config_get_draw_title ()); gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0); /* add the dates interval */ hbox = gtk_hbox_new (FALSE, 10); check_button = gsb_autofunc_checkbutton_new (_("Select dates interval: "), gsb_data_print_config_get_draw_interval_dates (), G_CALLBACK (sens_desensitive_pointeur), hbox, G_CALLBACK (gsb_data_print_config_set_draw_interval_dates), 0); gtk_box_pack_start (GTK_BOX (paddingbox), check_button, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (paddingbox), hbox, FALSE, FALSE, 0); label = gtk_label_new (_("Initial date : ")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); init_date_entry = gsb_calendar_entry_new (FALSE); if (draw_initial_date) gsb_calendar_entry_set_date (init_date_entry, draw_initial_date); gtk_box_pack_start (GTK_BOX (hbox), init_date_entry, FALSE, FALSE, 0); label = gtk_label_new (_("Final date : ")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); final_date_entry = gsb_calendar_entry_new (FALSE); if (draw_final_date) gsb_calendar_entry_set_date (final_date_entry, draw_final_date); gtk_box_pack_start (GTK_BOX (hbox), final_date_entry, FALSE, FALSE, 0); g_object_set_data ( G_OBJECT ( operation ), "init_date_entry", init_date_entry ); g_object_set_data ( G_OBJECT ( operation ), "final_date_entry", final_date_entry ); check_button = gsb_autofunc_checkbutton_new (_("Use value date"), gsb_data_print_config_get_draw_dates_are_value_dates (), NULL, NULL, G_CALLBACK (gsb_data_print_config_set_draw_dates_are_value_dates), 0); gtk_box_pack_start (GTK_BOX (hbox), check_button, FALSE, FALSE, 0); if (!gsb_data_print_config_get_draw_interval_dates ()) gtk_widget_set_sensitive (hbox, FALSE); /* set up all the checkbuttons */ check_button = gsb_autofunc_checkbutton_new (_("Draw the lines between transactions"), gsb_data_print_config_get_draw_lines (), NULL, NULL, G_CALLBACK (gsb_data_print_config_set_draw_lines), 0); gtk_box_pack_start (GTK_BOX (paddingbox), check_button, FALSE, FALSE, 0); check_button = gsb_autofunc_checkbutton_new (_("Draw the lines between the columns"), gsb_data_print_config_get_draw_column (), NULL, NULL, G_CALLBACK (gsb_data_print_config_set_draw_column), 0); gtk_box_pack_start (GTK_BOX (paddingbox), check_button, FALSE, FALSE, 0); check_button = gsb_autofunc_checkbutton_new (_("Fill the background as the transactions list"), gsb_data_print_config_get_draw_background (), NULL, NULL, G_CALLBACK (gsb_data_print_config_set_draw_background), 0); gtk_box_pack_start (GTK_BOX (paddingbox), check_button, FALSE, FALSE, 0); check_button = gsb_autofunc_checkbutton_new (_("Print the archives lines"), gsb_data_print_config_get_draw_archives (), NULL, NULL, G_CALLBACK (gsb_data_print_config_set_draw_archives), 0); gtk_box_pack_start (GTK_BOX (paddingbox), check_button, FALSE, FALSE, 0); check_button = gsb_autofunc_checkbutton_new (_("Print the names of the columns"), gsb_data_print_config_get_draw_columns_name (), NULL, NULL, G_CALLBACK (gsb_data_print_config_set_draw_columns_name), 0); gtk_box_pack_start (GTK_BOX (paddingbox), check_button, FALSE, FALSE, 0); paddingbox = new_paddingbox_with_title ( vbox, FALSE, _("Fonts") ); /* set up the font of the transactions, * by default use the font of the lists */ hbox = gtk_hbox_new (FALSE, 12); gtk_box_pack_start (GTK_BOX (paddingbox), hbox, FALSE, FALSE, 0); label = gtk_label_new (_("Transactions font")); gtk_label_set_justify ( GTK_LABEL (label), GTK_JUSTIFY_LEFT ); gtk_misc_set_alignment ( GTK_MISC ( label ), 0, 0.5); gtk_size_group_add_widget ( size_group, label ); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); fontname_transactions = pango_font_description_to_string (gsb_data_print_config_get_font_transactions ()); font_button_transactions = gtk_font_button_new_with_font ( fontname_transactions ); gtk_font_button_set_use_font ( GTK_FONT_BUTTON(font_button_transactions), TRUE ); gtk_font_button_set_use_size ( GTK_FONT_BUTTON(font_button_transactions), TRUE ); gtk_font_button_set_title ( GTK_FONT_BUTTON(font_button_transactions), _("Choosing font") ); gtk_box_pack_start (GTK_BOX (hbox), font_button_transactions, TRUE, TRUE, 0); /* set up the font for the title */ hbox = gtk_hbox_new (FALSE, 12); gtk_box_pack_start (GTK_BOX (paddingbox), hbox, FALSE, FALSE, 0); label = gtk_label_new (_("Title font")); gtk_label_set_justify ( GTK_LABEL (label), GTK_JUSTIFY_LEFT ); gtk_misc_set_alignment ( GTK_MISC ( label ), 0, 0.5); gtk_size_group_add_widget ( size_group, label ); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); fontname_title = pango_font_description_to_string (gsb_data_print_config_get_font_title ()); font_button_title = gtk_font_button_new_with_font ( fontname_title ); gtk_font_button_set_use_font ( GTK_FONT_BUTTON(font_button_title), TRUE ); gtk_font_button_set_use_size ( GTK_FONT_BUTTON(font_button_title), TRUE ); gtk_font_button_set_title ( GTK_FONT_BUTTON(font_button_title), _("Choosing font") ); gtk_box_pack_start (GTK_BOX (hbox), font_button_title, TRUE, TRUE, 0); /* save what we have done in all cases, so if we cancel and come back, our values * come back */ gsb_data_print_config_set_font_transaction (pango_font_description_from_string (fontname_transactions)); gsb_data_print_config_set_font_title (pango_font_description_from_string (fontname_title)); draw_initial_date = gsb_calendar_entry_get_date (init_date_entry); draw_final_date = gsb_calendar_entry_get_date (final_date_entry); g_object_set_data ( G_OBJECT(operation), "font_transaction_button", font_button_transactions ); g_object_set_data ( G_OBJECT(operation), "font_title_button", font_button_title ); gtk_widget_show_all ( vbox ); return vbox; }
/** * Creates the "Financial years" tab. It creates a financial years * list and then a form that allows to edit selected financial year. * * \param * * \returns A newly allocated vbox */ GtkWidget *gsb_fyear_config_create_page ( void ) { GtkWidget *vbox_pref, *label; GtkWidget *scrolled_window, *vbox, *hbox; GtkWidget *paddingbox, *table; GtkWidget *tree_view; GtkTreeModel *tree_model; GtkWidget *entry; GtkWidget *button; vbox_pref = new_vbox_with_title_and_icon ( _("Financial years"), "financial-years.png" ); paddingbox = new_paddingbox_with_title ( vbox_pref, TRUE, _("Known financial years") ); hbox = gtk_hbox_new ( FALSE, 5 ); gtk_box_pack_start ( GTK_BOX ( paddingbox ), hbox, TRUE, TRUE, 0); /* Create financial years list */ scrolled_window = gtk_scrolled_window_new ( NULL, NULL ); gtk_box_pack_start ( GTK_BOX ( hbox ), scrolled_window, TRUE, TRUE, 0); gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW ( scrolled_window ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); tree_view = gsb_fyear_config_create_list (); tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view)); gtk_container_add ( GTK_CONTAINER ( scrolled_window ), tree_view); g_signal_connect ( gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)), "changed", G_CALLBACK (gsb_fyear_config_select), NULL ); /* Do not activate unless an account is opened */ if ( gsb_data_account_get_accounts_amount () ) gsb_fyear_config_fill_list (tree_model); else gtk_widget_set_sensitive ( vbox_pref, FALSE ); /* Order buttons in a vbox */ vbox = gtk_vbox_new ( FALSE, 5 ); gtk_box_pack_start ( GTK_BOX ( hbox ), vbox, FALSE, FALSE, 0 ); /* Add button */ button = gtk_button_new_from_stock (GTK_STOCK_ADD); g_signal_connect_swapped ( G_OBJECT (button), "clicked", G_CALLBACK (gsb_fyear_config_add_fyear), tree_view ); gtk_box_pack_start ( GTK_BOX ( vbox ), button, FALSE, FALSE, 5 ); /* Remove button */ button = gtk_button_new_from_stock (GTK_STOCK_REMOVE); gtk_widget_set_sensitive ( button, FALSE ); g_object_set_data ( G_OBJECT (tree_model), "remove_fyear_button", button ); g_signal_connect_swapped ( G_OBJECT (button), "clicked", G_CALLBACK (gsb_fyear_config_remove_fyear), tree_view ); gtk_box_pack_start ( GTK_BOX ( vbox ), button, FALSE, FALSE, 5 ); /* Associate operations : under the list */ hbox = gtk_hbox_new ( FALSE, 5 ); gtk_box_pack_start ( GTK_BOX ( paddingbox ), hbox, FALSE, FALSE, 0); button = gtk_button_new_with_label ( _("Associate operations without financial years") ); g_signal_connect ( G_OBJECT ( button ), "clicked", G_CALLBACK ( gsb_fyear_config_associate_transactions ), NULL ); gtk_box_pack_start ( GTK_BOX (hbox), button, FALSE, FALSE, 5 ); gtk_widget_show ( button ); /* Financial year details */ paddingbox = new_paddingbox_with_title ( vbox_pref, FALSE, _("Financial year details") ); g_object_set_data ( G_OBJECT (tree_model), "paddingbox_details", paddingbox ); /* create a hbox, the table on the left * and the warning on the right */ hbox = gtk_hbox_new ( FALSE, 0); gtk_box_pack_start ( GTK_BOX (paddingbox), hbox, FALSE, FALSE, 0 ); /* Put stuff in a table */ table = gtk_table_new ( 2, 2, FALSE ); gtk_table_set_row_spacings ( GTK_TABLE ( table ), 6 ); gtk_table_set_col_spacings ( GTK_TABLE ( table ), 6 ); gtk_box_pack_start ( GTK_BOX (hbox), table, FALSE, FALSE, 0 ); /* Financial year name */ label = gtk_label_new ( _("Name: ") ); gtk_misc_set_alignment (GTK_MISC (label), 0, 1); gtk_label_set_justify ( GTK_LABEL(label), GTK_JUSTIFY_RIGHT ); gtk_table_attach ( GTK_TABLE ( table ), label, 0, 1, 0, 1, GTK_SHRINK | GTK_FILL, 0, 0, 0 ); entry = gsb_autofunc_entry_new ( NULL, G_CALLBACK (gsb_fyear_config_modify_fyear), tree_view, G_CALLBACK (gsb_data_fyear_set_name), 0 ); g_object_set_data ( G_OBJECT (tree_model), "fyear_name_entry", entry ); gtk_table_attach ( GTK_TABLE ( table ), entry, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0 ); /* Start */ label = gtk_label_new ( _("Start: ") ); gtk_misc_set_alignment (GTK_MISC (label), 0, 1); gtk_label_set_justify ( GTK_LABEL(label), GTK_JUSTIFY_RIGHT ); gtk_table_attach ( GTK_TABLE ( table ), label, 0, 1, 1, 2, GTK_SHRINK | GTK_FILL, 0, 0, 0 ); entry = gsb_autofunc_date_new ( NULL, G_CALLBACK (gsb_fyear_config_modify_fyear), tree_view, G_CALLBACK (gsb_data_fyear_set_beginning_date), 0 ); g_object_set_data ( G_OBJECT (tree_model), "fyear_begin_date_entry", entry ); gtk_table_attach ( GTK_TABLE ( table ), entry, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0 ); /* End */ label = gtk_label_new ( _("End: ") ); gtk_misc_set_alignment (GTK_MISC (label), 0, 1); gtk_label_set_justify ( GTK_LABEL(label), GTK_JUSTIFY_RIGHT ); gtk_table_attach ( GTK_TABLE ( table ), label, 0, 1, 2, 3, GTK_SHRINK | GTK_FILL, 0, 0, 0 ); entry = gsb_autofunc_date_new ( NULL, G_CALLBACK (gsb_fyear_config_modify_fyear), tree_view, G_CALLBACK (gsb_data_fyear_set_end_date), 0 ); g_object_set_data ( G_OBJECT (tree_model), "fyear_end_date_entry", entry ); gtk_table_attach ( GTK_TABLE ( table ), entry, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0 ); /* label showed if the fyear is invalid */ label = gtk_label_new (NULL); g_object_set_data ( G_OBJECT (tree_model), "invalid_label", label ); gtk_box_pack_start ( GTK_BOX (hbox), label, FALSE, FALSE, 0 ); /* Activate in transaction form? */ button = gsb_autofunc_checkbutton_new ( _("Activate financial year in transaction form"), FALSE, NULL, NULL, G_CALLBACK (gsb_data_fyear_set_form_show), 0); g_object_set_data ( G_OBJECT (tree_model), "fyear_show_button", button ); gtk_box_pack_start ( GTK_BOX (paddingbox), button, FALSE, FALSE, 0 ); gtk_widget_set_sensitive (paddingbox, FALSE ); return ( vbox_pref ); }
/** * Creates the "Payment methods" tab. It uses a nice GtkTreeView. * * \param * * \returns A newly allocated vbox */ GtkWidget *gsb_payment_method_config_create ( void ) { GtkWidget *vbox_pref, *hbox, *scrolled_window, *paddingbox; GtkWidget *vbox, *table, *menu, *item, *label; GtkTreeViewColumn *column; GtkCellRenderer *cell; GtkWidget *bouton_ajouter_type; GtkTreeStore *payment_method_model; gint width_entry = 80; /* Now we have a model, create view */ vbox_pref = new_vbox_with_title_and_icon ( _("Payment methods"), "payment.png" ); /* Known payment methods */ paddingbox = new_paddingbox_with_title (vbox_pref, TRUE, _("Known payment methods")); hbox = gtk_hbox_new ( FALSE, 6 ); gtk_box_pack_start ( GTK_BOX ( paddingbox ), hbox, TRUE, TRUE, 0 ); /* Create tree */ scrolled_window = gtk_scrolled_window_new ( NULL, NULL ); gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW ( scrolled_window ), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); gtk_scrolled_window_set_shadow_type ( GTK_SCROLLED_WINDOW ( scrolled_window ), GTK_SHADOW_IN); gtk_box_pack_start ( GTK_BOX ( hbox ), scrolled_window, TRUE, TRUE, 0 ); /* Create tree view */ payment_method_model = gtk_tree_store_new (NUM_PAYMENT_METHODS_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INT, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_INT, G_TYPE_INT ); payment_method_treeview = gtk_tree_view_new_with_model ( GTK_TREE_MODEL (payment_method_model) ); g_object_unref (G_OBJECT(payment_method_model)); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (payment_method_treeview), TRUE); g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (payment_method_treeview)), "changed", G_CALLBACK (gsb_payment_method_config_select), payment_method_treeview); /* Account */ cell = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new ( ); gtk_tree_view_column_pack_end ( column, cell, TRUE ); gtk_tree_view_column_set_title ( column, _("Account") ); gtk_tree_view_column_set_attributes (column, cell, "text", PAYMENT_METHODS_NAME_COLUMN, NULL); gtk_tree_view_append_column ( GTK_TREE_VIEW(payment_method_treeview), column); /* Defaults */ cell = gtk_cell_renderer_toggle_new (); g_signal_connect (cell, "toggled", G_CALLBACK (gsb_payment_method_config_toggled), payment_method_treeview); gtk_cell_renderer_toggle_set_radio ( GTK_CELL_RENDERER_TOGGLE(cell), TRUE ); g_object_set (cell, "xalign", 0.5, NULL); column = gtk_tree_view_column_new ( ); gtk_tree_view_column_set_alignment ( column, 0.5 ); gtk_tree_view_column_pack_end ( column, cell, TRUE ); gtk_tree_view_column_set_title ( column, _("Default") ); gtk_tree_view_column_set_attributes (column, cell, "active", PAYMENT_METHODS_DEFAULT_COLUMN, "activatable", PAYMENT_METHODS_ACTIVABLE_COLUMN, "visible", PAYMENT_METHODS_VISIBLE_COLUMN, NULL); gtk_tree_view_append_column ( GTK_TREE_VIEW(payment_method_treeview), column); /* Numbering */ cell = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new ( ); gtk_tree_view_column_pack_end ( column, cell, TRUE ); gtk_tree_view_column_set_title ( column, _("Numbering") ); gtk_tree_view_column_set_attributes (column, cell, "text", PAYMENT_METHODS_NUMBERING_COLUMN, NULL); gtk_tree_view_append_column ( GTK_TREE_VIEW(payment_method_treeview), column); /* expand all rows after the treeview widget has been realized */ g_signal_connect (payment_method_treeview, "realize", G_CALLBACK (gtk_tree_view_expand_all), NULL); gtk_container_add ( GTK_CONTAINER ( scrolled_window ), payment_method_treeview ); gsb_payment_method_config_fill_list (GTK_TREE_MODEL (payment_method_model)); /* Create "Add" & "Remove" buttons */ vbox = gtk_vbox_new ( FALSE, 6 ); gtk_box_pack_start ( GTK_BOX ( hbox ), vbox, FALSE, FALSE, 0 ); /* "Add payment method" button */ bouton_ajouter_type = gtk_button_new_from_stock (GTK_STOCK_ADD); gtk_button_set_relief ( GTK_BUTTON ( bouton_ajouter_type ), GTK_RELIEF_NONE ); g_signal_connect ( G_OBJECT ( bouton_ajouter_type ), "clicked", G_CALLBACK (gsb_payment_method_config_add), payment_method_treeview ); gtk_box_pack_start ( GTK_BOX ( vbox ), bouton_ajouter_type, TRUE, FALSE, 5 ); /* "Remove payment method" button */ payment_remove_button = gtk_button_new_from_stock (GTK_STOCK_REMOVE); gtk_button_set_relief ( GTK_BUTTON ( payment_remove_button ), GTK_RELIEF_NONE ); gtk_widget_set_sensitive ( payment_remove_button, FALSE ); g_signal_connect ( G_OBJECT ( payment_remove_button ), "clicked", G_CALLBACK (gsb_payment_method_config_remove), payment_method_treeview ); gtk_box_pack_start ( GTK_BOX ( vbox ), payment_remove_button, TRUE, FALSE, 5 ); /* Payment method details */ details_paddingbox = new_paddingbox_with_title (vbox_pref, FALSE, _("Payment method details")); gtk_widget_set_sensitive ( details_paddingbox, FALSE ); /* Payment method name */ table = gtk_table_new ( 3, 3, FALSE ); gtk_table_set_col_spacings ( GTK_TABLE ( table ), 6 ); gtk_table_set_row_spacings ( GTK_TABLE ( table ), 6 ); gtk_box_pack_start ( GTK_BOX ( details_paddingbox ), table, TRUE, TRUE, 6 ); label = gtk_label_new ( _("Name: ") ); gtk_misc_set_alignment (GTK_MISC (label), 0, 1); gtk_label_set_justify ( GTK_LABEL(label), GTK_JUSTIFY_RIGHT ); gtk_table_attach ( GTK_TABLE ( table ), label, 0, 1, 0, 1, GTK_SHRINK | GTK_FILL, 0, 0, 0 ); payment_name_entry = gsb_autofunc_entry_new ( NULL, G_CALLBACK (gsb_payment_method_config_name_changed), payment_method_treeview, G_CALLBACK (gsb_data_payment_set_name), 0 ); gtk_widget_set_size_request ( payment_name_entry, width_entry, -1 ); gtk_table_attach ( GTK_TABLE ( table ), payment_name_entry, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 0, 0 ); /* button show entry, automatic numbering button will be shown only if entry is showed */ button_show_entry = gsb_autofunc_checkbutton_new ( _("Need entry field"), FALSE, G_CALLBACK (gsb_payment_method_config_show_entry_changed), payment_method_treeview, G_CALLBACK (gsb_data_payment_set_show_entry), 0 ); gtk_table_attach ( GTK_TABLE ( table ), button_show_entry, 2, 3, 0, 1, GTK_SHRINK | GTK_FILL, 0, 0, 0 ); /* Automatic numbering */ label = gtk_label_new ( _("Automatic numbering: ") ); gtk_misc_set_alignment (GTK_MISC (label), 0, 1); gtk_label_set_justify ( GTK_LABEL(label), GTK_JUSTIFY_RIGHT ); gtk_table_attach ( GTK_TABLE ( table ), label, 0, 1, 1, 2, GTK_SHRINK | GTK_FILL, 0, 0, 0 ); payment_last_number_entry = gsb_autofunc_spin_new ( 0, G_CALLBACK (gsb_payment_method_config_auto_entry_changed), payment_method_treeview, G_CALLBACK (gsb_data_payment_set_last_number_from_int), 0 ); gtk_widget_set_size_request ( payment_last_number_entry, width_entry, -1 ); gtk_table_attach ( GTK_TABLE ( table ), payment_last_number_entry, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 0, 0 ); /* button automatic numbering, activate it sensitive the automatic numbering entry */ button_auto_numbering = gsb_autofunc_checkbutton_new ( _("Activate"), FALSE, G_CALLBACK (gsb_payment_method_config_auto_button_changed), payment_method_treeview, G_CALLBACK (gsb_data_payment_set_automatic_numbering), 0 ); gtk_table_attach ( GTK_TABLE ( table ), button_auto_numbering, 2, 3, 1, 2, GTK_SHRINK | GTK_FILL, 0, 0, 0 ); /* Payment method method_ptr */ label = gtk_label_new ( _("Type: ") ); gtk_misc_set_alignment (GTK_MISC (label), 0, 1); gtk_label_set_justify ( GTK_LABEL(label), GTK_JUSTIFY_RIGHT ); gtk_table_attach ( GTK_TABLE ( table ), label, 0, 1, 2, 3, GTK_SHRINK | GTK_FILL, 0, 0, 0 ); /* Create menu */ payment_sign_button = gtk_option_menu_new (); menu = gtk_menu_new(); /* Neutral method_ptr */ item = gtk_menu_item_new_with_label ( _("Neutral") ); g_signal_connect ( G_OBJECT ( item ), "activate", G_CALLBACK ( gsb_payment_method_config_sign_changed ), GINT_TO_POINTER (GSB_PAYMENT_NEUTRAL)); gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), item ); /* Debit method_ptr */ item = gtk_menu_item_new_with_label ( _("Debit") ); g_signal_connect ( G_OBJECT ( item ), "activate", G_CALLBACK ( gsb_payment_method_config_sign_changed ), GINT_TO_POINTER (GSB_PAYMENT_DEBIT)); gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), item ); /* Credit method_ptr */ item = gtk_menu_item_new_with_label ( _("Credit") ); g_signal_connect ( G_OBJECT ( item ), "activate", G_CALLBACK ( gsb_payment_method_config_sign_changed ), GINT_TO_POINTER (GSB_PAYMENT_CREDIT)); gtk_menu_shell_append ( GTK_MENU_SHELL ( menu ), item ); /* Set menu */ gtk_option_menu_set_menu ( GTK_OPTION_MENU ( payment_sign_button ), menu ); gtk_table_attach ( GTK_TABLE ( table ), payment_sign_button, 1, 3, 2, 3, GTK_EXPAND | GTK_FILL, 0, 0, 0 ); /** Do not set this tab sensitive is no account file is opened. */ if ( !gsb_data_account_get_accounts_amount () ) { gtk_widget_set_sensitive ( vbox_pref, FALSE ); } return ( vbox_pref ); }