void gnc_totd_dialog (GtkWindow *parent, gboolean startup) { TotdDialog *totd_dialog; GtkBuilder *builder; GtkWidget *dialog, *button; GtkTextView *textview; gboolean show_tips; totd_dialog = g_new0 (TotdDialog, 1); show_tips = gnc_prefs_get_bool(GNC_PREFS_GROUP, GNC_PREF_SHOW_TIPS); if (startup && !show_tips) return; if (tip_count == -1) { if (!gnc_totd_initialize()) return; current_tip_number = gnc_prefs_get_int(GNC_PREFS_GROUP, GNC_PREF_CURRENT_TIP); } if (gnc_forall_gui_components(DIALOG_TOTD_CM_CLASS, show_handler, NULL)) { return; } builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-totd.glade", "totd_dialog"); dialog = GTK_WIDGET(gtk_builder_get_object (builder, "totd_dialog")); gtk_window_set_transient_for(GTK_WINDOW (dialog), parent); totd_dialog->dialog = dialog; ENTER("totd_dialog %p, dialog %p", totd_dialog, dialog); gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, totd_dialog); button = GTK_WIDGET(gtk_builder_get_object (builder, "show_checkbutton")); totd_dialog->showcheck_button = button; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (button), show_tips); textview = GTK_TEXT_VIEW(gtk_builder_get_object (builder, "tip_textview")); totd_dialog->textview = textview; gnc_new_tip_number(totd_dialog, 1); gnc_restore_window_size(GNC_PREFS_GROUP, GTK_WINDOW(totd_dialog->dialog)); gtk_widget_show(GTK_WIDGET (totd_dialog->dialog)); gnc_register_gui_component(DIALOG_TOTD_CM_CLASS, NULL, close_handler, totd_dialog); g_object_unref(G_OBJECT(builder)); LEAVE(""); }
static void gnc_commodities_dialog_create (GtkWidget * parent, CommoditiesDialog *cd) { GtkWidget *button; GtkWidget *scrolled_window; GtkBuilder *builder; GtkTreeView *view; GtkTreeSelection *selection; builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-commodities.glade", "securities_dialog"); cd->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "securities_dialog")); cd->session = gnc_get_current_session(); cd->book = qof_session_get_book(cd->session); cd->show_currencies = gnc_prefs_get_bool(GNC_PREFS_GROUP, GNC_PREF_INCL_ISO); // Set the style context for this dialog so it can be easily manipulated with css gnc_widget_set_style_context (GTK_WIDGET(cd->dialog), "GncCommoditiesDialog"); gtk_builder_connect_signals(builder, cd); /* parent */ if (parent != NULL) gtk_window_set_transient_for (GTK_WINDOW (cd->dialog), GTK_WINDOW (parent)); /* buttons */ cd->remove_button = GTK_WIDGET(gtk_builder_get_object (builder, "remove_button")); cd->edit_button = GTK_WIDGET(gtk_builder_get_object (builder, "edit_button")); /* commodity tree */ scrolled_window = GTK_WIDGET(gtk_builder_get_object (builder, "commodity_list_window")); view = gnc_tree_view_commodity_new(cd->book, "state-section", STATE_SECTION, "show-column-menu", TRUE, NULL); cd->commodity_tree = GNC_TREE_VIEW_COMMODITY(view); gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET(view)); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(cd->commodity_tree), TRUE); gnc_tree_view_commodity_set_filter (cd->commodity_tree, gnc_commodities_dialog_filter_ns_func, gnc_commodities_dialog_filter_cm_func, cd, NULL); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (gnc_commodities_dialog_selection_changed), cd); g_signal_connect (G_OBJECT (cd->commodity_tree), "row-activated", G_CALLBACK (row_activated_cb), cd); /* Show currency button */ button = GTK_WIDGET(gtk_builder_get_object (builder, "show_currencies_button")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(button), cd->show_currencies); g_object_unref(G_OBJECT(builder)); gnc_restore_window_size (GNC_PREFS_GROUP, GTK_WINDOW(cd->dialog), GTK_WINDOW(parent)); }
static void reset_dialog(GncGWENGui *gui) { gboolean cache_passwords; g_return_if_fail(gui); ENTER("gui=%p", gui); gtk_entry_set_text(GTK_ENTRY(gui->top_entry), ""); gtk_entry_set_text(GTK_ENTRY(gui->second_entry), ""); g_list_foreach(gui->progresses, (GFunc) free_progress, NULL); g_list_free(gui->progresses); gui->progresses = NULL; if (gui->other_entries_box) { gtk_table_resize(GTK_TABLE(gui->entries_table), OTHER_ENTRIES_ROW_OFFSET, 2); gtk_widget_destroy(gui->other_entries_box); gui->other_entries_box = NULL; } if (gui->showbox_hash) g_hash_table_destroy(gui->showbox_hash); gui->showbox_last = NULL; gui->showbox_hash = g_hash_table_new_full( NULL, NULL, NULL, (GDestroyNotify) gtk_widget_destroy); if (gui->parent) gtk_window_set_transient_for(GTK_WINDOW(gui->dialog), GTK_WINDOW(gui->parent)); gnc_restore_window_size(GCONF_SECTION_CONNECTION, GTK_WINDOW(gui->dialog)); gui->keep_alive = TRUE; gui->state = INIT; gui->min_loglevel = GWEN_LoggerLevel_Verbous; cache_passwords = gnc_gconf_get_bool(GCONF_SECTION_AQBANKING, KEY_REMEMBER_PIN, NULL); enable_password_cache(gui, cache_passwords); if (!gui->accepted_certs) gui->accepted_certs = g_hash_table_new_full( g_str_hash, g_str_equal, (GDestroyNotify) g_free, NULL); if (!gui->permanently_accepted_certs) gui->permanently_accepted_certs = gnc_ab_get_permanent_certs(); LEAVE(" "); }
/* Internal function that builds the dialog */ static CustomReportDialog *gnc_ui_custom_report_internal(GncMainWindow * window) { GtkBuilder *builder; CustomReportDialog *crd; GtkTreeIter iter; GtkTreeModel *model; GtkWidget *no_report_notification; crd = g_new0(CustomReportDialog, 1); builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-custom-report.glade", "custom_report_dialog"); crd->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "custom_report_dialog")); crd->reportview = GTK_WIDGET(gtk_builder_get_object (builder, "custom_report_list_view")); no_report_notification = GTK_WIDGET(gtk_builder_get_object (builder, "label2")); set_reports_view_and_model(crd); crd->window = window; gnc_restore_window_size (GNC_PREFS_GROUP_REPORT_SAVED_CONFIGS, GTK_WINDOW(crd->dialog)); /* connect the signals */ gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, crd); gtk_widget_show_all(crd->dialog); /* check if there are currently saved reports available * by checking if there is a first element */ model = gtk_tree_view_get_model (GTK_TREE_VIEW (crd->reportview)); if (gtk_tree_model_get_iter_first (model, &iter)) { /* saved reports available -> hide the "no reports available" notification */ gtk_widget_hide(no_report_notification); } else { /* hide the scrolled window of the report list */ gtk_widget_hide(crd->reportview); } g_object_unref(G_OBJECT(builder)); return crd; }
/* This function creates the preferences dialog and presents it to * the user. The preferences dialog is a singleton, so if a * preferences dialog already exists it will be raised to the top of * the window stack instead of creating a new dialog. */ void gnc_preferences_dialog (void) { GtkWidget *dialog; ENTER(""); if (gnc_forall_gui_components(DIALOG_PREFERENCES_CM_CLASS, show_handler, NULL)) { LEAVE("existing window"); return; } dialog = gnc_preferences_dialog_create(); gnc_restore_window_size(GNC_PREFS_GROUP, GTK_WINDOW(dialog)); gtk_widget_show(dialog); gnc_register_gui_component(DIALOG_PREFERENCES_CM_CLASS, NULL, close_handler, dialog); LEAVE(" "); }
/********************************************************************\ * init_match_picker_gui() * -- GUI initialization for the Match_Picker Dialog \********************************************************************/ static void init_match_picker_gui(GNCImportMatchPicker * matcher) { GtkBuilder *builder; /* DEBUG("Begin..."); */ /* Initialize user Settings. */ matcher->user_settings = gnc_import_Settings_new (); /* load the interface */ builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-import.glade", "match_picker"); g_return_if_fail (builder != NULL); matcher->transaction_matcher = GTK_WIDGET(gtk_builder_get_object (builder, "match_picker")); matcher->downloaded_view = (GtkTreeView *)GTK_WIDGET(gtk_builder_get_object (builder, "download_view")); matcher->match_view = (GtkTreeView *)GTK_WIDGET(gtk_builder_get_object (builder, "matched_view")); gnc_import_match_picker_init_downloaded_view(matcher); gnc_import_match_picker_init_match_view(matcher); /* DEBUG("User prefs:%s%d%s%d%s%d%s%d%s%d", " action_replace_enabled:",matcher->action_replace_enabled, ", action_skip_enabled:",matcher->action_skip_enabled, ", clear_threshold:",matcher->clear_threshold, ", add_threshold:",matcher->add_threshold, ", display_threshold:",matcher->display_threshold); */ gnc_restore_window_size(GCONF_SECTION, GTK_WINDOW (matcher->transaction_matcher)); gtk_widget_show(matcher->transaction_matcher); g_object_unref(G_OBJECT(builder)); }/* end init_match_picker_gui */
static GtkWidget * gnc_create_hierarchy_assistant (gboolean use_defaults, GncHierarchyAssistantFinishedCallback when_completed) { hierarchy_data *data; GtkWidget *dialog; GtkTreeView *tree_view; GtkWidget *box; GtkBuilder *builder; data = g_new0 (hierarchy_data, 1); /* Presumably this assistant is only used to create a new book but we check. * When gnucash is started with --nofile, there is initially no session (and * no book), but by the time we get here, one could have been created (for * example, if an empty account tree tab is opened, a session is created * which creates a new, but empty, book). */ data->new_book = gnc_is_new_book(); builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "assistant-hierarchy.glade", "Hierarchy Assistant"); dialog = GTK_WIDGET(gtk_builder_get_object (builder, "Hierarchy Assistant")); data->dialog = dialog; /* If we have a callback, make this window stay on top */ if (when_completed != NULL) gtk_window_set_keep_above (GTK_WINDOW(data->dialog), TRUE); gnc_assistant_set_colors (GTK_ASSISTANT (data->dialog)); /* Enable buttons on first and last page. */ gtk_assistant_set_page_complete (GTK_ASSISTANT (dialog), GTK_WIDGET(gtk_builder_get_object(builder, "intro_page_label")), TRUE); gtk_assistant_set_page_complete (GTK_ASSISTANT (dialog), GTK_WIDGET(gtk_builder_get_object(builder, "currency_book_option_page_vbox")), TRUE); gtk_assistant_set_page_complete (GTK_ASSISTANT (dialog), GTK_WIDGET(gtk_builder_get_object(builder, "final_account_vbox")), TRUE); gtk_assistant_set_page_complete (GTK_ASSISTANT (dialog), GTK_WIDGET(gtk_builder_get_object(builder, "finish_page_label")), TRUE); /* Currency Page */ data->currency_selector = gnc_currency_edit_new(); gnc_currency_edit_set_currency (GNC_CURRENCY_EDIT(data->currency_selector), gnc_default_currency()); gtk_widget_show (data->currency_selector); box = GTK_WIDGET(gtk_builder_get_object (builder, "currency_chooser_hbox")); gtk_box_pack_start(GTK_BOX(box), data->currency_selector, TRUE, TRUE, 0); /* Categories Page */ tree_view = GTK_TREE_VIEW(gtk_builder_get_object (builder, "account_categories_tree_view")); g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (tree_view)), "changed", G_CALLBACK (categories_tree_selection_changed), data); gtk_tree_selection_set_mode (gtk_tree_view_get_selection (tree_view), GTK_SELECTION_SINGLE); data->categories_tree = tree_view; data->category_accounts_label = GTK_LABEL(gtk_builder_get_object (builder, "accounts_in_category_label")); data->category_accounts_container = GTK_WIDGET(gtk_builder_get_object (builder, "accounts_in_category")); data->category_description = GTK_TEXT_VIEW(gtk_builder_get_object (builder, "account_types_description")); data->account_list_added = FALSE; /* Book options page - only on new books */ if (data->new_book) assistant_instert_book_options_page (data); /* Final Accounts Page */ data->final_account_tree_container = GTK_WIDGET(gtk_builder_get_object (builder, "final_account_tree_box")); data->final_account_tree = NULL; data->balance_hash = g_hash_table_new(NULL, NULL); gnc_restore_window_size (GNC_PREFS_GROUP, GTK_WINDOW(data->dialog)); g_signal_connect (G_OBJECT(dialog), "destroy", G_CALLBACK (gnc_hierarchy_destroy_cb), data); gtk_builder_connect_signals(builder, data); g_object_unref(G_OBJECT(builder)); data->when_completed = when_completed; data->use_defaults = use_defaults; return dialog; }
/******************************************************* * Create the Assistant *******************************************************/ static GtkWidget * csv_import_assistant_create (CsvImportInfo *info) { GtkBuilder *builder; GtkWidget *window; GtkWidget *box, *h_box; GtkWidget *button; GtkCellRenderer *renderer; GtkTreeViewColumn *column; builder = gtk_builder_new(); gnc_builder_add_from_file (builder , "assistant-csv-account-import.glade", "num_hrows_adj"); gnc_builder_add_from_file (builder , "assistant-csv-account-import.glade", "CSV Account Import Assistant"); window = GTK_WIDGET(gtk_builder_get_object (builder, "CSV Account Import Assistant")); info->window = window; /* Set the assistant colors */ gnc_assistant_set_colors (GTK_ASSISTANT (info->window)); /* Load default settings */ load_settings (info); /* Enable buttons on all page. */ gtk_assistant_set_page_complete (GTK_ASSISTANT (window), GTK_WIDGET(gtk_builder_get_object(builder, "start_page")), TRUE); gtk_assistant_set_page_complete (GTK_ASSISTANT (window), GTK_WIDGET(gtk_builder_get_object(builder, "file_page")), FALSE); gtk_assistant_set_page_complete (GTK_ASSISTANT (window), GTK_WIDGET(gtk_builder_get_object(builder, "import_tree_page")), TRUE); gtk_assistant_set_page_complete (GTK_ASSISTANT (window), GTK_WIDGET(gtk_builder_get_object(builder, "end_page")), FALSE); gtk_assistant_set_page_complete (GTK_ASSISTANT (window), GTK_WIDGET(gtk_builder_get_object(builder, "summary_page")), TRUE); /* Start Page */ /* File chooser Page */ info->file_chooser = gtk_file_chooser_widget_new (GTK_FILE_CHOOSER_ACTION_OPEN); g_signal_connect (G_OBJECT (info->file_chooser), "file-activated", G_CALLBACK (csv_import_file_chooser_confirm_cb), info); button = gtk_button_new_from_stock(GTK_STOCK_OK); gtk_widget_set_size_request (button, 100, -1); gtk_widget_show (button); h_box = gtk_hbox_new(TRUE, 0); gtk_box_pack_start(GTK_BOX(h_box), button, FALSE, FALSE, 0); gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER(info->file_chooser), h_box); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (csv_import_file_chooser_confirm_cb), info); box = GTK_WIDGET(gtk_builder_get_object(builder, "file_page")); gtk_box_pack_start (GTK_BOX (box), info->file_chooser, TRUE, TRUE, 6); gtk_widget_show (info->file_chooser); /* Account Tree Page */ info->header_row_spin = GTK_WIDGET(gtk_builder_get_object (builder, "num_hrows")); info->tree_view = GTK_WIDGET(gtk_builder_get_object (builder, "treeview")); info->regexp = g_string_new ( "^(?<type>[^;]*);(?<full_name>[^;]*);(?<name>[^;]*);(?<code>[^;]*);?(?<description>[^;]*);?(?<color>[^;]*);?(?<notes>[^;]*);?(?<commoditym>[^;]*);?(?<commodityn>[^;]*);?(?<hidden>[^;]*);?(?<tax>[^;]*);?(?<place_holder>[^;]*)$"); /* create model and bind to view */ info->store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); gtk_tree_view_set_model( GTK_TREE_VIEW(info->tree_view), GTK_TREE_MODEL(info->store) ); #define CREATE_COLUMN(description,column_id) \ renderer = gtk_cell_renderer_text_new (); \ column = gtk_tree_view_column_new_with_attributes (mnemonic_escape(_(description)), renderer, "text", column_id, NULL); \ gtk_tree_view_column_add_attribute(column, renderer, "background", ROW_COLOR); \ gtk_tree_view_column_set_resizable (column, TRUE); \ gtk_tree_view_append_column (GTK_TREE_VIEW (info->tree_view), column); CREATE_COLUMN ("type", TYPE); CREATE_COLUMN ("full_name", FULL_NAME); CREATE_COLUMN ("name", NAME); CREATE_COLUMN ("code", CODE); CREATE_COLUMN ("description", DESCRIPTION); CREATE_COLUMN ("color", COLOR); CREATE_COLUMN ("notes", NOTES); CREATE_COLUMN ("commoditym", COMMODITYM); CREATE_COLUMN ("commodityn", COMMODITYN); CREATE_COLUMN ("hidden", HIDDEN); CREATE_COLUMN ("tax", TAX); CREATE_COLUMN ("place_holder", PLACE_HOLDER); /* Finish Page */ info->finish_label = GTK_WIDGET(gtk_builder_get_object(builder, "end_page")); /* Summary Page */ info->summary_label = GTK_WIDGET(gtk_builder_get_object(builder, "summary_label")); info->summary_error_view = GTK_WIDGET(gtk_builder_get_object(builder, "summary_error_view")); g_signal_connect (G_OBJECT(window), "destroy", G_CALLBACK (csv_import_assistant_destroy_cb), info); gnc_restore_window_size (GCONF_SECTION, GTK_WINDOW(info->window)); gtk_builder_connect_signals(builder, info); g_object_unref(G_OBJECT(builder)); return window; }
/******************************************************* * Create the Assistant *******************************************************/ static GtkWidget * csv_export_assistant_create (CsvExportInfo *info) { GtkBuilder *builder; GtkWidget *window; GtkWidget *box, *h_box; GtkWidget *button; GtkWidget *table, *hbox; time64 start_time, end_time; builder = gtk_builder_new(); gnc_builder_add_from_file (builder , "assistant-csv-export.glade", "CSV Export Assistant"); window = GTK_WIDGET(gtk_builder_get_object (builder, "CSV Export Assistant")); info->window = window; /* Set the assistant colors */ gnc_assistant_set_colors (GTK_ASSISTANT (info->window)); /* Load default settings */ load_settings (info); /* Start Page */ info->start_page = GTK_WIDGET(gtk_builder_get_object(builder, "start_page")); info->start_label = GTK_WIDGET(gtk_builder_get_object(builder, "start_label")); info->custom_entry = GTK_WIDGET(gtk_builder_get_object(builder, "custom_entry")); gtk_widget_set_sensitive (info->custom_entry, FALSE); /* Account Page */ info->account_page = GTK_WIDGET(gtk_builder_get_object(builder, "account_page")); if (info->export_type == XML_EXPORT_TREE) gtk_widget_destroy (info->account_page); else { GtkTreeView *tree_view; GtkTreeSelection *selection; GtkWidget *box, *label; info->csva.acct_info = GTK_WIDGET(gtk_builder_get_object (builder, "acct_info_vbox")); info->csva.num_acct_label = GTK_WIDGET(gtk_builder_get_object (builder, "num_accounts_label")); tree_view = gnc_tree_view_account_new (FALSE); info->csva.account_treeview = GTK_WIDGET(tree_view); selection = gtk_tree_view_get_selection (tree_view); gtk_tree_selection_set_mode (selection, GTK_SELECTION_EXTENDED); g_signal_connect (G_OBJECT(selection), "changed", G_CALLBACK(csv_export_account_changed_cb), info); gtk_widget_show (info->csva.account_treeview); box = GTK_WIDGET(gtk_builder_get_object (builder, "account_scroll")); gtk_container_add (GTK_CONTAINER(box), info->csva.account_treeview); label = GTK_WIDGET(gtk_builder_get_object (builder, "accounts_label")); gtk_label_set_mnemonic_widget (GTK_LABEL(label), GTK_WIDGET(tree_view)); /* select subaccounts button */ button = GTK_WIDGET(gtk_builder_get_object (builder, "select_subaccounts_button")); info->csva.select_button = button; g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(csv_export_select_subaccounts_clicked_cb), info); g_signal_connect (G_OBJECT(info->csva.account_treeview), "cursor_changed", G_CALLBACK(csv_export_cursor_changed_cb), info); /* Set the date info */ button = GTK_WIDGET(gtk_builder_get_object (builder, "show_range")); /* Earliest and Latest in Book */ start_time = get_earliest_in_book (gnc_get_current_book()); end_time = gnc_time (NULL); info->csvd.start_time = start_time; info->csvd.end_time = end_time; gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(button), FALSE); table = GTK_WIDGET(gtk_builder_get_object (builder, "select_range_table")); info->csvd.table = table; gtk_widget_set_sensitive (GTK_WIDGET(table), FALSE); info->csvd.start_date_choose = GTK_WIDGET(gtk_builder_get_object (builder, "start_date_choose")); info->csvd.start_date_today = GTK_WIDGET(gtk_builder_get_object (builder, "start_date_today")); info->csvd.end_date_choose = GTK_WIDGET(gtk_builder_get_object (builder, "end_date_choose")); info->csvd.end_date_today = GTK_WIDGET(gtk_builder_get_object (builder, "end_date_today")); /* Start date info */ info->csvd.start_date = gnc_date_edit_new (gnc_time (NULL), FALSE, FALSE); hbox = GTK_WIDGET(gtk_builder_get_object (builder, "start_date_hbox")); gtk_box_pack_start (GTK_BOX(hbox), info->csvd.start_date, TRUE, TRUE, 0); gtk_widget_show (info->csvd.start_date); gnc_date_edit_set_time (GNC_DATE_EDIT(info->csvd.start_date), start_time); g_signal_connect (G_OBJECT(info->csvd.start_date), "date-changed", G_CALLBACK(csv_export_date_changed_cb), info); /* End date info */ info->csvd.end_date = gnc_date_edit_new (gnc_time (NULL), FALSE, FALSE); hbox = GTK_WIDGET(gtk_builder_get_object (builder, "end_date_hbox")); gtk_box_pack_start (GTK_BOX(hbox), info->csvd.end_date, TRUE, TRUE, 0); gtk_widget_show (info->csvd.end_date); gnc_date_edit_set_time (GNC_DATE_EDIT(info->csvd.end_date), end_time); g_signal_connect (G_OBJECT (info->csvd.end_date), "date-changed", G_CALLBACK (csv_export_date_changed_cb), info); /* Load Accounts */ show_acct_type_accounts (info); update_accounts_tree (info); } /* File chooser Page */ info->file_page = GTK_WIDGET(gtk_builder_get_object(builder, "file_page")); info->file_chooser = gtk_file_chooser_widget_new (GTK_FILE_CHOOSER_ACTION_SAVE); button = gtk_button_new_from_stock (GTK_STOCK_OK); gtk_widget_set_size_request (button, 100, -1); gtk_widget_show (button); h_box = gtk_hbox_new (TRUE, 0); gtk_box_pack_start(GTK_BOX(h_box), button, FALSE, FALSE, 0); gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER(info->file_chooser), h_box); g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(csv_export_file_chooser_confirm_cb), info); box = GTK_WIDGET(gtk_builder_get_object (builder, "file_page")); gtk_box_pack_start (GTK_BOX (box), info->file_chooser, TRUE, TRUE, 6); gtk_widget_show (info->file_chooser); /* Finish Page */ info->finish_label = GTK_WIDGET(gtk_builder_get_object (builder, "end_page")); /* Summary Page */ info->summary_label = GTK_WIDGET(gtk_builder_get_object (builder, "summary_page")); g_signal_connect (G_OBJECT(window), "destroy", G_CALLBACK(csv_export_assistant_destroy_cb), info); gnc_restore_window_size (GNC_PREFS_GROUP, GTK_WINDOW(info->window)); if (gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL, GNC_PREF_SAVE_GEOMETRY)) { GObject *object = gtk_builder_get_object (builder, "paned"); gnc_prefs_bind (GNC_PREFS_GROUP, GNC_PREF_PANED_POS, object, "position"); } gtk_builder_connect_signals (builder, info); g_object_unref (G_OBJECT(builder)); return window; }
GncSxSinceLastRunDialog* gnc_ui_sx_since_last_run_dialog(GncSxInstanceModel *sx_instances, GList *auto_created_txn_guids) { GncSxSinceLastRunDialog *dialog; GtkBuilder *builder; dialog = g_new0(GncSxSinceLastRunDialog, 1); builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-sx.glade", "since-last-run-dialog"); dialog->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "since-last-run-dialog")); dialog->editing_model = gnc_sx_slr_tree_model_adapter_new(sx_instances); dialog->review_created_txns_toggle = GTK_TOGGLE_BUTTON(gtk_builder_get_object (builder, "review_txn_toggle")); dialog->created_txns = auto_created_txn_guids; { GtkCellRenderer *renderer; GtkTreeViewColumn *col; dialog->instance_view = GTK_TREE_VIEW(gtk_builder_get_object (builder, "instance_view")); gtk_tree_view_set_model(dialog->instance_view, GTK_TREE_MODEL(dialog->editing_model)); renderer = gtk_cell_renderer_text_new(); col = gtk_tree_view_column_new_with_attributes(_("Transaction"), renderer, "text", SLR_MODEL_COL_NAME, NULL); gtk_tree_view_append_column(dialog->instance_view, col); renderer = gtk_cell_renderer_combo_new(); g_object_set(G_OBJECT(renderer), "model", gnc_sx_get_slr_state_model(), "text-column", 0, "has-entry", FALSE, "editable", TRUE, NULL); g_signal_connect(G_OBJECT(renderer), "edited", G_CALLBACK(instance_state_changed_cb), dialog); col = gtk_tree_view_column_new_with_attributes(_("Status"), renderer, "text", SLR_MODEL_COL_INSTANCE_STATE, "visible", SLR_MODEL_COL_INSTANCE_VISIBILITY, // you might think only "sensitive" is required to // control the ability of the combo box to select // a new state, but you'd be wrong. "editable", SLR_MODEL_COL_INSTANCE_STATE_SENSITIVITY, "sensitive", SLR_MODEL_COL_INSTANCE_STATE_SENSITIVITY, NULL); gtk_tree_view_append_column(dialog->instance_view, col); renderer = gtk_cell_renderer_text_new(); g_object_set(G_OBJECT(renderer), "editable", TRUE, NULL); g_signal_connect(G_OBJECT(renderer), "edited", G_CALLBACK(variable_value_changed_cb), dialog); col = gtk_tree_view_column_new_with_attributes(_("Value"), renderer, "text", SLR_MODEL_COL_VARAIBLE_VALUE, "visible", SLR_MODEL_COL_VARIABLE_VISIBILITY, NULL); gtk_tree_view_append_column(dialog->instance_view, col); gtk_tree_view_expand_all(dialog->instance_view); } g_signal_connect(G_OBJECT(dialog->dialog), "response", G_CALLBACK(dialog_response_cb), dialog); g_signal_connect(G_OBJECT(dialog->dialog), "destroy", G_CALLBACK(dialog_destroy_cb), dialog); gnc_restore_window_size(GNC_PREFS_GROUP_STARTUP, GTK_WINDOW(dialog->dialog)); dialog->component_id = gnc_register_gui_component (DIALOG_SX_SINCE_LAST_RUN_CM_CLASS, NULL, close_handler, dialog); gnc_gui_component_set_session(dialog->component_id, gnc_get_current_session()); gtk_widget_show_all(dialog->dialog); gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, dialog); g_object_unref(G_OBJECT(builder)); return dialog; }
/* Internal function that builds the dialog */ static CustomReportDialog * gnc_ui_custom_report_internal(GncMainWindow * window) { GtkBuilder *builder; CustomReportDialog *crd; GtkTreeIter iter; GtkTreeModel *model; GtkWidget *no_report_notification; GtkWidget *scroll_window; GtkWidget *vscroll; GtkRequisition nat_sb; crd = g_new0(CustomReportDialog, 1); builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-custom-report.glade", "custom_report_dialog"); crd->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "custom_report_dialog")); crd->reportview = GTK_WIDGET(gtk_builder_get_object (builder, "custom_report_list_view")); scroll_window = GTK_WIDGET(gtk_builder_get_object (builder, "custom_report_sw")); no_report_notification = GTK_WIDGET(gtk_builder_get_object (builder, "label2")); set_reports_view_and_model(crd); crd->window = window; // get the vertical scroll bar width vscroll = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (scroll_window)); gtk_widget_get_preferred_size (vscroll, NULL, &nat_sb); // set the width of the dummy column to that of the scrollbar gtk_tree_view_column_set_fixed_width (crd->dummycol, nat_sb.width); gtk_window_set_transient_for (GTK_WINDOW (crd->dialog), GTK_WINDOW(window)); // Set the style context for this dialog so it can be easily manipulated with css gnc_widget_set_style_context (GTK_WIDGET(crd->dialog), "GncCustomReportDialog"); gnc_restore_window_size (GNC_PREFS_GROUP_REPORT_SAVED_CONFIGS, GTK_WINDOW(crd->dialog), GTK_WINDOW(window)); /* connect the signals */ gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, crd); gtk_widget_show_all(crd->dialog); /* check if there are currently saved reports available * by checking if there is a first element */ model = gtk_tree_view_get_model (GTK_TREE_VIEW (crd->reportview)); if (gtk_tree_model_get_iter_first (model, &iter)) { /* saved reports available -> hide the "no reports available" notification */ gtk_widget_hide(no_report_notification); } else { /* hide the scrolled window of the report list */ gtk_widget_hide(crd->reportview); } g_object_unref(G_OBJECT(builder)); return crd; }
GNCImportMainMatcher *gnc_gen_trans_list_new (GtkWidget *parent, const gchar* heading, gboolean all_from_same_account, gint match_date_hardlimit) { GNCImportMainMatcher *info; GtkBuilder *builder; GtkWidget *heading_label; GtkWidget *box, *pbox; gboolean show_update; info = g_new0 (GNCImportMainMatcher, 1); /* Initialize user Settings. */ info->user_settings = gnc_import_Settings_new (); gnc_import_Settings_set_match_date_hardlimit (info->user_settings, match_date_hardlimit); /* Initialize the GtkDialog. */ builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-import.glade", "transaction_matcher"); gnc_builder_add_from_file (builder, "dialog-import.glade", "transaction_matcher_content"); info->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "transaction_matcher")); g_assert (info->dialog != NULL); /* Pack the content into the dialog vbox */ pbox = GTK_WIDGET(gtk_builder_get_object (builder, "transaction_matcher_vbox")); box = GTK_WIDGET(gtk_builder_get_object (builder, "transaction_matcher_content")); gtk_box_pack_start( GTK_BOX(pbox), box, TRUE, TRUE, 0); /* Get the view */ info->view = GTK_TREE_VIEW(gtk_builder_get_object (builder, "downloaded_view")); g_assert (info->view != NULL); show_update = gnc_import_Settings_get_action_update_enabled(info->user_settings); gnc_gen_trans_init_view(info, all_from_same_account, show_update); heading_label = GTK_WIDGET(gtk_builder_get_object (builder, "heading_label")); g_assert (heading_label != NULL); /* if (parent) gtk_window_set_transient_for (GTK_WINDOW (info->dialog), GTK_WINDOW (parent));*/ /*Initialise the colors */ gdk_color_parse(COLOR_RED, &info->color_back_red); gdk_color_parse(COLOR_YELLOW, &info->color_back_yellow); gdk_color_parse(COLOR_GREEN, &info->color_back_green); if (heading) gtk_label_set_text (GTK_LABEL (heading_label), heading); gnc_restore_window_size(GCONF_SECTION, GTK_WINDOW(info->dialog)); gtk_widget_show_all (GTK_WIDGET (info->dialog)); info->transaction_processed_cb = NULL; /* Connect the signals */ gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, info); g_object_unref(G_OBJECT(builder)); return info; }
/* Create a tax-table window */ TaxTableWindow * gnc_ui_tax_table_window_new (QofBook *book) { TaxTableWindow *ttw; GtkBuilder *builder; GtkTreeView *view; GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkListStore *store; GtkTreeSelection *selection; if (!book) return NULL; /* * Find an existing tax-table window. If found, bring it to * the front. If we have an actual owner, then set it in * the window. */ ttw = gnc_find_first_gui_component (DIALOG_TAX_TABLE_CM_CLASS, find_handler, book); if (ttw) { gtk_window_present (GTK_WINDOW(ttw->dialog)); return ttw; } /* Didn't find one -- create a new window */ ttw = g_new0 (TaxTableWindow, 1); ttw->book = book; /* Open and read the Glade File */ builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-tax-table.glade", "Tax Table Window"); ttw->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "Tax Table Window")); ttw->names_view = GTK_WIDGET(gtk_builder_get_object (builder, "tax_tables_view")); ttw->entries_view = GTK_WIDGET(gtk_builder_get_object (builder, "tax_table_entries")); /* Create the tax tables view */ view = GTK_TREE_VIEW(ttw->names_view); store = gtk_list_store_new (NUM_TAX_TABLE_COLS, G_TYPE_STRING, G_TYPE_POINTER); gtk_tree_view_set_model(view, GTK_TREE_MODEL(store)); g_object_unref(store); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("", renderer, "text", TAX_TABLE_COL_NAME, NULL); gtk_tree_view_append_column(view, column); selection = gtk_tree_view_get_selection(view); g_signal_connect(selection, "changed", G_CALLBACK(tax_table_selection_changed), ttw); /* Create the tax table entries view */ view = GTK_TREE_VIEW(ttw->entries_view); store = gtk_list_store_new (NUM_TAX_ENTRY_COLS, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING); gtk_tree_view_set_model(view, GTK_TREE_MODEL(store)); g_object_unref(store); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes("", renderer, "text", TAX_ENTRY_COL_NAME, NULL); gtk_tree_view_append_column(view, column); selection = gtk_tree_view_get_selection(view); g_signal_connect(selection, "changed", G_CALLBACK(tax_table_entry_selection_changed), ttw); g_signal_connect(view, "row-activated", G_CALLBACK(tax_table_entry_row_activated), ttw); /* Setup signals */ gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, ttw); /* register with component manager */ ttw->component_id = gnc_register_gui_component (DIALOG_TAX_TABLE_CM_CLASS, tax_table_window_refresh_handler, tax_table_window_close_handler, ttw); tax_table_window_refresh (ttw); gnc_restore_window_size (GCONF_SECTION, GTK_WINDOW (ttw->dialog)); gtk_widget_show_all (ttw->dialog); g_object_unref(G_OBJECT(builder)); return ttw; }
/******************************************************* * Create the Assistant *******************************************************/ static GtkWidget * csv_import_assistant_create (CsvImportInfo *info) { GtkBuilder *builder; GtkWidget *window; GtkWidget *box, *h_box; GtkWidget *button; GtkCellRenderer *renderer; GtkTreeViewColumn *column; gchar *mnemonic_desc = NULL; builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "assistant-csv-account-import.glade", "num_hrows_adj"); gnc_builder_add_from_file (builder, "assistant-csv-account-import.glade", "csv_account_import_assistant"); window = GTK_WIDGET(gtk_builder_get_object (builder, "csv_account_import_assistant")); info->window = window; // Set the style context for this dialog so it can be easily manipulated with css gnc_widget_set_style_context (GTK_WIDGET(window), "GncAssistAccountImport"); /* Load default settings */ load_settings (info); /* Enable buttons on all page. */ gtk_assistant_set_page_complete (GTK_ASSISTANT(window), GTK_WIDGET(gtk_builder_get_object(builder, "start_page")), TRUE); gtk_assistant_set_page_complete (GTK_ASSISTANT(window), GTK_WIDGET(gtk_builder_get_object(builder, "file_page")), FALSE); gtk_assistant_set_page_complete (GTK_ASSISTANT(window), GTK_WIDGET(gtk_builder_get_object(builder, "import_tree_page")), TRUE); gtk_assistant_set_page_complete (GTK_ASSISTANT(window), GTK_WIDGET(gtk_builder_get_object(builder, "end_page")), FALSE); gtk_assistant_set_page_complete (GTK_ASSISTANT(window), GTK_WIDGET(gtk_builder_get_object(builder, "summary_page")), TRUE); /* Start Page */ /* File chooser Page */ info->file_chooser = gtk_file_chooser_widget_new (GTK_FILE_CHOOSER_ACTION_OPEN); g_signal_connect (G_OBJECT(info->file_chooser), "file-activated", G_CALLBACK(csv_import_file_chooser_confirm_cb), info); button = gtk_button_new_with_mnemonic (_("_OK")); gtk_widget_set_size_request (button, 100, -1); gtk_widget_show (button); h_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_set_homogeneous (GTK_BOX (h_box), TRUE); gtk_widget_set_hexpand (GTK_WIDGET(h_box), TRUE); gtk_box_pack_start (GTK_BOX(h_box), button, FALSE, FALSE, 0); gtk_file_chooser_set_extra_widget (GTK_FILE_CHOOSER(info->file_chooser), h_box); g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(csv_import_file_chooser_confirm_cb), info); box = GTK_WIDGET(gtk_builder_get_object(builder, "file_page")); gtk_box_pack_start (GTK_BOX(box), info->file_chooser, TRUE, TRUE, 6); gtk_widget_show (info->file_chooser); /* Account Tree Page */ info->header_row_spin = GTK_WIDGET(gtk_builder_get_object (builder, "num_hrows")); info->tree_view = GTK_WIDGET(gtk_builder_get_object (builder, "treeview")); /* Comma Separated file default */ info->regexp = g_string_new (""); create_regex (info->regexp, ","); /* create model and bind to view */ info->store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); gtk_tree_view_set_model (GTK_TREE_VIEW(info->tree_view), GTK_TREE_MODEL(info->store)); #define CREATE_COLUMN(description,column_id) \ renderer = gtk_cell_renderer_text_new (); \ mnemonic_desc = mnemonic_escape (_(description)); \ column = gtk_tree_view_column_new_with_attributes (mnemonic_desc, renderer, "text", column_id, NULL); \ gtk_tree_view_column_add_attribute (column, renderer, "background", ROW_COLOR); \ gtk_tree_view_column_set_resizable (column, TRUE); \ gtk_tree_view_append_column (GTK_TREE_VIEW(info->tree_view), column); \ g_free (mnemonic_desc); CREATE_COLUMN ("type", TYPE); CREATE_COLUMN ("full_name", FULL_NAME); CREATE_COLUMN ("name", NAME); CREATE_COLUMN ("code", CODE); CREATE_COLUMN ("description", DESCRIPTION); CREATE_COLUMN ("color", COLOR); CREATE_COLUMN ("notes", NOTES); CREATE_COLUMN ("commoditym", COMMODITYM); CREATE_COLUMN ("commodityn", COMMODITYN); CREATE_COLUMN ("hidden", HIDDEN); CREATE_COLUMN ("tax", TAX); CREATE_COLUMN ("place_holder", PLACE_HOLDER); /* Finish Page */ info->finish_label = GTK_WIDGET(gtk_builder_get_object (builder, "end_page")); /* Summary Page */ info->summary_label = GTK_WIDGET(gtk_builder_get_object (builder, "summary_label")); info->summary_error_view = GTK_WIDGET(gtk_builder_get_object (builder, "summary_error_view")); g_signal_connect (G_OBJECT(window), "destroy", G_CALLBACK(csv_import_assistant_destroy_cb), info); gnc_restore_window_size (GNC_PREFS_GROUP, GTK_WINDOW(info->window)); gtk_builder_connect_signals (builder, info); g_object_unref (G_OBJECT(builder)); return window; }
void gnc_ui_fincalc_dialog_create(GtkWindow *parent) { FinCalcDialog *fcd; GtkWidget *button; GtkWidget *combo; GtkWidget *edit; GtkWidget *hbox; GtkBuilder *builder; if (gnc_forall_gui_components (DIALOG_FINCALC_CM_CLASS, show_handler, NULL)) return; fcd = g_new0(FinCalcDialog, 1); builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-fincalc.glade", "liststore1"); gnc_builder_add_from_file (builder, "dialog-fincalc.glade", "liststore2"); gnc_builder_add_from_file (builder, "dialog-fincalc.glade", "financial_calculator_dialog"); fcd->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "financial_calculator_dialog")); // Set the style context for this dialog so it can be easily manipulated with css gnc_widget_set_style_context (GTK_WIDGET(fcd->dialog), "GncFinCalcDialog"); /* parent */ if (parent != NULL) gtk_window_set_transient_for (GTK_WINDOW(fcd->dialog), GTK_WINDOW(parent)); gnc_register_gui_component (DIALOG_FINCALC_CM_CLASS, NULL, close_handler, fcd); g_signal_connect (G_OBJECT (fcd->dialog), "destroy", G_CALLBACK (fincalc_dialog_destroy), fcd); hbox = GTK_WIDGET(gtk_builder_get_object (builder, "payment_periods_hbox")); edit = gnc_amount_edit_new(); fincalc_init_gae (GNC_AMOUNT_EDIT (edit), 0, 0, 1); fcd->amounts[PAYMENT_PERIODS] = edit; gtk_box_pack_end(GTK_BOX(hbox), edit, FALSE, FALSE, 0); g_signal_connect (G_OBJECT(edit), "changed", G_CALLBACK (fincalc_update_calc_button_cb), fcd); button = GTK_WIDGET(gtk_builder_get_object (builder, "payment_periods_clear_button")); g_object_set_data(G_OBJECT(button), "edit", edit); hbox = GTK_WIDGET(gtk_builder_get_object (builder, "interest_rate_hbox")); edit = gnc_amount_edit_new(); fincalc_init_gae (GNC_AMOUNT_EDIT (edit), 2, 5, 100000); fcd->amounts[INTEREST_RATE] = edit; gtk_box_pack_end(GTK_BOX(hbox), edit, FALSE, FALSE, 0); g_signal_connect (G_OBJECT(edit), "changed", G_CALLBACK (fincalc_update_calc_button_cb), fcd); button = GTK_WIDGET(gtk_builder_get_object (builder, "interest_rate_clear_button")); g_object_set_data(G_OBJECT(button), "edit", edit); hbox = GTK_WIDGET(gtk_builder_get_object (builder, "present_value_hbox")); edit = gnc_amount_edit_new(); fincalc_init_commodity_gae (GNC_AMOUNT_EDIT (edit)); fcd->amounts[PRESENT_VALUE] = edit; gtk_box_pack_end(GTK_BOX(hbox), edit, FALSE, FALSE, 0); g_signal_connect (G_OBJECT(edit), "changed", G_CALLBACK (fincalc_update_calc_button_cb), fcd); button = GTK_WIDGET(gtk_builder_get_object (builder, "present_value_clear_button")); g_object_set_data(G_OBJECT(button), "edit", edit); hbox = GTK_WIDGET(gtk_builder_get_object (builder, "periodic_payment_hbox")); edit = gnc_amount_edit_new(); fincalc_init_commodity_gae (GNC_AMOUNT_EDIT (edit)); fcd->amounts[PERIODIC_PAYMENT] = edit; gtk_box_pack_end(GTK_BOX(hbox), edit, FALSE, FALSE, 0); g_signal_connect (G_OBJECT(edit), "changed", G_CALLBACK (fincalc_update_calc_button_cb), fcd); button = GTK_WIDGET(gtk_builder_get_object (builder, "periodic_payment_clear_button")); g_object_set_data(G_OBJECT(button), "edit", edit); hbox = GTK_WIDGET(gtk_builder_get_object (builder, "future_value_hbox")); edit = gnc_amount_edit_new(); fincalc_init_commodity_gae (GNC_AMOUNT_EDIT (edit)); fcd->amounts[FUTURE_VALUE] = edit; gtk_box_pack_end(GTK_BOX(hbox), edit, FALSE, FALSE, 0); g_signal_connect (G_OBJECT(edit), "changed", G_CALLBACK (fincalc_update_calc_button_cb), fcd); button = GTK_WIDGET(gtk_builder_get_object (builder, "future_value_clear_button")); g_object_set_data(G_OBJECT(button), "edit", edit); fcd->calc_button = GTK_WIDGET(gtk_builder_get_object (builder, "calc_button")); combo = GTK_WIDGET(gtk_builder_get_object (builder, "compounding_combo")); fcd->compounding_combo = combo; g_signal_connect(fcd->compounding_combo, "changed", G_CALLBACK (fincalc_update_calc_button_cb), fcd); combo = GTK_WIDGET(gtk_builder_get_object (builder, "payment_combo")); fcd->payment_combo = combo; g_signal_connect(fcd->compounding_combo, "changed", G_CALLBACK (fincalc_update_calc_button_cb), fcd); button = GTK_WIDGET(gtk_builder_get_object (builder, "period_payment_radio")); fcd->end_of_period_radio = button; button = GTK_WIDGET(gtk_builder_get_object (builder, "discrete_compounding_radio")); fcd->discrete_compounding_radio = button; fcd->payment_total_label = GTK_WIDGET(gtk_builder_get_object (builder, "payment_total_label")); button = GTK_WIDGET(gtk_builder_get_object (builder, "schedule_button")); gtk_widget_hide (button); init_fi(fcd); fi_to_gui(fcd); gtk_widget_grab_focus(fcd->amounts[PAYMENT_PERIODS]); /* Connect all signals specified in glade. */ gtk_builder_connect_signals(builder, fcd); g_object_unref(G_OBJECT(builder)); gnc_restore_window_size(GNC_PREFS_GROUP, GTK_WINDOW(fcd->dialog)); gtk_widget_show(fcd->dialog); }
static void gnc_find_account_dialog_create (GtkWidget *parent, FindAccountDialog *facc_dialog) { GtkWidget *dialog; GtkBuilder *builder; GtkTreeSelection *selection; GtkTreeViewColumn *tree_column; GtkCellRenderer *cr; ENTER(" "); builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-find-account.glade", "list-store"); gnc_builder_add_from_file (builder, "dialog-find-account.glade", "Find Account Dialog"); dialog = GTK_WIDGET(gtk_builder_get_object (builder, "Find Account Dialog")); facc_dialog->dialog = dialog; facc_dialog->session = gnc_get_current_session(); /* parent */ if (parent != NULL) { facc_dialog->parent = parent; gtk_window_set_transient_for (GTK_WINDOW(dialog), GTK_WINDOW(parent)); } else facc_dialog->parent = NULL; /* Connect the radio buttons...*/ facc_dialog->radio_root = GTK_WIDGET(gtk_builder_get_object (builder, "radio-root")); facc_dialog->radio_subroot = GTK_WIDGET(gtk_builder_get_object (builder, "radio-subroot")); facc_dialog->filter_text_entry = GTK_WIDGET(gtk_builder_get_object (builder, "filter-text-entry")); facc_dialog->sub_label = GTK_WIDGET(gtk_builder_get_object (builder, "sub-label")); facc_dialog->radio_hbox = GTK_WIDGET(gtk_builder_get_object (builder, "hbox-radio")); facc_dialog->filter_button = GTK_WIDGET(gtk_builder_get_object (builder, "filter-button")); g_signal_connect (facc_dialog->filter_button, "clicked", G_CALLBACK(filter_button_cb), (gpointer)facc_dialog); facc_dialog->view = GTK_WIDGET(gtk_builder_get_object (builder, "treeview")); g_signal_connect (facc_dialog->view, "row-activated", G_CALLBACK(row_double_clicked), (gpointer)facc_dialog); /* Enable alternative line colors */ gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(facc_dialog->view), TRUE); /* default to 'close' button */ gtk_dialog_set_default_response (GTK_DIALOG(dialog), GTK_RESPONSE_CLOSE); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(facc_dialog->view)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); /* Need to add pixbuf renderers here to get the xalign to work. */ tree_column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title (tree_column, _("Place Holder")); gtk_tree_view_append_column (GTK_TREE_VIEW(facc_dialog->view), tree_column); gtk_tree_view_column_set_alignment (tree_column, 0.5); gtk_tree_view_column_set_expand (tree_column, TRUE); cr = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start (tree_column, cr, TRUE); // connect 'active' and set 'xalign' property of the cell renderer gtk_tree_view_column_set_attributes (tree_column, cr, "stock-id", PLACE_HOLDER, NULL); gtk_cell_renderer_set_alignment (cr, 0.5, 0.5); tree_column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title (tree_column, _("Hidden")); gtk_tree_view_append_column (GTK_TREE_VIEW(facc_dialog->view), tree_column); gtk_tree_view_column_set_alignment (tree_column, 0.5); gtk_tree_view_column_set_expand (tree_column, TRUE); cr = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start (tree_column, cr, TRUE); // connect 'active' and set 'xalign' property of the cell renderer gtk_tree_view_column_set_attributes (tree_column, cr, "stock-id", HIDDEN, NULL); gtk_cell_renderer_set_alignment (cr, 0.5, 0.5); tree_column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title (tree_column, _("Not Used")); gtk_tree_view_append_column (GTK_TREE_VIEW(facc_dialog->view), tree_column); gtk_tree_view_column_set_alignment (tree_column, 0.5); gtk_tree_view_column_set_expand (tree_column, TRUE); cr = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start (tree_column, cr, TRUE); // connect 'active' and set 'xalign' property of the cell renderer gtk_tree_view_column_set_attributes (tree_column, cr, "stock-id", NOT_USED, NULL); gtk_cell_renderer_set_alignment (cr, 0.5, 0.5); tree_column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title (tree_column, _("Balance Zero")); gtk_tree_view_append_column (GTK_TREE_VIEW(facc_dialog->view), tree_column); gtk_tree_view_column_set_alignment (tree_column, 0.5); gtk_tree_view_column_set_expand (tree_column, TRUE); cr = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start (tree_column, cr, TRUE); // connect 'active' and set 'xalign' property of the cell renderer gtk_tree_view_column_set_attributes (tree_column, cr, "stock-id", BAL_ZERO, NULL); gtk_cell_renderer_set_alignment (cr, 0.5, 0.5); gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, facc_dialog); g_object_unref (G_OBJECT(builder)); gnc_restore_window_size (GNC_PREFS_GROUP, GTK_WINDOW(facc_dialog->dialog)); if (facc_dialog->account != NULL) { const gchar *sub_label_start = _("Search from "); gchar *sub_full_name = gnc_account_get_full_name (facc_dialog->account); gchar *sub_label; sub_label = g_strconcat (sub_label_start, sub_full_name, NULL); gtk_button_set_label (GTK_BUTTON(facc_dialog->radio_subroot), sub_label); g_free (sub_full_name); g_free (sub_label); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(facc_dialog->radio_subroot), TRUE); gtk_widget_show_all (facc_dialog->radio_hbox); } else gtk_widget_hide_all (facc_dialog->radio_hbox); // Set the filter to Wildcard gtk_entry_set_text (GTK_ENTRY(facc_dialog->filter_text_entry), ""); get_account_info (facc_dialog); LEAVE(" "); }