Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
bauhaus.c File Reference
#include "common/darktable.h"
#include "gui/gdkkeys.h"
#include "bauhaus/bauhaus.h"
#include "common/calculator.h"
#include "common/math.h"
#include "common/debug.h"
#include "control/conf.h"
#include "control/control.h"
#include "develop/imageop.h"
#include "gui/accelerators.h"
#include "gui/color_picker_proxy.h"
#include "gui/gui_throttle.h"
#include "gui/gtk.h"
#include <strings.h>
#include <pango/pangocairo.h>
+ Include dependency graph for bauhaus.c:

Go to the source code of this file.

Data Structures

struct  dt_bauhaus_resize_handle_t
 

Macros

#define DEBUG   0
 
#define DT_BAUHAUS_FOCUS_IDLE_SOURCE_KEY   "dt-bauhaus-focus-idle-source"
 
#define DT_BAUHAUS_FOCUS_IDLE_TRIES_KEY   "dt-bauhaus-focus-idle-tries"
 
#define DT_BAUHAUS_FOCUS_IDLE_MAX_TRIES   20
 

Typedefs

typedef enum _bh_active_region_t _bh_active_region_t
 
typedef enum _bh_valign_t _bh_valign_t
 
typedef enum _bh_halign_t _bh_halign_t
 
typedef struct dt_bauhaus_resize_handle_t dt_bauhaus_resize_handle_t
 

Enumerations

enum  _bh_active_region_t {
  BH_REGION_OUT = 0 ,
  BH_REGION_MAIN ,
  BH_REGION_QUAD
}
 
enum  _bh_valign_t {
  BH_ALIGN_TOP = 0 ,
  BH_ALIGN_BOTTOM = 1 ,
  BH_ALIGN_MIDDLE = 2
}
 
enum  _bh_halign_t {
  BH_ALIGN_LEFT = 0 ,
  BH_ALIGN_RIGHT = 1 ,
  BH_ALIGN_CENTER = 2
}
 

Functions

static gboolean dt_bauhaus_popup_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data)
 
