28 using boost::optional;
38 optional< pair<int64_t, int64_t> > range,
54 int64_t int_val = 0, range_min = 0;
55 uint64_t range_max = 0;
65 GVariant *value =
value_.gobj();
72 const GVariantType *
const type = g_variant_get_type(value);
75 if (g_variant_type_equal(type, G_VARIANT_TYPE_BYTE)) {
76 int_val = g_variant_get_byte(value);
77 range_min = 0, range_max = UINT8_MAX;
78 }
else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT16)) {
79 int_val = g_variant_get_int16(value);
80 range_min = INT16_MIN, range_max = INT16_MAX;
81 }
else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT16)) {
82 int_val = g_variant_get_uint16(value);
83 range_min = 0, range_max = UINT16_MAX;
84 }
else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT32)) {
85 int_val = g_variant_get_int32(value);
86 range_min = INT32_MIN, range_max = INT32_MAX;
87 }
else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT32)) {
88 int_val = g_variant_get_uint32(value);
89 range_min = 0, range_max = UINT32_MAX;
90 }
else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT64)) {
91 int_val = g_variant_get_int64(value);
92 range_min = INT64_MIN, range_max = INT64_MAX;
93 }
else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT64)) {
94 int_val = g_variant_get_uint64(value);
95 range_min = 0, range_max = UINT64_MAX;
106 range_min = max(range_min, (int64_t)INT_MIN);
107 range_max = min(range_max, (uint64_t)INT_MAX);
112 spin_box_->setRange((
int)range_min, (
int)range_max);
117 connect(
spin_box_, SIGNAL(valueChanged(
int)),
130 GVariant *new_value =
nullptr;
131 const GVariantType *
const type = g_variant_get_type(
value_.gobj());
134 if (g_variant_type_equal(type, G_VARIANT_TYPE_BYTE))
135 new_value = g_variant_new_byte(
spin_box_->value());
136 else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT16))
137 new_value = g_variant_new_int16(
spin_box_->value());
138 else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT16))
139 new_value = g_variant_new_uint16(
spin_box_->value());
140 else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT32))
141 new_value = g_variant_new_int32(
spin_box_->value());
142 else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT32))
143 new_value = g_variant_new_uint32(
spin_box_->value());
144 else if (g_variant_type_equal(type, G_VARIANT_TYPE_INT64))
145 new_value = g_variant_new_int64(
spin_box_->value());
146 else if (g_variant_type_equal(type, G_VARIANT_TYPE_UINT64))
147 new_value = g_variant_new_uint64(
spin_box_->value());
156 value_ = Glib::VariantBase(new_value);
QWidget * get_widget(QWidget *parent, bool auto_commit)
std::function< void(Glib::VariantBase)> Setter
const boost::optional< std::pair< int64_t, int64_t > > range_
void on_value_changed(int)
std::function< Glib::VariantBase()> Getter
Int(QString name, QString suffix, boost::optional< std::pair< int64_t, int64_t > > range, Getter getter, Setter setter)