4 * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
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.
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.
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
22 #ifndef PLUGINDIALOG_H
23 #define PLUGINDIALOG_H
25 class PluginDialogTextBox;
26 class PluginDialogDetach;
27 class PluginDialogNew;
28 class PluginDialogShared;
29 class PluginDialogSearchText;
30 class PluginDialogModules;
31 class PluginDialogAttachNew;
32 class PluginDialogChangeNew;
34 class PluginDialogOut;
35 class PluginDialogThru;
36 class PluginDialogSingle;
40 #include "condition.inc"
43 #include "mwindow.inc"
45 #include "pluginserver.inc"
46 #include "sharedlocation.h"
49 #include "transition.inc"
51 class PluginDialogThread : public BC_DialogThread
54 PluginDialogThread(MWindow *mwindow);
55 ~PluginDialogThread();
57 // Set up parameters for a transition menu.
58 void start_window(Track *track,
64 void handle_done_event(int result);
65 void handle_close_event(int result);
70 Transition *transition;
71 // Plugin being modified if there is one
73 char window_title[BCTEXTLEN];
74 // If attaching from main menu
78 // type of attached plugin
79 int plugin_type; // 0: none 1: plugin 2: shared plugin 3: module
81 // location of attached plugin if shared
82 SharedLocation shared_location;
84 // Title of attached plugin if new
85 char plugin_title[BCTEXTLEN];
86 // For the main menu invocation,
87 // attach 1 standalone on the first track and share it with other tracks
88 int single_standalone;
91 class PluginDialogListItem : public BC_ListBoxItem
94 PluginDialogListItem(const char *item, int n)
95 : BC_ListBoxItem(item), item_no(n) {}
99 class PluginDialog : public BC_Window
102 PluginDialog(MWindow *mwindow,
103 PluginDialogThread *thread,
109 void create_objects();
111 int attach_new(int number);
112 int attach_shared(int number);
113 int attach_module(int number);
114 void save_settings();
115 int resize_event(int w, int h);
116 void load_plugin_list(int redraw);
118 BC_Title *standalone_title;
119 PluginDialogNew *standalone_list;
120 BC_Title *shared_title;
121 PluginDialogShared *shared_list;
122 BC_Title *module_title;
123 PluginDialogModules *module_list;
124 PluginDialogSingle *single_standalone;
125 PluginDialogSearchText *search_text;
127 PluginDialogThru *thru;
129 PluginDialogThread *thread;
131 ArrayList<BC_ListBoxItem*> standalone_data;
132 ArrayList<BC_ListBoxItem*> shared_data;
133 ArrayList<BC_ListBoxItem*> module_data;
134 ArrayList<SharedLocation*> plugin_locations; // locations of all shared plugins
135 ArrayList<SharedLocation*> module_locations; // locations of all shared modules
136 ArrayList<PluginServer*> plugindb; // locations of all simple plugins, no need for memory freeing!
138 int selected_available;
140 int selected_modules;
147 * class PluginDialogTextBox : public BC_TextBox
150 * PluginDialogTextBox(PluginDialog *dialog, char *text, int x, int y);
151 * ~PluginDialogTextBox();
153 * int handle_event();
154 * PluginDialog *dialog;
159 * class PluginDialogDetach : public BC_GenericButton
162 * PluginDialogDetach(MWindow *mwindow, PluginDialog *dialog, int x, int y);
163 * ~PluginDialogDetach();
165 * int handle_event();
166 * PluginDialog *dialog;
171 * class PluginDialogAttachNew : public BC_GenericButton
174 * PluginDialogAttachNew(MWindow *mwindow, PluginDialog *dialog, int x, int y);
175 * ~PluginDialogAttachNew();
177 * int handle_event();
178 * PluginDialog *dialog;
181 * class PluginDialogChangeNew : public BC_GenericButton
184 * PluginDialogChangeNew(MWindow *mwindow, PluginDialog *dialog, int x, int y);
185 * ~PluginDialogChangeNew();
187 * int handle_event();
188 * PluginDialog *dialog;
193 class PluginDialogNew : public BC_ListBox
196 PluginDialogNew(PluginDialog *dialog,
197 ArrayList<BC_ListBoxItem*> *standalone_data,
205 int selection_changed();
206 PluginDialog *dialog;
209 class PluginDialogShared : public BC_ListBox
212 PluginDialogShared(PluginDialog *dialog,
213 ArrayList<BC_ListBoxItem*> *shared_data,
218 ~PluginDialogShared();
221 int selection_changed();
222 PluginDialog *dialog;
225 class PluginDialogModules : public BC_ListBox
228 PluginDialogModules(PluginDialog *dialog,
229 ArrayList<BC_ListBoxItem*> *module_data,
234 ~PluginDialogModules();
237 int selection_changed();
238 PluginDialog *dialog;
241 class PluginDialogSingle : public BC_CheckBox
244 PluginDialogSingle(PluginDialog *dialog, int x, int y);
246 PluginDialog *dialog;
249 class PluginDialogSearchText : public BC_TextBox
252 PluginDialogSearchText(PluginDialog *dialog, int x, int y, int w);
255 PluginDialog *dialog;
259 * class PluginDialogAttachShared : public BC_GenericButton
262 * PluginDialogAttachShared(MWindow *mwindow, PluginDialog *dialog, int x, int y);
263 * ~PluginDialogAttachShared();
265 * int handle_event();
266 * PluginDialog *dialog;
269 * class PluginDialogChangeShared : public BC_GenericButton
272 * PluginDialogChangeShared(MWindow *mwindow, PluginDialog *dialog, int x, int y);
273 * ~PluginDialogChangeShared();
275 * int handle_event();
276 * PluginDialog *dialog;
280 * class PluginDialogAttachModule : public BC_GenericButton
283 * PluginDialogAttachModule(MWindow *mwindow, PluginDialog *dialog, int x, int y);
284 * ~PluginDialogAttachModule();
286 * int handle_event();
287 * PluginDialog *dialog;
290 * class PluginDialogChangeModule : public BC_GenericButton
293 * PluginDialogChangeModule(MWindow *mwindow, PluginDialog *dialog, int x, int y);
294 * ~PluginDialogChangeModule();
296 * int handle_event();
297 * PluginDialog *dialog;