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, int x, int y);
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 DetailAssetDialog *detail_dialog;
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 AssetEditChannels : public BC_TumbleTextBox
120 AssetEditChannels(AssetEditWindow *fwindow,
121 char *text, int x, int y);
125 AssetEditWindow *fwindow;
128 class AssetEditRate : public BC_TextBox
131 AssetEditRate(AssetEditWindow *fwindow,
132 char *text, int x, int y);
136 AssetEditWindow *fwindow;
139 class AssetEditFRate : public BC_TextBox
142 AssetEditFRate(AssetEditWindow *fwindow,
143 char *text, int x, int y);
147 AssetEditWindow *fwindow;
150 class Interlaceautofix : public BC_CheckBox
153 Interlaceautofix(MWindow *mwindow, AssetEditWindow *fwindow,
158 void showhideotherwidgets();
160 AssetEditWindow* fwindow;
163 BC_TextBox *ilacemode_textbox;
164 BC_ListBox *ilacemode_listbox;
165 BC_TextBox *ilacefixmethod_textbox;
166 BC_ListBox *ilacefixmethod_listbox;
168 char string[BCTEXTLEN];
171 class AssetEditILaceautofixoption : public BC_TextBox
174 AssetEditILaceautofixoption(AssetEditWindow *fwindow,
175 char *text, int thedefault, int x, int y, int w);
179 AssetEditWindow *fwindow;
182 class AssetEditILacemode : public BC_TextBox
185 AssetEditILacemode(AssetEditWindow *fwindow,
186 const char *text, int thedefault, int x, int y, int w);
189 AssetEditWindow *fwindow;
192 class AssetEditInterlacemodePulldown : public BC_ListBox
195 AssetEditInterlacemodePulldown(MWindow *mwindow,
196 BC_TextBox *output_text, int *output_value,
197 ArrayList<BC_ListBoxItem*> *data,
198 Interlaceautofix *fixoption_chkbox,
201 char* interlacemode_to_text();
203 BC_TextBox *output_text;
205 Interlaceautofix *fixoption_chkbox;
207 char string[BCTEXTLEN];
210 class AssetEditILacefixmethod : public BC_TextBox
213 AssetEditILacefixmethod(AssetEditWindow *fwindow,
214 const char *text, int thedefault, int x, int y, int w);
218 AssetEditWindow *fwindow;
221 class AssetEditHeader : public BC_TextBox
224 AssetEditHeader(AssetEditWindow *fwindow,
225 char *text, int x, int y);
229 AssetEditWindow *fwindow;
232 class AssetEditByteOrderLOHI : public BC_Radial
235 AssetEditByteOrderLOHI(AssetEditWindow *fwindow,
236 int value, int x, int y);
240 AssetEditWindow *fwindow;
243 class AssetEditByteOrderHILO : public BC_Radial
246 AssetEditByteOrderHILO(AssetEditWindow *fwindow,
247 int value, int x, int y);
251 AssetEditWindow *fwindow;
254 class AssetEditSigned : public BC_CheckBox
257 AssetEditSigned(AssetEditWindow *fwindow,
258 int value, int x, int y);
262 AssetEditWindow *fwindow;
265 class DetailAssetWindow : public BC_Window
270 BC_ScrollTextBox *text;
272 DetailAssetWindow(MWindow *mwindow,
273 DetailAssetDialog *detail_dialog, Asset *asset);
274 ~DetailAssetWindow();
275 void create_objects();
276 DetailAssetDialog *detail_dialog;
279 class DetailAssetDialog : public BC_DialogThread
282 DetailAssetWindow *dwindow;
284 DetailAssetDialog(MWindow *mwindow);
285 ~DetailAssetDialog();
286 void start(Asset *asset, int x, int y);
287 BC_Window* new_gui();
294 class DetailAssetButton : public BC_GenericButton
297 DetailAssetButton(AssetEditWindow *fwindow, int x, int y);
298 ~DetailAssetButton();
300 AssetEditWindow *fwindow;