MouseSettingsWidget: Port to GML compilation

This commit is contained in:
Aryan Baburajan 2024-03-31 12:58:48 +05:30 committed by Tim Schumacher
parent 03f4ec8032
commit 342fb906cf
11 changed files with 34 additions and 51 deletions

View file

@ -4,24 +4,21 @@ serenity_component(
TARGETS MouseSettings
)
stringify_gml(Mouse.gml MouseWidgetGML.h mouse_widget_gml)
stringify_gml(Theme.gml ThemeWidgetGML.h theme_widget_gml)
stringify_gml(Highlight.gml HighlightWidgetGML.h highlight_widget_gml)
compile_gml(MouseWidget.gml MouseWidgetGML.cpp)
compile_gml(ThemeWidget.gml ThemeWidgetGML.cpp)
compile_gml(HighlightWidget.gml HighlightWidgetGML.cpp)
set(SOURCES
DoubleClickArrowWidget.cpp
HighlightPreviewWidget.cpp
HighlightWidget.cpp
HighlightWidgetGML.cpp
MouseWidget.cpp
MouseWidgetGML.cpp
ThemeWidget.cpp
ThemeWidgetGML.cpp
main.cpp
)
set(GENERATED_SOURCES
HighlightWidgetGML.h
MouseWidgetGML.h
ThemeWidgetGML.h
)
serenity_app(MouseSettings ICON app-mouse)
target_link_libraries(MouseSettings PRIVATE LibCore LibGfx LibGUI LibIPC LibMain)

View file

@ -6,20 +6,11 @@
#include "HighlightWidget.h"
#include <Applications/MouseSettings/HighlightWidgetGML.h>
#include <LibGUI/ConnectionToWindowServer.h>
ErrorOr<NonnullRefPtr<HighlightWidget>> HighlightWidget::try_create()
namespace MouseSettings {
ErrorOr<void> HighlightWidget::initialize()
{
auto widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) HighlightWidget()));
TRY(widget->setup());
return widget;
}
ErrorOr<void> HighlightWidget::setup()
{
TRY(load_from_gml(highlight_widget_gml));
m_highlight_preview = find_descendant_of_type_named<GUI::Frame>("preview_frame")->add<MouseSettings::HighlightPreviewWidget>(palette());
auto current_highlight_color = GUI::ConnectionToWindowServer::the().get_cursor_highlight_color();
@ -85,3 +76,4 @@ void HighlightWidget::reset_default_values()
m_highlight_preview->update();
});
}
}

View file

@ -1,4 +1,4 @@
@GUI::Frame {
@MouseSettings::HighlightWidget {
fill_with_background_color: true
layout: @GUI::VerticalBoxLayout {
margins: [8]
@ -29,7 +29,7 @@
@GUI::ColorInput {
name: "highlight_color_input"
has_alpha_channel: false
color_has_alpha_channel: false
}
@GUI::Layout::Spacer {}

View file

@ -12,10 +12,13 @@
#include <LibGUI/Slider.h>
#include <LibGUI/Window.h>
namespace MouseSettings {
class HighlightWidget final : public GUI::SettingsWindow::Tab {
C_OBJECT_ABSTRACT(HighlightWidget)
public:
static ErrorOr<NonnullRefPtr<HighlightWidget>> try_create();
ErrorOr<void> initialize();
virtual ~HighlightWidget() override = default;
virtual void apply_settings() override;
@ -23,7 +26,6 @@ public:
private:
HighlightWidget() = default;
ErrorOr<void> setup();
Gfx::Color highlight_color();
@ -34,3 +36,4 @@ private:
RefPtr<GUI::Slider> m_highlight_opacity_slider;
RefPtr<GUI::Slider> m_highlight_radius_slider;
};
}

View file

@ -6,7 +6,6 @@
#include "MouseWidget.h"
#include <Applications/MouseSettings/MouseWidgetGML.h>
#include <LibGUI/ConnectionToWindowServer.h>
#include <LibGUI/HorizontalSlider.h>
#include <LibGUI/ImageWidget.h>
@ -20,16 +19,9 @@ constexpr double speed_slider_scale = 100.0;
constexpr int default_scroll_length = 4;
constexpr int double_click_speed_default = 250;
ErrorOr<NonnullRefPtr<MouseWidget>> MouseWidget::try_create()
namespace MouseSettings {
ErrorOr<void> MouseWidget::initialize()
{
auto widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) MouseWidget()));
TRY(widget->setup());
return widget;
}
ErrorOr<void> MouseWidget::setup()
{
TRY(load_from_gml(mouse_widget_gml));
m_speed_label = *find_descendant_of_type_named<GUI::Label>("speed_label");
m_speed_slider = *find_descendant_of_type_named<GUI::HorizontalSlider>("speed_slider");
m_speed_slider->set_range(WindowServer::mouse_accel_min * speed_slider_scale, WindowServer::mouse_accel_max * speed_slider_scale);
@ -117,3 +109,4 @@ void MouseWidget::update_switch_buttons_image_label()
m_switch_buttons_image->load_from_file("/res/graphics/mouse-button-left.png"sv);
}
}
}

