only for RuBoard - do not distribute or recompile | |
The Glue: callbacks.c
Listing 9.11 is callbacks.c for this project. In general, the aim has been to call functions here that are in comm_utils.c and keep the bulk of the code in that file ( comm_utils.c ).
Listing 9.11 callbacks.c from the Worldwide Commissions Applications
#ifdef HAVE_CONFIG_H # include <config.h> #endif #include <gtk/gtk.h> #include "callbacks.h" #include "interface.h" #include "support.h" #include "comm_utils.h" #include "ddc.h" GtkWidget *frm_login; GtkWidget *frm_table_display; GtkWidget *frm_commissions; gboolean on_frm_login_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { /* This is the event to shut down the application. */ gtk_main_quit(); return FALSE; } void on_cmd_login_clicked (GtkButton *button, gpointer user_data) { /* This function is called when the user clicks * the "login" button. * * First, the function checks the login and password; then it shows * frm_table_display and hides frm_login. */ g_print("on_cmd_login_clicked event...\n"); if (check_login_and_password()) { g_print("Login and password succeeded...\n"); gtk_widget_show_all(frm_table_display); gtk_widget_hide(frm_login); /* After successful login, set the tables the user * can display. */ gtk_widget_hide(lookup_widget(frm_table_display, "cmd_process")); fill_table_combos(); } else { g_print("Login and password failure...\n"); } g_print("exit on_cmd_login_clicked event...\n"); } void on_cmd_change_password_clicked (GtkButton *button, gpointer user_data) { /* This is the function that attempts to change the user's * login and password. * * First, it must verify that a valid user is attempting * to log in; then it can change that user's password. */ g_print("on_cmd_change_password_clicked event...\n"); if (check_login_and_password()) { if (set_new_password()) { /* If the code reaches this point, the user has * successfully logged in, and his or her password * has successfully been changed. Therefore, * proceed to show frm_tbl_display and hide * frm_login. */ gtk_widget_show_all(frm_table_display); gtk_widget_hide(frm_login); gtk_widget_hide(lookup_widget(frm_table_display, "cmd_process")); fill_table_combos(); } else { g_print("Unable to set new password.\n"); } } else { set_message("Unable to Login to set new Password."); } } void on_frm_table_display_size_request (GtkWidget *widget, GtkRequisition *requisition, gpointer user_data) { g_print("on_frm_table_display_size_request event...\n"); } void on_frm_table_display_state_changed (GtkWidget *widget, GtkStateType state, gpointer user_data) { g_print("on_frm_table_display_state_changed event...\n"); } void on_combo_entry_table_changed (GtkEditable *editable, gpointer user_data) { /* This callback is triggered whenever the user changes * cbo_tables in frm_display_table. */ GtkWidget *scrolledwindow_table; gchar *table_name; g_print("on_combo_entry_table_changed event...\n"); gtk_widget_destroy(GTK_WIDGET(lookup_widget(frm_table_display, "scrolledwindow_table"))); table_name = gtk_entry_get_text (GTK_ENTRY(GTK_COMBO(lookup_widget(frm_table_display,"cbo_tables"))->entry)); g_print("table name is %s...\n", table_name); /* Having just destroyed the main table widget with the * gtk_widget_destroy() call, now create a new * GTK+ table widget showing the data from the table * named "table_name." */ scrolledwindow_table = create_ddc(table_name); gtk_widget_ref(scrolledwindow_table); gtk_object_set_data_full (GTK_OBJECT(frm_table_display), "scrolledwindow_table", scrolledwindow_table, (GtkDestroyNotify) gtk_widget_unref); gtk_container_add (GTK_CONTAINER(lookup_widget(frm_table_display, "vpaned_table_bottom")), scrolledwindow_table); gtk_widget_show(scrolledwindow_table); g_print("Exiting on_combo_entry_table_changed event...\n"); } void on_cmd_process_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_process_clicked event...\n"); gtk_widget_show_all(frm_commissions); } void on_cmd_refresh_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_refresh_clicked event...\n"); on_combo_entry_table_changed (0L, 0L); } void on_cmd_sort_clicked (GtkButton *button, gpointer user_data) { /* This function is called when the user pushes cmd_sort. * * It sets the sort on clist_table according to the choices * set by the user on frm_table_display. */ gchar *sort_type; g_print("on_cmd_sort_clicked event...\n"); gtk_clist_set_sort_column(GTK_CLIST(lookup_widget(frm_table_display, "clist_table")), gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON (lookup_widget(frm_table_display, "spinbutton_column")))-1); sort_type = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(lookup_widget(frm_table_display, "cbo_sort_type"))->entry)); if (g_strcasecmp(sort_type, "Ascending") == 0) gtk_clist_set_sort_type(GTK_CLIST(lookup_widget(frm_table_display, "clist_table")), GTK_SORT_ASCENDING); else gtk_clist_set_sort_type(GTK_CLIST(lookup_widget(frm_table_display, "clist_table")), GTK_SORT_DESCENDING); /* Now set the sort on the CList widget. */ g_print("sort type is %s...\n", sort_type); gtk_clist_sort(GTK_CLIST(lookup_widget (frm_table_display, "clist_table"))); /* "Refresh" the form.. */ gtk_widget_show_all(frm_table_display); } gboolean on_frm_table_display_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { /* After the user is logged in, closing frm_table_display will * be the signal to quit the application. */ g_print("on_frm_table_display_delete_event...\n"); gtk_main_quit(); return FALSE; } gboolean on_frm_commissions_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { /* If the user closes frm_commissions, it should still * be available; however, it will be hidden as * opposed to deleted or destroyed. */ g_print("on_frm_commissions_delete_event...\n"); /* When the user closes this form, the form should just * be hidden, not deleted. That is the function of the * return TRUE call below. */ gtk_widget_hide(GTK_WIDGET(widget)); return TRUE; } void on_cmd_country_managers_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_country_managers_clicked event...\n"); write_country_manager_statements(); } void on_cmd_import_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_import_clicked event...\n"); load_tbl_revenue(); } void on_cmd_customer_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_customer_clicked event...\n"); process_customer_commissions(); } void on_cmd_archive_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_archive_clicked event...\n"); archive_tbl_commissions(); } void on_cmd_worldwide_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_worldwide_clicked event...\n"); process_worldwide(); } void on_cmd_country_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_country_clicked event...\n"); process_area("country"); } void on_cmd_zip_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_zip_clicked event...\n"); process_zipcode(); } void on_cmd_people_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_people_clicked event...\n"); process_paid_on_people(); } void on_cmd_salespeople_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_salespeople_clicked event...\n"); write_salespeople_statements(); } void on_cmd_add_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_add_clicked event...\n"); insert_row(); } void on_cmd_delete_row_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_delete_row_clicked event...\n"); delete_row(); } void on_cmd_update_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_update_clicked event...\n"); update_row(); } void on_cmd_state_clicked (GtkButton *button, gpointer user_data) { g_print("on_cmd_state_clicked event...\n"); process_area("state"); }
only for RuBoard - do not distribute or recompile | |