15class ProjectManager :
public QObject
23 Project * activeProject READ getActiveProject WRITE setActiveProject NOTIFY
27 ProjectManager (QObject * parent =
nullptr);
29 using Template = fs::path;
30 using TemplateList = std::vector<Template>;
31 using ProjectLoadResult = std::variant<Project *, QString>;
33 static ProjectManager * get_instance ();
45 Q_INVOKABLE
static QString
48 Q_INVOKABLE
void createNewProject (
49 const QUrl &directory,
51 const QUrl &templateUrl = QUrl{});
52 Q_INVOKABLE
void loadProject (
const QString &filepath);
54 void add_to_recent_projects (
const QString &path);
58 Project * getActiveProject ()
const;
59 void setActiveProject (
Project * project);
62 void projectLoaded (
Project * project);
63 void projectLoadingFailed (
const QString &errorMessage);
64 void activeProjectChanged (
Project * project);
70 void init_templates ();
78 void load_from_file ();
92 const fs::path &prj_dir,
98 TemplateList templates_;
105 Template demo_template_;
114 Project * active_project_ =
nullptr;
121 QFutureWatcher<ProjectLoadResult> project_watcher_;