1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 18:37:35 +00:00

VisualBuilder: Add GRadioButton to the widget repertoire.

This commit is contained in:
Andreas Kling 2019-06-01 00:23:31 +02:00
parent b0d8dba16d
commit 40ca3b019f
4 changed files with 45 additions and 16 deletions

View file

@ -1,18 +1,19 @@
#include "VBWidget.h"
#include "VBForm.h" #include "VBForm.h"
#include "VBProperty.h" #include "VBProperty.h"
#include "VBWidgetRegistry.h" #include "VBWidget.h"
#include "VBWidgetPropertyModel.h" #include "VBWidgetPropertyModel.h"
#include <LibGUI/GPainter.h> #include "VBWidgetRegistry.h"
#include <LibGUI/GLabel.h>
#include <LibGUI/GButton.h> #include <LibGUI/GButton.h>
#include <LibGUI/GCheckBox.h>
#include <LibGUI/GGroupBox.h>
#include <LibGUI/GLabel.h>
#include <LibGUI/GPainter.h>
#include <LibGUI/GProgressBar.h>
#include <LibGUI/GRadioButton.h>
#include <LibGUI/GScrollBar.h> #include <LibGUI/GScrollBar.h>
#include <LibGUI/GSlider.h>
#include <LibGUI/GSpinBox.h> #include <LibGUI/GSpinBox.h>
#include <LibGUI/GTextEditor.h> #include <LibGUI/GTextEditor.h>
#include <LibGUI/GGroupBox.h>
#include <LibGUI/GCheckBox.h>
#include <LibGUI/GProgressBar.h>
#include <LibGUI/GSlider.h>
VBWidget::VBWidget(VBWidgetType type, VBForm& form) VBWidget::VBWidget(VBWidgetType type, VBForm& form)
: m_type(type) : m_type(type)
@ -161,9 +162,14 @@ void VBWidget::setup_properties()
} }
if (m_type == VBWidgetType::GCheckBox) { if (m_type == VBWidgetType::GCheckBox) {
VB_ADD_PROPERTY(GCheckBox, "caption", text, set_text, string); VB_ADD_PROPERTY(GCheckBox, "text", text, set_text, string);
VB_ADD_PROPERTY(GCheckBox, "checked", is_checked, set_checked, bool); VB_ADD_PROPERTY(GCheckBox, "checked", is_checked, set_checked, bool);
} }
if (m_type == VBWidgetType::GRadioButton) {
VB_ADD_PROPERTY(GRadioButton, "text", text, set_text, string);
VB_ADD_PROPERTY(GRadioButton, "checked", is_checked, set_checked, bool);
}
} }
void VBWidget::synchronize_properties() void VBWidget::synchronize_properties()

View file

