diff --git a/Applications/PaintBrush/main.cpp b/Applications/PaintBrush/main.cpp index aba425b8112..3c56e0ce9de 100644 --- a/Applications/PaintBrush/main.cpp +++ b/Applications/PaintBrush/main.cpp @@ -1,6 +1,8 @@ #include "PaintableWidget.h" #include "PaletteWidget.h" #include "ToolboxWidget.h" +#include +#include #include #include #include @@ -9,7 +11,6 @@ #include #include #include -#include int main(int argc, char** argv) { @@ -18,6 +19,7 @@ int main(int argc, char** argv) auto window = GWindow::construct(); window->set_title("PaintBrush"); window->set_rect(100, 100, 640, 480); + window->set_icon(load_png("/res/icons/16x16/app-paintbrush.png")); auto horizontal_container = GWidget::construct(); window->set_main_widget(horizontal_container); @@ -37,33 +39,34 @@ int main(int argc, char** argv) auto menubar = make(); auto app_menu = make("PaintBrush"); + + app_menu->add_action(GCommonActions::make_open_action([&](auto&) { + Optional open_path = GFilePicker::get_open_filepath(); + + if (!open_path.has_value()) + return; + + auto bitmap = load_png(open_path.value()); + if (!bitmap) { + GMessageBox::show(String::format("Failed to load '%s'", open_path.value().characters()), "Open failed", GMessageBox::Type::Error, GMessageBox::InputType::OK, window); + return; + } + paintable_widget->set_bitmap(*bitmap); + })); + app_menu->add_separator(); app_menu->add_action(GCommonActions::make_quit_action([](auto&) { GApplication::the().quit(0); return; })); - menubar->add_menu(move(app_menu)); - auto file_menu = make("File"); - file_menu->add_action(GCommonActions::make_open_action([&](auto&) { - GFilePicker picker; - if (picker.exec() == GFilePicker::ExecOK) { - auto filename = picker.selected_file().string(); - auto bitmap = load_png(filename); - if (!bitmap) { - GMessageBox::show(String::format("Failed to load '%s'", filename.characters()), "Open failed", GMessageBox::Type::Error, GMessageBox::InputType::OK, window); - return; - } - paintable_widget->set_bitmap(*bitmap); - } - })); - menubar->add_menu(move(file_menu)); + menubar->add_menu(move(app_menu)); auto edit_menu = make("Edit"); menubar->add_menu(move(edit_menu)); auto help_menu = make("Help"); - help_menu->add_action(GAction::create("About", [](const GAction&) { - dbgprintf("FIXME: Implement Help/About\n"); + help_menu->add_action(GAction::create("About", [&](auto&) { + GAboutDialog::show("PaintBrush", load_png("/res/icons/32x32/app-paintbrush.png"), window); })); menubar->add_menu(move(help_menu)); diff --git a/Base/res/icons/16x16/app-paintbrush.png b/Base/res/icons/16x16/app-paintbrush.png new file mode 100644 index 00000000000..0a19a33148e Binary files /dev/null and b/Base/res/icons/16x16/app-paintbrush.png differ diff --git a/Libraries/LibGUI/GFilePicker.cpp b/Libraries/LibGUI/GFilePicker.cpp index efe1f6444a7..312612895e2 100644 --- a/Libraries/LibGUI/GFilePicker.cpp +++ b/Libraries/LibGUI/GFilePicker.cpp @@ -15,10 +15,10 @@ Optional GFilePicker::get_open_filepath() { - GFilePicker picker(Mode::Open); + auto picker = GFilePicker::construct(Mode::Open); - if (picker.exec() == GDialog::ExecOK) { - String file_path = picker.selected_file().string(); + if (picker->exec() == GDialog::ExecOK) { + String file_path = picker->selected_file().string(); if (file_path.is_null()) return {}; diff --git a/Libraries/LibGUI/GFilePicker.h b/Libraries/LibGUI/GFilePicker.h index 07cb0fe4b77..32f28d905d0 100644 --- a/Libraries/LibGUI/GFilePicker.h +++ b/Libraries/LibGUI/GFilePicker.h @@ -20,7 +20,6 @@ public: static Optional get_save_filepath(const String& title, const String& extension); static bool file_exists(const StringView& path); - GFilePicker(Mode type = Mode::Open, const StringView& file_name = "Untitled", const StringView& path = String(get_current_user_home_path()), CObject* parent = nullptr); virtual ~GFilePicker() override; FileSystemPath selected_file() const { return m_selected_file; } @@ -30,6 +29,8 @@ private: void clear_preview(); void on_file_return(); + GFilePicker(Mode type = Mode::Open, const StringView& file_name = "Untitled", const StringView& path = String(get_current_user_home_path()), CObject* parent = nullptr); + static String ok_button_name(Mode mode) { switch (mode) {