summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Kling <awesomekling@gmail.com>2019-04-11 06:08:06 +0200
committerAndreas Kling <awesomekling@gmail.com>2019-04-11 06:08:06 +0200
commitb5d1cfef585b5102472fc05061912fbbecb2d5f4 (patch)
tree64f3b834cb454d30ce6cb3682266dd5b58d4c71d
parent75c76f6692950c5f527dcd16ea6e32e3464a9bc5 (diff)
downloadserenity-b5d1cfef585b5102472fc05061912fbbecb2d5f4.zip
VisualBuilder: Add icons to the toolbox, and support for GProgressBar.
-rw-r--r--Applications/VisualBuilder/VBWidget.cpp8
-rw-r--r--Applications/VisualBuilder/VBWidget.h1
-rw-r--r--Applications/VisualBuilder/main.cpp16
-rw-r--r--Base/res/icons/vbwidgets/button.pngbin0 -> 266 bytes
-rw-r--r--Base/res/icons/vbwidgets/progressbar.pngbin0 -> 186 bytes
-rw-r--r--Base/res/icons/vbwidgets/spinbox.pngbin0 -> 261 bytes
-rw-r--r--Base/res/icons/vbwidgets/textbox.pngbin0 -> 243 bytes
-rw-r--r--LibGUI/GProgressBar.cpp29
-rw-r--r--LibGUI/GProgressBar.h2
9 files changed, 40 insertions, 16 deletions
diff --git a/Applications/VisualBuilder/VBWidget.cpp b/Applications/VisualBuilder/VBWidget.cpp
index 2c1040b4c1..be7b966986 100644
--- a/Applications/VisualBuilder/VBWidget.cpp
+++ b/Applications/VisualBuilder/VBWidget.cpp
@@ -5,6 +5,7 @@
#include <LibGUI/GButton.h>
#include <LibGUI/GSpinBox.h>
#include <LibGUI/GTextEditor.h>
+#include <LibGUI/GProgressBar.h>
static GWidget* build_gwidget(WidgetType type, GWidget* parent)
{
@@ -22,6 +23,13 @@ static GWidget* build_gwidget(WidgetType type, GWidget* parent)
editor->set_ruler_visible(false);
return editor;
}
+ case WidgetType::GProgressBar: {
+ auto* bar = new GProgressBar(parent);
+ bar->set_format(GProgressBar::Format::NoText);
+ bar->set_range(0, 100);
+ bar->set_value(50);
+ return bar;
+ }
default:
ASSERT_NOT_REACHED();
return nullptr;
diff --git a/Applications/VisualBuilder/VBWidget.h b/Applications/VisualBuilder/VBWidget.h
index 0e13c1f8c4..d0576bdf0c 100644
--- a/Applications/VisualBuilder/VBWidget.h
+++ b/Applications/VisualBuilder/VBWidget.h
@@ -30,6 +30,7 @@ enum class WidgetType {
GLabel,
GSpinBox,
GTextEditor,
+ GProgressBar,
};
class VBWidget : public Retainable<VBWidget>, public Weakable<VBWidget> {
diff --git a/Applications/VisualBuilder/main.cpp b/Applications/VisualBuilder/main.cpp
index 17b5455a86..5926a57352 100644
--- a/Applications/VisualBuilder/main.cpp
+++ b/Applications/VisualBuilder/main.cpp
@@ -67,22 +67,32 @@ GWindow* make_toolbox_window()
window->set_main_widget(widget);
auto* button_button = new GButton(widget);
- button_button->set_caption("Button");
+ button_button->set_tooltip("GButton");
+ button_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/button.png"));
button_button->on_click = [] (GButton&) {
if (auto* form = VBForm::current())
form->insert_widget(WidgetType::GButton);
};
auto* spinbox_button = new GButton(widget);
- spinbox_button->set_caption("SpinBox");
+ spinbox_button->set_tooltip("GSpinBox");
+ spinbox_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/spinbox.png"));
spinbox_button->on_click = [] (GButton&) {
if (auto* form = VBForm::current())
form->insert_widget(WidgetType::GSpinBox);
};
auto* editor_button = new GButton(widget);
- editor_button->set_caption("TextEditor");
+ editor_button->set_tooltip("GTextEditor");
+ editor_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/textbox.png"));
editor_button->on_click = [] (GButton&) {
if (auto* form = VBForm::current())
form->insert_widget(WidgetType::GTextEditor);
};
+ auto* progress_bar_button = new GButton(widget);
+ progress_bar_button->set_tooltip("GProgressBar");
+ progress_bar_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/progressbar.png"));
+ progress_bar_button->on_click = [] (GButton&) {
+ if (auto* form = VBForm::current())
+ form->insert_widget(WidgetType::GProgressBar);
+ };
return window;
}
diff --git a/Base/res/icons/vbwidgets/button.png b/Base/res/icons/vbwidgets/button.png
new file mode 100644
index 0000000000..7d735c8e73
--- /dev/null
+++ b/Base/res/icons/vbwidgets/button.png
Binary files differ
diff --git a/Base/res/icons/vbwidgets/progressbar.png b/Base/res/icons/vbwidgets/progressbar.png
new file mode 100644
index 0000000000..a8c5e10a45
--- /dev/null
+++ b/Base/res/icons/vbwidgets/progressbar.png
Binary files differ
diff --git a/Base/res/icons/vbwidgets/spinbox.png b/Base/res/icons/vbwidgets/spinbox.png
new file mode 100644
index 0000000000..a81389690a
--- /dev/null
+++ b/Base/res/icons/vbwidgets/spinbox.png
Binary files differ
diff --git a/Base/res/icons/vbwidgets/textbox.png b/Base/res/icons/vbwidgets/textbox.png
new file mode 100644
index 0000000000..48c970e7fc
--- /dev/null
+++ b/Base/res/icons/vbwidgets/textbox.png
Binary files differ
diff --git a/LibGUI/GProgressBar.cpp b/LibGUI/GProgressBar.cpp
index 89abea3580..1c60904cba 100644
--- a/LibGUI/GProgressBar.cpp
+++ b/LibGUI/GProgressBar.cpp
@@ -51,19 +51,22 @@ void GProgressBar::paint_event(GPaintEvent& event)
float range_size = m_max - m_min;
float progress = (m_value - m_min) / range_size;
- // Then we draw the progress text over the gradient.
- // We draw it twice, once offset (1, 1) for a drop shadow look.
- StringBuilder builder;
- builder.append(m_caption);
- if (m_format == Format::Percentage)
- builder.appendf("%d%%", (int)(progress * 100));
- else if (m_format == Format::ValueSlashMax)
- builder.appendf("%d/%d", m_value, m_max);
+ String progress_text;
+ if (m_format != Format::NoText) {
+ // Then we draw the progress text over the gradient.
+ // We draw it twice, once offset (1, 1) for a drop shadow look.
+ StringBuilder builder;
+ builder.append(m_caption);
+ if (m_format == Format::Percentage)
+ builder.appendf("%d%%", (int)(progress * 100));
+ else if (m_format == Format::ValueSlashMax)
+ builder.appendf("%d/%d", m_value, m_max);
- auto progress_text = builder.to_string();
+ progress_text = builder.to_string();
- painter.draw_text(rect.translated(1, 1), progress_text, TextAlignment::Center, Color::Black);
- painter.draw_text(rect, progress_text, TextAlignment::Center, Color::White);
+ painter.draw_text(rect.translated(1, 1), progress_text, TextAlignment::Center, Color::Black);
+ painter.draw_text(rect, progress_text, TextAlignment::Center, Color::White);
+ }
// Then we carve out a hole in the remaining part of the widget.
// We draw the text a third time, clipped and inverse, for sharp contrast.
@@ -71,5 +74,7 @@ void GProgressBar::paint_event(GPaintEvent& event)
Rect hole_rect { (int)progress_width, 0, (int)(width() - progress_width), height() };
painter.add_clip_rect(hole_rect);
painter.fill_rect(hole_rect, Color::White);
- painter.draw_text(rect.translated(0, 0), progress_text, TextAlignment::Center, Color::Black);
+
+ if (m_format != Format::NoText)
+ painter.draw_text(rect.translated(0, 0), progress_text, TextAlignment::Center, Color::Black);
}
diff --git a/LibGUI/GProgressBar.h b/LibGUI/GProgressBar.h
index 82e0d07d31..c5ef4d7701 100644
--- a/LibGUI/GProgressBar.h
+++ b/LibGUI/GProgressBar.h
@@ -15,7 +15,7 @@ public:
String caption() const { return m_caption; }
void set_caption(const String& caption) { m_caption = caption; }
- enum Format { Percentage, ValueSlashMax };
+ enum Format { NoText, Percentage, ValueSlashMax };
Format format() const { return m_format; }
void set_format(Format format) { m_format = format; }