@ -1,14 +1,15 @@
#include "VBWidgetRegistry.h"
#include "VBProperty.h" #include "VBProperty.h"
#include <LibGUI/GLabel.h> #include "VBWidgetRegistry.h"
#include <LibGUI/GButton.h> #include <LibGUI/GButton.h>
#include <LibGUI/GCheckBox.h>
#include <LibGUI/GGroupBox.h>
#include <LibGUI/GLabel.h>
#include <LibGUI/GProgressBar.h>
#include <LibGUI/GRadioButton.h>
#include <LibGUI/GScrollBar.h>
#include <LibGUI/GSlider.h>
#include <LibGUI/GSpinBox.h> #include <LibGUI/GSpinBox.h>
#include <LibGUI/GTextEditor.h> #include <LibGUI/GTextEditor.h>
#include <LibGUI/GProgressBar.h>
#include <LibGUI/GCheckBox.h>
#include <LibGUI/GScrollBar.h>
#include <LibGUI/GGroupBox.h>
#include <LibGUI/GSlider.h>
static String to_class_name(VBWidgetType type) static String to_class_name(VBWidgetType type)
{ {
@ -20,6 +21,7 @@ static String to_class_name(VBWidgetType type)
case VBWidgetType::GTextEditor: return "GTextEditor"; case VBWidgetType::GTextEditor: return "GTextEditor";
case VBWidgetType::GProgressBar: return "GProgressBar"; case VBWidgetType::GProgressBar: return "GProgressBar";
case VBWidgetType::GCheckBox: return "GCheckBox"; case VBWidgetType::GCheckBox: return "GCheckBox";
case VBWidgetType::GRadioButton: return "GRadioButton";
case VBWidgetType::GScrollBar: return "GScrollBar"; case VBWidgetType::GScrollBar: return "GScrollBar";
case VBWidgetType::GGroupBox: return "GGroupBox"; case VBWidgetType::GGroupBox: return "GGroupBox";
case VBWidgetType::GSlider: return "GSlider"; case VBWidgetType::GSlider: return "GSlider";
@ -76,6 +78,8 @@ static GWidget* build_gwidget(VBWidgetType type, GWidget* parent)
box->set_text("checkbox_1"); box->set_text("checkbox_1");
return box; return box;
} }
case VBWidgetType::GRadioButton:
return new GRadioButton("radio_1", parent);
default: default:
ASSERT_NOT_REACHED(); ASSERT_NOT_REACHED();
return nullptr; return nullptr;

View file

@ -10,6 +10,7 @@ enum class VBWidgetType
GTextEditor, GTextEditor,
GProgressBar, GProgressBar,
GCheckBox, GCheckBox,
GRadioButton,
GScrollBar, GScrollBar,
GGroupBox, GGroupBox,
GSlider, GSlider,

View file

