From 23137f0a8dbdb03cf995fc28d55ee45cb3a394da Mon Sep 17 00:00:00 2001 From: Karol Kosek Date: Wed, 25 Aug 2021 22:37:15 +0200 Subject: ThemeEditor: Add 'Open file' menu action --- Userland/Applications/ThemeEditor/PreviewWidget.cpp | 10 ++++++++++ Userland/Applications/ThemeEditor/PreviewWidget.h | 1 + Userland/Applications/ThemeEditor/main.cpp | 8 ++++++++ 3 files changed, 19 insertions(+) diff --git a/Userland/Applications/ThemeEditor/PreviewWidget.cpp b/Userland/Applications/ThemeEditor/PreviewWidget.cpp index 0c2fe956b6..cc4f2696fc 100644 --- a/Userland/Applications/ThemeEditor/PreviewWidget.cpp +++ b/Userland/Applications/ThemeEditor/PreviewWidget.cpp @@ -97,6 +97,16 @@ void PreviewWidget::set_preview_palette(const Gfx::Palette& palette) update(); } +void PreviewWidget::set_theme_from_file(String const& path, int fd) +{ + auto file = Core::ConfigFile::open(path, fd); + auto theme = Gfx::load_system_theme(file); + VERIFY(theme.is_valid()); + + m_preview_palette = Gfx::Palette(Gfx::PaletteImpl::create_with_anonymous_buffer(theme)); + set_preview_palette(m_preview_palette); +} + void PreviewWidget::paint_event(GUI::PaintEvent& event) { GUI::Frame::paint_event(event); diff --git a/Userland/Applications/ThemeEditor/PreviewWidget.h b/Userland/Applications/ThemeEditor/PreviewWidget.h index 2a1ab0ca9e..10be2f0339 100644 --- a/Userland/Applications/ThemeEditor/PreviewWidget.h +++ b/Userland/Applications/ThemeEditor/PreviewWidget.h @@ -21,6 +21,7 @@ public: const Gfx::Palette& preview_palette() const { return m_preview_palette; } void set_preview_palette(const Gfx::Palette&); + void set_theme_from_file(String const& path, int fd); private: explicit PreviewWidget(const Gfx::Palette&); diff --git a/Userland/Applications/ThemeEditor/main.cpp b/Userland/Applications/ThemeEditor/main.cpp index 4b8444ddbe..56f181d5e5 100644 --- a/Userland/Applications/ThemeEditor/main.cpp +++ b/Userland/Applications/ThemeEditor/main.cpp @@ -143,6 +143,14 @@ int main(int argc, char** argv) theme->sync(); }; + file_menu.add_action(GUI::CommonActions::make_open_action([&](auto&) { + auto result = FileSystemAccessClient::Client::the().open_file(window->window_id(), "Select theme file", "/res/themes"); + if (result.error != 0) + return; + + preview_widget.set_theme_from_file(*result.chosen_file, *result.fd); + })); + file_menu.add_action(GUI::CommonActions::make_save_action([&](auto&) { if (path.has_value()) { save_to_result(FileSystemAccessClient::Client::the().request_file(window->window_id(), *path, Core::OpenMode::WriteOnly | Core::OpenMode::Truncate)); -- cgit v1.2.3