add load_file apply button, sketcher colorpicker alpha fix, tweak resize filebox...
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / reverb / reverbwindow.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 REVERBWINDOW_H
23 #define REVERBWINDOW_H
24
25 #define TOTAL_LOADS 5
26
27 class ReverbThread;
28 class ReverbWindow;
29
30 #include "guicast.h"
31 #include "mutex.h"
32 #include "pluginclient.h"
33 #include "reverb.inc"
34
35
36
37 class ReverbLevelInit;
38 class ReverbDelayInit;
39 class ReverbRefLevel1;
40 class ReverbRefLevel2;
41 class ReverbRefTotal;
42 class ReverbRefLength;
43 class ReverbLowPass1;
44 class ReverbLowPass2;
45 class ReverbMenu;
46
47 class ReverbWindow : public PluginClientWindow
48 {
49 public:
50         ReverbWindow(Reverb *reverb);
51         ~ReverbWindow();
52
53         void create_objects();
54
55         Reverb *reverb;
56         ReverbLevelInit *level_init;
57         ReverbDelayInit *delay_init;
58         ReverbRefLevel1 *ref_level1;
59         ReverbRefLevel2 *ref_level2;
60         ReverbRefTotal *ref_total;
61         ReverbRefLength *ref_length;
62         ReverbLowPass1 *lowpass1;
63         ReverbLowPass2 *lowpass2;
64         ReverbMenu *menu;
65 };
66
67 class ReverbLevelInit : public BC_FPot
68 {
69 public:
70         ReverbLevelInit(Reverb *reverb, int x, int y);
71         ~ReverbLevelInit();
72         int handle_event();
73         Reverb *reverb;
74 };
75
76 class ReverbDelayInit : public BC_IPot
77 {
78 public:
79         ReverbDelayInit(Reverb *reverb, int x, int y);
80         ~ReverbDelayInit();
81         int handle_event();
82         Reverb *reverb;
83 };
84
85 class ReverbRefLevel1 : public BC_FPot
86 {
87 public:
88         ReverbRefLevel1(Reverb *reverb, int x, int y);
89         ~ReverbRefLevel1();
90         int handle_event();
91         Reverb *reverb;
92 };
93
94 class ReverbRefLevel2 : public BC_FPot
95 {
96 public:
97         ReverbRefLevel2(Reverb *reverb, int x, int y);
98         ~ReverbRefLevel2();
99         int handle_event();
100         Reverb *reverb;
101 };
102
103 class ReverbRefTotal : public BC_IPot
104 {
105 public:
106         ReverbRefTotal(Reverb *reverb, int x, int y);
107         ~ReverbRefTotal();
108         int handle_event();
109         Reverb *reverb;
110 };
111
112 class ReverbRefLength : public BC_IPot
113 {
114 public:
115         ReverbRefLength(Reverb *reverb, int x, int y);
116         ~ReverbRefLength();
117         int handle_event();
118         Reverb *reverb;
119 };
120
121 class ReverbLowPass1 : public BC_QPot
122 {
123 public:
124         ReverbLowPass1(Reverb *reverb, int x, int y);
125         ~ReverbLowPass1();
126         int handle_event();
127         Reverb *reverb;
128 };
129
130 class ReverbLowPass2 : public BC_QPot
131 {
132 public:
133         ReverbLowPass2(Reverb *reverb, int x, int y);
134         ~ReverbLowPass2();
135         int handle_event();
136         Reverb *reverb;
137 };
138
139
140 class ReverbLoad;
141 class ReverbSave;
142 class ReverbSetDefault;
143 class ReverbLoadPrev;
144 class ReverbLoadPrevThread;
145
146 class ReverbMenu : public BC_MenuBar
147 {
148 public:
149         ReverbMenu(Reverb *reverb, ReverbWindow *window);
150         ~ReverbMenu();
151
152         void create_objects(BC_Hash *defaults);
153         int load_defaults(BC_Hash *defaults);
154         int save_defaults(BC_Hash *defaults);
155 // most recent loads
156         int add_load(char *path);
157         ReverbLoadPrevThread *prev_load_thread;
158
159         int total_loads;
160         BC_Menu *filemenu;
161         ReverbWindow *window;
162         Reverb *reverb;
163         ReverbLoad *load;
164         ReverbSave *save;
165         ReverbSetDefault *set_default;
166         ReverbLoadPrev *prev_load[TOTAL_LOADS];
167 };
168
169 class ReverbSaveThread;
170 class ReverbLoadThread;
171
172 class ReverbLoad : public BC_MenuItem
173 {
174 public:
175         ReverbLoad(Reverb *reverb, ReverbMenu *menu);
176         ~ReverbLoad();
177         int handle_event();
178         Reverb *reverb;
179         ReverbLoadThread *thread;
180         ReverbMenu *menu;
181 };
182
183 class ReverbSave : public BC_MenuItem
184 {
185 public:
186         ReverbSave(Reverb *reverb, ReverbMenu *menu);
187         ~ReverbSave();
188         int handle_event();
189         Reverb *reverb;
190         ReverbSaveThread *thread;
191         ReverbMenu *menu;
192 };
193
194 class ReverbSetDefault : public BC_MenuItem
195 {
196 public:
197         ReverbSetDefault();
198         int handle_event();
199 };
200
201 class ReverbLoadPrev : public BC_MenuItem
202 {
203 public:
204         ReverbLoadPrev(Reverb *reverb, ReverbMenu *menu, char *filename, char *path);
205         ReverbLoadPrev(Reverb *reverb, ReverbMenu *menu);
206         int handle_event();
207         int set_path(char *path);
208         char path[1024];
209         Reverb *reverb;
210         ReverbMenu *menu;
211 };
212
213
214 class ReverbLoadPrevThread : public Thread
215 {
216 public:
217         ReverbLoadPrevThread(Reverb *reverb, ReverbMenu *menu);
218         ~ReverbLoadPrevThread();
219         void run();
220         int set_path(char *path);
221         char path[1024];
222         Reverb *reverb;
223         ReverbMenu *menu;
224 };
225
226
227
228 class ReverbSaveThread : public Thread
229 {
230 public:
231         ReverbSaveThread(Reverb *reverb, ReverbMenu *menu);
232         ~ReverbSaveThread();
233         void run();
234         Reverb *reverb;
235         ReverbMenu *menu;
236 };
237
238 class ReverbSaveDialog : public BC_FileBox
239 {
240 public:
241         ReverbSaveDialog(Reverb *reverb);
242         ~ReverbSaveDialog();
243
244         int ok_event();
245         int cancel_event();
246         Reverb *reverb;
247 };
248
249
250 class ReverbLoadThread : public Thread
251 {
252 public:
253         ReverbLoadThread(Reverb *reverb, ReverbMenu *menu);
254         ~ReverbLoadThread();
255         void run();
256         Reverb *reverb;
257         ReverbMenu *menu;
258 };
259
260 class ReverbLoadDialog : public BC_FileBox
261 {
262 public:
263         ReverbLoadDialog(Reverb *reverb);
264         ~ReverbLoadDialog();
265
266         int ok_event();
267         int cancel_event();
268         Reverb *reverb;
269 };
270
271
272
273
274
275 #endif