initial commit
[goodguy/history.git] / cinelerra-5.0 / cinelerra / plugindialog.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 PLUGINDIALOG_H
23 #define PLUGINDIALOG_H
24
25 class PluginDialogTextBox;
26 class PluginDialogDetach;
27 class PluginDialogNew;
28 class PluginDialogShared;
29 class PluginDialogModules;
30 class PluginDialogAttachNew;
31 class PluginDialogChangeNew;
32 class PluginDialogIn;
33 class PluginDialogOut;
34 class PluginDialogThru;
35 class PluginDialogSingle;
36 class PluginDialog;
37
38 #include "bcdialog.h"
39 #include "condition.inc"
40 #include "guicast.h"
41 #include "mutex.inc"
42 #include "mwindow.inc"
43 #include "plugin.inc"
44 #include "pluginserver.inc"
45 #include "sharedlocation.h"
46 #include "thread.h"
47 #include "track.inc"
48 #include "transition.inc"
49
50 class PluginDialogThread : public BC_DialogThread
51 {
52 public:
53         PluginDialogThread(MWindow *mwindow);
54         ~PluginDialogThread();
55
56 // Set up parameters for a transition menu.
57         void start_window(Track *track,
58                 Plugin *plugin, 
59                 const char *title,
60                 int is_mainmenu,
61                 int data_type);
62         BC_Window* new_gui();
63         void handle_done_event(int result);
64         void handle_close_event(int result);
65
66
67
68         MWindow *mwindow;
69         Track *track;
70         int data_type;
71         Transition *transition;
72 // Plugin being modified if there is one
73         Plugin *plugin;
74         char window_title[BCTEXTLEN];
75 // If attaching from main menu
76         int is_mainmenu;
77
78
79 // type of attached plugin
80         int plugin_type;    // 0: none  1: plugin   2: shared plugin   3: module
81
82 // location of attached plugin if shared
83         SharedLocation shared_location;
84
85 // Title of attached plugin if new
86         char plugin_title[BCTEXTLEN];
87 // For the main menu invocation, 
88 // attach 1 standalone on the first track and share it with other tracks
89         int single_standalone;
90 };
91
92 class PluginDialog : public BC_Window
93 {
94 public:
95         PluginDialog(MWindow *mwindow, 
96                 PluginDialogThread *thread, 
97                 const char *title,
98                 int x,
99                 int y);
100         ~PluginDialog();
101
102         void create_objects();
103
104         int attach_new(int number);
105         int attach_shared(int number);
106         int attach_module(int number);
107         int save_settings();
108         int resize_event(int w, int h);
109
110         BC_Title *standalone_title;
111         PluginDialogNew *standalone_list;
112         BC_Title *shared_title;
113         PluginDialogShared *shared_list;
114         BC_Title *module_title;
115         PluginDialogModules *module_list;
116         PluginDialogSingle *single_standalone;
117
118
119         PluginDialogThru *thru;
120         
121         PluginDialogThread *thread;
122
123         ArrayList<BC_ListBoxItem*> standalone_data;
124         ArrayList<BC_ListBoxItem*> shared_data;
125         ArrayList<BC_ListBoxItem*> module_data;
126         ArrayList<SharedLocation*> plugin_locations; // locations of all shared plugins
127         ArrayList<SharedLocation*> module_locations; // locations of all shared modules
128         ArrayList<PluginServer*> plugindb;           // locations of all simple plugins, no need for memory freeing!
129
130         int selected_available;
131         int selected_shared;
132         int selected_modules;
133
134         MWindow *mwindow;
135 };
136
137
138 /*
139  * class PluginDialogTextBox : public BC_TextBox
140  * {
141  * public:
142  *      PluginDialogTextBox(PluginDialog *dialog, char *text, int x, int y);
143  *      ~PluginDialogTextBox();
144  * 
145  *      int handle_event();
146  *      PluginDialog *dialog;
147  * };
148  */
149
150 /*
151  * class PluginDialogDetach : public BC_GenericButton
152  * {
153  * public:
154  *      PluginDialogDetach(MWindow *mwindow, PluginDialog *dialog, int x, int y);
155  *      ~PluginDialogDetach();
156  *      
157  *      int handle_event();
158  *      PluginDialog *dialog;
159  * };
160  */
161
162 /*
163  * class PluginDialogAttachNew : public BC_GenericButton
164  * {
165  * public:
166  *      PluginDialogAttachNew(MWindow *mwindow, PluginDialog *dialog, int x, int y);
167  *      ~PluginDialogAttachNew();
168  *      
169  *      int handle_event();
170  *      PluginDialog *dialog;
171  * };
172  * 
173  * class PluginDialogChangeNew : public BC_GenericButton
174  * {
175  * public:
176  *    PluginDialogChangeNew(MWindow *mwindow, PluginDialog *dialog, int x, int y);
177  *    ~PluginDialogChangeNew();
178  * 
179  *    int handle_event();
180  *    PluginDialog *dialog;
181  * };
182  */
183
184
185 class PluginDialogNew : public BC_ListBox
186 {
187 public:
188         PluginDialogNew(PluginDialog *dialog, 
189                 ArrayList<BC_ListBoxItem*> *standalone_data, 
190                 int x, 
191                 int y,
192                 int w,
193                 int h);
194         ~PluginDialogNew();
195         
196         int handle_event();
197         int selection_changed();
198         PluginDialog *dialog;
199 };
200
201 class PluginDialogShared : public BC_ListBox
202 {
203 public:
204         PluginDialogShared(PluginDialog *dialog, 
205                 ArrayList<BC_ListBoxItem*> *shared_data, 
206                 int x, 
207                 int y,
208                 int w,
209                 int h);
210         ~PluginDialogShared();
211         
212         int handle_event();
213         int selection_changed();
214         PluginDialog *dialog;
215 };
216
217 class PluginDialogModules : public BC_ListBox
218 {
219 public:
220         PluginDialogModules(PluginDialog *dialog, 
221                 ArrayList<BC_ListBoxItem*> *module_data, 
222                 int x, 
223                 int y,
224                 int w,
225                 int h);
226         ~PluginDialogModules();
227         
228         int handle_event();
229         int selection_changed();
230         PluginDialog *dialog;
231 };
232
233 class PluginDialogSingle : public BC_CheckBox
234 {
235 public:
236         PluginDialogSingle(PluginDialog *dialog, int x, int y);
237         int handle_event();
238         PluginDialog *dialog;
239 };
240
241
242 /*
243  * class PluginDialogAttachShared : public BC_GenericButton
244  * {
245  * public:
246  *      PluginDialogAttachShared(MWindow *mwindow, PluginDialog *dialog, int x, int y);
247  *      ~PluginDialogAttachShared();
248  *      
249  *      int handle_event();
250  *      PluginDialog *dialog;
251  * };
252  * 
253  * class PluginDialogChangeShared : public BC_GenericButton
254  * {
255  * public:
256  *    PluginDialogChangeShared(MWindow *mwindow, PluginDialog *dialog, int x, int y);
257  *    ~PluginDialogChangeShared();
258  * 
259  *    int handle_event();
260  *    PluginDialog *dialog;
261  * };
262  * 
263  * 
264  * class PluginDialogAttachModule : public BC_GenericButton
265  * {
266  * public:
267  *      PluginDialogAttachModule(MWindow *mwindow, PluginDialog *dialog, int x, int y);
268  *      ~PluginDialogAttachModule();
269  *      
270  *      int handle_event();
271  *      PluginDialog *dialog;
272  * };
273  * 
274  * class PluginDialogChangeModule : public BC_GenericButton
275  * {
276  * public:
277  *    PluginDialogChangeModule(MWindow *mwindow, PluginDialog *dialog, int x, int y);
278  *    ~PluginDialogChangeModule();
279  * 
280  *    int handle_event();
281  *    PluginDialog *dialog;
282  * }
283  */
284
285
286
287 #endif