(GtkWidget *dialog, GtkWidget *tab, void (*hardcoded_part)(GtkWidget *vbox1, GtkWidget *vbox2))
{
GtkWidget *widget, *label, *labelev, *viewport;
GtkRequisition size;
GtkWidget *hbox = gtk_hbox_new(5, FALSE);
GtkWidget *vbox1 = gtk_vbox_new(5, TRUE);
GtkWidget *vbox2 = gtk_vbox_new(5, TRUE);
char tooltip[1024];
gtk_box_pack_start(GTK_BOX(hbox), vbox1, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), vbox2, FALSE, FALSE, 0);
GtkWidget *alignment = gtk_alignment_new(0.5, 0.0, 1.0, 0.0);
gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 20, 20, 20, 20);
GtkWidget *scroll = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
viewport = gtk_viewport_new(NULL, NULL);
gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE); // doesn't seem to work from gtkrc
gtk_container_add(GTK_CONTAINER(alignment), scroll);
gtk_container_add(GTK_CONTAINER(scroll), viewport);
gtk_container_add(GTK_CONTAINER(viewport), hbox);
if(hardcoded_part)
(*hardcoded_part)(vbox1, vbox2);
gtk_widget_show_all(tab);
gtk_widget_size_request(viewport, &size);
gtk_widget_set_size_request(scroll, size.width, size.height);
}
1
#include "control/conf.h"
]]>
static gboolean
reset_widget_ (GtkWidget *label, GdkEventButton *event, GtkWidget *widget)
{
if(event->type == GDK_2BUTTON_PRESS)
{
return TRUE;
}
return FALSE;
}
static void
preferences_callback_ (GtkWidget *widget, gpointer user_data)
{
}
static void
preferences_response_callback_ (GtkDialog *dialog, gint response_id, GtkWidget *widget)
{
if(response_id != GTK_RESPONSE_ACCEPT)
return;
}
static void
init_tab_gui gtk_notebook_append_page(GTK_NOTEBOOK(tab), alignment, gtk_label_new(_("GUI options")));
static void
init_tab_core gtk_notebook_append_page(GTK_NOTEBOOK(tab), alignment, gtk_label_new(_("core options")));
#endif
{
label = gtk_label_new(_(""));
gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
labelev = gtk_event_box_new();
gtk_widget_add_events(labelev, GDK_BUTTON_PRESS_MASK);
gtk_container_add(GTK_CONTAINER(labelev), label);
gtk_event_box_set_visible_window(GTK_EVENT_BOX(labelev), FALSE);
g_object_set(widget, "tooltip-text", _(""), (char *)NULL);
gtk_widget_set_sensitive(labelev, dt_capabilities_check(""));
gtk_widget_set_sensitive(widget, dt_capabilities_check(""));
if(!dt_capabilities_check(""))
g_object_set(widget, "tooltip-text", _("not available on this system"), (char *)NULL);
gtk_box_pack_start(GTK_BOX(vbox1), labelev, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox2), widget, FALSE, FALSE, 0);
g_signal_connect(G_OBJECT(labelev), "button-press-event", G_CALLBACK(reset_widget_), (gpointer)widget);
}
gtk_entry_set_text(GTK_ENTRY(widget), "");
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), * factor);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), * factor);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), * factor);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), );
gtk_combo_box_set_active(GTK_COMBO_BOX(widget), );
dt_conf_set_string("", gtk_entry_get_text(GTK_ENTRY(widget)));
dt_conf_set_int("", gtk_spin_button_get_value(GTK_SPIN_BUTTON(widget)) / factor);
dt_conf_set_int64("", gtk_spin_button_get_value(GTK_SPIN_BUTTON(widget)) / factor);
dt_conf_set_float("", gtk_spin_button_get_value(GTK_SPIN_BUTTON(widget)) / factor);
dt_conf_set_bool("", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)));
GtkTreeIter iter;
if(gtk_combo_box_get_active_iter(GTK_COMBO_BOX(widget), &iter))
{
gchar *s = NULL;
gtk_tree_model_get(gtk_combo_box_get_model(GTK_COMBO_BOX(widget)), &iter, 0, &s, -1);
dt_conf_set_string("", s);
g_free(s);
}
widget = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(widget), dt_conf_get_string(""));
g_signal_connect(G_OBJECT(widget), "activate", G_CALLBACK(preferences_callback_), NULL);
g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(preferences_response_callback_), widget);
snprintf(tooltip, 1024, _("double click to reset to `%s'"), "");
g_object_set(labelev, "tooltip-text", tooltip, (char *)NULL);
gint min = 0;
gint max = G_MAXINT;
min *= factor; max *= factor;
widget = gtk_spin_button_new_with_range(min, max, 1);
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(widget), 0);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), dt_conf_get_int("") * factor);
g_signal_connect(G_OBJECT(widget), "value-changed", G_CALLBACK(preferences_callback_), NULL);
g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(preferences_response_callback_), widget);
snprintf(tooltip, 1024, _("double click to reset to `%d'"), (int)( * factor));
g_object_set(labelev, "tooltip-text", tooltip, (char *)NULL);
gint64 min = 0;
gint64 max = G_MAXINT64;
min *= factor; max *= factor;
widget = gtk_spin_button_new_with_range(min, max, 1);
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(widget), 0);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), dt_conf_get_int64("") * factor);
g_signal_connect(G_OBJECT(widget), "value-changed", G_CALLBACK(preferences_callback_), NULL);
g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(preferences_response_callback_), widget);
snprintf(tooltip, 1024, _("double click to reset to `%"PRId64"'"), (gint64)( * factor));
g_object_set(labelev, "tooltip-text", tooltip, (char *)NULL);
float min = -1000000000.0f;
float max = 1000000000.0f;
min *= factor; max *= factor;
widget = gtk_spin_button_new_with_range(min, max, 0.001f);
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(widget), 5);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), dt_conf_get_float("") * factor);
g_signal_connect(G_OBJECT(widget), "value-changed", G_CALLBACK(preferences_callback_), NULL);
g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(preferences_response_callback_), widget);
snprintf(tooltip, 1024, _("double click to reset to `%.03f'"), * factor);
g_object_set(labelev, "tooltip-text", tooltip, (char *)NULL);
widget = gtk_check_button_new();
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), dt_conf_get_bool(""));
g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(preferences_callback_), NULL);
g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(preferences_response_callback_), widget);
snprintf(tooltip, 1024, _("double click to reset to `%s'"), C_("preferences", ""));
g_object_set(labelev, "tooltip-text", tooltip, (char *)NULL);
GtkTreeIter iter;
GtkListStore *store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
gchar *str = dt_conf_get_string("");
gint pos = -1;
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter, 0, "", 1, C_("preferences", ""), -1);
if(pos == -1 && strcmp(str, "") == 0)
pos = ;
widget = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
g_object_unref(store);
GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget), renderer, TRUE);
gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(widget), renderer, "text", 1, NULL);
gtk_combo_box_set_active(GTK_COMBO_BOX(widget), pos);
g_signal_connect(G_OBJECT(widget), "changed", G_CALLBACK(preferences_callback_), NULL);
g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(preferences_response_callback_), widget);
snprintf(tooltip, 1024, _("double click to reset to `%s'"), C_("preferences", ""));
g_object_set(labelev, "tooltip-text", tooltip, (char *)NULL);
min = ;
max = ;
min = ;
max = ;
float factor = ;
float factor = 1.0f;