diff options
Diffstat (limited to 'src/gtk-helpers/event_config_dialog.c')
-rw-r--r-- | src/gtk-helpers/event_config_dialog.c | 62 |
1 files changed, 47 insertions, 15 deletions
diff --git a/src/gtk-helpers/event_config_dialog.c b/src/gtk-helpers/event_config_dialog.c index c9f24894..6882ac25 100644 --- a/src/gtk-helpers/event_config_dialog.c +++ b/src/gtk-helpers/event_config_dialog.c @@ -82,11 +82,11 @@ static void add_option_to_table(gpointer data, gpointer user_data) unsigned last_row; char *option_label; - if (option->label != NULL) - option_label = xstrdup(option->label); + if (option->eo_label != NULL) + option_label = xstrdup(option->eo_label); else { - option_label = xstrdup(option->name); + option_label = xstrdup(option->eo_name ? option->eo_name : ""); /* Replace '_' with ' ' */ char *p = option_label - 1; while (*++p) @@ -94,7 +94,7 @@ static void add_option_to_table(gpointer data, gpointer user_data) *p = ' '; } - switch (option->type) + switch (option->eo_type) { case OPTION_TYPE_TEXT: case OPTION_TYPE_NUMBER: @@ -107,15 +107,15 @@ static void add_option_to_table(gpointer data, gpointer user_data) /*x,yoptions:*/ GTK_FILL, GTK_FILL, /*x,ypadding:*/ 0, 0); option_input = gtk_entry_new(); - if (option->value != NULL) - gtk_entry_set_text(GTK_ENTRY(option_input), option->value); + if (option->eo_value != NULL) + gtk_entry_set_text(GTK_ENTRY(option_input), option->eo_value); gtk_table_attach(option_table, option_input, /*left,right_attach:*/ 1, 2, /*top,bottom_attach:*/ last_row, last_row+1, /*x,yoptions:*/ GTK_FILL | GTK_EXPAND, GTK_FILL, /*x,ypadding:*/ 0, 0); add_option_widget(option_input, option); - if (option->type == OPTION_TYPE_PASSWORD) + if (option->eo_type == OPTION_TYPE_PASSWORD) { gtk_entry_set_visibility(GTK_ENTRY(option_input), 0); last_row = grow_table_by_1(option_table); @@ -129,6 +129,20 @@ static void add_option_to_table(gpointer data, gpointer user_data) } break; + case OPTION_TYPE_HINT_HTML: + label = gtk_label_new(option_label); + gtk_label_set_use_markup(GTK_LABEL(label), TRUE); + gtk_misc_set_alignment(GTK_MISC(label), /*x,yalign:*/ 0.0, 0.0); + make_label_autowrap_on_resize(GTK_LABEL(label)); + + last_row = grow_table_by_1(option_table); + gtk_table_attach(option_table, label, + /*left,right_attach:*/ 0, 2, + /*top,bottom_attach:*/ last_row, last_row+1, + /*x,yoptions:*/ GTK_FILL, GTK_FILL, + /*x,ypadding:*/ 0, 0); + break; + case OPTION_TYPE_BOOL: last_row = grow_table_by_1(option_table); option_input = gtk_check_button_new_with_label(option_label); @@ -137,15 +151,32 @@ static void add_option_to_table(gpointer data, gpointer user_data) /*top,bottom_attach:*/ last_row, last_row+1, /*x,yoptions:*/ GTK_FILL, GTK_FILL, /*x,ypadding:*/ 0, 0); - if (option->value != NULL) + if (option->eo_value != NULL) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(option_input), - string_to_bool(option->value)); + string_to_bool(option->eo_value)); add_option_widget(option_input, option); break; default: //option_input = gtk_label_new_justify_left("WTF?"); log("unsupported option type"); + free(option_label); + return; + } + + if (option->eo_note_html) + { + label = gtk_label_new(option->eo_note_html); + gtk_label_set_use_markup(GTK_LABEL(label), TRUE); + gtk_misc_set_alignment(GTK_MISC(label), /*x,yalign:*/ 0.0, 0.0); + make_label_autowrap_on_resize(GTK_LABEL(label)); + + last_row = grow_table_by_1(option_table); + gtk_table_attach(option_table, label, + /*left,right_attach:*/ 1, 2, + /*top,bottom_attach:*/ last_row, last_row+1, + /*x,yoptions:*/ GTK_FILL, GTK_FILL, + /*x,ypadding:*/ 0, 0); } free(option_label); @@ -225,7 +256,7 @@ static void save_value_from_widget(gpointer data, gpointer user_data) option_widget_t *ow = (option_widget_t *)data; const char *val = NULL; - switch (ow->option->type) + switch (ow->option->eo_type) { case OPTION_TYPE_TEXT: case OPTION_TYPE_NUMBER: @@ -240,9 +271,9 @@ static void save_value_from_widget(gpointer data, gpointer user_data) } if (val) { - free(ow->option->value); - ow->option->value = xstrdup(val); - VERB1 log("saved: %s:%s", ow->option->name, ow->option->value); + free(ow->option->eo_value); + ow->option->eo_value = xstrdup(val); + VERB1 log("saved: %s:%s", ow->option->eo_name, ow->option->eo_value); } } @@ -277,9 +308,10 @@ static void show_event_config_dialog(const char *event_name) gtk_window_get_icon_name(g_event_list_window)); } - int length = g_list_length(event->options); - GtkWidget *option_table = gtk_table_new(length, 2, 0); + GtkWidget *option_table = gtk_table_new(/*rows*/ 0, /*cols*/ 2, /*homogeneous*/ FALSE); + gtk_table_set_row_spacings(GTK_TABLE(option_table), 2); g_list_foreach(event->options, &add_option_to_table, option_table); + GtkWidget *content = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); gtk_box_pack_start(GTK_BOX(content), option_table, false, false, 20); gtk_widget_show_all(option_table); |