mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
Add preference option to chose if SAC and/or OTU should be in divelist
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
dc2a0c1909
commit
0aad4d6094
5 changed files with 50 additions and 4 deletions
|
@ -11,6 +11,13 @@ typedef struct {
|
|||
GtkWidget *bar;
|
||||
} progressbar_t;
|
||||
|
||||
typedef struct {
|
||||
gboolean sac;
|
||||
gboolean otu;
|
||||
} visible_cols_t;
|
||||
|
||||
extern visible_cols_t visible_cols;
|
||||
|
||||
extern const char *divelist_font;
|
||||
extern void set_divelist_font(const char *);
|
||||
|
||||
|
|
13
divelist.c
13
divelist.c
|
@ -26,7 +26,7 @@ struct DiveList {
|
|||
GtkWidget *container_widget;
|
||||
GtkListStore *model;
|
||||
GtkTreeViewColumn *date, *depth, *duration, *location;
|
||||
GtkTreeViewColumn *temperature, *cylinder, *nitrox, *sac;
|
||||
GtkTreeViewColumn *temperature, *cylinder, *nitrox, *sac, *otu;
|
||||
int changed;
|
||||
};
|
||||
|
||||
|
@ -422,6 +422,13 @@ void update_dive_list_units(void)
|
|||
gtk_tree_model_foreach(model, set_one_dive, NULL);
|
||||
}
|
||||
|
||||
void update_dive_list_col_visibility(void)
|
||||
{
|
||||
gtk_tree_view_column_set_visible(dive_list.sac, visible_cols.sac);
|
||||
gtk_tree_view_column_set_visible(dive_list.otu, visible_cols.otu);
|
||||
return;
|
||||
}
|
||||
|
||||
static void fill_dive_list(void)
|
||||
{
|
||||
int i;
|
||||
|
@ -543,8 +550,8 @@ GtkWidget *dive_list_create(void)
|
|||
dive_list.temperature = divelist_column(&dive_list, DIVE_TEMPERATURE, UTF8_DEGREE "F", temperature_data_func, PANGO_ALIGN_RIGHT, TRUE);
|
||||
dive_list.cylinder = divelist_column(&dive_list, DIVE_CYLINDER, "Cyl", NULL, PANGO_ALIGN_CENTER, TRUE);
|
||||
dive_list.nitrox = divelist_column(&dive_list, DIVE_NITROX, "O" UTF8_SUBSCRIPT_2 "%", nitrox_data_func, PANGO_ALIGN_CENTER, TRUE);
|
||||
dive_list.sac = divelist_column(&dive_list, DIVE_SAC, "SAC", sac_data_func, PANGO_ALIGN_CENTER, TRUE);
|
||||
dive_list.sac = divelist_column(&dive_list, DIVE_OTU, "OTU", otu_data_func, PANGO_ALIGN_CENTER, FALSE);
|
||||
dive_list.sac = divelist_column(&dive_list, DIVE_SAC, "SAC", sac_data_func, PANGO_ALIGN_CENTER, visible_cols.sac);
|
||||
dive_list.otu = divelist_column(&dive_list, DIVE_OTU, "OTU", otu_data_func, PANGO_ALIGN_CENTER, visible_cols.otu);
|
||||
dive_list.location = divelist_column(&dive_list, DIVE_LOCATION, "Location", NULL, PANGO_ALIGN_LEFT, TRUE);
|
||||
|
||||
fill_dive_list();
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
struct dive;
|
||||
|
||||
extern void dive_list_update_dives(void);
|
||||
extern void update_dive_list_col_visibility(void);
|
||||
extern void update_dive_list_units(void);
|
||||
extern void flush_divelist(struct dive *);
|
||||
|
||||
|
|
32
gtk-gui.c
32
gtk-gui.c
|
@ -33,6 +33,8 @@ struct units output_units;
|
|||
|
||||
static GtkWidget *dive_profile;
|
||||
|
||||
visible_cols_t visible_cols = {TRUE, FALSE};
|
||||
|
||||
void repaint_dive(void)
|
||||
{
|
||||
update_dive(current_dive);
|
||||
|
@ -243,10 +245,19 @@ UNITCALLBACK(set_cuft, volume, CUFT)
|
|||
UNITCALLBACK(set_celsius, temperature, CELSIUS)
|
||||
UNITCALLBACK(set_fahrenheit, temperature, FAHRENHEIT)
|
||||
|
||||
#define OPTIONCALLBACK(name, option) \
|
||||
static void name(GtkWidget *w, gpointer data) \
|
||||
{ \
|
||||
option = GTK_TOGGLE_BUTTON(w)->active; \
|
||||
}
|
||||
|
||||
OPTIONCALLBACK(otu_toggle, visible_cols.otu)
|
||||
OPTIONCALLBACK(sac_toggle, visible_cols.sac)
|
||||
|
||||
static void preferences_dialog(GtkWidget *w, gpointer data)
|
||||
{
|
||||
int result;
|
||||
GtkWidget *dialog, *font, *frame, *box;
|
||||
GtkWidget *dialog, *font, *frame, *box, *button;
|
||||
|
||||
menu_units = output_units;
|
||||
|
||||
|
@ -283,6 +294,22 @@ static void preferences_dialog(GtkWidget *w, gpointer data)
|
|||
"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 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(GTK_DIALOG(dialog)->vbox), font, FALSE, FALSE, 5);
|
||||
|
||||
|
@ -298,10 +325,13 @@ static void preferences_dialog(GtkWidget *w, gpointer data)
|
|||
output_units = menu_units;
|
||||
update_dive_list_units();
|
||||
repaint_dive();
|
||||
update_dive_list_col_visibility();
|
||||
gconf_client_set_bool(gconf, GCONF_NAME(feet), output_units.length == FEET, NULL);
|
||||
gconf_client_set_bool(gconf, GCONF_NAME(psi), output_units.pressure == PSI, NULL);
|
||||
gconf_client_set_bool(gconf, GCONF_NAME(cuft), output_units.volume == CUFT, NULL);
|
||||
gconf_client_set_bool(gconf, GCONF_NAME(fahrenheit), output_units.temperature == FAHRENHEIT, NULL);
|
||||
gconf_client_set_bool(gconf, GCONF_NAME(SAC), visible_cols.sac, NULL);
|
||||
gconf_client_set_bool(gconf, GCONF_NAME(OTU), visible_cols.otu, NULL);
|
||||
gconf_client_set_string(gconf, GCONF_NAME(divelist_font), divelist_font, NULL);
|
||||
}
|
||||
gtk_widget_destroy(dialog);
|
||||
|
|
1
main.c
1
main.c
|
@ -126,6 +126,7 @@ int main(int argc, char **argv)
|
|||
int i;
|
||||
|
||||
output_units = SI_units;
|
||||
|
||||
parse_xml_init();
|
||||
|
||||
init_ui(argc, argv);
|
||||
|
|
Loading…
Reference in a new issue