Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
greeter.h
1// SPDX-FileCopyrightText: © 2024 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#ifndef __GUI_WIDGETS_GREETER_H__
5#define __GUI_WIDGETS_GREETER_H__
6
7#include <semaphore>
8
9#include "common/utils/types.h"
10#include "gui/backend/backend/project_info.h"
11#include "gui/backend/gtk_widgets/cc-list-row-info-button.h"
12#include "gui/backend/gtk_widgets/item_factory.h"
13#include "gui/backend/gtk_widgets/libadwaita_wrapper.h"
14
15#define GREETER_WIDGET_TYPE (greeter_widget_get_type ())
16G_DECLARE_FINAL_TYPE (GreeterWidget, greeter_widget, Z, GREETER_WIDGET, AdwWindow)
17
18class ZrythmApp;
19TYPEDEF_STRUCT_UNDERSCORED (IdeFileChooserEntry);
20TYPEDEF_STRUCT_UNDERSCORED (CcListRowInfoButton);
21
27
34using GreeterWidget = struct _GreeterWidget
35{
36 AdwWindow parent_instance;
37
39 GtkStack * stack;
40
41 /* -- welcome/config pages -- */
42
43 AdwCarousel * welcome_carousel;
44 guint welcome_carousel_page_idx;
45 GtkButton * welcome_carousel_prev_btn;
46 GtkButton * welcome_carousel_next_btn;
47 GtkButton * continue_to_config_btn;
48 AdwStatusPage * read_manual_status_page;
49 AdwStatusPage * donate_status_page;
50 AdwStatusPage * about_flatpak_status_page;
51 // AdwStatusPage * legal_info_status_page;
52 AdwNavigationView * nav_view;
53 AdwNavigationPage * nav_config_page;
54
55 AdwPreferencesPage * pref_page;
56 AdwComboRow * language_dropdown;
57 GtkLabel * lang_error_txt;
58 IdeFileChooserEntry * fc_entry;
59 GtkButton * config_ok_btn;
60 GtkButton * config_reset_btn;
61
62 /* -- progress page -- */
63
64 AdwStatusPage * status_page;
65 // GtkLabel * status_title;
66 // GtkLabel * status_description;
67 GtkProgressBar * progress_bar;
68
70 std::binary_semaphore progress_status_lock;
71
73 double progress;
74
75 std::string title;
76 std::string description;
77
78 /* -- projects page -- */
79
80 AdwNavigationView * open_prj_navigation_view;
81
82 AdwPreferencesGroup * recent_projects_pref_group;
83 std::vector<std::unique_ptr<ProjectInfo>> project_infos_arr;
84 ItemFactoryPtrVector recent_projects_item_factories;
85 GtkButton * create_new_project_btn;
86 GtkButton * select_folder_btn;
87
88 AdwNavigationPage * create_project_nav_page;
89 AdwEntryRow * project_title_row;
90 AdwActionRow * project_parent_dir_row;
91 IdeFileChooserEntry * project_parent_dir_fc;
92 AdwComboRow * templates_combo_row;
93 CcListRowInfoButton * templates_info_button;
94 std::vector<std::unique_ptr<ProjectInfo>> templates_arr;
95 ItemFactoryPtrVector templates_item_factories;
96 AdwPreferencesGroup * templates_pref_group;
97 GtkButton * create_project_confirm_btn;
98
99 char * template_;
100
101 bool zrythm_already_running;
102
103 /* --- other --- */
104
105 guint tick_cb_id;
106
108 std::unique_ptr<juce::Thread> init_thread;
109};
110
121 ZrythmApp * app,
122 GtkWindow * parent,
123 bool is_startup,
124 bool is_for_new_project);
125
129void
131 GreeterWidget &self,
132 const std::string &title,
133 const std::string &description,
134 const double perc);
135
136void
137greeter_widget_set_currently_scanned_plugin (
138 GreeterWidget * self,
139 const char * filename);
140
152void
154 GreeterWidget * self,
155 bool zrythm_already_running,
156 bool is_for_new_project,
157 const char * template_to_use);
158
159#if 0
160void
161greeter_widget_close (GreeterWidget * self);
162#endif
163
167
168#endif
The Zrythm GTK application.
Definition zrythm_app.h:50
void greeter_widget_set_progress_and_status(GreeterWidget &self, const std::string &title, const std::string &description, const double perc)
Sets the current status and progress percentage.
GreeterWidget * greeter_widget_new(ZrythmApp *app, GtkWindow *parent, bool is_startup, bool is_for_new_project)
Creates a greeter widget.
struct _GreeterWidget { AdwWindow parent_instance; GtkStack *stack; AdwCarousel * welcome_carousel; guint welcome_carousel_page_idx; GtkButton * welcome_carousel_prev_btn; GtkButton * welcome_carousel_next_btn; GtkButton * continue_to_config_btn; AdwStatusPage *read_manual_status_page; AdwStatusPage *donate_status_page; AdwStatusPage *about_flatpak_status_page; AdwNavigationView *nav_view; AdwNavigationPage *nav_config_page; AdwPreferencesPage * pref_page; AdwComboRow * language_dropdown; GtkLabel * lang_error_txt; IdeFileChooserEntry *fc_entry; GtkButton * config_ok_btn; GtkButton * config_reset_btn; AdwStatusPage *status_page; GtkProgressBar *progress_bar; std::binary_semaphore progress_status_lock; double progress; std::string title; std::string description; AdwNavigationView *open_prj_navigation_view; AdwPreferencesGroup * recent_projects_pref_group; std::vector< std::unique_ptr< ProjectInfo > > project_infos_arr; ItemFactoryPtrVector recent_projects_item_factories; GtkButton * create_new_project_btn; GtkButton * select_folder_btn; AdwNavigationPage * create_project_nav_page; AdwEntryRow * project_title_row; AdwActionRow * project_parent_dir_row; IdeFileChooserEntry * project_parent_dir_fc; AdwComboRow * templates_combo_row; CcListRowInfoButton * templates_info_button; std::vector< std::unique_ptr< ProjectInfo > > templates_arr; ItemFactoryPtrVector templates_item_factories; AdwPreferencesGroup * templates_pref_group; GtkButton * create_project_confirm_btn; char *template_; bool zrythm_already_running; guint tick_cb_id; std::unique_ptr< juce::Thread > init_thread;} GreeterWidget
This widget handles the UI part of the initialization of Zrythm and presents a project selector when ...
Definition greeter.h:34
void greeter_widget_select_project(GreeterWidget *self, bool zrythm_already_running, bool is_for_new_project, const char *template_to_use)
Proceed to the project selection screen.