mirror of https://github.com/GNOME/gimp.git
app: use special prop-gui widget for luminance ranges
In _gimp_prop_gui_new_generic(), when a pair of consecutive properties have "range-start" and "range-end" roles, respectively, and "luminance" units, use a range prop-widget for both properties, as per the previous commits. The range is sorted by default, unless the first property has a "range-sorted" key of "false".
This commit is contained in:
parent
ce8235e977
commit
8eb752b194
|
@ -40,6 +40,8 @@
|
||||||
#include "core/gimpcontext.h"
|
#include "core/gimpcontext.h"
|
||||||
|
|
||||||
#include "widgets/gimppropwidgets.h"
|
#include "widgets/gimppropwidgets.h"
|
||||||
|
#include "widgets/gimpspinscale.h"
|
||||||
|
#include "widgets/gimpwidgets-utils.h"
|
||||||
|
|
||||||
#include "gimppropgui.h"
|
#include "gimppropgui.h"
|
||||||
#include "gimppropgui-generic.h"
|
#include "gimppropgui-generic.h"
|
||||||
|
@ -192,6 +194,73 @@ _gimp_prop_gui_new_generic (GObject *config,
|
||||||
(GWeakNotify) g_free, pspec_name);
|
(GWeakNotify) g_free, pspec_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (next_pspec &&
|
||||||
|
HAS_KEY (pspec, "role", "range-start") &&
|
||||||
|
HAS_KEY (next_pspec, "role", "range-end") &&
|
||||||
|
HAS_KEY (pspec, "unit", "luminance"))
|
||||||
|
{
|
||||||
|
GtkWidget *vbox;
|
||||||
|
GtkWidget *spin_scale;
|
||||||
|
GtkWidget *label;
|
||||||
|
GtkWidget *frame;
|
||||||
|
GtkWidget *range;
|
||||||
|
const gchar *label_str;
|
||||||
|
gdouble step_increment;
|
||||||
|
gdouble page_increment;
|
||||||
|
gdouble ui_lower;
|
||||||
|
gdouble ui_upper;
|
||||||
|
|
||||||
|
i++;
|
||||||
|
|
||||||
|
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
|
||||||
|
gtk_box_pack_start (GTK_BOX (main_vbox), vbox, FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
spin_scale = gimp_prop_widget_new_from_pspec (
|
||||||
|
config, pspec,
|
||||||
|
area, context,
|
||||||
|
create_picker_func,
|
||||||
|
create_controller_func,
|
||||||
|
creator,
|
||||||
|
&label_str);
|
||||||
|
|
||||||
|
g_object_set_data_full (G_OBJECT (vbox),
|
||||||
|
"gimp-underlying-widget",
|
||||||
|
g_object_ref_sink (spin_scale),
|
||||||
|
g_object_unref);
|
||||||
|
|
||||||
|
gtk_spin_button_get_increments (GTK_SPIN_BUTTON (spin_scale),
|
||||||
|
&step_increment, &page_increment);
|
||||||
|
|
||||||
|
gimp_spin_scale_get_scale_limits (GIMP_SPIN_SCALE (spin_scale),
|
||||||
|
&ui_lower, &ui_upper);
|
||||||
|
|
||||||
|
label = gtk_label_new_with_mnemonic (label_str);
|
||||||
|
gtk_label_set_xalign (GTK_LABEL (label), 0.0);
|
||||||
|
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
|
||||||
|
gtk_widget_show (label);
|
||||||
|
|
||||||
|
g_object_bind_property (spin_scale, "label",
|
||||||
|
label, "label",
|
||||||
|
G_BINDING_SYNC_CREATE);
|
||||||
|
|
||||||
|
frame = gimp_frame_new (NULL);
|
||||||
|
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||||
|
gtk_widget_show (frame);
|
||||||
|
|
||||||
|
range = gimp_prop_range_new (config,
|
||||||
|
pspec->name, next_pspec->name,
|
||||||
|
step_increment, page_increment,
|
||||||
|
gtk_spin_button_get_digits (
|
||||||
|
GTK_SPIN_BUTTON (spin_scale)),
|
||||||
|
! HAS_KEY (pspec,
|
||||||
|
"range-sorted", "false"));
|
||||||
|
gimp_prop_range_set_ui_limits (range, ui_lower, ui_upper);
|
||||||
|
gtk_container_add (GTK_CONTAINER (frame), range);
|
||||||
|
gtk_widget_show (range);
|
||||||
|
|
||||||
|
gimp_prop_gui_bind_container (spin_scale, vbox);
|
||||||
|
gimp_prop_gui_bind_tooltip (spin_scale, vbox);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
|
|
Loading…
Reference in New Issue