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 "VBProperty.h"
#include "VBWidgetRegistry.h"
#include "VBWidget.h"
#include "VBWidgetPropertyModel.h"
#include <LibGUI/GPainter.h>
#include <LibGUI/GLabel.h>
#include "VBWidgetRegistry.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/GSlider.h>
#include <LibGUI/GSpinBox.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)
: m_type(type)
@ -161,9 +162,14 @@ void VBWidget::setup_properties()
}
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);
}
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()

View file

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

View file

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

View file

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