add timecode units/alignment/probe, add prefs auto_rotate,
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / assetedit.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 ASSETEDIT_H
23 #define ASSETEDIT_H
24
25 #include "asset.inc"
26 #include "assetedit.inc"
27 #include "awindow.inc"
28 #include "bcdialog.h"
29 #include "bitspopup.inc"
30 #include "browsebutton.h"
31 #include "formatpopup.h"
32 #include "guicast.h"
33 #include "indexable.inc"
34 #include "language.h"
35 #include "mwindow.h"
36 #include "resizetrackthread.inc"
37
38
39 class AssetEdit : public BC_DialogThread
40 {
41 public:
42         AssetEdit(MWindow *mwindow);
43         ~AssetEdit();
44
45         void edit_asset(Indexable *indexable, int x, int y);
46         int set_asset(Indexable *indexable);
47         void handle_done_event(int result);
48         void handle_close_event(int result);
49         BC_Window* new_gui();
50         int window_height();
51
52         Indexable *indexable;
53         MWindow *mwindow;
54         AssetEditWindow *window;
55         int x, y;
56
57 // Changed parameters
58         Asset *changed_params;
59 };
60
61
62
63 // Pcm is the only format users should be able to fix.
64 // All other formats display information about the file in read-only.
65
66 class AssetEditWindow : public BC_Window
67 {
68 public:
69         AssetEditWindow(MWindow *mwindow, AssetEdit *asset_edit);
70         ~AssetEditWindow();
71
72         void create_objects();
73         AssetEditPathText *path_text;
74         AssetEditPath *path_button;
75         AssetEditByteOrderHILO *hilo;
76         AssetEditByteOrderLOHI *lohi;
77         BitsPopup *bitspopup;
78         int allow_edits;
79         MWindow *mwindow;
80         AssetEdit *asset_edit;
81         BC_Title *win_width;
82         BC_Title *win_height;
83         BC_TextBox *tc_hrs, *tc_mins;
84         BC_TextBox *tc_secs, *tc_rest;
85         DetailAssetDialog *detail_dialog;
86         void show_info_detail();
87
88 };
89
90
91 class AssetEditPath : public BrowseButton
92 {
93 public:
94         AssetEditPath(MWindow *mwindow,
95                 AssetEditWindow *fwindow,
96                 BC_TextBox *textbox,
97                 int y,
98                 const char *text,
99                 const char *window_title = _(PROGRAM_NAME ": Path"),
100                 const char *window_caption = _("Select a file"));
101         ~AssetEditPath();
102
103         AssetEditWindow *fwindow;
104 };
105
106
107 class AssetEditPathText : public BC_TextBox
108 {
109 public:
110         AssetEditPathText(AssetEditWindow *fwindow, int y);
111         ~AssetEditPathText();
112         int handle_event();
113
114         AssetEditWindow *fwindow;
115 };
116
117
118
119 class AssetEditChannels : public BC_TumbleTextBox
120 {
121 public:
122         AssetEditChannels(AssetEditWindow *fwindow,
123                 char *text, int x, int y);
124
125         int handle_event();
126
127         AssetEditWindow *fwindow;
128 };
129
130 class AssetEditRate : public BC_TextBox
131 {
132 public:
133         AssetEditRate(AssetEditWindow *fwindow,
134                 char *text, int x, int y);
135
136         int handle_event();
137
138         AssetEditWindow *fwindow;
139 };
140
141 class AssetEditFRate : public BC_TextBox
142 {
143 public:
144         AssetEditFRate(AssetEditWindow *fwindow,
145                 char *text, int x, int y);
146
147         int handle_event();
148
149         AssetEditWindow *fwindow;
150 };
151
152 class AssetEditILacemode : public BC_TextBox
153 {
154 public:
155         AssetEditILacemode(AssetEditWindow *fwindow,
156                 const char *text, int x, int y, int w);
157         int handle_event();
158         int thedefault;
159         AssetEditWindow *fwindow;
160 };
161
162 class AssetEditInterlacemodePulldown : public BC_ListBox
163 {
164 public:
165         AssetEditInterlacemodePulldown(MWindow *mwindow,
166                 BC_TextBox *output_text, int *output_value,
167                 ArrayList<BC_ListBoxItem*> *data, int x, int y);
168         int handle_event();
169         char* interlacemode_to_text();
170         MWindow *mwindow;
171         BC_TextBox *output_text;
172         int *output_value;
173 private:
174         char string[BCTEXTLEN];
175 };
176
177 class AssetEditHeader : public BC_TextBox
178 {
179 public:
180         AssetEditHeader(AssetEditWindow *fwindow,
181                 char *text, int x, int y);
182
183         int handle_event();
184
185         AssetEditWindow *fwindow;
186 };
187
188 class AssetEditByteOrderLOHI : public BC_Radial
189 {
190 public:
191         AssetEditByteOrderLOHI(AssetEditWindow *fwindow,
192                 int value, int x, int y);
193
194         int handle_event();
195
196         AssetEditWindow *fwindow;
197 };
198
199 class AssetEditByteOrderHILO : public BC_Radial
200 {
201 public:
202         AssetEditByteOrderHILO(AssetEditWindow *fwindow,
203                 int value, int x, int y);
204
205         int handle_event();
206
207         AssetEditWindow *fwindow;
208 };
209
210 class AssetEditSigned : public BC_CheckBox
211 {
212 public:
213         AssetEditSigned(AssetEditWindow *fwindow,
214                 int value, int x, int y);
215
216         int handle_event();
217
218         AssetEditWindow *fwindow;
219 };
220
221 class DetailAssetWindow : public BC_Window
222 {
223         MWindow *mwindow;
224         Asset *asset;
225         char info[65536];
226         BC_ScrollTextBox *text;
227 public:
228         DetailAssetWindow(MWindow *mwindow,
229                 DetailAssetDialog *detail_dialog, Asset *asset);
230         ~DetailAssetWindow();
231         void create_objects();
232         DetailAssetDialog *detail_dialog;
233 };
234
235 class DetailAssetDialog : public BC_DialogThread
236 {
237         MWindow *mwindow;
238         DetailAssetWindow *dwindow;
239 public:
240         DetailAssetDialog(MWindow *mwindow);
241         ~DetailAssetDialog();
242         void start(Asset *asset, int x, int y);
243         BC_Window* new_gui();
244
245         Asset *asset;
246         int x, y;
247 };
248
249
250 class DetailAssetButton : public BC_GenericButton
251 {
252 public:
253         DetailAssetButton(AssetEditWindow *fwindow, int x, int y);
254         ~DetailAssetButton();
255
256         AssetEditWindow *fwindow;
257         int handle_event();
258 };
259
260 #endif