text: /*
   * Copyright (c) 2019-2020, Sergey Bugaev <bugaevc@seguebaseos.org>
   *
   * SPDX-License-Identifier: BSD-2-Clause
   */
  
  #include "CalculatorWidget.h"
  #include <LibGUI/Action.h>
  #include <LibGUI/Application.h>
  #include <LibGUI/Clipboard.h>
  #include <LibGUI/Icon.h>
  #include <LibGUI/Menu.h>
  #include <LibGUI/Menubar.h>
  #include <LibGUI/Window.h>
  #include <LibGfx/Bitmap.h>
  #include <stdio.h>
  #include <unistd.h>
  
  int main(int argc, char** argv)
  {
      if (pledge("stdio recvfd sendfd rpath unix", nullptr) < 0) {
          perror("pledge");
          return 1;
      }
  
      auto app = GUI::Application::construct(argc, argv);
  
      if (pledge("stdio recvfd sendfd rpath", nullptr) < 0) {
          perror("pledge");
          return 1;
      }
  
      if (unveil("/res", "r") < 0) {
          perror("unveil");
          return 1;
      }
  
      unveil(nullptr, nullptr);
  
      auto app_icon = GUI::Icon::default_icon("app-calculator");
  
      auto window = GUI::Window::construct();
      window->set_title("Calculator");
      window->set_resizable(false);
      window->resize(254, 215);
  
      auto& widget = window->set_main_widget<CalculatorWidget>();
  
      window->show();
      window->set_icon(app_icon.bitmap_for_size(16));
  
      auto menubar = GUI::Menubar::construct();
  
      auto& file_menu = menubar->add_menu("&File");
      file_menu.add_action(GUI::CommonActions::make_quit_action([](auto&) {
          GUI::Application::the()->quit();
      }));
  
      auto& edit_menu = menubar->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().data_and_type();
          if (clipboard.mime_type == "text/plain") {
              if (!clipboard.data.is_empty()) {
                  auto data = atof(StringView(clipboard.data).to_string().characters());
                  widget.set_entry(data);
              }
          }
      }));
  
      auto& help_menu = menubar->add_menu("&Help");
      help_menu.add_action(GUI::CommonActions::make_about_action("Calculator", app_icon, window));
      window->set_menubar(move(menubar));
      return app->exec();
  }
  