void csv_import_assistant_finish_page_prepare (GtkAssistant *assistant, gpointer user_data) { CsvImportInfo *info = user_data; gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); gchar *text; /* Set Finish page text */ /* Before creating accounts, if this is a new book, tell user they can * specify book options, since they affect how transactions are created */ if (info->new_book) { text = g_strdup_printf (gettext (new_book_finish_tree_string), info->file_name); } else { text = g_strdup_printf (gettext (finish_tree_string), info->file_name); } gtk_label_set_text (GTK_LABEL(info->finish_label), text); g_free(text); /* Save the Window size and directory */ gnc_set_default_directory(GCONF_SECTION, info->starting_dir); /* Enable the Assistant Buttons */ gtk_assistant_set_page_complete (assistant, page, TRUE); }
void csv_export_assistant_finish_page_prepare (GtkAssistant *assistant, gpointer user_data) { CsvExportInfo *info = user_data; gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); gchar *text; /* Set Finish page text */ if (info->export_type == XML_EXPORT_TREE) text = g_strdup_printf (gettext (finish_tree_string), info->file_name); else { if ((info->export_type == XML_EXPORT_REGISTER) && (info->account == NULL)) text = g_strdup_printf (gettext (finish_trans_search_gl_string), info->file_name); else text = g_strdup_printf (gettext (finish_trans_string), info->file_name, info->csva.num_accounts); } gtk_label_set_text (GTK_LABEL(info->finish_label), text); g_free (text); /* Enable the Assistant Buttons */ gtk_assistant_set_page_complete (assistant, page, TRUE); }
/** This function is called before the Update page is presented to the * user. It gets the active button from the Method page and uses this * to either add the path strings or jump to the install page. */ void assistant_gconf_update_prep (GtkAssistant *assistant, gpointer user_data) { gconf_data *data = user_data; GtkTextBuffer *textbuffer; GtkWidget *textview; gchar *msg; gchar *gconfdir = gnc_path_get_gconfdir (TRUE); gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->update_path))) { g_object_set_data(G_OBJECT(assistant), HOW, GINT_TO_POINTER(HOW_UPDATE)); textview = data->update_text; textbuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); msg = g_strdup_printf(PATH_STRING1 PATH_STRING2, gconfdir); gtk_text_buffer_set_text(textbuffer, msg, -1); g_free (gconfdir); } else { g_object_set_data(G_OBJECT(assistant), HOW, GINT_TO_POINTER(HOW_INSTALL)); gtk_assistant_set_current_page (assistant, num + 2); } }
/* Fill up the progress bar, 10% every second when the button is clicked. Then, * set the page as complete when the progress bar is filled. */ static void button_clicked (GtkButton *button, GtkAssistant *assistant) { GtkProgressBar *progress; GtkWidget *page; gdouble percent = 0.0; gtk_widget_set_sensitive (GTK_WIDGET (button), FALSE); page = gtk_assistant_get_nth_page (assistant, 3); progress = GTK_PROGRESS_BAR (g_object_get_data (G_OBJECT (page), "pbar")); while (percent <= 100.0) { gchar *message = g_strdup_printf ("%.0f%% Complete", percent); gtk_progress_bar_set_fraction (progress, percent / 100.0); gtk_progress_bar_set_text (progress, message); while (gtk_events_pending ()) gtk_main_iteration (); g_usleep (500000); percent += 5.0; } gtk_assistant_set_page_complete (assistant, page, TRUE); }
static void on_druid_get_new_page (AnjutaAutogen* gen, gpointer data) { NPWDruid* druid = (NPWDruid *)data; gint current; NPWPage* page; current = gtk_assistant_get_current_page (GTK_ASSISTANT (druid->window)); page = g_queue_peek_nth (druid->page_list, current - (druid->no_selection ? 0 : 1)); if (npw_page_get_name (page) == NULL) { /* no page, display finish page */ npw_druid_fill_summary_page (druid); page = g_queue_pop_nth (druid->page_list, current - (druid->no_selection ? 0 : 1)); if (page != NULL) npw_page_free (page); gtk_container_remove (GTK_CONTAINER (druid->window), gtk_assistant_get_nth_page (GTK_ASSISTANT (druid->window), current + 1)); gtk_assistant_set_current_page (GTK_ASSISTANT (druid->window), current + 1); } else { /* display property page */ npw_druid_fill_property_page (druid, page); gtk_assistant_set_current_page (GTK_ASSISTANT (druid->window), current + 1); } }
/* event handler for page 4, most important part of this program, a new guy: progressbar comes */ static void button_clicked( GtkButton *button, GtkAssistant *assistant ) { /* * Fill up the progress bar, 10% every second when the button is clicked. * Then set the page as complete when the progress bar is filled */ /* first, deactive the button */ gtk_widget_set_sensitive( GTK_WIDGET( button ), FALSE ); GtkWidget *current_page = gtk_assistant_get_nth_page( assistant, 3 ); GtkProgressBar *progressbar = GTK_PROGRESS_BAR( g_object_get_data( G_OBJECT(current_page), "pbar" ) ); gdouble percent = 0.f; while ( percent <= 100.f ) { gchar *msg = g_strdup_printf( "%.0f%% Complete", percent ); gtk_progress_bar_set_fraction( progressbar, percent / 100.f ); gtk_progress_bar_set_text( progressbar, msg ); while ( gtk_events_pending() ) { gtk_main_iteration(); } g_usleep( 500000 ); percent += 5.f; } gtk_assistant_set_page_complete( assistant, current_page, TRUE ); }
/** This function is called before the Step over page is presented to the * user. It allows the jumping of the install page. */ void assistant_gconf_step_prep (GtkAssistant *assistant, gpointer user_data) { gconf_data *data = user_data; gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); gtk_assistant_set_current_page (assistant, num + 2); }
/******************************************************* * Assistant page prepare functions *******************************************************/ void csv_import_assistant_start_page_prepare (GtkAssistant *assistant, gpointer user_data) { gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); /* Enable the Assistant Buttons */ gtk_assistant_set_page_complete (assistant, page, TRUE); }
/* If there is text in the GtkEntry, set the page as complete. Otherwise, * stop the user from progressing the next page. */ static void entry_changed (GtkEditable *entry, GtkAssistant *assistant) { const gchar *text = gtk_entry_get_text (GTK_ENTRY (entry)); gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); gtk_assistant_set_page_complete (assistant, page, (strlen (text) > 0)); }
/* event handler for entry text of page 2 */ static void entry_changed( GtkEditable *editable, GtkAssistant *assistant ) { /* * if there is text in the GtkEntry, set the page as complete. Otherwise, * stop the user from pregressing the next page */ const char *text = gtk_entry_get_text( GTK_ENTRY( editable ) ); int current_page = gtk_assistant_get_current_page( assistant ); GtkWidget *this_page = gtk_assistant_get_nth_page( assistant, current_page ); gtk_assistant_set_page_complete( assistant, this_page, (strlen(text) > 0) ); }
static void gnc_stock_split_cash_valid_cb (GtkWidget *widget, gpointer user_data) { StockSplitInfo *info = user_data; GtkAssistant *assistant = GTK_ASSISTANT(info->window); gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); gtk_assistant_set_page_complete (assistant, page, gnc_stock_split_assistant_cash_complete (assistant, user_data)); }
static void set_current_page_complete (GtkAssistant *assistant, gboolean complete) { gint page_number; GtkWidget *current_page; page_number = gtk_assistant_get_current_page (assistant); current_page = gtk_assistant_get_nth_page (assistant, page_number); gtk_assistant_set_page_complete (assistant, current_page, complete); }
static gint glade_gtk_assistant_get_page (GtkAssistant * assistant, GtkWidget * page) { gint i, pages = gtk_assistant_get_n_pages (assistant); for (i = 0; i < pages; i++) if (gtk_assistant_get_nth_page (assistant, i) == page) return i; return -1; }
static void ap_assistant_menu_changed_cb (GtkWidget *widget, gpointer user_data) { AcctPeriodInfo *info = user_data; GtkAssistant *assistant = GTK_ASSISTANT(info->window); gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); ENTER ("info=%p", info); ap_assistant_menu_prepare (assistant, info); gtk_assistant_set_page_complete (assistant, page, ap_validate_menu (assistant, user_data)); }
static void gxi_update_conversion_forward (GncXmlImportData *data) { GtkAssistant *assistant = GTK_ASSISTANT(data->assistant); gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); if (data->n_unassigned || data->n_impossible) gtk_assistant_set_page_complete (assistant, page, FALSE); else gtk_assistant_set_page_complete (assistant, page, TRUE); }
static void glade_gtk_assistant_update_position (GtkAssistant * assistant) { gint i, pages = gtk_assistant_get_n_pages (assistant); for (i = 0; i < pages; i++) { GtkWidget *page = gtk_assistant_get_nth_page (assistant, i); GladeWidget *gpage = glade_widget_get_from_gobject (G_OBJECT (page)); if (gpage) glade_widget_pack_property_set (gpage, "position", i); } }
static gboolean on_druid_delayed_prepare (gpointer data) { NPWDruid *druid = (NPWDruid *)data; GtkAssistant *assistant; GtkWidget *page; assistant = GTK_ASSISTANT (druid->window); page = gtk_assistant_get_nth_page (assistant, gtk_assistant_get_current_page (assistant)); on_druid_real_prepare (assistant, page, druid); return FALSE; }
/** * cong_new_file_assistant_set_page: * @assistant: * @page: * * TODO: Write me */ void cong_new_file_assistant_set_page(CongNewFileAssistant *assistant, GtkWidget *page) { g_return_if_fail(assistant); g_return_if_fail(page); int count; for(count = gtk_assistant_get_n_pages(assistant->druid); count >= 0; count--) { if(gtk_assistant_get_nth_page(assistant->druid, count) == page) { gtk_assistant_set_current_page(assistant->druid, count); break; } } }
static void assistant_remove_child (GtkAssistant *assistant, GtkWidget *child) { gint i, n = gtk_assistant_get_n_pages (assistant); for (i = 0; i < n; i++) { if (child == gtk_assistant_get_nth_page (assistant, i)) { gtk_assistant_remove_page (assistant, i); return; } } }
void csv_export_assistant_account_page_prepare (GtkAssistant *assistant, gpointer user_data) { CsvExportInfo *info = user_data; gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); /* Enable the Forward Assistant Button if we have accounts */ if (info->csva.num_accounts > 0) gtk_assistant_set_page_complete (assistant, page, TRUE); else gtk_assistant_set_page_complete (assistant, page, FALSE); }
void csv_import_assistant_file_page_prepare (GtkAssistant *assistant, gpointer user_data) { CsvImportInfo *info = user_data; gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); /* Set the default directory */ if (info->starting_dir) gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(info->file_chooser), info->starting_dir); /* Disable the Forward Assistant Button */ gtk_assistant_set_page_complete (assistant, page, FALSE); }
/* GtkAssistant is a very weird widget, why is it derived from GtkWindow instead of GtkNotebook I do not know! If there is no GTK_ASSISTANT_PAGE_CONFIRM, GtkAssistant abort when trying to update its navigation buttons! */ static void glade_gtk_assistant_update_page_type (GtkAssistant * assistant) { gint i, current, pages; GtkWidget *page; current = gtk_assistant_get_current_page (assistant); pages = gtk_assistant_get_n_pages (assistant) - 1; if (pages < 0) return; /* Last Page */ page = gtk_assistant_get_nth_page (assistant, pages); gtk_assistant_set_page_type (assistant, page, GTK_ASSISTANT_PAGE_CONFIRM); /* First page */ page = gtk_assistant_get_nth_page (assistant, 0); gtk_assistant_set_page_type (assistant, page, GTK_ASSISTANT_PAGE_INTRO); /* In betwen pages */ for (i = 1; i < pages; i++) { page = gtk_assistant_get_nth_page (assistant, i); gtk_assistant_set_page_type (assistant, page, GTK_ASSISTANT_PAGE_CONTENT); } /* Now we have set page-type in every page, force button update */ for (i = 0; i <= pages; i++) { page = gtk_assistant_get_nth_page (assistant, i); gtk_assistant_set_page_complete (assistant, page, TRUE); } if (current >= 0) gtk_assistant_set_current_page (assistant, current); }
/** This function determines if the "Next" button on the account set * selection page should be sensitive. The button should only be * sensitive if one or more account sets has been selected. * * @param data A pointer to the data structure describing the * hierarchy assistant. */ static void categories_page_enable_next (hierarchy_data *data) { gint currentpagenum; GtkWidget *currentpage; GtkAssistant *assistant = GTK_ASSISTANT(data->dialog); data->next_ok = FALSE; gtk_tree_model_foreach (gtk_tree_view_get_model (data->categories_tree), (GtkTreeModelForeachFunc)account_set_checked_helper, &data->next_ok); currentpagenum = gtk_assistant_get_current_page(assistant); currentpage = gtk_assistant_get_nth_page(assistant, currentpagenum); gtk_assistant_set_page_complete(assistant, currentpage, data->next_ok); }
static void on_entry_changed (GtkWidget *widget, gpointer data) { GtkAssistant *assistant = GTK_ASSISTANT (data); GtkWidget *current_page; gint page_number; const gchar *text; page_number = gtk_assistant_get_current_page (assistant); current_page = gtk_assistant_get_nth_page (assistant, page_number); text = gtk_entry_get_text (GTK_ENTRY (widget)); if (text && *text) gtk_assistant_set_page_complete (assistant, current_page, TRUE); else gtk_assistant_set_page_complete (assistant, current_page, FALSE); }
/******************************************************* * Assistant page prepare functions *******************************************************/ void csv_export_assistant_start_page_prepare (GtkAssistant *assistant, gpointer user_data) { CsvExportInfo *info = user_data; gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); /* Set Start page text */ if (info->export_type == XML_EXPORT_TREE) gtk_label_set_text (GTK_LABEL(info->start_label), gettext (start_tree_string)); else gtk_label_set_text (GTK_LABEL(info->start_label), gettext (start_trans_string)); /* Enable the Assistant Buttons */ gtk_assistant_set_page_complete (assistant, page, TRUE); }
/************************************************** * csv_export_file_chooser_confirm_cb * * call back for ok button in file chooser widget **************************************************/ void csv_export_file_chooser_confirm_cb (GtkWidget *button, CsvExportInfo *info) { GtkAssistant *assistant = GTK_ASSISTANT(info->window); gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); gchar *file_name; gtk_assistant_set_page_complete (assistant, page, FALSE); file_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(info->file_chooser)); if (file_name) { if (g_file_test (file_name, G_FILE_TEST_EXISTS)) { const char *format = _("The file %s already exists. " "Are you sure you want to overwrite it?"); /* if user says cancel, we should break out */ if (!gnc_verify_dialog (NULL, FALSE, format, file_name)) return; } info->file_name = g_strdup (file_name); gtk_assistant_set_page_complete (assistant, page, TRUE); } if (file_name) { gchar *filepath = gnc_uri_get_path (file_name); gchar *filedir = g_path_get_dirname (filepath); info->starting_dir = g_strdup (filedir); g_free (filedir); g_free (filepath); } g_free (file_name); DEBUG("file_name selected is %s", info->file_name); DEBUG("starting directory is %s", info->starting_dir); /* Step to next page if page is complete */ if(gtk_assistant_get_page_complete (assistant, page)) gtk_assistant_set_current_page (assistant, num + 1); }
/******************************************************* * csv_export_custom_entry_cb * * call back for custom separator *******************************************************/ void csv_export_custom_entry_cb (GtkWidget *widget, gpointer user_data) { CsvExportInfo *info = user_data; const gchar *custom_str; GtkAssistant *assistant = GTK_ASSISTANT(info->window); gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); custom_str = gtk_entry_get_text (GTK_ENTRY(info->custom_entry)); info->separator_str = strdup (custom_str); if (info->use_custom == TRUE && gtk_entry_get_text_length (GTK_ENTRY(info->custom_entry)) == 0) gtk_assistant_set_page_complete (assistant, page, FALSE); else gtk_assistant_set_page_complete (assistant, page, TRUE); }
/************************************************** * csv_file_chooser_confirm_cb * * call back for ok button in file chooser widget **************************************************/ void csv_import_file_chooser_confirm_cb (GtkWidget *button, CsvImportInfo *info) { GtkAssistant *assistant = GTK_ASSISTANT(info->window); gint num = gtk_assistant_get_current_page (assistant); GtkWidget *page = gtk_assistant_get_nth_page (assistant, num); gchar *file_name; csv_import_result res; gtk_assistant_set_page_complete (assistant, page, FALSE); file_name = gtk_file_chooser_get_filename ( GTK_FILE_CHOOSER(info->file_chooser )); if (file_name) { gchar *filepath = gnc_uri_get_path ( file_name ); gchar *filedir = g_path_get_dirname( filepath ); info->starting_dir = g_strdup(filedir); g_free ( filedir ); g_free ( filepath ); info->file_name = g_strdup(file_name); // generate preview gtk_list_store_clear (info->store); res = csv_import_read_file (info->file_name, info->regexp->str, info->store, 1 ); if (res == RESULT_OPEN_FAILED) gnc_error_dialog (info->window, _("The input file can not be opened.")); else if (res == RESULT_OK) gtk_assistant_set_page_complete (assistant, page, TRUE); else if (res == MATCH_FOUND) gtk_assistant_set_page_complete (assistant, page, TRUE); } g_free(file_name); DEBUG("file_name selected is %s", info->file_name); DEBUG("starting directory is %s", info->starting_dir); /* Step to next page if page is complete */ if(gtk_assistant_get_page_complete(assistant, page)) gtk_assistant_set_current_page (assistant, num + 1); }
static void npw_druid_remove_following_page (NPWDruid* druid) { gint current; current = gtk_assistant_get_current_page (GTK_ASSISTANT (druid->window)); for(;;) { GtkWidget *widget; NPWPage* page; widget = gtk_assistant_get_nth_page (GTK_ASSISTANT (druid->window), current + 1); if (widget == druid->finish_page) break; gtk_container_remove (GTK_CONTAINER (druid->window), widget); page = g_queue_pop_nth (druid->page_list, current - (druid->no_selection ? 0 : 1)); if (page != NULL) npw_page_free (page); } }
GList * glade_gtk_assistant_get_children (GladeWidgetAdaptor *adaptor, GObject *container) { GtkAssistant *assist = GTK_ASSISTANT (container); gint i, n_pages = gtk_assistant_get_n_pages (assist); GList *children = NULL, *parent_children; /* Chain up */ if (GWA_GET_CLASS (GTK_TYPE_WINDOW)->get_children) parent_children = GWA_GET_CLASS (GTK_TYPE_WINDOW)->get_children (adaptor, container); else parent_children = NULL; for (i = 0; i < n_pages; i++) children = g_list_prepend (children, gtk_assistant_get_nth_page (assist, i)); children = g_list_reverse (children); return glade_util_purify_list (g_list_concat (children, parent_children)); }