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 #include "bcsignals.h"
24 #include "filesystem.h"
26 #include "formatpopup.h"
28 #include "pluginserver.h"
32 FormatPopup::FormatPopup(ArrayList<PluginServer*> *plugindb,
33 int x, int y, int use_brender)
34 : BC_ListBox(x, y, 200, 200, LISTBOX_TEXT, 0, 0, 0, 1, 0, 1)
36 this->plugindb = plugindb;
37 this->use_brender = use_brender;
38 set_tooltip(_("Change file format"));
41 void FormatPopup::create_objects()
43 format_items.append(new BC_ListBoxItem(_(FFMPEG_NAME)));
47 format_items.append(new BC_ListBoxItem(_(AC3_NAME)));
48 format_items.append(new BC_ListBoxItem(_(AIFF_NAME)));
49 format_items.append(new BC_ListBoxItem(_(AU_NAME)));
50 format_items.append(new BC_ListBoxItem(_(FLAC_NAME)));
51 format_items.append(new BC_ListBoxItem(_(JPEG_NAME)));
54 format_items.append(new BC_ListBoxItem(_(JPEG_LIST_NAME)));
58 format_items.append(new BC_ListBoxItem(_(EXR_NAME)));
59 format_items.append(new BC_ListBoxItem(_(EXR_LIST_NAME)));
60 format_items.append(new BC_ListBoxItem(_(WAV_NAME)));
61 format_items.append(new BC_ListBoxItem(_(RAWDV_NAME)));
62 format_items.append(new BC_ListBoxItem(_(AMPEG_NAME)));
63 format_items.append(new BC_ListBoxItem(_(VMPEG_NAME)));
64 format_items.append(new BC_ListBoxItem(_(VORBIS_NAME)));
65 format_items.append(new BC_ListBoxItem(_(OGG_NAME)));
66 format_items.append(new BC_ListBoxItem(_(PCM_NAME)));
67 format_items.append(new BC_ListBoxItem(_(PNG_NAME)));
70 format_items.append(new BC_ListBoxItem(_(PNG_LIST_NAME)));
74 format_items.append(new BC_ListBoxItem(_(TGA_NAME)));
77 format_items.append(new BC_ListBoxItem(_(TGA_LIST_NAME)));
81 format_items.append(new BC_ListBoxItem(_(TIFF_NAME)));
84 format_items.append(new BC_ListBoxItem(_(TIFF_LIST_NAME)));
85 update(&format_items, 0, 0, 1);
88 FormatPopup::~FormatPopup()
90 format_items.remove_all_objects();
93 int FormatPopup::handle_event()
99 FFMPEGPopup::FFMPEGPopup(ArrayList<PluginServer*> *plugindb, int x, int y)
100 : BC_ListBox(x, y, 100, 200, LISTBOX_TEXT, 0, 0, 0, 1, 0, 1)
102 this->plugindb = plugindb;
103 set_tooltip(_("Set ffmpeg file type"));
106 void FFMPEGPopup::create_objects()
108 static const char *dirs[] = { "audio", "video", };
109 for( int i=0; i<(int)(sizeof(dirs)/sizeof(dirs[0])); ++i ) {
111 char option_path[BCTEXTLEN];
112 FFMPEG::set_option_path(option_path, dirs[i]);
113 fs.update(option_path);
114 int total_files = fs.total_files();
115 for( int j=0; j<total_files; ++j ) {
116 const char *name = fs.get_entry(j)->get_name();
117 const char *ext = strrchr(name,'.');
119 if( !strcmp("dfl", ++ext) ) continue;
120 if( !strcmp("opts", ext) ) continue;
121 int k = ffmpeg_types.size();
122 while( --k >= 0 && strcmp(ffmpeg_types[k]->get_text(), ext) );
123 if( k >= 0 ) continue;
124 ffmpeg_types.append(new BC_ListBoxItem(ext));
128 update(&ffmpeg_types, 0, 0, 1);
131 FFMPEGPopup::~FFMPEGPopup()
133 ffmpeg_types.remove_all_objects();
136 int FFMPEGPopup::handle_event()