Credit Andrew - improve in-tree documentation
[goodguy/cinelerra.git] / cinelerra / savefile.h
1
2 /*
3  * CINELERRA
4  * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  */
21
22 #ifndef SAVEFILE_H
23 #define SAVEFILE_H
24
25 #include "guicast.h"
26 #include "mainmenu.inc"
27 #include "mwindow.inc"
28 #include "savefile.inc"
29
30 class SaveBackup : public BC_MenuItem
31 {
32 public:
33         SaveBackup(MWindow *mwindow);
34         int handle_event();
35         MWindow *mwindow;
36 };
37
38 class Save : public BC_MenuItem
39 {
40 public:
41         Save(MWindow *mwindow);
42         int handle_event();
43         void create_objects(SaveAs *saveas);
44         int save_before_quit();
45
46         int quit_now;
47         MWindow *mwindow;
48         SaveAs *saveas;
49 };
50
51 class SaveAs : public BC_MenuItem, public Thread
52 {
53 public:
54         SaveAs(MWindow *mwindow);
55         int set_mainmenu(MainMenu *mmenu);
56         int handle_event();
57         void run();
58
59         int quit_now;
60         MWindow *mwindow;
61         MainMenu *mmenu;
62 };
63
64 class SaveFileWindow : public BC_FileBox
65 {
66 public:
67         SaveFileWindow(MWindow *mwindow, char *init_directory);
68         ~SaveFileWindow();
69         MWindow *mwindow;
70 };
71
72
73 class SaveProjectModeItem : public BC_MenuItem
74 {
75 public:
76         SaveProjectModeItem(const char *txt, int id)
77          : BC_MenuItem(txt) { this->id = id; }
78
79         int handle_event();
80         int id;
81 };
82
83 class SaveProjectMode : public BC_PopupMenu
84 {
85         const char *save_modes[SAVE_PROJECT_MODES];
86         int mode;
87 public:
88         SaveProjectMode(SaveProjectWindow *gui, int x, int y);
89         ~SaveProjectMode();
90
91         void create_objects();
92         void update(int mode);
93
94         SaveProjectWindow *gui;
95 };
96
97 class SaveProjectTextBox : public BC_TextBox
98 {
99 public:
100         SaveProjectTextBox(SaveProjectWindow *gui, int x, int y, int w);
101         ~SaveProjectTextBox();
102         int handle_event();
103
104
105         SaveProjectWindow *gui;
106 };
107
108 class SaveProjectWindow : public BC_Window
109 {
110 public:
111         SaveProjectWindow(MWindow *mwindow, const char *dir_path,
112                         int save_mode, int overwrite, int reload);
113         ~SaveProjectWindow();
114         void create_objects();
115
116         MWindow *mwindow;
117         SaveProjectTextBox *textbox;
118         BC_RecentList *recent_project;
119         BrowseButton *browse_button;
120         SaveProjectMode *mode_popup;
121
122         char dir_path[BCTEXTLEN];
123         int overwrite;
124         int save_mode;
125         int reload;
126
127         int get_overwrite() { return overwrite; }
128         int get_save_mode() { return save_mode; }
129         int get_reload() { return reload; }
130 };
131
132 class SaveProject : public BC_MenuItem, public Thread
133 {
134 public:
135         SaveProject(MWindow *mwindow);
136         int handle_event();
137         void run();
138         MWindow *mwindow;
139 };
140
141 #endif