static gboolean dt_bauhaus_popup_key_press (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
 
static gboolean _widget_draw (GtkWidget *widget, cairo_t *crf)
 
static gboolean _widget_scroll (GtkWidget *widget, GdkEventScroll *event)
 
static gboolean _widget_key_press (GtkWidget *widget, GdkEventKey *event)
 
static void _get_preferred_width (GtkWidget *widget, gint *minimum_size, gint *natural_size)
 
static void _get_preferred_height (GtkWidget *widget, gint *minimum_size, gint *natural_size)
 
static void _style_updated (GtkWidget *widget)
 
static void dt_bauhaus_widget_accept (struct dt_bauhaus_widget_t *w, gboolean timeout)
 
static void dt_bauhaus_widget_reject (struct dt_bauhaus_widget_t *w)
 
static void _combobox_set (GtkWidget *widget, const int pos, gboolean timeout)
 Set a combobox to a given integer position. Private API function, called from user events.
 
static void _margins_retrieve (struct dt_bauhaus_widget_t *w)
 Update the box margin and padding properties of the widget w by reading CSS context.
 
static float _bh_get_row_height (struct dt_bauhaus_widget_t *w)
 Get the total height of a GUI row containing a line of text + top and bottom padding.
 
static float _bh_get_combobox_entry_height (struct dt_bauhaus_widget_t *w, const dt_bauhaus_combobox_entry_t *entry)
 Get the vertical space used by a combobox popup entry.
 
static double _widget_get_quad_width (struct dt_bauhaus_widget_t *w)
 Get the width of the quad without padding.
 
static double _widget_get_total_width (struct dt_bauhaus_widget_t *w, GtkWidget *widget)
 Get the total width of the main Bauhaus widget area, accounting for padding and margins.
 
static double _widget_get_main_width (struct dt_bauhaus_widget_t *w, GtkWidget *widget, double *total_width)
 Get the width of the main Bauhaus widget area (slider scale or combobox), accounting for quad space, padding and margins.
 
static double _widget_get_main_height (struct dt_bauhaus_widget_t *w, GtkWidget *widget)
 Get the height of the main Bauhaus widget area (slider scale or combobox), that is the box allocation minus padding and margins.
 
static double _get_combobox_height (GtkWidget *widget)
 
static double _get_slider_height (GtkWidget *widget)
 
static double _get_indicator_y_position (struct dt_bauhaus_widget_t *w)
 
static double _get_slider_bar_height (struct dt_bauhaus_widget_t *w)
 
static double _get_combobox_popup_height (struct dt_bauhaus_widget_t *w)
 
static void _translate_cursor (double *x, double *y, struct dt_bauhaus_widget_t *const w)
 Translate in-place the cursor coordinates within the widget or popup according to padding and margin, so x = 0 is mapped to the starting point of the slider.
 
static _bh_active_region_t _bh_get_active_region (GtkWidget *widget, double *x, double *y, double *width, GtkWidget *popup)
 Check if we have user cursor over quad area or over the slider/main area, then correct cursor coordinates for widget padding and margin. For sliders, it means that x = 0 is mapped to the origin of the scale.
 
static float _bh_round_to_n_digits (const struct dt_bauhaus_widget_t *const w, float x)
 Round a slider numeric value to the number of digits specified in the widget w.
 
static float _bh_slider_get_min_step (const struct dt_bauhaus_widget_t *const w)
 Return the minimum representable value step, for current UI scaling factor and number of digits.
 
static double _bh_slider_get_scale (struct dt_bauhaus_widget_t *w)
 
static void _bh_combobox_get_hovered_entry (struct dt_bauhaus_widget_t *w)
 
static _bh_active_region_t _popup_coordinates (dt_bauhaus_t *bh, const double x_root, const double y_root, double *event_x, double *event_y)
 
static gboolean ensure_focus_idle (gpointer data)
 
gboolean dt_bauhaus_focus_in_callback (GtkWidget *widget, GdkEventFocus event, gpointer user_data)
 
gboolean dt_bauhaus_focus_out_callback (GtkWidget *widget, GdkEventFocus event, gpointer user_data)
 
gboolean dt_bauhaus_focus_callback (GtkWidget *widget, GtkDirectionType direction, gpointer data)
 
gboolean _action_request_focus (GtkAccelGroup *accel_group, GObject *accelerable, guint keyval, GdkModifierType modifier, gpointer data)
 
static void _combobox_next_sensitive (struct dt_bauhaus_widget_t *w, int delta)
 
static dt_bauhaus_combobox_entry_tnew_combobox_entry (const char *label, const char *tooltip, dt_bauhaus_combobox_alignment_t alignment, gboolean sensitive, void *data, void(*free_func)(void *))
 
static dt_bauhaus_combobox_entry_tnew_combobox_separator (const float row_height_factor)
 Create a new combobox separator entry.
 
static void free_combobox_entry (gpointer data)
 
static GdkRGBA * default_color_assign ()
 
static void show_pango_text (struct dt_bauhaus_widget_t *w, GtkStyleContext *context, cairo_t *cr, GdkRectangle *bounding_box, const char *text, _bh_halign_t halign, _bh_valign_t valign, PangoEllipsizeMode ellipsize, GdkRGBA *bg_color, float *width, float *height, GtkStateFlags state)
 Display text aligned in a bounding box, with pseudo-classes properties handled, and optional background color.
 
static void dt_bauhaus_slider_set_normalized (struct dt_bauhaus_widget_t *w, float pos, gboolean raise, gboolean timeout)
 Set the value of a slider as a ratio of the GUI slider width.
 
static double get_slider_line_offset (const double pos, const double scale, const double x, double y, const double line_height)
 
static void draw_slider_line (cairo_t *cr, const double pos, const double off, const double scale, const double width, const double height, const double line_height, double line_width)
 
static void _slider_zoom_range (struct dt_bauhaus_widget_t *w, float zoom)
 
static gboolean dt_bauhaus_popup_scroll (GtkWidget *widget, GdkEventScroll *event, gpointer user_data)
 
static gboolean dt_bauhaus_popup_motion_notify (GtkWidget *widget, GdkEventMotion *event, gpointer user_data)
 
static gboolean dt_bauhaus_popup_leave_notify (GtkWidget *widget, GdkEventCrossing *event, gpointer user_data)
 
static gboolean dt_bauhaus_popup_button_release (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
 
static gboolean dt_bauhaus_popup_button_press (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
 
static void dt_bauhaus_window_show (GtkWidget *w, gpointer user_data)
 
static void dt_bh_init (DtBauhausWidget *class)
 
static gboolean _enter_leave (GtkWidget *widget, GdkEventCrossing *event)
 
static gboolean _resize_handle_cursor (GtkWidget *widget, GdkEventCrossing *event, gpointer user_data)
 
static gboolean _resize_handle_button (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
 
static gboolean _resize_handle_motion (GtkWidget *widget, GdkEventMotion *event, gpointer user_data)
 
GtkWidgetdt_bauhaus_resize_handle_new (GtkOrientation orientation, gboolean invert, const char *tooltip, dt_bauhaus_resize_handle_get_size_f get_size, dt_bauhaus_resize_handle_resize_f resize, gpointer user_data)
 Create a themed handle widget driving one-dimensional resize gestures.
 
static void _widget_finalize (GObject *widget)
 
static void dt_bh_class_init (DtBauhausWidgetClass *class)
 
void dt_bauhaus_load_theme (dt_bauhaus_t *bauhaus)
 
dt_bauhaus_tdt_bauhaus_init ()
 
void dt_bauhaus_cleanup (dt_bauhaus_t *bauhaus)
 
static gboolean dt_bauhaus_slider_button_press (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
 
static gboolean dt_bauhaus_slider_button_release (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
 
static gboolean dt_bauhaus_slider_motion_notify (GtkWidget *widget, GdkEventMotion *event, gpointer user_data)
 
static gboolean dt_bauhaus_combobox_button_press (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
 
static void _bauhaus_widget_init (dt_bauhaus_t *bauhaus, dt_bauhaus_widget_t *w, dt_gui_module_t *self)
 
void dt_bauhaus_combobox_set_default (GtkWidget *widget, int def)
 
void dt_bauhaus_slider_set_hard_min (GtkWidget *widget, float val)
 
float dt_bauhaus_slider_get_hard_min (GtkWidget *widget)
 
void dt_bauhaus_slider_set_hard_max (GtkWidget *widget, float val)
 
float dt_bauhaus_slider_get_hard_max (GtkWidget *widget)
 
void dt_bauhaus_slider_set_soft_min (GtkWidget *widget, float val)
 
float dt_bauhaus_slider_get_soft_min (GtkWidget *widget)
 
void dt_bauhaus_slider_set_soft_max (GtkWidget *widget, float val)
 
float dt_bauhaus_slider_get_soft_max (GtkWidget *widget)
 
void dt_bauhaus_slider_set_default (GtkWidget *widget, float def)
 
void dt_bauhaus_slider_set_soft_range (GtkWidget *widget, float soft_min, float soft_max)
 
void dt_bauhaus_widget_set_label (GtkWidget *widget, const char *label)
 
const char * dt_bauhaus_widget_get_label (GtkWidget *widget)
 
void dt_bauhaus_widget_set_quad_paint (GtkWidget *widget, dt_bauhaus_quad_paint_f f, int paint_flags, void *paint_data)
 
void dt_bauhaus_widget_set_field (GtkWidget *widget, gpointer field, dt_introspection_type_t field_type)
 
void dt_bauhaus_widget_set_quad_toggle (GtkWidget *widget, int toggle)
 
void dt_bauhaus_widget_set_quad_active (GtkWidget *widget, int active)
 
void dt_bauhaus_widget_set_quad_visibility (GtkWidget *widget, const gboolean visible)
 
int dt_bauhaus_widget_get_quad_active (GtkWidget *widget)
 
void dt_bauhaus_widget_press_quad (GtkWidget *widget)
 
void dt_bauhaus_widget_release_quad (GtkWidget *widget)
 
GtkWidgetdt_bauhaus_slider_new (dt_bauhaus_t *bh, dt_gui_module_t *self)
 
GtkWidgetdt_bauhaus_slider_new_with_range (dt_bauhaus_t *bh, dt_gui_module_t *self, float min, float max, float step, float defval, int digits)
 
GtkWidgetdt_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)
 
GtkWidgetdt_bauhaus_slider_from_widget (dt_bauhaus_t *bh, dt_bauhaus_widget_t *w, dt_gui_module_t *self, float min, float max, float step, float defval, int digits, int feedback)
 
GtkWidgetdt_bauhaus_combobox_new (dt_bauhaus_t *bh, dt_gui_module_t *self)
 
GtkWidgetdt_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)
 
static void _combobox_conf_value_changed (GtkWidget *widget, gpointer user_data)
 
GtkWidgetdt_bauhaus_combobox_from_conf (dt_bauhaus_t *bh, dt_gui_module_t *self, const char *confkey)
 
void dt_bauhaus_combobox_from_widget (dt_bauhaus_t *bh, dt_bauhaus_widget_t *w, dt_gui_module_t *self)
 
static dt_bauhaus_combobox_data_t_combobox_data (GtkWidget *widget)
 
static int _combobox_selectable_count (const dt_bauhaus_combobox_data_t *d)
 Count selectable combobox entries.
 
static int _combobox_public_to_entry_pos (const dt_bauhaus_combobox_data_t *d, const int pos, const gboolean allow_end)
 Convert a public value index to the internal entry row.
 
static int _combobox_entry_pos_to_public (const dt_bauhaus_combobox_data_t *d, const int entry_pos)
 Convert an internal entry row to the public value index.
 
void dt_bauhaus_combobox_add_populate_fct (GtkWidget *widget, void(*fct)(GtkWidget *w, void *module))
 
void dt_bauhaus_combobox_add_list (GtkWidget *widget, const char **texts)
 
void dt_bauhaus_combobox_add (GtkWidget *widget, const char *text)
 
void dt_bauhaus_combobox_add_with_tooltip (GtkWidget *widget, const char *text, const char *tooltip)
 
void dt_bauhaus_combobox_add_aligned (GtkWidget *widget, const char *text, dt_bauhaus_combobox_alignment_t align)
 
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_add_separator (GtkWidget *widget)
 
void dt_bauhaus_combobox_add_separator_with_height (GtkWidget *widget, const float row_height_factor)
 
void dt_bauhaus_combobox_set_entries_ellipsis (GtkWidget *widget, PangoEllipsizeMode ellipis)
 
void dt_bauhaus_combobox_set_editable (GtkWidget *widget, int editable)
 
int dt_bauhaus_combobox_get_editable (GtkWidget *widget)
 
void dt_bauhaus_combobox_set_selected_text_align (GtkWidget *widget, const dt_bauhaus_combobox_alignment_t text_align)
 
void dt_bauhaus_combobox_remove_at (GtkWidget *widget, int pos)
 
void dt_bauhaus_combobox_insert (GtkWidget *widget, const char *text, int pos)
 
void dt_bauhaus_combobox_insert_full (GtkWidget *widget, const char *text, dt_bauhaus_combobox_alignment_t align, gpointer data, void(*free_func)(void *), int pos)
 
void dt_bauhaus_combobox_insert_separator (GtkWidget *widget, int pos)
 
void dt_bauhaus_combobox_insert_separator_with_height (GtkWidget *widget, int pos, const float row_height_factor)
 
int dt_bauhaus_combobox_length (GtkWidget *widget)
 
const char * dt_bauhaus_combobox_get_text (GtkWidget *widget)
 
gpointer dt_bauhaus_combobox_get_data (GtkWidget *widget)
 
void dt_bauhaus_combobox_clear (GtkWidget *widget)
 
const char * dt_bauhaus_combobox_get_entry (GtkWidget *widget, int pos)
 
void dt_bauhaus_combobox_set_text (GtkWidget *widget, const char *text)
 
static void _delayed_combobox_commit (gpointer data)
 
void dt_bauhaus_combobox_set (GtkWidget *widget, const int pos)
 
gboolean dt_bauhaus_combobox_set_from_text (GtkWidget *widget, const char *text)
 
gboolean dt_bauhaus_combobox_set_from_value (GtkWidget *widget, int value)
 
int dt_bauhaus_combobox_get (GtkWidget *widget)
 
void dt_bauhaus_combobox_entry_set_sensitive (GtkWidget *widget, int pos, gboolean sensitive)
 
void dt_bauhaus_slider_clear_stops (GtkWidget *widget)
 
void dt_bauhaus_slider_set_stop (GtkWidget *widget, float stop, float r, float g, float b)
 
static void dt_bauhaus_draw_indicator (struct dt_bauhaus_widget_t *w, float pos, cairo_t *cr, float wd)
 
static void dt_bauhaus_draw_quad (struct dt_bauhaus_widget_t *w, cairo_t *cr, const double x, const double y)
 
static void dt_bauhaus_draw_baseline (struct dt_bauhaus_widget_t *w, cairo_t *cr, float width)
 Draw the slider baseline, aka the backgronud bar.
 
static gchar * _build_label (const struct dt_bauhaus_widget_t *w)
 
static float _get_combobox_max_width (GtkWidget *widget)
 
void dt_bauhaus_hide_popup (dt_bauhaus_t *bh)
 
void dt_bauhaus_show_popup (GtkWidget *widget)
 
static void _slider_add_step (GtkWidget *widget, float delta, guint state)
 
float dt_bauhaus_slider_get (GtkWidget *widget)
 
float dt_bauhaus_slider_get_val (GtkWidget *widget)
 
char * dt_bauhaus_slider_get_text (GtkWidget *w, float val)
 
void dt_bauhaus_slider_set (GtkWidget *widget, float pos)
 
void dt_bauhaus_slider_set_val (GtkWidget *widget, float val)
 
void dt_bauhaus_slider_set_digits (GtkWidget *widget, int val)
 
int dt_bauhaus_slider_get_digits (GtkWidget *widget)
 
void dt_bauhaus_slider_set_step (GtkWidget *widget, float val)
 
float dt_bauhaus_slider_get_step (GtkWidget *widget)
 
void dt_bauhaus_slider_set_feedback (GtkWidget *widget, int feedback)
 
void dt_bauhaus_slider_reset (GtkWidget *widget)
 
void dt_bauhaus_slider_set_format (GtkWidget *widget, const char *format)
 
void dt_bauhaus_slider_set_factor (GtkWidget *widget, float factor)
 
void dt_bauhaus_slider_set_offset (GtkWidget *widget, float offset)
 
static void _delayed_slider_commit (gpointer data)
 
void dt_bauhaus_disable_accels (GtkWidget *widget)
 
void dt_bauhaus_disable_module_list (GtkWidget *widget)
 
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 needs to be defined first, of course.
 

Macro Definition Documentation

◆ DEBUG

#define DEBUG   0

Definition at line 97 of file bauhaus.c.

◆ DT_BAUHAUS_FOCUS_IDLE_MAX_TRIES

#define DT_BAUHAUS_FOCUS_IDLE_MAX_TRIES   20

Definition at line 446 of file bauhaus.c.

◆ DT_BAUHAUS_FOCUS_IDLE_SOURCE_KEY

#define DT_BAUHAUS_FOCUS_IDLE_SOURCE_KEY   "dt-bauhaus-focus-idle-source"

Definition at line 444 of file bauhaus.c.

◆ DT_BAUHAUS_FOCUS_IDLE_TRIES_KEY

#define DT_BAUHAUS_FOCUS_IDLE_TRIES_KEY   "dt-bauhaus-focus-idle-tries"

Definition at line 445 of file bauhaus.c.

Typedef Documentation

◆ _bh_active_region_t

◆ _bh_halign_t

typedef enum _bh_halign_t _bh_halign_t

◆ _bh_valign_t

typedef enum _bh_valign_t _bh_valign_t

◆ dt_bauhaus_resize_handle_t

Enumeration Type Documentation

◆ _bh_active_region_t

Enumerator
BH_REGION_OUT 
BH_REGION_MAIN 
BH_REGION_QUAD 

Definition at line 316 of file bauhaus.c.

◆ _bh_halign_t

Enumerator
BH_ALIGN_LEFT 
BH_ALIGN_RIGHT 
BH_ALIGN_CENTER 

Definition at line 663 of file bauhaus.c.

◆ _bh_valign_t

Enumerator
BH_ALIGN_TOP 
BH_ALIGN_BOTTOM 
BH_ALIGN_MIDDLE 

Definition at line 655 of file bauhaus.c.

Function Documentation

◆ _action_request_focus()

gboolean _action_request_focus ( GtkAccelGroup *  accel_group,
GObject *  accelerable,
guint  keyval,
GdkModifierType  modifier,
gpointer  data 
)

◆ _bauhaus_widget_init()

◆ _bh_combobox_get_hovered_entry()

◆ _bh_get_active_region()

static _bh_active_region_t _bh_get_active_region ( GtkWidget widget,
double x,
double y,
double width,
GtkWidget popup 
)
static

Check if we have user cursor over quad area or over the slider/main area, then correct cursor coordinates for widget padding and margin. For sliders, it means that x = 0 is mapped to the origin of the scale.

Parameters
widgetBauhaus widget
eventUser event
xInitial coordinate x of the cursor. Will be corrected in-place for margin and padding.
yInitial coordinate y of the cursor. Will be corrected in-place for margin and padding.
widthReturn pointer for the main width. Can be NULL. Caller owns the memory and is responsible for freeing it.
popupPointer to the Gtk window for the popup if any. Can be NULL. Height is computed from there if defined.
Returns
_bh_active_region_t the region being selected, or BH_REGION_OUT (aka 0) if the cursor is outside the padding box (inactive region).

Definition at line 335 of file bauhaus.c.

References _translate_cursor(), _widget_get_main_height(), _widget_get_main_width(), BH_REGION_MAIN, BH_REGION_OUT, BH_REGION_QUAD, DT_BAUHAUS_WIDGET, INNER_PADDING, width, and x.

Referenced by _popup_coordinates(), dt_bauhaus_combobox_button_press(), dt_bauhaus_slider_button_press(), and dt_bauhaus_slider_motion_notify().

◆ _bh_get_combobox_entry_height()

static float _bh_get_combobox_entry_height ( struct dt_bauhaus_widget_t w,
const dt_bauhaus_combobox_entry_t entry 
)
static

Get the vertical space used by a combobox popup entry.

Real entries keep the regular row height. Separators may reserve a smaller row while remaining part of the popup geometry for mouse hit-testing.

Definition at line 161 of file bauhaus.c.

References _bh_get_row_height(), dt_bauhaus_combobox_entry_t::is_separator, MAX, and dt_bauhaus_combobox_entry_t::row_height_factor.

Referenced by _bh_combobox_get_hovered_entry(), _get_combobox_popup_height(), and dt_bauhaus_popup_draw().

◆ _bh_get_row_height()

static float _bh_get_row_height ( struct dt_bauhaus_widget_t w)
static

Get the total height of a GUI row containing a line of text + top and bottom padding.

This applies to comboboxes list elements only. Sliders text lines have only bottom padding.

Returns
float

Definition at line 150 of file bauhaus.c.

References dt_bauhaus_widget_t::bauhaus, and dt_bauhaus_t::line_height.

Referenced by _bh_combobox_get_hovered_entry(), _bh_get_combobox_entry_height(), _get_combobox_popup_height(), and dt_bauhaus_popup_draw().

◆ _bh_round_to_n_digits()

static float _bh_round_to_n_digits ( const struct dt_bauhaus_widget_t *const  w,
float  x 
)
static

Round a slider numeric value to the number of digits specified in the widget w.

Parameters
w
xValue to round.
Returns
float

Definition at line 370 of file bauhaus.c.

References d, dt_bauhaus_widget_t::data, factor, ipow(), dt_bauhaus_data_t::slider, and x.

Referenced by dt_bauhaus_slider_set_hard_max(), and dt_bauhaus_slider_set_hard_min().

◆ _bh_slider_get_min_step()

static float _bh_slider_get_min_step ( const struct dt_bauhaus_widget_t *const  w)
static

Return the minimum representable value step, for current UI scaling factor and number of digits.

Parameters
w
Returns
float

Definition at line 383 of file bauhaus.c.

References d, dt_bauhaus_widget_t::data, dt_bauhaus_slider_data_t::factor, ipow(), and dt_bauhaus_data_t::slider.

Referenced by _bh_slider_get_scale(), and _slider_zoom_range().

◆ _bh_slider_get_scale()

static double _bh_slider_get_scale ( struct dt_bauhaus_widget_t w)
static

◆ _build_label()

static gchar * _build_label ( const struct dt_bauhaus_widget_t w)
static

Definition at line 2677 of file bauhaus.c.

References dt_bauhaus_widget_t::label.

Referenced by _widget_draw(), and dt_bauhaus_popup_draw().

◆ _combobox_conf_value_changed()

static void _combobox_conf_value_changed ( GtkWidget widget,
gpointer  user_data 
)
static

Definition at line 1862 of file bauhaus.c.

References dt_bauhaus_combobox_get_data(), dt_conf_set_string(), and value.

Referenced by dt_bauhaus_combobox_from_conf().

◆ _combobox_data()

◆ _combobox_entry_pos_to_public()

static int _combobox_entry_pos_to_public ( const dt_bauhaus_combobox_data_t d,
const int  entry_pos 
)
static

Convert an internal entry row to the public value index.

Definition at line 1986 of file bauhaus.c.

References d, i, IS_NULL_PTR, and dt_bauhaus_combobox_entry_t::is_separator.

Referenced by dt_bauhaus_combobox_get().

◆ _combobox_next_sensitive()

static void _combobox_next_sensitive ( struct dt_bauhaus_widget_t w,
int  delta 
)
static

◆ _combobox_public_to_entry_pos()

static int _combobox_public_to_entry_pos ( const dt_bauhaus_combobox_data_t d,
const int  pos,
const gboolean  allow_end 
)
static

Convert a public value index to the internal entry row.

The internal row includes separators because the popup needs to draw them. The public index excludes separators because callers use it as a value.

Definition at line 1966 of file bauhaus.c.

References d, i, IS_NULL_PTR, and dt_bauhaus_combobox_entry_t::is_separator.

Referenced by dt_bauhaus_combobox_entry_set_sensitive(), dt_bauhaus_combobox_get_entry(), dt_bauhaus_combobox_insert_full(), dt_bauhaus_combobox_insert_separator_with_height(), dt_bauhaus_combobox_remove_at(), and dt_bauhaus_combobox_set().

◆ _combobox_selectable_count()

static int _combobox_selectable_count ( const dt_bauhaus_combobox_data_t d)
static

Count selectable combobox entries.

Separators are drawn as rows in the popup, but they are not values. Public indexes therefore stay stable when separators are inserted.

Definition at line 1949 of file bauhaus.c.

References d, i, IS_NULL_PTR, and dt_bauhaus_combobox_entry_t::is_separator.

Referenced by dt_bauhaus_combobox_length(), and dt_bauhaus_combobox_set().

◆ _combobox_set()

void _combobox_set ( GtkWidget widget,
const int  pos,
gboolean  timeout 
)
static

Set a combobox to a given integer position. Private API function, called from user events.

Parameters
widget
pos-1 for "custom" value in editable comboboxes, >= 0 for items in the list
timeoutTRUE to apply an adaptative timeout preventing intermediate setting steps (e.g. while scrolling) to emit too many value-changed signals and committing to pipeline. FALSE forces immediate dispatch of new value, when there is no ambiguity that the setting is final (e.g left click).

Definition at line 2256 of file bauhaus.c.

References _delayed_combobox_commit(), dt_bauhaus_combobox_data_t::active, dt_bauhaus_widget_t::bauhaus, dt_bauhaus_data_t::combobox, dt_bauhaus_t::current, d, darktable, dt_bauhaus_widget_t::data, DT_BAUHAUS_WIDGET, dt_gui_throttle_cancel(), dt_gui_throttle_queue(), darktable_t::gui, IS_NULL_PTR, dt_bauhaus_combobox_entry_t::is_separator, dt_bauhaus_t::popup_area, and dt_gui_gtk_t::reset.

Referenced by _combobox_next_sensitive(), dt_bauhaus_combobox_set(), dt_bauhaus_combobox_set_from_text(), dt_bauhaus_combobox_set_from_value(), and dt_bauhaus_widget_accept().

◆ _delayed_combobox_commit()

◆ _delayed_slider_commit()

◆ _enter_leave()

static gboolean _enter_leave ( GtkWidget widget,
GdkEventCrossing *  event 
)
static

◆ _get_combobox_height()

static double _get_combobox_height ( GtkWidget widget)
static

WARNING: keep bauhaus widget height consistent with native Gtk widgets. Widget spacing is handled by DT_GUI_BOX_SPACING so you shouldn't have to use margins/padding in general.

To debug bauhaus widget allocation issue, paint a colored background in ansel.css, like:

.dt_bauhaus, checkbutton { padding: 0; margin: 0; background-color: red; }

A combobox height should be consistent with a native Gtk checkbox height.

Definition at line 249 of file bauhaus.c.

References dt_bauhaus_widget_t::bauhaus, dt_bauhaus_t::line_height, dt_bauhaus_widget_t::margin, and dt_bauhaus_widget_t::padding.

Referenced by _get_preferred_height(), _style_updated(), and _widget_draw().

◆ _get_combobox_max_width()

◆ _get_combobox_popup_height()

◆ _get_indicator_y_position()

static double _get_indicator_y_position ( struct dt_bauhaus_widget_t w)
static

◆ _get_preferred_height()

static void _get_preferred_height ( GtkWidget widget,
gint *  minimum_size,
gint *  natural_size 
)
static

◆ _get_preferred_width()

static void _get_preferred_width ( GtkWidget widget,
gint *  minimum_size,
gint *  natural_size 
)
static

◆ _get_slider_bar_height()

static double _get_slider_bar_height ( struct dt_bauhaus_widget_t w)
static

◆ _get_slider_height()

◆ _margins_retrieve()

static void _margins_retrieve ( struct dt_bauhaus_widget_t w)
static

Update the box margin and padding properties of the widget w by reading CSS context.

Parameters
wThe widget to update and from which the CSS context is read.

Definition at line 124 of file bauhaus.c.

References IS_NULL_PTR, dt_bauhaus_widget_t::margin, dt_bauhaus_widget_t::padding, and state.

Referenced by _get_preferred_height(), _style_updated(), _widget_draw(), and dt_bauhaus_show_popup().

◆ _popup_coordinates()

static _bh_active_region_t _popup_coordinates ( dt_bauhaus_t bh,
const double  x_root,
const double  y_root,
double event_x,
double event_y 
)
static

◆ _resize_handle_button()

◆ _resize_handle_cursor()

static gboolean _resize_handle_cursor ( GtkWidget widget,
GdkEventCrossing *  event,
gpointer  user_data 
)
static

◆ _resize_handle_motion()

◆ _slider_add_step()

static void _slider_add_step ( GtkWidget widget,
float  delta,
guint  state 
)
static

◆ _slider_zoom_range()

static void _slider_zoom_range ( struct dt_bauhaus_widget_t w,
float  zoom 
)
static

◆ _style_updated()

static void _style_updated ( GtkWidget widget)
static

◆ _translate_cursor()

static void _translate_cursor ( double x,
double y,
struct dt_bauhaus_widget_t *const  w 
)
static

Translate in-place the cursor coordinates within the widget or popup according to padding and margin, so x = 0 is mapped to the starting point of the slider.

Parameters
xCursor coordinate x
yCursor coordinate y
wWidget

Definition at line 307 of file bauhaus.c.

References dt_bauhaus_widget_t::bauhaus, DT_BAUHAUS_SLIDER, dt_bauhaus_widget_t::margin, dt_bauhaus_t::marker_size, dt_bauhaus_widget_t::padding, dt_bauhaus_widget_t::type, and x.

Referenced by _bh_get_active_region().

◆ _widget_draw()

◆ _widget_finalize()

◆ _widget_get_main_height()

static double _widget_get_main_height ( struct dt_bauhaus_widget_t w,
GtkWidget widget 
)
static

Get the height of the main Bauhaus widget area (slider scale or combobox), that is the box allocation minus padding and margins.

Parameters
wPointer to the structure holding the widget attributes, aka the dt_bauhaus_widget_t
widgetActual GtkWidget to get allocation from. Can be NULL if it's the same as the Bauhaus widget.
Returns
double

Definition at line 223 of file bauhaus.c.

References dt_bauhaus_widget_t::margin, and dt_bauhaus_widget_t::padding.

Referenced by _bh_get_active_region(), _widget_draw(), dt_bauhaus_popup_draw(), and dt_bauhaus_popup_motion_notify().

◆ _widget_get_main_width()

static double _widget_get_main_width ( struct dt_bauhaus_widget_t w,
GtkWidget widget,
double total_width 
)
static

Get the width of the main Bauhaus widget area (slider scale or combobox), accounting for quad space, padding and margins.

Parameters
wPointer to the structure holding the widget attributes, aka the dt_bauhaus_widget_t
widgetActual GtkWidget to get allocation from. Can be NULL if it's the same as the Bauhaus widget.
total_widthPointer where to write the total width of the widget, which is used in intermediate computations. This will spare another call to gtk_widget_get_allocation() if both are needed. Can be NULL.
Returns
double

Definition at line 206 of file bauhaus.c.

References _widget_get_quad_width(), _widget_get_total_width(), dt_bauhaus_widget_t::bauhaus, DT_BAUHAUS_SLIDER, INNER_PADDING, dt_bauhaus_t::marker_size, and dt_bauhaus_widget_t::type.

Referenced by _bh_get_active_region(), _widget_draw(), dt_bauhaus_popup_draw(), dt_bauhaus_popup_motion_notify(), and dt_bauhaus_slider_button_release().

◆ _widget_get_quad_width()

static double _widget_get_quad_width ( struct dt_bauhaus_widget_t w)
static

Get the width of the quad without padding.

Parameters
w
Returns
double

Definition at line 174 of file bauhaus.c.

References dt_bauhaus_widget_t::bauhaus, dt_bauhaus_t::quad_width, and dt_bauhaus_widget_t::show_quad.

Referenced by _widget_get_main_width().

◆ _widget_get_total_width()

static double _widget_get_total_width ( struct dt_bauhaus_widget_t w,
GtkWidget widget 
)
static

Get the total width of the main Bauhaus widget area, accounting for padding and margins.

Parameters
wPointer to the structure holding the widget attributes, aka the dt_bauhaus_widget_t
widgetActual GtkWidget to get allocation from. Can be NULL if it's the same as the Bauhaus widget.
Returns
double

Definition at line 189 of file bauhaus.c.

References dt_bauhaus_widget_t::margin, and dt_bauhaus_widget_t::padding.

Referenced by _widget_get_main_width().

◆ _widget_key_press()

◆ _widget_scroll()

◆ default_color_assign()

static GdkRGBA * default_color_assign ( )
static

Definition at line 647 of file bauhaus.c.

Referenced by _widget_draw(), and dt_bauhaus_popup_draw().

◆ draw_slider_line()

static void draw_slider_line ( cairo_t *  cr,
const double  pos,
const double  off,
const double  scale,
const double  width,
const double  height,
const double  line_height,
double  line_width 
)
static

Definition at line 848 of file bauhaus.c.

References double(), height, width, and x.

Referenced by dt_bauhaus_popup_draw().

◆ dt_bauhaus_cleanup()

void dt_bauhaus_cleanup ( dt_bauhaus_t bauhaus)

Definition at line 1500 of file bauhaus.c.

Referenced by dt_cleanup().

◆ dt_bauhaus_combobox_add()

◆ dt_bauhaus_combobox_add_aligned()

void dt_bauhaus_combobox_add_aligned ( GtkWidget widget,
const char *  text,
dt_bauhaus_combobox_alignment_t  align 
)

Definition at line 2033 of file bauhaus.c.

References dt_bauhaus_combobox_add_full(), and TRUE.

Referenced by _piwigo_refresh_albums().

◆ dt_bauhaus_combobox_add_full()

◆ dt_bauhaus_combobox_add_list()

void dt_bauhaus_combobox_add_list ( GtkWidget widget,
const char **  texts 
)

◆ dt_bauhaus_combobox_add_populate_fct()

void dt_bauhaus_combobox_add_populate_fct ( GtkWidget widget,
void(*)(GtkWidget *w, void *module)  fct 
)

Definition at line 2002 of file bauhaus.c.

References DT_BAUHAUS_COMBOBOX, DT_BAUHAUS_WIDGET, and IS_NULL_PTR.

Referenced by dt_iop_gui_init_raster().

◆ dt_bauhaus_combobox_add_separator()

void dt_bauhaus_combobox_add_separator ( GtkWidget widget)

◆ dt_bauhaus_combobox_add_separator_with_height()

void dt_bauhaus_combobox_add_separator_with_height ( GtkWidget widget,
const float  row_height_factor 
)

◆ dt_bauhaus_combobox_add_with_tooltip()

void dt_bauhaus_combobox_add_with_tooltip ( GtkWidget widget,
const char *  text,
const char *  tooltip 
)

◆ dt_bauhaus_combobox_button_press()

◆ dt_bauhaus_combobox_clear()

◆ dt_bauhaus_combobox_entry_set_sensitive()

void dt_bauhaus_combobox_entry_set_sensitive ( GtkWidget widget,
int  pos,
gboolean  sensitive 
)

◆ dt_bauhaus_combobox_from_conf()

◆ dt_bauhaus_combobox_from_widget()

◆ dt_bauhaus_combobox_get()

int dt_bauhaus_combobox_get ( GtkWidget widget)

Definition at line 2347 of file bauhaus.c.

References _combobox_data(), _combobox_entry_pos_to_public(), and d.

Referenced by _attach_selected_layer_clicked(), _attached_view_combo_changed(), _auto_set_exposure(), _auto_set_illuminant(), _callback_bool(), _channelmixerrgb_mixer_mode_callback(), _color_mode_changed(), _colorchecker_rebuild_patch_list(), _darkroom_change_rendering_size(), _dimensions_type_changed(), _draw_callback(), _edit_preset_response(), _event_aspect_presets_changed(), _intent_callback(), _intent_changed(), _interpolator_callback(), _layer_selected(), _mixer_mode_callback(), _orientation_changed(), _printer_intent_callback(), _printer_profile_changed(), _profile_changed(), _profile_changed(), _render_surface(), _settings_colors_changed(), _settings_flip_changed(), _settings_flip_update(), _settings_guides_changed(), _settings_update_visibility(), _size_in_px_update(), _size_update_display(), _sort_by_changed(), _sort_combo_changed(), _spot_settings_changed_callback(), _spot_settings_changed_callback(), _statistic_changed(), _style_callback(), _style_changed(), _sync_params_from_gui(), _unit_changed(), _update_point_gui(), ask_user_confirmation(), aspect_changed(), aspect_presets_changed(), bit_depth_changed(), bit_depth_changed(), blue_callback(), bpp_combobox_changed(), bpp_combobox_changed(), bpp_toggle_callback(), btn_toggled(), checker_changed_callback(), checker_color_changed_callback(), color_mode_changed(), colorscheme_callback(), compress_combobox_changed(), compression_changed(), compression_combobox_changed(), compression_toggle_callback(), compression_type_changed(), cropmode_callback(), dt_masks_iop_value_changed_callback(), fitting_option_changed(), format_changed(), get_params(), get_params(), green_callback(), gui_changed(), gui_reset(), gui_reset(), gui_update(), hint_combobox_changed(), hvflip_callback(), icc_toggle_callback(), interpolator_callback(), interpolator_callback(), interpolator_callback(), keystone_type_changed(), mode_callback(), mode_callback(), mode_toggle_callback(), modflags_changed(), onsave_action_toggle_callback(), optimize_changed_callback(), orientation_toggle_callback(), output_callback(), pages_toggle_callback(), patch_callback(), pixels2print(), position_h_changed(), position_v_changed(), preset_changed(), preset_tune_callback(), print2pixels(), profile_callback(), profile_changed(), rawoverexposed_colorscheme_callback(), rawoverexposed_mode_callback(), red_callback(), rotate_toggle_callback(), set_format_by_name(), set_visible_widgets(), shortfile_combobox_changed(), size_toggle_callback(), softproof_profile_callback(), target_callback(), target_geometry_changed(), tiling_changed(), watermark_callback(), and workicc_changed().

◆ dt_bauhaus_combobox_get_data()

◆ dt_bauhaus_combobox_get_editable()

int dt_bauhaus_combobox_get_editable ( GtkWidget widget)

Definition at line 2085 of file bauhaus.c.

References _combobox_data(), and d.

◆ dt_bauhaus_combobox_get_entry()

const char * dt_bauhaus_combobox_get_entry ( GtkWidget widget,
int  pos 
)

◆ dt_bauhaus_combobox_get_text()

◆ dt_bauhaus_combobox_insert()

void dt_bauhaus_combobox_insert ( GtkWidget widget,
const char *  text,
int  pos 
)

◆ dt_bauhaus_combobox_insert_full()

void dt_bauhaus_combobox_insert_full ( GtkWidget widget,
const char *  text,
dt_bauhaus_combobox_alignment_t  align,
gpointer  data,
void(*)(void *)  free_func,
int  pos 
)

◆ dt_bauhaus_combobox_insert_separator()

void dt_bauhaus_combobox_insert_separator ( GtkWidget widget,
int  pos 
)

◆ dt_bauhaus_combobox_insert_separator_with_height()

void dt_bauhaus_combobox_insert_separator_with_height ( GtkWidget widget,
int  pos,
const float  row_height_factor 
)

◆ dt_bauhaus_combobox_length()

◆ dt_bauhaus_combobox_new()

◆ dt_bauhaus_combobox_new_full()

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 
)

◆ dt_bauhaus_combobox_remove_at()

void dt_bauhaus_combobox_remove_at ( GtkWidget widget,
int  pos 
)

◆ dt_bauhaus_combobox_set()

void dt_bauhaus_combobox_set ( GtkWidget widget,
const int  pos 
)

Definition at line 2301 of file bauhaus.c.

References _combobox_data(), _combobox_public_to_entry_pos(), _combobox_selectable_count(), _combobox_set(), d, and FALSE.

Referenced by _area_button_press_callback(), _area_button_press_callback(), _auto_set_illuminant(), _channel_tabs_switch_callback(), _channelmixerrgb_mixer_mode_callback(), _combo_box_set_active_text(), _configure_tab(), _develop_ui_pipe_finished_callback(), _enter_edit_mode(), _event_aspect_presets_changed(), _guides_add_guide(), _lib_export_styles_changed_callback(), _mixer_mode_callback(), _new_printer_callback(), _on_storage_list_changed(), _piwigo_refresh_albums(), _populate_layer_list(), _presets_show_edit_dialog(), _raster_combo_populate(), _set_orientation(), _set_paper_size(), _set_printer(), _settings_flip_update(), _update_layout(), _update_point_gui(), aspect_presets_changed(), btn_toggled(), checker_button_press(), color_picker_apply(), commit_profile_callback(), do_crop(), dt_bauhaus_combobox_button_press(), dt_bauhaus_combobox_from_conf(), dt_bauhaus_combobox_new_full(), dt_bauhaus_popup_button_press(), dt_bauhaus_update_module(), dt_guides_update_popover_values(), dt_iop_tonecurve_button_press(), dt_lut_viewer_new(), dt_masks_iop_update(), gui_changed(), gui_init(), gui_init(), gui_init(), gui_init(), gui_init(), gui_init(), gui_reset(), gui_reset(), gui_reset(), gui_reset(), gui_reset(), gui_update(), gui_update(), gui_update(), keystone_type_populate(), rt_load_shape_algo_in_gui(), set_format_by_name(), set_params(), set_params(), set_params(), set_storage_by_name(), and temp_tint_callback().

◆ dt_bauhaus_combobox_set_default()

void dt_bauhaus_combobox_set_default ( GtkWidget widget,
int  def 
)

◆ dt_bauhaus_combobox_set_editable()

◆ dt_bauhaus_combobox_set_entries_ellipsis()

void dt_bauhaus_combobox_set_entries_ellipsis ( GtkWidget widget,
PangoEllipsizeMode  ellipis 
)

◆ dt_bauhaus_combobox_set_from_text()

gboolean dt_bauhaus_combobox_set_from_text ( GtkWidget widget,
const char *  text 
)

◆ dt_bauhaus_combobox_set_from_value()

◆ dt_bauhaus_combobox_set_selected_text_align()

◆ dt_bauhaus_combobox_set_text()

void dt_bauhaus_combobox_set_text ( GtkWidget widget,
const char *  text 
)

◆ dt_bauhaus_disable_accels()

void dt_bauhaus_disable_accels ( GtkWidget widget)

Definition at line 3942 of file bauhaus.c.

References dt_bauhaus_widget_t::no_accels, and TRUE.

Referenced by _combobox_new_from_list(), and dt_iop_gui_init_blending_body().

◆ dt_bauhaus_disable_module_list()

void dt_bauhaus_disable_module_list ( GtkWidget widget)

Prevent this Bauhaus widget from being tracked in the parent module refresh lists.

Definition at line 3948 of file bauhaus.c.

References dt_bauhaus_widget_t::no_module_list, and TRUE.

Referenced by _combobox_new_from_list(), dt_iop_gui_init_blendif(), dt_iop_gui_init_blending_body(), and dt_iop_gui_init_raster().

◆ dt_bauhaus_draw_baseline()

static void dt_bauhaus_draw_baseline ( struct dt_bauhaus_widget_t w,
cairo_t *  cr,
float  width 
)
static

Draw the slider baseline, aka the backgronud bar.

Parameters
wWidget
crCairo object
widthThe width of the actual slider baseline (corrected for padding, margin and quad width if needed)

Definition at line 2481 of file bauhaus.c.

References dt_bauhaus_t::baseline_size, dt_bauhaus_widget_t::bauhaus, dt_bauhaus_t::border_width, dt_bauhaus_t::color_bg, dt_bauhaus_t::color_border, dt_bauhaus_t::color_fg, dt_bauhaus_t::color_value, d, dt_bauhaus_widget_t::data, delta, dt_bauhaus_slider_data_t::grad_cnt, INNER_PADDING, k, dt_bauhaus_t::line_height, M_PI, dt_bauhaus_t::marker_size, position(), set_color(), dt_bauhaus_data_t::slider, and width.

Referenced by _widget_draw(), and dt_bauhaus_popup_draw().

◆ dt_bauhaus_draw_indicator()

◆ dt_bauhaus_draw_quad()

static void dt_bauhaus_draw_quad ( struct dt_bauhaus_widget_t w,
cairo_t *  cr,
const double  x,
const double  y 
)
static

◆ dt_bauhaus_focus_callback()

gboolean dt_bauhaus_focus_callback ( GtkWidget widget,
GtkDirectionType  direction,
gpointer  data 
)

Definition at line 530 of file bauhaus.c.

References FALSE, and TRUE.

Referenced by _bauhaus_widget_init().

◆ dt_bauhaus_focus_in_callback()

gboolean dt_bauhaus_focus_in_callback ( GtkWidget widget,
GdkEventFocus  event,
gpointer  user_data 
)

Definition at line 511 of file bauhaus.c.

References darktable, FALSE, darktable_t::gui, and dt_gui_gtk_t::has_scroll_focus.

Referenced by _bauhaus_widget_init().

◆ dt_bauhaus_focus_out_callback()

gboolean dt_bauhaus_focus_out_callback ( GtkWidget widget,
GdkEventFocus  event,
gpointer  user_data 
)

Definition at line 521 of file bauhaus.c.

References FALSE.

Referenced by _bauhaus_widget_init().

◆ dt_bauhaus_hide_popup()

◆ dt_bauhaus_init()

◆ dt_bauhaus_load_theme()

◆ dt_bauhaus_popup_button_press()

◆ dt_bauhaus_popup_button_release()

static gboolean dt_bauhaus_popup_button_release ( GtkWidget widget,
GdkEventButton *  event,
gpointer  user_data 
)
static

◆ dt_bauhaus_popup_draw()

◆ dt_bauhaus_popup_key_press()

◆ dt_bauhaus_popup_leave_notify()

static gboolean dt_bauhaus_popup_leave_notify ( GtkWidget widget,
GdkEventCrossing *  event,
gpointer  user_data 
)
static

Definition at line 955 of file bauhaus.c.

References TRUE.

Referenced by dt_bauhaus_init().

◆ dt_bauhaus_popup_motion_notify()

◆ dt_bauhaus_popup_scroll()

static gboolean dt_bauhaus_popup_scroll ( GtkWidget widget,
GdkEventScroll *  event,
gpointer  user_data 
)
static

◆ dt_bauhaus_resize_handle_new()

GtkWidget * dt_bauhaus_resize_handle_new ( GtkOrientation  orientation,
gboolean  invert,
const char *  tooltip,
dt_bauhaus_resize_handle_get_size_f  get_size,
dt_bauhaus_resize_handle_resize_f  resize,
gpointer  user_data 
)

Create a themed handle widget driving one-dimensional resize gestures.

The handle owns the GTK event bookkeeping: hover state, cursor, grab lifetime, drawing and drag delta computation. The caller owns the resized target and keeps that ownership visible through get_size and resize. During pointer motion resize receives finished == FALSE; on button release it receives finished == TRUE so callers can persist the final size without writing settings at every motion sample.

Parameters
invertWhen FALSE the target grows as the pointer moves in the positive axis direction (down for vertical, right for horizontal) — the natural case for a handle sitting below/at the right of its target. Set TRUE when the target grows in the opposite direction, e.g. a right panel that grows as it is dragged left, or a bottom panel that grows as it is dragged up.

The grip is meant to be added as an overlay child on the resized widget. It pins itself to the correct edge (from orientation and invert) and tags itself with an edge CSS class (.resize-handle-{top,bottom,left,right}); its thickness and centering live in the stylesheet.

Definition at line 1179 of file bauhaus.c.

References _resize_handle_button(), _resize_handle_cursor(), _resize_handle_motion(), DT_PIXEL_APPLY_DPI, dt_bauhaus_resize_handle_t::get_size, get_size(), dt_bauhaus_resize_handle_t::invert, IS_NULL_PTR, dt_bauhaus_resize_handle_t::orientation, dt_bauhaus_resize_handle_t::resize, tooltip, and dt_bauhaus_resize_handle_t::user_data.

Referenced by _ui_init_panel_bottom(), _ui_init_panel_left(), _ui_init_panel_right(), dt_ui_resizable_drawing_area(), and dt_ui_scroll_wrap().

◆ dt_bauhaus_set_use_default_callback()

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 needs to be defined first, of course.

Parameters
widget

Definition at line 3954 of file bauhaus.c.

References TRUE, and dt_bauhaus_widget_t::use_default_callback.

Referenced by _combobox_new_from_list(), dt_iop_gui_init_blendif(), dt_iop_gui_init_blending_body(), and dt_iop_gui_init_raster().

◆ dt_bauhaus_show_popup()

◆ dt_bauhaus_slider_button_press()

◆ dt_bauhaus_slider_button_release()

static gboolean dt_bauhaus_slider_button_release ( GtkWidget widget,
GdkEventButton *  event,
gpointer  user_data 
)
static

◆ dt_bauhaus_slider_clear_stops()

◆ dt_bauhaus_slider_from_widget()

◆ dt_bauhaus_slider_get()

float dt_bauhaus_slider_get ( GtkWidget widget)

Definition at line 3483 of file bauhaus.c.

References d, dt_bauhaus_widget_t::data, DT_BAUHAUS_WIDGET, dt_bauhaus_slider_data_t::min, and dt_bauhaus_data_t::slider.

Referenced by _auto_set_exposure(), _auto_set_illuminant(), _blendop_blendif_boost_factor_callback(), _blendop_blendif_details_callback(), _button_press_callback(), _draw_callback(), _draw_samples(), _general_callback(), _grid_horizontal_changed(), _grid_subdiv_changed(), _grid_vertical_changed(), _masks_gui_interaction_slider_changed(), _render_surface(), _settings_contrast_changed(), _slider_add_step(), _slider_zoom_range(), _spot_settings_changed_callback(), _spot_settings_changed_callback(), _sync_params_from_gui(), _target_color_draw(), _widget_draw(), balance_callback(), black_point_source_callback(), black_point_target_callback(), blue_callback(), button_released(), color_rgb_sliders(), color_temptint_sliders(), compress_level_changed(), compression_level_changed(), contrast_callback(), display_borders_callback(), display_brightness_callback(), display_mask_checker_size_callback(), dt_bauhaus_popup_draw(), dt_bauhaus_slider_get_val(), dt_bauhaus_slider_set_hard_max(), dt_bauhaus_slider_set_hard_min(), dt_bauhaus_slider_set_soft_max(), dt_bauhaus_slider_set_soft_min(), dt_bauhaus_value_changed_default_callback(), dt_iop_channelmixer_shared_primaries_from_sliders(), dt_iop_channelmixer_shared_simple_from_sliders(), extra_callback(), global_saturation_callback(), green_callback(), grey_point_source_callback(), grey_point_target_callback(), gui_changed(), gui_update(), illum_xy_callback(), latitude_stops_callback(), logbase_callback(), logbase_callback(), lower_callback(), mix_callback(), output_power_callback(), paint_hue(), quality_changed(), quality_changed(), quality_changed(), quality_changed(), rawoverexposed_threshold_callback(), red_callback(), rt_mask_opacity_callback(), safety_changed_callback(), saturation_callback(), security_threshold_callback(), smoothing_callback(), target_a_callback(), target_b_callback(), target_C_callback(), target_color_draw(), target_L_callback(), temp_tint_callback(), toe_shoulder_callback(), upper_callback(), white_point_source_callback(), and white_point_target_callback().

◆ dt_bauhaus_slider_get_digits()

int dt_bauhaus_slider_get_digits ( GtkWidget widget)

◆ dt_bauhaus_slider_get_hard_max()

◆ dt_bauhaus_slider_get_hard_min()

◆ dt_bauhaus_slider_get_soft_max()

float dt_bauhaus_slider_get_soft_max ( GtkWidget widget)

◆ dt_bauhaus_slider_get_soft_min()

float dt_bauhaus_slider_get_soft_min ( GtkWidget widget)

◆ dt_bauhaus_slider_get_step()

float dt_bauhaus_slider_get_step ( GtkWidget widget)

◆ dt_bauhaus_slider_get_text()

char * dt_bauhaus_slider_get_text ( GtkWidget w,
float  val 
)

Definition at line 3497 of file bauhaus.c.

References d, and DT_BAUHAUS_WIDGET.

Referenced by _widget_draw(), and dt_bauhaus_popup_draw().

◆ dt_bauhaus_slider_get_val()

float dt_bauhaus_slider_get_val ( GtkWidget widget)

◆ dt_bauhaus_slider_motion_notify()

static gboolean dt_bauhaus_slider_motion_notify ( GtkWidget widget,
GdkEventMotion *  event,
gpointer  user_data 
)
static

◆ dt_bauhaus_slider_new()

GtkWidget * dt_bauhaus_slider_new ( dt_bauhaus_t bh,
dt_gui_module_t self 
)

Definition at line 1775 of file bauhaus.c.

References dt_bauhaus_slider_new_with_range().

Referenced by dt_bauhaus_slider_from_params().

◆ dt_bauhaus_slider_new_with_range()

◆ dt_bauhaus_slider_new_with_range_and_feedback()

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 
)

◆ dt_bauhaus_slider_reset()

◆ dt_bauhaus_slider_set()

void dt_bauhaus_slider_set ( GtkWidget widget,
float  pos 
)

Definition at line 3506 of file bauhaus.c.

References d, dt_bauhaus_widget_t::data, dt_bauhaus_slider_set_normalized(), DT_BAUHAUS_WIDGET, FALSE, dt_bauhaus_data_t::slider, and TRUE.

Referenced by _auto_set_exposure(), _auto_set_illuminant(), _blendop_blend_mode_callback(), _blendop_blendif_update_tab(), _channelmixerrgb_mixer_mode_callback(), _channelmixerrgb_primaries_slider_callback(), _channelmixerrgb_simple_slider_callback(), _colorchecker_update_sliders(), _develop_ui_pipe_finished_callback(), _exposure_set_black(), _exposure_set_white(), _guides_gui_grid(), _masks_gui_add_interaction_slider(), _motion_notify_callback(), _set_point_complete_widgets(), _slider_add_step(), _slider_zoom_range(), apply_auto_black(), apply_auto_black(), apply_auto_black(), apply_auto_black(), apply_auto_Dmax(), apply_auto_Dmin(), apply_auto_dynamic_range(), apply_auto_exposure(), apply_auto_grey(), apply_auto_grey(), apply_auto_grey(), apply_auto_offset(), apply_auto_WB_high(), apply_auto_WB_low(), apply_auto_white_point_source(), apply_auto_white_point_source(), apply_autocolor(), apply_autogrey(), apply_autoluma(), apply_autotune(), apply_autotune(), apply_autotune(), apply_gain_auto(), apply_gain_neutralize(), apply_gamma_auto(), apply_gamma_neutralize(), apply_lift_auto(), apply_lift_neutralize(), aspect_changed(), autoscale_pressed(), button_released(), color_picker_apply(), colorpick_callback(), commit_profile_callback(), Dmin_picker_callback(), do_fit(), dt_bauhaus_slider_reset(), dt_bauhaus_slider_set_hard_max(), dt_bauhaus_slider_set_hard_min(), dt_bauhaus_slider_set_soft_max(), dt_bauhaus_slider_set_soft_min(), dt_bauhaus_slider_set_val(), dt_bauhaus_update_module(), dt_guides_popover(), dt_guides_update_popover_values(), dt_iop_channelmixer_shared_primaries_to_sliders(), dt_iop_channelmixer_shared_simple_to_sliders(), dt_iop_colorcorrection_scrolled(), dt_iop_gui_update_blending(), extra_callback(), filmic_gui_sync_toe_shoulder(), grey_point_source_callback(), gui_changed(), gui_init(), gui_init(), gui_post_expose(), gui_reset(), gui_reset(), gui_update(), gui_update(), gui_update(), gui_update(), illum_xy_callback(), lens_menu_select(), mouse_moved(), output_callback(), position_h_changed(), position_v_changed(), preset_tune_callback(), reset_mix(), rt_load_shape_algo_in_gui(), sanitize_latitude(), scrolled(), security_threshold_callback(), set_HSL_sliders(), set_params(), set_RGB_sliders(), target_a_callback(), target_b_callback(), target_C_callback(), temp_tint_callback(), update_exposure_sliders(), Wb_high_norm_callback(), WB_high_picker_callback(), Wb_low_norm_callback(), and WB_low_picker_callback().

◆ dt_bauhaus_slider_set_default()

void dt_bauhaus_slider_set_default ( GtkWidget widget,
float  def 
)

◆ dt_bauhaus_slider_set_digits()

void dt_bauhaus_slider_set_digits ( GtkWidget widget,
int  val 
)

◆ dt_bauhaus_slider_set_factor()

◆ dt_bauhaus_slider_set_feedback()

void dt_bauhaus_slider_set_feedback ( GtkWidget widget,
int  feedback 
)

◆ dt_bauhaus_slider_set_format()

◆ dt_bauhaus_slider_set_hard_max()

◆ dt_bauhaus_slider_set_hard_min()

◆ dt_bauhaus_slider_set_normalized()

static void dt_bauhaus_slider_set_normalized ( struct dt_bauhaus_widget_t w,
float  pos,
gboolean  raise,
gboolean  timeout 
)
static

Set the value of a slider as a ratio of the GUI slider width.

Parameters
wBauhaus widget
posRelative position over the slider bar (ratio between 0 and 1)
raiseSet to FALSE to redraw slider position without committing the actual value to pipeline nor sending the value-changed event (e.g. in motion-notify events, while dragging). Set to TRUE when the change is finished (e.g. in button-pressed events).
timeoutTRUE to add a timeout preventing intermediate setting steps (e.g. while scrolling) to emit value-changed signal and commit to pipeline too often. FALSE to set immediately, when there is no ambiguity on the final setting (e.g. at init time and on click). Doesn't change anything if raise is FALSE.

Definition at line 3666 of file bauhaus.c.

References _delayed_slider_commit(), dt_bauhaus_widget_t::bauhaus, dt_bauhaus_t::current, d, darktable, dt_bauhaus_widget_t::data, dt_gui_throttle_cancel(), dt_gui_throttle_queue(), darktable_t::gui, ipow(), dt_bauhaus_t::popup_area, dt_bauhaus_slider_data_t::pos, precision(), dt_gui_gtk_t::reset, and dt_bauhaus_data_t::slider.

Referenced by dt_bauhaus_popup_button_press(), dt_bauhaus_popup_motion_notify(), dt_bauhaus_slider_button_press(), dt_bauhaus_slider_button_release(), dt_bauhaus_slider_motion_notify(), dt_bauhaus_slider_set(), dt_bauhaus_widget_accept(), and dt_bauhaus_widget_reject().

◆ dt_bauhaus_slider_set_offset()

void dt_bauhaus_slider_set_offset ( GtkWidget widget,
float  offset 
)

◆ dt_bauhaus_slider_set_soft_max()

void dt_bauhaus_slider_set_soft_max ( GtkWidget widget,
float  val 
)

◆ dt_bauhaus_slider_set_soft_min()

void dt_bauhaus_slider_set_soft_min ( GtkWidget widget,
float  val 
)

◆ dt_bauhaus_slider_set_soft_range()

void dt_bauhaus_slider_set_soft_range ( GtkWidget widget,
float  soft_min,
float  soft_max 
)

◆ dt_bauhaus_slider_set_step()

void dt_bauhaus_slider_set_step ( GtkWidget widget,
float  val 
)

◆ dt_bauhaus_slider_set_stop()

◆ dt_bauhaus_slider_set_val()

void dt_bauhaus_slider_set_val ( GtkWidget widget,
float  val 
)

Definition at line 3528 of file bauhaus.c.

References d, dt_bauhaus_slider_set(), and DT_BAUHAUS_WIDGET.

Referenced by dt_bauhaus_popup_key_press().

◆ dt_bauhaus_widget_accept()

◆ dt_bauhaus_widget_get_label()

const char * dt_bauhaus_widget_get_label ( GtkWidget widget)

Definition at line 1696 of file bauhaus.c.

References DT_BAUHAUS_WIDGET, and dt_bauhaus_widget_t::label.

◆ dt_bauhaus_widget_get_quad_active()

int dt_bauhaus_widget_get_quad_active ( GtkWidget widget)

◆ dt_bauhaus_widget_press_quad()

◆ dt_bauhaus_widget_reject()

◆ dt_bauhaus_widget_release_quad()

void dt_bauhaus_widget_release_quad ( GtkWidget widget)

◆ dt_bauhaus_widget_set_field()

◆ dt_bauhaus_widget_set_label()

◆ dt_bauhaus_widget_set_quad_active()

◆ dt_bauhaus_widget_set_quad_paint()

void dt_bauhaus_widget_set_quad_paint ( GtkWidget widget,
dt_bauhaus_quad_paint_f  f,
int  paint_flags,
void paint_data 
)

◆ dt_bauhaus_widget_set_quad_toggle()

void dt_bauhaus_widget_set_quad_toggle ( GtkWidget widget,
int  toggle 
)

Definition at line 1720 of file bauhaus.c.

References DT_BAUHAUS_WIDGET, and dt_bauhaus_widget_t::quad_toggle.

Referenced by _color_picker_new(), gui_init(), and gui_init().

◆ dt_bauhaus_widget_set_quad_visibility()

void dt_bauhaus_widget_set_quad_visibility ( GtkWidget widget,
const gboolean  visible 
)

Definition at line 1736 of file bauhaus.c.

References DT_BAUHAUS_WIDGET, and dt_bauhaus_widget_t::show_quad.

Referenced by gui_changed().

◆ dt_bauhaus_window_show()

static void dt_bauhaus_window_show ( GtkWidget w,
gpointer  user_data 
)
static

Definition at line 1052 of file bauhaus.c.

Referenced by dt_bauhaus_init().

◆ dt_bh_class_init()

◆ dt_bh_init()

static void dt_bh_init ( DtBauhausWidget class)
static
Todo:
: the common code from bauhaus_widget_init() could go here.

Definition at line 1057 of file bauhaus.c.

◆ ensure_focus_idle()

◆ free_combobox_entry()

◆ get_slider_line_offset()

static double get_slider_line_offset ( const double  pos,
const double  scale,
const double  x,
double  y,
const double  line_height 
)
static

Definition at line 825 of file bauhaus.c.

References x.

Referenced by dt_bauhaus_popup_motion_notify().

◆ new_combobox_entry()

◆ new_combobox_separator()

static dt_bauhaus_combobox_entry_t * new_combobox_separator ( const float  row_height_factor)
static

Create a new combobox separator entry.

Parameters
row_height_factorThe height factor for the separator row.
Returns
A new combobox separator entry.

Definition at line 626 of file bauhaus.c.

References CLAMPF, FALSE, dt_bauhaus_combobox_entry_t::is_separator, dt_bauhaus_combobox_entry_t::label, dt_bauhaus_combobox_entry_t::row_height_factor, dt_bauhaus_combobox_entry_t::sensitive, dt_bauhaus_combobox_entry_t::tooltip, and TRUE.

Referenced by dt_bauhaus_combobox_add_separator_with_height(), and dt_bauhaus_combobox_insert_separator_with_height().

◆ show_pango_text()

static void show_pango_text ( struct dt_bauhaus_widget_t w,
GtkStyleContext *  context,
cairo_t *  cr,
GdkRectangle *  bounding_box,
const char *  text,
_bh_halign_t  halign,
_bh_valign_t  valign,
PangoEllipsizeMode  ellipsize,
GdkRGBA *  bg_color,
float *  width,
float *  height,
GtkStateFlags  state 
)
static

Display text aligned in a bounding box, with pseudo-classes properties handled, and optional background color.

Parameters
wThe current widget
contextGtk CSS context
crCairo drawing object
bounding_boxThe bounding box in which the text should fit.
textThe text content to display.
halignHorizontal alignment within the bounding box
valignVertical alignment within the bounding box
ellipsizePango ellipsization strategy, used only if text overflows its bounding box.
bg_colorBackground color to paint in the bounding box. Can be NULL.
widthPointer where text spanning width will be returned in Cairo units. Can be NULL.
heightPointer where text spanning height will be returned in Cairo units. Can be NULL.
ignore_pseudo_classesDisregard styling done in pseudo-classes and use the normal style.

Definition at line 686 of file bauhaus.c.

References dt_bauhaus_widget_t::bauhaus, BH_ALIGN_BOTTOM, BH_ALIGN_CENTER, BH_ALIGN_LEFT, BH_ALIGN_MIDDLE, BH_ALIGN_RIGHT, BH_ALIGN_TOP, double(), dt_gui_cairo_set_font_options(), height, IS_NULL_PTR, dt_bauhaus_t::line_height, dt_bauhaus_t::pango_font_desc, state, width, and x.

Referenced by _get_combobox_max_width(), _widget_draw(), and dt_bauhaus_popup_draw().