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
26 #include "assetedit.inc"
27 #include "awindow.inc"
29 #include "bitspopup.inc"
30 #include "browsebutton.h"
31 #include "formatpopup.h"
33 #include "indexable.inc"
36 #include "resizetrackthread.inc"
39 class AssetEdit : public BC_DialogThread
42 AssetEdit(MWindow *mwindow);
45 void edit_asset(Indexable *indexable);
46 int set_asset(Indexable *indexable);
47 void handle_done_event(int result);
48 void handle_close_event(int result);
54 AssetEditWindow *window;
58 Asset *changed_params;
63 // Pcm is the only format users should be able to fix.
64 // All other formats display information about the file in read-only.
66 class AssetEditWindow : public BC_Window
69 AssetEditWindow(MWindow *mwindow, AssetEdit *asset_edit);
72 void create_objects();
73 AssetEditPathText *path_text;
74 AssetEditPath *path_button;
75 AssetEditByteOrderHILO *hilo;
76 AssetEditByteOrderLOHI *lohi;
80 AssetEdit *asset_edit;
83 DetailAssetThread *detail_thread;
84 void show_info_detail();
89 class AssetEditPath : public BrowseButton
92 AssetEditPath(MWindow *mwindow,
93 AssetEditWindow *fwindow,
97 const char *window_title = _(PROGRAM_NAME ": Path"),
98 const char *window_caption = _("Select a file"));
101 AssetEditWindow *fwindow;
105 class AssetEditPathText : public BC_TextBox
108 AssetEditPathText(AssetEditWindow *fwindow, int y);
109 ~AssetEditPathText();
112 AssetEditWindow *fwindow;
117 class AssetEditFormat : public FormatPopup
120 AssetEditFormat(AssetEditWindow *fwindow, char* default_, int y);
124 AssetEditWindow *fwindow;
128 class AssetEditChannels : public BC_TumbleTextBox
131 AssetEditChannels(AssetEditWindow *fwindow, char *text, int x, int y);
135 AssetEditWindow *fwindow;
138 class AssetEditRate : public BC_TextBox
141 AssetEditRate(AssetEditWindow *fwindow, char *text, int x, int y);
145 AssetEditWindow *fwindow;
148 class AssetEditFRate : public BC_TextBox
151 AssetEditFRate(AssetEditWindow *fwindow, char *text, int x, int y);
155 AssetEditWindow *fwindow;
158 class Interlaceautofix : public BC_CheckBox
161 Interlaceautofix(MWindow *mwindow,AssetEditWindow *fwindow, int x, int y);
165 void showhideotherwidgets();
167 AssetEditWindow* fwindow;
170 BC_TextBox *ilacemode_textbox;
171 BC_ListBox *ilacemode_listbox;
172 BC_TextBox *ilacefixmethod_textbox;
173 BC_ListBox *ilacefixmethod_listbox;
175 char string[BCTEXTLEN];
178 class AssetEditILaceautofixoption : public BC_TextBox
181 AssetEditILaceautofixoption(AssetEditWindow *fwindow, char *text, int thedefault, int x, int y, int w);
185 AssetEditWindow *fwindow;
188 class AssetEditILacemode : public BC_TextBox
191 AssetEditILacemode(AssetEditWindow *fwindow, const char *text, int thedefault, int x, int y, int w);
194 AssetEditWindow *fwindow;
197 class AssetEditInterlacemodePulldown : public BC_ListBox
200 AssetEditInterlacemodePulldown(MWindow *mwindow,
201 BC_TextBox *output_text,
203 ArrayList<BC_ListBoxItem*> *data,
204 Interlaceautofix *fixoption_chkbox,
208 char* interlacemode_to_text();
210 BC_TextBox *output_text;
212 Interlaceautofix *fixoption_chkbox;
214 char string[BCTEXTLEN];
217 class AssetEditILacefixmethod : public BC_TextBox
220 AssetEditILacefixmethod(AssetEditWindow *fwindow, const char *text, int thedefault, int x, int y, int w);
224 AssetEditWindow *fwindow;
227 class AssetEditHeader : public BC_TextBox
230 AssetEditHeader(AssetEditWindow *fwindow, char *text, int x, int y);
234 AssetEditWindow *fwindow;
237 class AssetEditByteOrderLOHI : public BC_Radial
240 AssetEditByteOrderLOHI(AssetEditWindow *fwindow, int value, int x, int y);
244 AssetEditWindow *fwindow;
247 class AssetEditByteOrderHILO : public BC_Radial
250 AssetEditByteOrderHILO(AssetEditWindow *fwindow, int value, int x, int y);
254 AssetEditWindow *fwindow;
257 class AssetEditSigned : public BC_CheckBox
260 AssetEditSigned(AssetEditWindow *fwindow, int value, int x, int y);
264 AssetEditWindow *fwindow;
267 class DetailAssetWindow : public BC_Window
272 BC_ScrollTextBox *text;
274 DetailAssetWindow(MWindow *mwindow, Asset *asset);
275 ~DetailAssetWindow();
276 void create_objects();
279 class DetailAssetThread : public Thread
282 DetailAssetWindow *dwindow;
284 DetailAssetThread(MWindow *mwindow);
285 ~DetailAssetThread();
287 void start(Asset *asset);
293 class DetailAssetButton : public BC_GenericButton
296 DetailAssetButton(AssetEditWindow *fwindow, int x, int y);
297 ~DetailAssetButton();
299 AssetEditWindow *fwindow;