static void selectevents_dialog(GtkWidget *w, gpointer data) { int result; GtkWidget *dialog, *frame, *vbox, *table; dialog = gtk_dialog_new_with_buttons("SelectEvents", GTK_WINDOW(main_window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); /* initialize the function that fills the table */ create_toggle(NULL, NULL, NULL); frame = gtk_frame_new("Enable / Disable Events"); vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 5); table = gtk_table_new(1, 4, TRUE); gtk_container_add(GTK_CONTAINER(frame), table); evn_foreach(&create_toggle, table); gtk_widget_show_all(dialog); result = gtk_dialog_run(GTK_DIALOG(dialog)); if (result == GTK_RESPONSE_ACCEPT) { repaint_dive(); } gtk_widget_destroy(dialog); }
static void selection_cb(GtkTreeSelection *selection, GtkTreeModel *model) { GtkTreeIter iter; GValue value = {0, }; GtkTreePath *path; int nr_selected = gtk_tree_selection_count_selected_rows(selection); if (selected_dives) { g_list_foreach (selected_dives, (GFunc) gtk_tree_path_free, NULL); g_list_free (selected_dives); } selected_dives = gtk_tree_selection_get_selected_rows(selection, NULL); switch (nr_selected) { case 0: /* keep showing the last selected dive */ return; case 1: /* just pick that dive as selected */ path = g_list_nth_data(selected_dives, 0); if (gtk_tree_model_get_iter(model, &iter, path)) { gtk_tree_model_get_value(model, &iter, DIVE_INDEX, &value); selected_dive = g_value_get_int(&value); repaint_dive(); } return; default: /* multiple selections - what now? At this point I * don't want to change the selected dive unless * there is exactly one dive selected; not sure this * is the most intuitive solution. * I do however want to keep around which dives have * been selected */ return; } }
static void selection_cb(GtkTreeSelection *selection, GtkTreeModel *model) { GtkTreeIter iter; GValue value = {0, }; if (!gtk_tree_selection_get_selected(selection, NULL, &iter)) return; gtk_tree_model_get_value(model, &iter, 1, &value); selected_dive = g_value_get_int(&value); repaint_dive(); }
static void renumber_dialog(GtkWidget *w, gpointer data) { int result; struct dive *dive; GtkWidget *dialog, *frame, *button, *vbox; dialog = gtk_dialog_new_with_buttons("Renumber", GTK_WINDOW(main_window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); frame = gtk_frame_new("New starting number"); gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 5); button = gtk_spin_button_new_with_range(1, 50000, 1); gtk_container_add(GTK_CONTAINER(frame), button); /* * Do we have a number for the first dive already? Use that * as the default. */ dive = get_dive(0); if (dive && dive->number) gtk_spin_button_set_value(GTK_SPIN_BUTTON(button), dive->number); gtk_widget_show_all(dialog); result = gtk_dialog_run(GTK_DIALOG(dialog)); if (result == GTK_RESPONSE_ACCEPT) { int nr = gtk_spin_button_get_value(GTK_SPIN_BUTTON(button)); renumber_dives(nr); repaint_dive(); } gtk_widget_destroy(dialog); }
static void switch_page(GtkNotebook *notebook, gint arg1, gpointer user_data) { repaint_dive(); }
static void preferences_dialog(GtkWidget *w, gpointer data) { int result; GtkWidget *dialog, *font, *frame, *box, *vbox, *button; menu_units = output_units; dialog = gtk_dialog_new_with_buttons("Preferences", GTK_WINDOW(main_window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); frame = gtk_frame_new("Units"); vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 5); box = gtk_vbox_new(FALSE, 6); gtk_container_add(GTK_CONTAINER(frame), box); create_radio(box, "Depth:", "Meter", set_meter, (output_units.length == METERS), "Feet", set_feet, (output_units.length == FEET), NULL); create_radio(box, "Pressure:", "Bar", set_bar, (output_units.pressure == BAR), "PSI", set_psi, (output_units.pressure == PSI), NULL); create_radio(box, "Volume:", "Liter", set_liter, (output_units.volume == LITER), "CuFt", set_cuft, (output_units.volume == CUFT), NULL); create_radio(box, "Temperature:", "Celsius", set_celsius, (output_units.temperature == CELSIUS), "Fahrenheit", set_fahrenheit, (output_units.temperature == FAHRENHEIT), NULL); frame = gtk_frame_new("Columns"); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), frame, FALSE, FALSE, 5); box = gtk_hbox_new(FALSE, 6); gtk_container_add(GTK_CONTAINER(frame), box); button = gtk_check_button_new_with_label("Show Temp"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), visible_cols.temperature); gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 6); g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(temperature_toggle), NULL); button = gtk_check_button_new_with_label("Show Cyl"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), visible_cols.cylinder); gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 6); g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(cylinder_toggle), NULL); button = gtk_check_button_new_with_label("Show O" UTF8_SUBSCRIPT_2 "%"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), visible_cols.nitrox); gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 6); g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(nitrox_toggle), NULL); button = gtk_check_button_new_with_label("Show SAC"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), visible_cols.sac); gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 6); g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(sac_toggle), NULL); button = gtk_check_button_new_with_label("Show OTU"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), visible_cols.otu); gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 6); g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(otu_toggle), NULL); font = gtk_font_button_new_with_font(divelist_font); gtk_box_pack_start(GTK_BOX(vbox), font, FALSE, FALSE, 5); gtk_widget_show_all(dialog); result = gtk_dialog_run(GTK_DIALOG(dialog)); if (result == GTK_RESPONSE_ACCEPT) { /* Make sure to flush any modified old dive data with old units */ update_dive(NULL); divelist_font = strdup(gtk_font_button_get_font_name(GTK_FONT_BUTTON(font))); set_divelist_font(divelist_font); output_units = menu_units; update_dive_list_units(); repaint_dive(); update_dive_list_col_visibility(); subsurface_set_conf("feet", PREF_BOOL, BOOL_TO_PTR(output_units.length == FEET)); subsurface_set_conf("psi", PREF_BOOL, BOOL_TO_PTR(output_units.pressure == PSI)); subsurface_set_conf("cuft", PREF_BOOL, BOOL_TO_PTR(output_units.volume == CUFT)); subsurface_set_conf("fahrenheit", PREF_BOOL, BOOL_TO_PTR(output_units.temperature == FAHRENHEIT)); subsurface_set_conf("TEMPERATURE", PREF_BOOL, BOOL_TO_PTR(visible_cols.temperature)); subsurface_set_conf("CYLINDER", PREF_BOOL, BOOL_TO_PTR(visible_cols.cylinder)); subsurface_set_conf("NITROX", PREF_BOOL, BOOL_TO_PTR(visible_cols.nitrox)); subsurface_set_conf("SAC", PREF_BOOL, BOOL_TO_PTR(visible_cols.sac)); subsurface_set_conf("OTU", PREF_BOOL, BOOL_TO_PTR(visible_cols.otu)); subsurface_set_conf("divelist_font", PREF_STRING, divelist_font); subsurface_close_conf(); } gtk_widget_destroy(dialog); }
void dive_list_update_dives(void) { gtk_list_store_clear(GTK_LIST_STORE(dive_list.model)); fill_dive_list(); repaint_dive(); }