Zrythm
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 "gui/widgets/cc-list-row-info-button.h"
8#include "utils/types.h"
9
10#include <adwaita.h>
11
12#include <zix/sem.h>
13
14#define GREETER_WIDGET_TYPE (greeter_widget_get_type ())
15G_DECLARE_FINAL_TYPE (GreeterWidget, greeter_widget, Z, GREETER_WIDGET, AdwWindow)
16
17TYPEDEF_STRUCT_UNDERSCORED (ZrythmApp);
18TYPEDEF_STRUCT_UNDERSCORED (IdeFileChooserEntry);
19TYPEDEF_STRUCT_UNDERSCORED (CcListRowInfoButton);
20
30typedef struct ProjectInfo
31{
32 char * name;
34 char * filename;
35 gint64 modified;
36 char * modified_str;
38
45typedef struct _GreeterWidget
46{
47 AdwWindow parent_instance;
48
50 GtkStack * stack;
51
52 /* -- welcome/config pages -- */
53
54 AdwCarousel * welcome_carousel;
55 guint welcome_carousel_page_idx;
56 GtkButton * welcome_carousel_prev_btn;
57 GtkButton * welcome_carousel_next_btn;
58 GtkButton * continue_to_config_btn;
59 AdwStatusPage * read_manual_status_page;
60 AdwStatusPage * donate_status_page;
61 AdwStatusPage * about_flatpak_status_page;
62 // AdwStatusPage * legal_info_status_page;
63 AdwNavigationView * nav_view;
64 AdwNavigationPage * nav_config_page;
65
66 AdwPreferencesPage * pref_page;
67 AdwComboRow * language_dropdown;
68 GtkLabel * lang_error_txt;
69 IdeFileChooserEntry * fc_entry;
70 GtkButton * config_ok_btn;
71 GtkButton * config_reset_btn;
72
73 /* -- progress page -- */
74
75 AdwStatusPage * status_page;
76 // GtkLabel * status_title;
77 // GtkLabel * status_description;
78 GtkProgressBar * progress_bar;
79
82
84 double progress;
85
86 char title[800];
87 char description[800];
88
89 /* -- projects page -- */
90
91 AdwNavigationView * open_prj_navigation_view;
92
93 AdwPreferencesGroup * recent_projects_pref_group;
94 GPtrArray * project_infos_arr;
95 GPtrArray * recent_projects_item_factories;
96 GtkButton * create_new_project_btn;
97 GtkButton * select_folder_btn;
98
99 AdwNavigationPage * create_project_nav_page;
100 AdwEntryRow * project_title_row;
101 AdwActionRow * project_parent_dir_row;
102 IdeFileChooserEntry * project_parent_dir_fc;
103 AdwComboRow * templates_combo_row;
104 CcListRowInfoButton * templates_info_button;
105 GPtrArray * templates_arr;
106 GPtrArray * templates_item_factories;
107 AdwPreferencesGroup * templates_pref_group;
108 GtkButton * create_project_confirm_btn;
109
110 char * template;
111
112 bool zrythm_already_running;
113
114 /* --- other --- */
115
116 guint tick_cb_id;
117
119 GThread * init_thread;
121
132 ZrythmApp * app,
133 GtkWindow * parent,
134 bool is_startup,
135 bool is_for_new_project);
136
140void
142 GreeterWidget * self,
143 const char * title,
144 const char * description,
145 const double perc);
146
147void
148greeter_widget_set_currently_scanned_plugin (
149 GreeterWidget * self,
150 const char * filename);
151
163void
165 GreeterWidget * self,
166 bool zrythm_already_running,
167 bool is_for_new_project,
168 const char * template_to_use);
169
170#if 0
171void
172greeter_widget_close (GreeterWidget * self);
173#endif
174
179#endif
GreeterWidget * greeter_widget_new(ZrythmApp *app, GtkWindow *parent, bool is_startup, bool is_for_new_project)
Creates a greeter widget.
void greeter_widget_set_progress_and_status(GreeterWidget *self, const char *title, const char *description, const double perc)
Sets the current status and progress percentage.
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.
This widget handles the UI part of the initialization of Zrythm and presents a project selector when ...
Definition greeter.h:46
GtkStack * stack
Stack for transitioning between progress -> project selector.
Definition greeter.h:50
ZixSem progress_status_lock
Semaphore for setting the progress from multiple threads.
Definition greeter.h:81
GThread * init_thread
Initialization thread.
Definition greeter.h:119
double progress
Progress done (0.0 ~ 1.0).
Definition greeter.h:84
Project file information.
Definition greeter.h:31
char * filename
Full path.
Definition greeter.h:34
Custom types.