View file

@ -1,4 +1,4 @@
@GUI::Frame {
@MouseSettings::MouseWidget {
fill_with_background_color: true
layout: @GUI::VerticalBoxLayout {
margins: [8]

View file

@ -11,10 +11,13 @@
#include <LibGUI/SettingsWindow.h>
#include <LibGUI/Window.h>
namespace MouseSettings {
class MouseWidget final : public GUI::SettingsWindow::Tab {
C_OBJECT_ABSTRACT(MouseWidget)
public:
static ErrorOr<NonnullRefPtr<MouseWidget>> try_create();
ErrorOr<void> initialize();
virtual ~MouseWidget() override = default;
virtual void apply_settings() override;
@ -22,7 +25,6 @@ public:
private:
MouseWidget() = default;
ErrorOr<void> setup();
void update_speed_label();
void update_double_click_speed_label();
@ -38,3 +40,4 @@ private:
RefPtr<GUI::CheckBox> m_natural_scroll_checkbox;
RefPtr<MouseSettings::DoubleClickArrowWidget> m_double_click_arrow_widget;
};
}

View file

@ -7,7 +7,6 @@
#include "ThemeWidget.h"
#include <AK/LexicalPath.h>
#include <Applications/MouseSettings/ThemeWidgetGML.h>
#include <LibCore/Directory.h>
#include <LibGUI/Button.h>
#include <LibGUI/ComboBox.h>
@ -15,6 +14,7 @@
#include <LibGUI/SortingProxyModel.h>
#include <LibGUI/TableView.h>
namespace MouseSettings {
ErrorOr<String> MouseCursorModel::column_name(int column_index) const
{
switch (column_index) {
@ -113,16 +113,8 @@ Vector<GUI::ModelIndex> ThemeModel::matches(StringView needle, unsigned flags, c
return found;
}
ErrorOr<NonnullRefPtr<ThemeWidget>> ThemeWidget::try_create()
ErrorOr<void> ThemeWidget::initialize()
{
auto widget = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) ThemeWidget()));
TRY(widget->setup());
return widget;
}
ErrorOr<void> ThemeWidget::setup()
{
TRY(load_from_gml(theme_widget_gml));
m_cursors_tableview = find_descendant_of_type_named<GUI::TableView>("cursors_tableview");
m_cursors_tableview->set_highlight_selected_rows(true);
m_cursors_tableview->set_alternating_row_colors(false);
@ -162,3 +154,4 @@ void ThemeWidget::reset_default_values()
{
m_theme_name_box->set_text("Default");
}
}

View file

@ -1,4 +1,4 @@
@GUI::Frame {
@MouseSettings::ThemeWidget {
fill_with_background_color: true
layout: @GUI::VerticalBoxLayout {
margins: [8]
@ -19,7 +19,6 @@
@GUI::ComboBox {
name: "theme_name_box"
model_only: true
}
}

View file

@ -11,6 +11,7 @@
#include <LibGUI/SettingsWindow.h>
#include <LibGfx/CursorParams.h>
namespace MouseSettings {
class MouseCursorModel final : public GUI::Model {
public:
static NonnullRefPtr<MouseCursorModel> create() { return adopt_ref(*new MouseCursorModel); }
@ -67,6 +68,8 @@ class ThemeWidget final : public GUI::SettingsWindow::Tab {
C_OBJECT_ABSTRACT(ThemeWidget)
public:
static ErrorOr<NonnullRefPtr<ThemeWidget>> try_create();
ErrorOr<void> initialize();
virtual ~ThemeWidget() override = default;
virtual void apply_settings() override;
@ -74,9 +77,9 @@ public:
private:
ThemeWidget() = default;
ErrorOr<void> setup();
RefPtr<GUI::TableView> m_cursors_tableview;
RefPtr<GUI::ComboBox> m_theme_name_box;
RefPtr<MouseCursorModel> m_mouse_cursor_model;
};
}

View file

@ -34,9 +34,9 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
auto app_icon = GUI::Icon::default_icon("app-mouse"sv);
auto window = TRY(GUI::SettingsWindow::create("Mouse Settings", GUI::SettingsWindow::ShowDefaultsButton::Yes));
(void)TRY(window->add_tab<MouseWidget>("Mouse"_string, "mouse"sv));
(void)TRY(window->add_tab<ThemeWidget>("Cursor Theme"_string, "cursor-theme"sv));
(void)TRY(window->add_tab<HighlightWidget>("Cursor Highlight"_string, "cursor-highlight"sv));
(void)TRY(window->add_tab<MouseSettings::MouseWidget>("Mouse"_string, "mouse"sv));
(void)TRY(window->add_tab<MouseSettings::ThemeWidget>("Cursor Theme"_string, "cursor-theme"sv));
(void)TRY(window->add_tab<MouseSettings::HighlightWidget>("Cursor Highlight"_string, "cursor-highlight"sv));
window->set_icon(app_icon.bitmap_for_size(16));
window->set_active_tab(selected_tab);