9
callbackfile=callback.c
12
cat > $resetfile << EOF
13
/** generated file, do not edit! */
14
#ifndef DT_PREFERENCES_H
15
#define DT_PREFERENCES_H
18
#include "control/conf.h"
23
# header of the callback function
24
cat > $callbackfile << EOF
26
preferences_callback (GtkWidget *widget, gpointer user_data)
28
long int num = (long int)user_data;
35
cat >> $resetfile << EOF
37
reset_widget_$1 (GtkWidget *label, GdkEventButton *event, GtkWidget *widget)
39
if(event->type == GDK_2BUTTON_PRESS)
50
# do this for each key
53
cat >> $initfile << EOF
54
label = gtk_label_new(_("$1"));
55
gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
56
labelev = gtk_event_box_new();
57
gtk_widget_add_events(labelev, GDK_BUTTON_PRESS_MASK);
58
gtk_container_add(GTK_CONTAINER(labelev), label);
62
# arg short long num def
64
cat >> $initfile << EOF
65
snprintf(tooltip, 1024, _("double click to reset to \`%s'"), $4);
66
gtk_object_set(GTK_OBJECT(labelev), "tooltip-text", tooltip, (char *)NULL);
67
gtk_event_box_set_visible_window(GTK_EVENT_BOX(labelev), FALSE);
70
printf " gtk_object_set(GTK_OBJECT(widget), \"tooltip-text\", _(\"%s\"), (char *)NULL);\n" "$2" >> $initfile
72
cat >> $initfile << EOF
73
gtk_box_pack_start(GTK_BOX(vbox1), labelev, FALSE, FALSE, 0);
74
gtk_box_pack_start(GTK_BOX(vbox2), widget, FALSE, FALSE, 0);
75
g_signal_connect(G_OBJECT(labelev), "button-press-event", G_CALLBACK(reset_widget_$num), (gpointer)widget);
80
# split up in different tabs!
86
# header of the init tab function
87
cat > $initfile << EOF
89
init_tab_$tab (GtkWidget *tab)
91
GtkWidget *widget, *label, *labelev;
92
GtkWidget *hbox = gtk_hbox_new(5, FALSE);
93
GtkWidget *vbox1 = gtk_vbox_new(5, TRUE);
94
GtkWidget *vbox2 = gtk_vbox_new(5, TRUE);
96
gtk_box_pack_start(GTK_BOX(hbox), vbox1, FALSE, FALSE, 0);
97
gtk_box_pack_start(GTK_BOX(hbox), vbox2, FALSE, FALSE, 0);
98
GtkWidget *alignment = gtk_alignment_new(0.5, 0.0, 1.0, 0.0);
99
gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 20, 20, 20, 20);
100
gtk_container_add(GTK_CONTAINER(alignment), hbox);
101
gtk_notebook_append_page(GTK_NOTEBOOK(tab), alignment, gtk_label_new(_("$tab options")));
105
# get key, type, default, short, long for each setting:
106
# grep for all relevant tags
108
# remove new lines, insert only the one we want
109
# remove the ugly xml tag stuff and the gconf schema prefix.
110
grep -E '<key>|<type>|<default>|<short>|<long>|<schema>|</schema>' $schemafile |
111
sed -e 's/^[ \t]*//;s/[ \t]*$//' |
112
tr -d '\n' | sed -e 's/<\/schema>/#/g' | tr '#' '\n' | grep -E "tab:$tab" |
113
sed -e 's/<\/[^>]*>/#/g' -e 's/<[^>]*>//g' -e 's/\/schemas\/apps\/darktable\///g' > dreggn
115
# now read one line at the time and output code:
116
# label (short), input (type, default), tooltip (long) with callback (key)
118
echo " // tab: $tab" >> $callbackfile
120
for line0 in $(cat dreggn | tr ' ' '&')
122
line=$(printf "%s" "$line0" | tr '&' ' ')
123
key=$(printf "%s" "$line" | cut -d# -f1)
124
type=$(printf "%s" "$line" | cut -d# -f2)
125
def=$(printf "%s" "$line" | cut -d# -f3)
127
short=$(printf "%s" "$line" | cut -d# -f4)
128
long=$(printf "%s" "$line" | cut -d# -f5)
129
# if we compile w/o opencl, we don't want this option in preferences
130
if [ "@HAVE_OPENCL@" = "0" ]; then
131
if [ "$key" = "opencl" ]; then
135
key_begin "$short" "$long" $num
136
if [ "$type" = "string" ]; then
138
val="gtk_entry_get_text(GTK_ENTRY(widget))"
139
setval="gtk_entry_set_text(GTK_ENTRY(widget), $def);"
140
cat >> $initfile << EOF
141
widget = gtk_entry_new();
142
gtk_entry_set_text(GTK_ENTRY(widget), dt_conf_get_string("$key"));
143
g_signal_connect(G_OBJECT(widget), "activate", G_CALLBACK(preferences_callback), (gpointer)(long int)$num);
145
elif [ "$type" = "int" ]; then
146
val="gtk_spin_button_get_value(GTK_SPIN_BUTTON(widget))"
147
setval="gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), $def);"
148
cat >> $initfile << EOF
149
widget = gtk_spin_button_new_with_range(0, 1000000000, 1);
150
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(widget), 0);
151
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), dt_conf_get_int("$key"));
152
g_signal_connect(G_OBJECT(widget), "value-changed", G_CALLBACK(preferences_callback), (gpointer)(long int)$num);
154
elif [ "$type" = "bool" ]; then
155
if [ "$def" = "true" ]; then def="TRUE"; else def="FALSE"; fi
157
val="gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))"
158
setval="gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), $def);"
159
cat >> $initfile << EOF
160
widget = gtk_check_button_new();
161
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), dt_conf_get_bool("$key"));
162
g_signal_connect(G_OBJECT(widget), "toggled", G_CALLBACK(preferences_callback), (gpointer)(long int)$num);
164
elif [ "$type" = "float" ]; then
165
val="gtk_spin_button_get_value(GTK_SPIN_BUTTON(widget))"
166
setval="gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), $def);"
167
cat >> $initfile << EOF
168
widget = gtk_spin_button_new_with_range(-1000000000.0, 1000000000.0, 0.001);
169
gtk_spin_button_set_digits(GTK_SPIN_BUTTON(widget), 5);
170
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget), dt_conf_get_float("$key"));
171
g_signal_connect(G_OBJECT(widget), "value-changed", G_CALLBACK(preferences_callback), (gpointer)(long int)$num);
174
key_end "$short" "$long" $num $qdef
176
reset_callback $num "$setval"
178
cat >> $callbackfile << EOF
180
dt_conf_set_$type("$key", $val);
186
cat >> $initfile << EOF
191
done # end for all tabs
193
cat >> $callbackfile << EOF
210
done # end for all tabs