@ -80,9 +80,11 @@ GWindow* make_toolbox_window()
auto* widget = new GWidget; auto* widget = new GWidget;
widget->set_fill_with_background_color(true); widget->set_fill_with_background_color(true);
widget->set_layout(make<GBoxLayout>(Orientation::Vertical)); widget->set_layout(make<GBoxLayout>(Orientation::Vertical));
widget->layout()->set_spacing(0);
window->set_main_widget(widget); window->set_main_widget(widget);
auto* label_button = new GButton(widget); auto* label_button = new GButton(widget);
label_button->set_button_style(ButtonStyle::CoolBar);
label_button->set_tooltip("GLabel"); label_button->set_tooltip("GLabel");
label_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/label.png")); label_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/label.png"));
label_button->on_click = [] (GButton&) { label_button->on_click = [] (GButton&) {
@ -91,6 +93,7 @@ GWindow* make_toolbox_window()
}; };
auto* button_button = new GButton(widget); auto* button_button = new GButton(widget);
button_button->set_button_style(ButtonStyle::CoolBar);
button_button->set_tooltip("GButton"); button_button->set_tooltip("GButton");
button_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/button.png")); button_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/button.png"));
button_button->on_click = [] (GButton&) { button_button->on_click = [] (GButton&) {
@ -98,6 +101,7 @@ GWindow* make_toolbox_window()
form->insert_widget(VBWidgetType::GButton); form->insert_widget(VBWidgetType::GButton);
}; };
auto* spinbox_button = new GButton(widget); auto* spinbox_button = new GButton(widget);
spinbox_button->set_button_style(ButtonStyle::CoolBar);
spinbox_button->set_tooltip("GSpinBox"); spinbox_button->set_tooltip("GSpinBox");
spinbox_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/spinbox.png")); spinbox_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/spinbox.png"));
spinbox_button->on_click = [] (GButton&) { spinbox_button->on_click = [] (GButton&) {
@ -105,6 +109,7 @@ GWindow* make_toolbox_window()
form->insert_widget(VBWidgetType::GSpinBox); form->insert_widget(VBWidgetType::GSpinBox);
}; };
auto* editor_button = new GButton(widget); auto* editor_button = new GButton(widget);
editor_button->set_button_style(ButtonStyle::CoolBar);
editor_button->set_tooltip("GTextEditor"); editor_button->set_tooltip("GTextEditor");
editor_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/textbox.png")); editor_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/textbox.png"));
editor_button->on_click = [] (GButton&) { editor_button->on_click = [] (GButton&) {
@ -112,6 +117,7 @@ GWindow* make_toolbox_window()
form->insert_widget(VBWidgetType::GTextEditor); form->insert_widget(VBWidgetType::GTextEditor);
}; };
auto* progress_bar_button = new GButton(widget); auto* progress_bar_button = new GButton(widget);
progress_bar_button->set_button_style(ButtonStyle::CoolBar);
progress_bar_button->set_tooltip("GProgressBar"); progress_bar_button->set_tooltip("GProgressBar");
progress_bar_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/progressbar.png")); progress_bar_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/progressbar.png"));
progress_bar_button->on_click = [] (GButton&) { progress_bar_button->on_click = [] (GButton&) {
@ -119,6 +125,7 @@ GWindow* make_toolbox_window()
form->insert_widget(VBWidgetType::GProgressBar); form->insert_widget(VBWidgetType::GProgressBar);
}; };
auto* slider_button = new GButton(widget); auto* slider_button = new GButton(widget);
slider_button->set_button_style(ButtonStyle::CoolBar);
slider_button->set_tooltip("GSlider"); slider_button->set_tooltip("GSlider");
slider_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/slider.png")); slider_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/slider.png"));
slider_button->on_click = [] (GButton&) { slider_button->on_click = [] (GButton&) {
@ -126,13 +133,23 @@ GWindow* make_toolbox_window()
form->insert_widget(VBWidgetType::GSlider); form->insert_widget(VBWidgetType::GSlider);
}; };
auto* checkbox_button = new GButton(widget); auto* checkbox_button = new GButton(widget);
checkbox_button->set_button_style(ButtonStyle::CoolBar);
checkbox_button->set_tooltip("GCheckBox"); checkbox_button->set_tooltip("GCheckBox");
checkbox_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/checkbox.png")); checkbox_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/checkbox.png"));
checkbox_button->on_click = [] (GButton&) { checkbox_button->on_click = [] (GButton&) {
if (auto* form = VBForm::current()) if (auto* form = VBForm::current())
form->insert_widget(VBWidgetType::GCheckBox); form->insert_widget(VBWidgetType::GCheckBox);
}; };
auto* radiobutton_button = new GButton(widget);
radiobutton_button->set_button_style(ButtonStyle::CoolBar);
radiobutton_button->set_tooltip("GRadioButton");
radiobutton_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/filled-radio-circle.png"));
radiobutton_button->on_click = [] (GButton&) {
if (auto* form = VBForm::current())
form->insert_widget(VBWidgetType::GRadioButton);
};
auto* scrollbar_button = new GButton(widget); auto* scrollbar_button = new GButton(widget);
scrollbar_button->set_button_style(ButtonStyle::CoolBar);
scrollbar_button->set_tooltip("GScrollBar"); scrollbar_button->set_tooltip("GScrollBar");
scrollbar_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/scrollbar.png")); scrollbar_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/scrollbar.png"));
scrollbar_button->on_click = [] (GButton&) { scrollbar_button->on_click = [] (GButton&) {
@ -140,6 +157,7 @@ GWindow* make_toolbox_window()
form->insert_widget(VBWidgetType::GScrollBar); form->insert_widget(VBWidgetType::GScrollBar);
}; };
auto* groupbox_button = new GButton(widget); auto* groupbox_button = new GButton(widget);
groupbox_button->set_button_style(ButtonStyle::CoolBar);
groupbox_button->set_tooltip("GGroupBox"); groupbox_button->set_tooltip("GGroupBox");
groupbox_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/groupbox.png")); groupbox_button->set_icon(GraphicsBitmap::load_from_file("/res/icons/vbwidgets/groupbox.png"));
groupbox_button->on_click = [] (GButton&) { groupbox_button->on_click = [] (GButton&) {