r793: Small API addon, so plugins can 'see' camera and projector automation
[cinelerra_cv/mob.git] / cinelerra / plugindialog.h
blob41f6d7f2cc7bc08ecc605bb1b3a31bb4948f4760
1 #ifndef PLUGINDIALOG_H
2 #define PLUGINDIALOG_H
4 class PluginDialogTextBox;
5 class PluginDialogDetach;
6 class PluginDialogNew;
7 class PluginDialogShared;
8 class PluginDialogModules;
9 class PluginDialogAttachNew;
10 class PluginDialogAttachShared;
11 class PluginDialogAttachModule;
12 class PluginDialogChangeNew;
13 class PluginDialogChangeShared;
14 class PluginDialogChangeModule;
15 class PluginDialogIn;
16 class PluginDialogOut;
17 class PluginDialogThru;
18 class PluginDialog;
20 #include "condition.inc"
21 #include "guicast.h"
22 #include "mutex.inc"
23 #include "mwindow.inc"
24 #include "plugin.inc"
25 #include "sharedlocation.h"
26 #include "thread.h"
27 #include "transition.inc"
29 class PluginDialogThread : public Thread
31 public:
32 PluginDialogThread(MWindow *mwindow);
33 ~PluginDialogThread();
35 // Set up parameters for a transition menu.
36 void start_window(Track *track,
37 Plugin *plugin,
38 char *title);
39 int set_dialog(Transition *transition, char *title);
40 void run();
44 MWindow *mwindow;
45 Track *track;
46 int data_type;
47 Transition *transition;
48 PluginDialog *window;
49 // Plugin being modified if there is one
50 Plugin *plugin;
51 Condition *completion;
52 Mutex *window_lock;
53 char window_title[BCTEXTLEN];
56 // type of attached plugin
57 int plugin_type; // 0: none 1: plugin 2: shared plugin 3: module
59 // location of attached plugin if shared
60 SharedLocation shared_location;
62 // Title of attached plugin if new
63 char plugin_title[BCTEXTLEN];
66 class PluginDialog : public BC_Window
68 public:
69 PluginDialog(MWindow *mwindow,
70 PluginDialogThread *thread,
71 char *title,
72 int x,
73 int y);
74 ~PluginDialog();
76 int create_objects();
78 int attach_new(int number);
79 int attach_shared(int number);
80 int attach_module(int number);
81 int save_settings();
82 int resize_event(int w, int h);
84 BC_Title *standalone_title;
85 PluginDialogNew *standalone_list;
86 BC_Title *shared_title;
87 PluginDialogShared *shared_list;
88 BC_Title *module_title;
89 PluginDialogModules *module_list;
92 PluginDialogAttachNew *standalone_attach;
93 PluginDialogAttachShared *shared_attach;
94 PluginDialogAttachModule *module_attach;
96 PluginDialogChangeNew *standalone_change;
97 PluginDialogChangeShared *shared_change;
98 PluginDialogChangeModule *module_change;
100 PluginDialogThru *thru;
102 PluginDialogThread *thread;
104 ArrayList<BC_ListBoxItem*> standalone_data;
105 ArrayList<BC_ListBoxItem*> shared_data;
106 ArrayList<BC_ListBoxItem*> module_data;
107 ArrayList<SharedLocation*> plugin_locations; // locations of all shared plugins
108 ArrayList<SharedLocation*> module_locations; // locations of all shared modules
109 ArrayList<PluginServer*> plugindb; // locations of all simple plugins, no need for memory freeing!
111 int selected_available;
112 int selected_shared;
113 int selected_modules;
115 int inoutthru; // flag for button slide
116 int new_value; // value for button slide
117 MWindow *mwindow;
121 class PluginDialogTextBox : public BC_TextBox
123 public:
124 PluginDialogTextBox(PluginDialog *dialog, char *text, int x, int y);
125 ~PluginDialogTextBox();
127 int handle_event();
128 PluginDialog *dialog;
131 class PluginDialogDetach : public BC_GenericButton
133 public:
134 PluginDialogDetach(MWindow *mwindow, PluginDialog *dialog, int x, int y);
135 ~PluginDialogDetach();
137 int handle_event();
138 PluginDialog *dialog;
141 class PluginDialogAttachNew : public BC_GenericButton
143 public:
144 PluginDialogAttachNew(MWindow *mwindow, PluginDialog *dialog, int x, int y);
145 ~PluginDialogAttachNew();
147 int handle_event();
148 PluginDialog *dialog;
151 class PluginDialogChangeNew : public BC_GenericButton
153 public:
154 PluginDialogChangeNew(MWindow *mwindow, PluginDialog *dialog, int x, int y);
155 ~PluginDialogChangeNew();
157 int handle_event();
158 PluginDialog *dialog;
162 class PluginDialogNew : public BC_ListBox
164 public:
165 PluginDialogNew(PluginDialog *dialog,
166 ArrayList<BC_ListBoxItem*> *standalone_data,
167 int x,
168 int y,
169 int w,
170 int h);
171 ~PluginDialogNew();
173 int handle_event();
174 int selection_changed();
175 PluginDialog *dialog;
178 class PluginDialogShared : public BC_ListBox
180 public:
181 PluginDialogShared(PluginDialog *dialog,
182 ArrayList<BC_ListBoxItem*> *shared_data,
183 int x,
184 int y,
185 int w,
186 int h);
187 ~PluginDialogShared();
189 int handle_event();
190 int selection_changed();
191 PluginDialog *dialog;
194 class PluginDialogModules : public BC_ListBox
196 public:
197 PluginDialogModules(PluginDialog *dialog,
198 ArrayList<BC_ListBoxItem*> *module_data,
199 int x,
200 int y,
201 int w,
202 int h);
203 ~PluginDialogModules();
205 int handle_event();
206 int selection_changed();
207 PluginDialog *dialog;
210 class PluginDialogAttachShared : public BC_GenericButton
212 public:
213 PluginDialogAttachShared(MWindow *mwindow, PluginDialog *dialog, int x, int y);
214 ~PluginDialogAttachShared();
216 int handle_event();
217 PluginDialog *dialog;
220 class PluginDialogChangeShared : public BC_GenericButton
222 public:
223 PluginDialogChangeShared(MWindow *mwindow, PluginDialog *dialog, int x, int y);
224 ~PluginDialogChangeShared();
226 int handle_event();
227 PluginDialog *dialog;
231 class PluginDialogAttachModule : public BC_GenericButton
233 public:
234 PluginDialogAttachModule(MWindow *mwindow, PluginDialog *dialog, int x, int y);
235 ~PluginDialogAttachModule();
237 int handle_event();
238 PluginDialog *dialog;
241 class PluginDialogChangeModule : public BC_GenericButton
243 public:
244 PluginDialogChangeModule(MWindow *mwindow, PluginDialog *dialog, int x, int y);
245 ~PluginDialogChangeModule();
247 int handle_event();
248 PluginDialog *dialog;
252 class PluginDialogIn : public BC_CheckBox
254 public:
255 PluginDialogIn(PluginDialog *dialog, int setting, int x, int y);
256 ~PluginDialogIn();
258 int button_press();
259 int button_release();
260 int cursor_moved_over();
261 int handle_event();
262 PluginDialog *dialog;
265 class PluginDialogOut : public BC_CheckBox
267 public:
268 PluginDialogOut(PluginDialog *dialog, int setting, int x, int y);
269 ~PluginDialogOut();
271 int button_press();
272 int button_release();
273 int cursor_moved_over();
274 int handle_event();
275 PluginDialog *dialog;
278 class PluginDialogThru : public BC_CheckBox
280 public:
281 PluginDialogThru(PluginDialog *dialog, int setting);
282 ~PluginDialogThru();
284 int button_press();
285 int button_release();
286 int cursor_moved_over();
287 int handle_event();
288 PluginDialog *dialog;
291 #endif