/* * Copyright (c) 2019-2020, Sergey Bugaev * * SPDX-License-Identifier: BSD-2-Clause */ #include "CalculatorWidget.h" #include #include #include #include #include #include #include #include #include #include #include #include ErrorOr serenity_main(Main::Arguments arguments) { TRY(Core::System::pledge("stdio recvfd sendfd rpath unix")); auto app = TRY(GUI::Application::try_create(arguments)); TRY(Core::System::pledge("stdio recvfd sendfd rpath")); TRY(Core::System::unveil("/res", "r")); TRY(Core::System::unveil(nullptr, nullptr)); auto app_icon = GUI::Icon::default_icon("app-calculator"); auto window = TRY(GUI::Window::try_create()); window->set_title("Calculator"); window->set_resizable(false); window->resize(250, 215); auto widget = TRY(window->try_set_main_widget()); window->set_icon(app_icon.bitmap_for_size(16)); auto& file_menu = window->add_menu("&File"); file_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) { GUI::Application::the()->quit(); })); auto& edit_menu = window->add_menu("&Edit"); edit_menu.add_action(GUI::CommonActions::make_copy_action([&](auto&) { GUI::Clipboard::the().set_plain_text(widget->get_entry()); })); edit_menu.add_action(GUI::CommonActions::make_paste_action([&](auto&) { auto clipboard = GUI::Clipboard::the().fetch_data_and_type(); if (clipboard.mime_type == "text/plain") { if (!clipboard.data.is_empty()) { widget->set_entry(KeypadValue(StringView(clipboard.data))); } } })); auto& constants_menu = window->add_menu("&Constants"); constants_menu.add_action(GUI::Action::create("&Pi", TRY(Gfx::Bitmap::try_load_from_file("/res/icons/calculator/pi.png")), [&](auto&) { widget->set_entry(KeypadValue { 31415926535, 10 }); })); constants_menu.add_action(GUI::Action::create("&Euler's Number", TRY(Gfx::Bitmap::try_load_from_file("/res/icons/calculator/eulers_number.png")), [&](auto&) { widget->set_entry(KeypadValue { 27182818284, 10 }); })); constants_menu.add_action(GUI::Action::create("&Phi", TRY(Gfx::Bitmap::try_load_from_file("/res/icons/calculator/phi.png")), [&](auto&) { widget->set_entry(KeypadValue { 16180339887, 10 }); })); auto& help_menu = window->add_menu("&Help"); help_menu.add_action(GUI::CommonActions::make_about_action("Calculator", app_icon, window)); window->show(); return app->exec(); }