Serenity Operating System
at master 59 lines 1.5 kB view raw
1/* 2 * Copyright (c) 2021, Nick Vella <nick@nxk.io> 3 * Copyright (c) 2022, the SerenityOS developers. 4 * 5 * SPDX-License-Identifier: BSD-2-Clause 6 */ 7 8#pragma once 9 10#include "ProjectTemplatesModel.h" 11#include <DevTools/HackStudio/ProjectTemplate.h> 12 13#include <AK/Result.h> 14#include <LibGUI/Button.h> 15#include <LibGUI/Dialog.h> 16#include <LibGUI/Label.h> 17#include <LibGUI/TextBox.h> 18 19namespace HackStudio { 20 21class NewProjectDialog : public GUI::Dialog { 22 C_OBJECT(NewProjectDialog); 23 24public: 25 static ExecResult show(GUI::Window* parent_window); 26 27 Optional<DeprecatedString> created_project_path() const { return m_created_project_path; } 28 29private: 30 NewProjectDialog(GUI::Window* parent); 31 virtual ~NewProjectDialog() override = default; 32 33 void update_dialog(); 34 Optional<DeprecatedString> get_available_project_name(); 35 Optional<DeprecatedString> get_project_full_path(); 36 37 void do_create_project(); 38 39 RefPtr<ProjectTemplate> selected_template(); 40 41 NonnullRefPtr<ProjectTemplatesModel> m_model; 42 bool m_input_valid { false }; 43 44 RefPtr<GUI::Widget> m_icon_view_container; 45 RefPtr<GUI::IconView> m_icon_view; 46 47 RefPtr<GUI::Label> m_description_label; 48 RefPtr<GUI::TextBox> m_name_input; 49 RefPtr<GUI::TextBox> m_create_in_input; 50 RefPtr<GUI::Label> m_full_path_label; 51 52 RefPtr<GUI::Button> m_ok_button; 53 RefPtr<GUI::Button> m_cancel_button; 54 RefPtr<GUI::Button> m_browse_button; 55 56 Optional<DeprecatedString> m_created_project_path; 57}; 58 59}