1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 22:07:36 +00:00

VisualBuilder: Hook up everything needed for widget property editing.

It's now possible to edit widget properties inline in the properties window.
We're currently relying on the basic GVariant conversion functions to do
all the "parsing" but that's not gonna be good enough.
This commit is contained in:
Andreas Kling 2019-04-19 01:05:59 +02:00
parent 18785ba5c3
commit 3a33b8ea08
13 changed files with 123 additions and 46 deletions

View file

@ -8,6 +8,8 @@ public:
virtual ~GProgressBar() override;
void set_range(int min, int max);
void set_min(int min) { set_range(min, max()); }
void set_max(int max) { set_range(min(), max); }
void set_value(int);
int value() const { return m_value; }

View file

@ -16,6 +16,8 @@ public:
int step() const { return m_step; }
int big_step() const { return m_big_step; }
void set_min(int min) { set_range(min, max()); }
void set_max(int max) { set_range(min(), max); }
void set_range(int min, int max);
void set_value(int value);
void set_step(int step) { m_step = step; }

View file

@ -15,6 +15,8 @@ public:
int min() const { return m_min; }
int max() const { return m_max; }
void set_min(int min) { set_range(min, max()); }
void set_max(int max) { set_range(min(), max); }
void set_range(int min, int max);
Function<void(int value)> on_change;

View file

@ -101,6 +101,17 @@ GVariant& GVariant::operator=(const GVariant& other)
return *this;
}
GVariant& GVariant::operator=(GVariant&& other)
{
if (&other == this)
return *this;
// FIXME: Move, not copy!
clear();
copy_from(other);
other.clear();
return *this;
}
GVariant::GVariant(const GVariant& other)
{
copy_from(other);

View file

@ -22,7 +22,7 @@ public:
GVariant& operator=(const GVariant&);
GVariant(GVariant&&) = delete;
GVariant& operator=(GVariant&&) = delete;
GVariant& operator=(GVariant&&);
void clear();
~GVariant();
@ -91,6 +91,13 @@ public:
return as_bool() ? 1 : 0;
if (is_float())
return (int)as_float();
if (is_string()) {
bool ok;
int value = as_string().to_int(ok);
if (!ok)
return 0;
return value;
}
return 0;
}