Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
bauhaus.h
Go to the documentation of this file.
1/*
2 This file is part of darktable,
3 Copyright (C) 2012-2014, 2016 johannes hanika.
4 Copyright (C) 2012, 2019 parafin.
5 Copyright (C) 2012 Richard Wonka.
6 Copyright (C) 2012-2014, 2016-2019 Tobias Ellinghaus.
7 Copyright (C) 2012, 2016 Ulrich Pegelow.
8 Copyright (C) 2013, 2019, 2021-2022 Aldric Renaudin.
9 Copyright (C) 2013 Dennis Gnad.
10 Copyright (C) 2013 Simon Spannagel.
11 Copyright (C) 2013 Yari Adan.
12 Copyright (C) 2015 Jérémy Rosen.
13 Copyright (C) 2016 Roman Lebedev.
14 Copyright (C) 2017, 2020-2021 Dan Torop.
15 Copyright (C) 2018 David Polak.
16 Copyright (C) 2018, 2020-2021 Pascal Obry.
17 Copyright (C) 2018 Peter Budai.
18 Copyright (C) 2019-2020, 2022-2023, 2025 Aurélien PIERRE.
19 Copyright (C) 2019-2020 Heiko Bauke.
20 Copyright (C) 2020-2022 Diederik Ter Rahe.
21 Copyright (C) 2020 Hubert Kowalski.
22 Copyright (C) 2021 Philippe Weyland.
23 Copyright (C) 2022 Martin Bařinka.
24 Copyright (C) 2025 Alynx Zhou.
25 Copyright (C) 2025-2026 Guillaume Stutin.
26
27 darktable is free software: you can redistribute it and/or modify
28 it under the terms of the GNU General Public License as published by
29 the Free Software Foundation, either version 3 of the License, or
30 (at your option) any later version.
31
32 darktable is distributed in the hope that it will be useful,
33 but WITHOUT ANY WARRANTY; without even the implied warranty of
34 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
35 GNU General Public License for more details.
36
37 You should have received a copy of the GNU General Public License
38 along with darktable. If not, see <http://www.gnu.org/licenses/>.
39*/
40
41#ifndef DT_WIDGETS_BAUHAUS_H
42#define DT_WIDGETS_BAUHAUS_H
43
47#include "widgets/widget_settings.h" // DT_GUI_BOX_SPACING, for INTERNAL_PADDING
48
49#include <assert.h>
50#include <gdk/gdkkeysyms.h>
51#include <gtk/gtk.h>
52#include <inttypes.h>
53#include <math.h>
54#include <stdlib.h>
55#include <string.h>
56
57#ifdef __cplusplus
58extern "C" {
59#endif
60
61#define DT_BAUHAUS_WIDGET_TYPE dt_bh_get_type()
62#define DT_BAUHAUS_WIDGET(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), DT_BAUHAUS_WIDGET_TYPE, DtBauhausWidget)
63#define DT_BAUHAUS_WIDGET_CLASS(obj) G_TYPE_CHECK_CLASS_CAST((obj), DT_BAUHAUS_WIDGET, DtBauhausWidgetClass)
64#define DT_IS_BAUHAUS_WIDGET(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), DT_BAUHAUS_WIDGET_TYPE)
65#define DT_IS_BAUHAUS_WIDGET_CLASS(obj) G_TYPE_CHECK_CLASS_TYPE((obj), DT_BAUHAUS_WIDGET_TYPE)
66#define DT_BAUHAUS_WIDGET_GET_CLASS \
67 G_TYPE_INSTANCE_GET_CLASS((obj), DT_BAUHAUS_WIDGET_TYPE, DtBauhausWidgetClass)
68
70
71#define DT_BAUHAUS_SLIDER_VALUE_CHANGED_DELAY_MAX 500
72#define DT_BAUHAUS_SLIDER_VALUE_CHANGED_DELAY_MIN 25
73#define DT_BAUHAUS_SLIDER_MAX_STOPS 20
74#define DT_BAUHAUS_COMBO_MAX_TEXT 180
75#define DT_BAUHAUS_COMBO_SEPARATOR_DEFAULT_HEIGHT_FACTOR 0.6f
76
77// INTERNAL_PADDING is the horizontal space between slider and quad
78#define INTERNAL_PADDING DT_GUI_BOX_SPACING
79
80// INNER_PADDING is the vertical space between labels and slider baseline
81#define INNER_PADDING 2.
82
83
85
87{
90 // TODO: all the fancy color sliders..
92
98
99// data portion for a slider
101{
102 float pos; // normalized slider value
103 float oldpos; // slider value before entering finetune mode (normalized)
104 float step; // step width (not normalized)
105 float defpos; // default value (not normalized)
106 float min, max; // min and max range
109 int digits; // how many decimals to round to
110
111 float (*grad_col)[3]; // colors for gradient slider
112 int grad_cnt; // how many stops
113 float *grad_pos; // and position of these.
114
115 int fill_feedback : 1; // fill the slider with brighter part up to the handle?
116
117 const char *format; // numeric value is printed with this format
118 float factor; // multiplication factor before printing
119 float offset; // addition before printing
120
121 gboolean is_dragging; // indicates is mouse is dragging slider
123
129
130// data portion for a combobox
132{
133 char *label;
134 char *tooltip;
136 gboolean sensitive;
137 gboolean is_separator;
139 gpointer data;
140 void (*free_func)(gpointer); // callback to free data elements
142
144{
145 int active; // currently active element
146 int hovered; // currently hovered element, to be used by drawings until and if it is set to active
147 int defpos; // default position
148 int editable; // 1 if arbitrary text may be typed
149 dt_bauhaus_combobox_alignment_t text_align; // if selected text in combo should be aligned to the left/right
150 char *text; // to hold arbitrary text if editable
151 PangoEllipsizeMode entries_ellipsis;
152 GPtrArray *entries;
153 void (*populate)(GtkWidget *w, void *module); // function to populate the combo list on the fly
155
156typedef union dt_bauhaus_data_t
157{
158 // this is the placeholder for the data portions
159 // associated with the implementations such as
160 // sliders, combo boxes, ..
164
165// gah, caps.
168
169typedef void (*dt_bauhaus_quad_paint_f)(cairo_t *cr, gint x, gint y, gint w, gint h, gint flags, void *data);
170
171// our new widget and its private members, inheriting from drawing area:
173{
174 // gtk base widget
175 GtkDrawingArea parent;
176 // which type of control
178 // associated image operation module (to handle focus and such)
179 dt_gui_module_t *module;
180 // pointer to iop field linked to widget
181 gpointer field;
182 // type of field
184
185 // label text, short
186 char label[256];
187 // callback function to draw the quad icon
189 // minimal modifiers for paint function.
191 // data for the paint callback
193 // quad is a toggle button?
195 // show quad icon or space
196 gboolean show_quad;
197
198 // horizontally expand to fit container's width. Set to TRUE by default,
199 // assuming vertical columns. Manually set to FALSE if using in toolbar menu.
200 gboolean expand;
201
202 // margin and padding structure, defined in css, retrieve on each draw
203 GtkBorder *margin, *padding;
204
205 // TRUE if accels should not be enabled here.
206 // Use that for blending
207 gboolean no_accels;
209
210 // Reference to the global bauhaus structure holding common styles and such.
212
213 // Use the app-wise default value-changed callback from *bauhaus
214 // or use custom implementation
216
217 // goes last, might extend past the end:
219
221
222
223// global static data:
224enum
225{
230
231
232// class of our new widget, inheriting from drawing area
234{
235 GtkDrawingAreaClass parent_class;
236
237 // our custom signals
240
242{
243 // The bauhaus widget popup is shared across widgets,
244 // so we need to track which one is currently capturing it
248
249 // are set by the motion notification, to be used during drawing.
251
252 // time when the popup window was opened. this is sortof a hack to
253 // detect `double clicks between windows' to reset the combobox.
254 guint32 opentime;
255 // pointer position when popup window is closed
257 // used to determine whether the user crossed the line already.
260 // key input buffer
261 char keys[64];
263
264 // flag set on button press indicating that popup should be hidden in button release handler
265 gboolean hiding;
266
267 // appearance relevant stuff:
268 // sizes and fonts:
269 float line_height; // height of a line of text
270 float marker_size; // height of the slider indicator
271 float baseline_size; // height of the slider bar
272 float border_width; // width of the border of the slider marker
273 float quad_width; // width of the quad area to paint icons
274 PangoFontDescription *pango_font_desc; // no need to recreate this for every string we want to print
275
276 // colors for sliders and comboboxes
279
280 // colors for graphs
283 GdkRGBA graph_colors[3]; // primaries
285
286 // View-wise default callback to wire to the value-changed signal
287 // if the widget declaration sets the boolean
289};
290
291#define DT_BAUHAUS_SPACE 0
292
293
296
297/* The application-wide bauhaus context. The subsystem itself is already fully
298 * parameterized (bauhaus.c never reads a global), and the widget constructors take a
299 * dt_bauhaus_t * so a different context can be injected; this accessor only gives
300 * callers a handle source. It is the end state: the context is process-wide (one
301 * theme, one font, one popup) and a third of the constructor call sites pass
302 * DT_GUI_MODULE(NULL), so the handle cannot ride on the module either.
303 * Implemented by the orchestrator (darktable.c). */
305
306// load theme colors, fonts, etc
308
309// common functions:
310// set the label text:
311void dt_bauhaus_widget_set_label(GtkWidget *w, const char *label);
313// attach a custom painted quad to the space at the right side (overwriting the default icon if any):
314void dt_bauhaus_widget_set_quad_paint(GtkWidget *w, dt_bauhaus_quad_paint_f f, int paint_flags, void *paint_data);
315// make this quad a toggle button:
317// set active status for the quad toggle button:
319// get active status for the quad toggle button:
321// set quad visibility:
322void dt_bauhaus_widget_set_quad_visibility(GtkWidget *w, const gboolean visible);
323// set pointer to iop params field:
325
328
329// slider:
332 float defval, int digits);
334 float step, float defval, int digits, int feedback);
335
337 float step, float defval, int digits, int feedback);
338
339// outside doesn't see the real type, we cast it internally.
340void dt_bauhaus_slider_set(GtkWidget *w, float pos);
341void dt_bauhaus_slider_set_val(GtkWidget *w, float val);
344char *dt_bauhaus_slider_get_text(GtkWidget *w, float val);
345
346void dt_bauhaus_slider_set_soft_min(GtkWidget* w, float val);
348void dt_bauhaus_slider_set_soft_max(GtkWidget* w, float val);
350void dt_bauhaus_slider_set_soft_range(GtkWidget *widget, float soft_min, float soft_max);
351
352void dt_bauhaus_slider_set_hard_min(GtkWidget* w, float val);
354void dt_bauhaus_slider_set_hard_max(GtkWidget* w, float val);
356
359void dt_bauhaus_slider_set_step(GtkWidget *w, float val);
361
362void dt_bauhaus_slider_set_feedback(GtkWidget *w, int feedback);
363
365void dt_bauhaus_slider_set_format(GtkWidget *w, const char *format);
367void dt_bauhaus_slider_set_offset(GtkWidget *w, float offset);
368void dt_bauhaus_slider_set_stop(GtkWidget *widget, float stop, float r, float g, float b);
370void dt_bauhaus_slider_set_default(GtkWidget *widget, float def);
371
372// combobox:
376 const char *label, const char *tip, int pos, GtkCallback callback,
377 gpointer data, const char **texts);
378
379#define DT_BAUHAUS_COMBOBOX_NEW_FULL(bauhaus, widget, action, label, tip, pos, callback, data, ...) \
380{ \
381 static const gchar *texts[] = { __VA_ARGS__, NULL }; \
382 widget = dt_bauhaus_combobox_new_full(bauhaus, action, label, tip, pos, callback, data, texts); \
383}
384
385// Build a combobox from a <dtconfig> entry of anselconfig.xml.in whose <type> is <enum>.
386// Entries are pre-filled from the <enum><option> list (translated for display), the widget
387// is pre-selected from the current dt_conf value, and any later user selection is written
388// back to that same config key. Returns NULL if `confkey` is not a known enum config entry.
389
390void dt_bauhaus_combobox_add(GtkWidget *widget, const char *text);
391void dt_bauhaus_combobox_add_with_tooltip(GtkWidget *widget, const char *text, const char *tooltip);
394 gpointer data, void (*free_func)(void *data), gboolean sensitive);
395// Separators are visual-only rows and don't count in public combobox indexes.
397void dt_bauhaus_combobox_add_separator_with_height(GtkWidget *widget, float row_height_factor);
398void dt_bauhaus_combobox_set(GtkWidget *w, int pos);
399gboolean dt_bauhaus_combobox_set_from_text(GtkWidget *w, const char *text);
401void dt_bauhaus_combobox_remove_at(GtkWidget *widget, int pos);
402void dt_bauhaus_combobox_insert(GtkWidget *widget, const char *text,int pos);
404 gpointer data, void (*free_func)(void *data), int pos);
405// Insert before public index pos, or at the end when pos == dt_bauhaus_combobox_length().
407void dt_bauhaus_combobox_insert_separator_with_height(GtkWidget *widget, int pos, float row_height_factor);
409void dt_bauhaus_combobox_set_editable(GtkWidget *w, int editable);
413void dt_bauhaus_combobox_set_text(GtkWidget *w, const char *text);
415const char *dt_bauhaus_combobox_get_entry(GtkWidget *w, int pos);
418void dt_bauhaus_combobox_set_default(GtkWidget *widget, int def);
419void dt_bauhaus_combobox_add_populate_fct(GtkWidget *widget, void (*fct)(GtkWidget *w, void *module));
420void dt_bauhaus_combobox_add_list(GtkWidget *widget, const char **texts);
421void dt_bauhaus_combobox_entry_set_sensitive(GtkWidget *widget, int pos, gboolean sensitive);
422void dt_bauhaus_combobox_set_entries_ellipsis(GtkWidget *widget, PangoEllipsizeMode ellipis);
423
424/* Disable accels for this widget.
425* WARNING: accels are inited when setting the widget label. This function should be called before.
426* It will be useless for the "one-line" init & setter functions.
427*/
431
439
440#ifdef __cplusplus
441}
442#endif
443
444#endif // DT_WIDGETS_BAUHAUS_H
445
446// clang-format off
447// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
448// vim: shiftwidth=2 expandtab tabstop=2 cindent
449// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
450// clang-format on
GtkWidget * dt_bauhaus_slider_new(dt_bauhaus_t *bh, dt_gui_module_t *self)
Definition bauhaus.c:1627
float dt_bauhaus_slider_get_hard_max(GtkWidget *w)
Definition bauhaus.c:1450
float dt_bauhaus_slider_get(GtkWidget *w)
Definition bauhaus.c:3280
void dt_bauhaus_combobox_add_separator_with_height(GtkWidget *widget, float row_height_factor)
Definition bauhaus.c:1863
void dt_bauhaus_widget_set_label(GtkWidget *w, const char *label)
Definition bauhaus.c:1504
GtkWidget * dt_bauhaus_combobox_new_full(dt_bauhaus_t *bh, dt_gui_module_t *self, const char *label, const char *tip, int pos, GtkCallback callback, gpointer data, const char **texts)
Definition bauhaus.c:1705
dt_bauhaus_combobox_alignment_t
Definition bauhaus.h:125
@ DT_BAUHAUS_COMBOBOX_ALIGN_RIGHT
Definition bauhaus.h:127
@ DT_BAUHAUS_COMBOBOX_ALIGN_LEFT
Definition bauhaus.h:126
int dt_bauhaus_widget_get_quad_active(GtkWidget *w)
Definition bauhaus.c:1595
void dt_bauhaus_slider_set_soft_range(GtkWidget *widget, float soft_min, float soft_max)
Definition bauhaus.c:1498
gboolean dt_bauhaus_combobox_set_from_text(GtkWidget *w, const char *text)
Definition bauhaus.c:2100
void dt_bauhaus_widget_set_quad_visibility(GtkWidget *w, const gboolean visible)
Definition bauhaus.c:1588
void dt_bauhaus_combobox_insert(GtkWidget *widget, const char *text, int pos)
Definition bauhaus.c:1926
void dt_bauhaus_widget_set_quad_paint(GtkWidget *w, dt_bauhaus_quad_paint_f f, int paint_flags, void *paint_data)
Definition bauhaus.c:1554
void dt_bauhaus_slider_set_step(GtkWidget *w, float val)
Definition bauhaus.c:3357
void dt_bauhaus_slider_clear_stops(GtkWidget *widget)
Definition bauhaus.c:2153
char * dt_bauhaus_slider_get_text(GtkWidget *w, float val)
Definition bauhaus.c:3294
void dt_bauhaus_combobox_set_selected_text_align(GtkWidget *widget, const dt_bauhaus_combobox_alignment_t text_align)
Definition bauhaus.c:1900
void dt_bauhaus_hide_popup(dt_bauhaus_t *bh)
Definition bauhaus.c:2958
void dt_bauhaus_slider_reset(GtkWidget *widget)
Definition bauhaus.c:3397
dt_bauhaus_t * dt_bauhaus_get_global(void)
Definition darktable.c:646
void dt_bauhaus_cleanup(dt_bauhaus_t *bauhaus)
Definition bauhaus.c:1349
void dt_bauhaus_slider_set_default(GtkWidget *widget, float def)
Definition bauhaus.c:1491
void dt_bauhaus_slider_set_stop(GtkWidget *widget, float stop, float r, float g, float b)
Definition bauhaus.c:2161
void dt_bauhaus_load_theme(dt_bauhaus_t *bauhaus)
Definition bauhaus.c:1133
const char * dt_bauhaus_combobox_get_entry(GtkWidget *w, int pos)
Definition bauhaus.c:2007
void dt_bauhaus_slider_set_hard_max(GtkWidget *w, float val)
Definition bauhaus.c:1432
void dt_bauhaus_combobox_entry_set_sensitive(GtkWidget *widget, int pos, gboolean sensitive)
Definition bauhaus.c:2143
void dt_bauhaus_slider_set_digits(GtkWidget *w, int val)
Definition bauhaus.c:3343
float dt_bauhaus_slider_get_soft_max(GtkWidget *w)
Definition bauhaus.c:1484
int dt_bauhaus_combobox_get(GtkWidget *w)
Definition bauhaus.c:2136
GtkWidget * dt_bauhaus_slider_new_with_range_and_feedback(dt_bauhaus_t *bh, dt_gui_module_t *self, float min, float max, float step, float defval, int digits, int feedback)
Definition bauhaus.c:1638
void dt_bauhaus_widget_set_field(GtkWidget *w, gpointer field, dt_introspection_type_t field_type)
Definition bauhaus.c:1562
void dt_bauhaus_widget_set_quad_active(GtkWidget *w, int active)
Definition bauhaus.c:1578
float dt_bauhaus_slider_get_hard_min(GtkWidget *w)
Definition bauhaus.c:1425
int dt_bauhaus_slider_get_digits(GtkWidget *w)
Definition bauhaus.c:3350
void dt_bauhaus_combobox_clear(GtkWidget *w)
Definition bauhaus.c:1997
void dt_bauhaus_disable_module_list(GtkWidget *widget)
Definition bauhaus.c:3740
void dt_bauhaus_slider_set_factor(GtkWidget *w, float factor)
Definition bauhaus.c:3423
void dt_bauhaus_slider_set_soft_max(GtkWidget *w, float val)
Definition bauhaus.c:1474
float dt_bauhaus_slider_get_soft_min(GtkWidget *w)
Definition bauhaus.c:1467
dt_bauhaus_type_t
Definition bauhaus.h:87
@ DT_BAUHAUS_COMBOBOX
Definition bauhaus.h:89
@ DT_BAUHAUS_SLIDER
Definition bauhaus.h:88
void dt_bauhaus_slider_set_soft_min(GtkWidget *w, float val)
Definition bauhaus.c:1457
void dt_bauhaus_slider_set_val(GtkWidget *w, float val)
Definition bauhaus.c:3337
void dt_bauhaus_combobox_set_entries_ellipsis(GtkWidget *widget, PangoEllipsizeMode ellipis)
Definition bauhaus.c:1872
#define DT_BAUHAUS_WIDGET_TYPE
Definition bauhaus.h:61
void dt_bauhaus_combobox_insert_separator(GtkWidget *widget, int pos)
Definition bauhaus.c:1946
void dt_bauhaus_slider_set_feedback(GtkWidget *w, int feedback)
Definition bauhaus.c:3389
void dt_bauhaus_set_use_default_callback(GtkWidget *widget)
Tell the widget to use the globally-defined default callback in the bauhaus structure This callback n...
Definition bauhaus.c:3746
int dt_bauhaus_combobox_length(GtkWidget *widget)
Definition bauhaus.c:1963
void dt_bauhaus_slider_set(GtkWidget *w, float pos)
Definition bauhaus.c:3331
void dt_bauhaus_slider_set_format(GtkWidget *w, const char *format)
Definition bauhaus.c:3407
float dt_bauhaus_slider_get_step(GtkWidget *w)
Definition bauhaus.c:3364
void dt_bauhaus_combobox_set_default(GtkWidget *widget, int def)
Definition bauhaus.c:1400
void dt_bauhaus_widget_set_quad_toggle(GtkWidget *w, int toggle)
Definition bauhaus.c:1572
@ DT_BAUHAUS_LAST_SIGNAL
Definition bauhaus.h:228
@ DT_BAUHAUS_QUAD_PRESSED_SIGNAL
Definition bauhaus.h:227
@ DT_BAUHAUS_VALUE_CHANGED_SIGNAL
Definition bauhaus.h:226
gpointer dt_bauhaus_combobox_get_data(GtkWidget *widget)
Definition bauhaus.c:1987
GtkWidget * dt_bauhaus_slider_from_widget(dt_bauhaus_t *bh, dt_bauhaus_widget_t *widget, dt_gui_module_t *self, float min, float max, float step, float defval, int digits, int feedback)
Definition bauhaus.c:1663
void dt_bauhaus_combobox_add_populate_fct(GtkWidget *widget, void(*fct)(GtkWidget *w, void *module))
Definition bauhaus.c:1810
void dt_bauhaus_combobox_add_separator(GtkWidget *widget)
Definition bauhaus.c:1858
void dt_bauhaus_combobox_add_list(GtkWidget *widget, const char **texts)
Definition bauhaus.c:1818
gboolean dt_bauhaus_combobox_set_from_value(GtkWidget *w, int value)
Definition bauhaus.c:2119
void dt_bauhaus_disable_accels(GtkWidget *widget)
Definition bauhaus.c:3734
void dt_bauhaus_slider_set_hard_min(GtkWidget *w, float val)
Definition bauhaus.c:1408
const char * dt_bauhaus_combobox_get_text(GtkWidget *w)
Definition bauhaus.c:1970
void dt_bauhaus_combobox_insert_full(GtkWidget *widget, const char *text, dt_bauhaus_combobox_alignment_t align, gpointer data, void(*free_func)(void *data), int pos)
const char * dt_bauhaus_widget_get_label(GtkWidget *w)
Definition bauhaus.c:1548
void(* dt_bauhaus_quad_paint_f)(cairo_t *cr, gint x, gint y, gint w, gint h, gint flags, void *data)
Definition bauhaus.h:169
int dt_bauhaus_combobox_get_editable(GtkWidget *w)
Definition bauhaus.c:1893
void dt_bauhaus_combobox_set_editable(GtkWidget *w, int editable)
Definition bauhaus.c:1882
void dt_bauhaus_slider_set_offset(GtkWidget *w, float offset)
Definition bauhaus.c:3430
void dt_bauhaus_combobox_insert_separator_with_height(GtkWidget *widget, int pos, float row_height_factor)
Definition bauhaus.c:1951
GtkWidget * dt_bauhaus_slider_new_with_range(dt_bauhaus_t *bh, dt_gui_module_t *self, float min, float max, float step, float defval, int digits)
Definition bauhaus.c:1632
void dt_bauhaus_combobox_remove_at(GtkWidget *widget, int pos)
Definition bauhaus.c:1909
GtkWidget * dt_bauhaus_combobox_new(dt_bauhaus_t *bh, dt_gui_module_t *self)
Definition bauhaus.c:1698
float dt_bauhaus_slider_get_val(GtkWidget *w)
Definition bauhaus.c:3288
void dt_bauhaus_combobox_add_full(GtkWidget *widget, const char *text, dt_bauhaus_combobox_alignment_t align, gpointer data, void(*free_func)(void *data), gboolean sensitive)
void dt_bauhaus_combobox_set_text(GtkWidget *w, const char *text)
Definition bauhaus.c:2017
dt_bauhaus_curve_t
Definition bauhaus.h:94
@ DT_BAUHAUS_GET
Definition bauhaus.h:96
@ DT_BAUHAUS_SET
Definition bauhaus.h:95
void dt_bauhaus_combobox_set(GtkWidget *w, int pos)
Definition bauhaus.c:2090
void dt_bauhaus_combobox_add(GtkWidget *widget, const char *text)
Definition bauhaus.c:1824
void dt_bauhaus_combobox_add_with_tooltip(GtkWidget *widget, const char *text, const char *tooltip)
Definition bauhaus.c:1829
dt_bauhaus_t * dt_bauhaus_init()
Definition bauhaus.c:1231
void dt_bauhaus_combobox_add_aligned(GtkWidget *widget, const char *text, dt_bauhaus_combobox_alignment_t align)
Definition bauhaus.c:1841
void dt_bauhaus_combobox_from_widget(dt_bauhaus_t *bh, dt_bauhaus_widget_t *widget, dt_gui_module_t *self)
Definition bauhaus.c:1720
void dt_bauhaus_show_popup(GtkWidget *w)
Definition bauhaus.c:2974
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
@ DT_COLORLABELS_LAST
Definition colorlabels.h:47
static const float x
const float f
struct _GtkWidget GtkWidget
GtkWidget, opaque, spelled exactly as GTK spells it.
Definition colorspaces.h:98
static const float const float const float min
const float max
const char * tooltip
Definition image.h:310
dt_introspection_type_t
dt_mipmap_buffer_dsc_flags flags
Definition mipmap_cache.c:4
const float factor
Definition pdf.h:91
static const dt_aligned_pixel_simd_t value
Definition simd.h:144
const float r
PangoEllipsizeMode entries_ellipsis
Definition bauhaus.h:151
void(* populate)(GtkWidget *w, void *module)
Definition bauhaus.h:153
dt_bauhaus_combobox_alignment_t text_align
Definition bauhaus.h:149
Definition bauhaus.h:132
gboolean sensitive
Definition bauhaus.h:136
char * tooltip
Definition bauhaus.h:134
char * label
Definition bauhaus.h:133
float row_height_factor
Definition bauhaus.h:138
void(* free_func)(gpointer)
Definition bauhaus.h:140
dt_bauhaus_combobox_alignment_t alignment
Definition bauhaus.h:135
gboolean is_separator
Definition bauhaus.h:137
gpointer data
Definition bauhaus.h:139
const char * format
Definition bauhaus.h:117
GdkRGBA graph_bg
Definition bauhaus.h:281
guint32 opentime
Definition bauhaus.h:254
GdkRGBA color_value_text_insensitive
Definition bauhaus.h:278
float end_mouse_x
Definition bauhaus.h:256
float baseline_size
Definition bauhaus.h:271
GdkRGBA graph_scope_restricted
Definition bauhaus.h:282
GdkRGBA colorlabels[DT_COLORLABELS_LAST]
Definition bauhaus.h:284
void(* default_value_changed_callback)(GtkWidget *widget)
Definition bauhaus.h:288
GdkRGBA graph_overlay
Definition bauhaus.h:281
float mouse_line_distance
Definition bauhaus.h:259
GdkRGBA color_border
Definition bauhaus.h:277
GdkRGBA indicator_border
Definition bauhaus.h:277
GdkRGBA color_value_insensitive
Definition bauhaus.h:278
GdkRGBA graph_border
Definition bauhaus.h:281
GdkRGBA graph_fg_active
Definition bauhaus.h:281
GdkRGBA graph_grid
Definition bauhaus.h:281
PangoFontDescription * pango_font_desc
Definition bauhaus.h:274
GdkRGBA graph_exterior
Definition bauhaus.h:281
GdkRGBA color_fill
Definition bauhaus.h:277
gboolean hiding
Definition bauhaus.h:265
GtkWidget * popup_window
Definition bauhaus.h:246
GdkRGBA inset_histogram
Definition bauhaus.h:282
float quad_width
Definition bauhaus.h:273
float line_height
Definition bauhaus.h:269
float end_mouse_y
Definition bauhaus.h:256
GdkRGBA color_value_text
Definition bauhaus.h:278
float mouse_x
Definition bauhaus.h:250
GdkRGBA color_value
Definition bauhaus.h:278
char keys[64]
Definition bauhaus.h:261
float border_width
Definition bauhaus.h:272
GdkRGBA graph_fg
Definition bauhaus.h:281
GtkWidget * popup_area
Definition bauhaus.h:247
struct dt_bauhaus_widget_t * current
Definition bauhaus.h:245
GdkRGBA graph_colors[3]
Definition bauhaus.h:283
GdkRGBA color_fg
Definition bauhaus.h:277
int change_active
Definition bauhaus.h:258
GdkRGBA color_fg_insensitive
Definition bauhaus.h:277
float marker_size
Definition bauhaus.h:270
float mouse_y
Definition bauhaus.h:250
GdkRGBA color_bg
Definition bauhaus.h:277
GtkDrawingAreaClass parent_class
Definition bauhaus.h:235
guint signals[DT_BAUHAUS_LAST_SIGNAL]
Definition bauhaus.h:238
char label[256]
Definition bauhaus.h:186
gboolean show_quad
Definition bauhaus.h:196
GtkDrawingArea parent
Definition bauhaus.h:175
GtkBorder * padding
Definition bauhaus.h:203
dt_bauhaus_quad_paint_f quad_paint
Definition bauhaus.h:188
dt_bauhaus_data_t data
Definition bauhaus.h:218
gboolean no_module_list
Definition bauhaus.h:208
gboolean use_default_callback
Definition bauhaus.h:215
gboolean no_accels
Definition bauhaus.h:207
void * quad_paint_data
Definition bauhaus.h:192
GtkBorder * margin
Definition bauhaus.h:203
dt_gui_module_t *gpointer field
Definition bauhaus.h:181
dt_bauhaus_t * bauhaus
Definition bauhaus.h:211
dt_introspection_type_t field_type
Definition bauhaus.h:183
dt_bauhaus_type_t type
Definition bauhaus.h:177
The dt_gui_module_t type is the intersection between a dt_lib_module_t and a dt_iop_module_t structur...
dt_bauhaus_combobox_data_t combobox
Definition bauhaus.h:162
dt_bauhaus_slider_data_t slider
Definition bauhaus.h:161