Credit Andrew R for finding the direct copy mods for exr and ppm sequences
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / shbtnprefs.h
1 #ifndef __SHBTNPREFS_H__
2 #define __SHBTNPREFS_H__
3
4 #include "arraylist.h"
5 #include "bcwindowbase.h"
6 #include "bcbutton.h"
7 #include "bcdialog.h"
8 #include "bclistbox.h"
9 #include "bclistboxitem.h"
10 #include "preferences.inc"
11 #include "preferencesthread.inc"
12 #include "thread.h"
13 #include "shbtnprefs.inc"
14
15
16 class ShBtnRun : public Thread
17 {
18 public:
19         int warn;
20         char name[BCSTRLEN];
21         char commands[BCTEXTLEN];
22         ArrayList<char *> argv;
23         void add_arg(const char *v);
24
25         ShBtnRun(const char *name, const char *cmds, int warn);
26         ~ShBtnRun();
27         void run();
28 };
29
30 class ShBtnPref
31 {
32 public:
33         char name[BCSTRLEN];
34         char commands[BCTEXTLEN];
35         int warn, run_script;
36         void execute();
37         void execute(ArrayList<Indexable*> &args);
38
39         ShBtnPref(const char *nm, const char *cmds, int warn=0, int run_script=0);
40         ~ShBtnPref();
41 };
42
43 class ShBtnEditDialog : public BC_DialogThread
44 {
45 public:
46         PreferencesWindow *pwindow;
47
48         ShBtnEditWindow *sb_window;
49         BC_Window* new_gui();
50         void handle_close_event(int result);
51
52         ShBtnEditDialog(PreferencesWindow *pwindow);
53         ~ShBtnEditDialog();
54 };
55
56
57 class ShBtnAddButton : public BC_GenericButton {
58 public:
59         ShBtnEditWindow *sb_window;
60         int handle_event();
61
62         ShBtnAddButton(ShBtnEditWindow *sb_window, int x, int y);
63         ~ShBtnAddButton();
64 };
65
66 class ShBtnDelButton : public BC_GenericButton {
67 public:
68         ShBtnEditWindow *sb_window;
69         int handle_event();
70
71         ShBtnDelButton(ShBtnEditWindow *sb_window, int x, int y);
72         ~ShBtnDelButton();
73 };
74
75 class ShBtnEditButton : public BC_GenericButton {
76 public:
77         ShBtnEditWindow *sb_window;
78
79         int handle_event();
80
81         ShBtnEditButton(ShBtnEditWindow *sb_window, int x, int y);
82         ~ShBtnEditButton();
83 };
84
85 class ShBtnTextDialog : public BC_DialogThread
86 {
87 public:
88         ShBtnEditWindow *sb_window;
89         ShBtnTextWindow *st_window;
90         ShBtnPref *pref;
91
92         BC_Window* new_gui();
93         void handle_close_event(int result);
94         int start_edit(ShBtnPref *pref);
95
96         ShBtnTextDialog(ShBtnEditWindow *sb_window);
97         ~ShBtnTextDialog();
98 };
99
100 class ShBtnTextOK : public BC_OKButton
101 {
102 public:
103         ShBtnTextWindow *st_window;
104         int handle_event();
105
106         ShBtnTextOK(ShBtnTextWindow *st_window, int x, int y);
107         ~ShBtnTextOK();
108 };
109
110 class ShBtnErrWarnItem : public BC_MenuItem
111 {
112 public:
113         ShBtnErrWarnItem(ShBtnErrWarn *popup, const char *text, int warn);
114         ShBtnErrWarnItem();
115         int handle_event();
116
117         ShBtnErrWarn *popup;
118         int warn;
119 };
120
121 class ShBtnErrWarn : public BC_PopupMenu
122 {
123 public:
124         ShBtnErrWarn(ShBtnTextWindow *st_window, int x, int y);
125         ~ShBtnErrWarn();
126
127         void create_objects();
128         int handle_event();
129
130         ShBtnTextWindow *st_window;
131 };
132
133 class ShBtnRunScript : public BC_CheckBox
134 {
135 public:
136         ShBtnRunScript(ShBtnTextWindow *st_window, int x, int y);
137         ~ShBtnRunScript();
138
139         ShBtnTextWindow *st_window;
140 };
141
142 class ShBtnTextWindow : public BC_Window
143 {
144 public:
145         BC_TextBox *cmd_name;
146         BC_ScrollTextBox *cmd_text;
147         ShBtnEditWindow *sb_window;
148         ShBtnErrWarn *st_err_warn;
149         ShBtnRunScript *st_run_script;
150         int warn;
151         int run_script;
152
153         void create_objects();
154
155         ShBtnTextWindow(ShBtnEditWindow *sb_window, int x, int y);
156         ~ShBtnTextWindow();
157 };
158
159 class ShBtnPrefItem : public BC_ListBoxItem {
160 public:
161         ShBtnPref *pref;
162
163         ShBtnPrefItem(ShBtnPref *item);
164         ~ShBtnPrefItem();
165 };
166
167 class ShBtnPrefList : public BC_ListBox
168 {
169 public:
170         ShBtnEditWindow *sb_window;
171         int handle_event();
172
173         ShBtnPrefList(ShBtnEditWindow *sb_window, int x, int y);
174         ~ShBtnPrefList();
175 };
176
177 class ShBtnEditWindow : public BC_Window
178 {
179 public:
180         ShBtnAddButton *add_button;
181         ShBtnDelButton *del_button;
182         ShBtnEditButton *edit_button;
183         ShBtnTextDialog *sb_dialog;
184         ArrayList<BC_ListBoxItem *> shbtn_items;
185         ShBtnPrefList *op_list;
186
187         void create_objects();
188         int list_update();
189         int start_edit(ShBtnPref *pref);
190
191         ShBtnEditWindow(ShBtnEditDialog *shbtn_edit, int x, int y);
192         ~ShBtnEditWindow();
193
194         ShBtnEditDialog *shbtn_edit;
195 };
196
197 class MainShBtnItem : public BC_MenuItem
198 {
199 public:
200         MainShBtnItem(MainShBtns *shbtns, ShBtnPref *pref);
201         int handle_event();
202
203         MainShBtns *shbtns;
204         ShBtnPref *pref;
205 };
206
207 class MainShBtns : public BC_PopupMenu
208 {
209 public:
210         MainShBtns(MWindow *mwindow, int x, int y);
211         int load(Preferences *preferences);
212         int handle_event();
213
214         MWindow *mwindow;
215 };
216
217 #endif