X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Fchannelpicker.C;fp=cinelerra-5.0%2Fcinelerra%2Fchannelpicker.C;h=0000000000000000000000000000000000000000;hb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;hp=35f3ba96744dbac4c4575f218cf4faf7952d63f1;hpb=52fcc46226f9df46f9ce9d0566dc568455a7db0b;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/channelpicker.C b/cinelerra-5.0/cinelerra/channelpicker.C deleted file mode 100644 index 35f3ba96..00000000 --- a/cinelerra-5.0/cinelerra/channelpicker.C +++ /dev/null @@ -1,720 +0,0 @@ - -/* - * CINELERRA - * Copyright (C) 2011 Adam Williams - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#include "batch.h" -#include "bcsignals.h" -#include "channel.h" -#include "channeldb.h" -#include "channeledit.h" -#include "channelpicker.h" -#include "chantables.h" -#include "clip.h" -#include "edl.h" -#include "edlsession.h" -#include "keys.h" -#include "language.h" -#include "mwindow.h" -#include "picture.h" -#include "playbackconfig.h" -#include "preferencesthread.h" -#include "record.h" -#include "recordgui.h" -#include "recordmonitor.h" -#include "theme.h" -#include "vdevicebuz.h" -#include "vdeviceprefs.h" -#include "videodevice.h" - -RecordChannelPicker::RecordChannelPicker(MWindow *mwindow, - Record *record, - RecordMonitor *record_monitor, - BC_WindowBase *parent_window, - ChannelDB *channeldb, - int x, - int y) - : ChannelPicker(mwindow, - channeldb, - x, - y, - parent_window) -{ - this->record = record; - this->record_monitor = record_monitor; -} - -RecordChannelPicker::~RecordChannelPicker() -{ -} - -int RecordChannelPicker::use_select() -{ - return 1; -} - -Channel* RecordChannelPicker::get_master_channel() -{ - return record->master_channel; -} - -void RecordChannelPicker::handle_channel_edit(int result) -{ - if(!result) - { - record->record_gui->lock_window("RecordChannelPicker::handle_channel_edit 1"); - record->record_gui->update_batch_sources(); - record->set_channel(get_master_channel()); - record->record_gui->unlock_window(); - record->save_defaults(); - VideoDevice::save_channeldb(record->channeldb, - mwindow->edl->session->vconfig_in); - } - else - { - record->record_gui->lock_window("RecordChannelPicker::handle_channel_edit 2"); - record->set_channel(record->get_current_channel()); - record->record_gui->unlock_window(); - } - - mwindow->save_defaults(); -} - -void RecordChannelPicker::load_scan_defaults(Channel *scan_params) -{ - scan_params->load_defaults(mwindow->defaults); -} - -void RecordChannelPicker::save_scan_defaults(Channel *scan_params) -{ - scan_params->save_defaults(mwindow->defaults); -} - -BC_Theme* RecordChannelPicker::get_theme() -{ - return mwindow->theme; -} - - -Channel* RecordChannelPicker::get_current_channel() -{ - return record->get_current_channel(); -} - -Channel *RecordChannelPicker::get_editing_channel() -{ - return record->get_editing_channel(); -} - -ArrayList* RecordChannelPicker::get_video_inputs() -{ - return record->get_video_inputs(); -} - -Channel* RecordChannelPicker::get_channel_usage() -{ - return record->master_channel; -} - -void RecordChannelPicker::set_channel_number(int number) -{ - if( number < 0 || number >= channeldb->size() ) return; - Channel *channel = channeldb->get(number); - if( channel ) record->set_channel(channel); -} - -int RecordChannelPicker::set_brightness(int value) -{ - if(record) - { - record->picture->brightness = value; - record->set_video_picture(); - } - return 0; -} - -int RecordChannelPicker::set_hue(int value) -{ - if(record) - { - record->picture->hue = value; - record->set_video_picture(); - } - return 0; -} - -int RecordChannelPicker::set_color(int value) -{ - if(record) - { - record->picture->color = value; - record->set_video_picture(); - } - return 0; -} - -int RecordChannelPicker::set_contrast(int value) -{ - if(record) - { - record->picture->contrast = value; - record->set_video_picture(); - } - return 0; -} - -int RecordChannelPicker::set_whiteness(int value) -{ - if(record) - { - record->picture->whiteness = value; - record->set_video_picture(); - } - return 0; -} - -int RecordChannelPicker::set_picture(int device_id, int value) -{ - if(record) - { - if(record->picture->set_item(device_id, value)) - record->set_video_picture(); - } - return 0; -} - - -int RecordChannelPicker::get_brightness() -{ - if(record) return record->picture->brightness; - return 0; -} - -int RecordChannelPicker::get_hue() -{ - if(record) return record->picture->hue; - return 0; -} - -int RecordChannelPicker::get_color() -{ - if(record) return record->picture->color; - return 0; -} - -int RecordChannelPicker::get_contrast() -{ - if(record) return record->picture->contrast; - return 0; -} - -int RecordChannelPicker::get_whiteness() -{ - if(record) return record->picture->whiteness; - return 0; -} - -int RecordChannelPicker::get_controls() -{ - if(record) return record->picture->controls.total; - return 0; -} - -PictureItem* RecordChannelPicker::get_control(int i) -{ - if(record) return record->picture->controls.values[i]; - return 0; -} - -PictureConfig* RecordChannelPicker::get_picture_usage() -{ - if(record) return record->picture; - return 0; -} - - - -void RecordChannelPicker::set_channel(Channel *channel) -{ - record->set_channel(channel); -} - -int RecordChannelPicker::has_signal() -{ - return record->has_signal(); -} - -int RecordChannelPicker::create_channeldb(ArrayList *channeldb) -{ - return record->create_channeldb(channeldb); -} - - - - - - - - - -PrefsChannelPicker::PrefsChannelPicker(MWindow *mwindow, - VDevicePrefs *prefs, - ChannelDB *channeldb, - int x, - int y) - : ChannelPicker(mwindow, - channeldb, - x, - y, - prefs->dialog) -{ -// printf("PrefsChannelPicker::PrefsChannelPicker 1\n"); - this->prefs = prefs; - -#ifdef HAVE_VIDEO4LINUX - VDeviceBUZ::get_inputs(&input_sources); -#endif - -} - -PrefsChannelPicker::~PrefsChannelPicker() -{ - input_sources.remove_all_objects(); -} - -void PrefsChannelPicker::load_scan_defaults(Channel *scan_params) -{ - scan_params->load_defaults(mwindow->defaults); -} - -void PrefsChannelPicker::save_scan_defaults(Channel *scan_params) -{ - scan_params->save_defaults(mwindow->defaults); -} - -void PrefsChannelPicker::handle_channel_edit(int result) -{ - mwindow->save_defaults(); -} - -BC_Theme* PrefsChannelPicker::get_theme() -{ - return mwindow->theme; -} - - -ArrayList* PrefsChannelPicker::get_video_inputs() -{ - return &input_sources; -} - -Channel* PrefsChannelPicker::get_channel_usage() -{ - return 0; -} - - -void PrefsChannelPicker::set_channel(Channel *channel) -{ - if(channel) - channel_text->update(channel->title); -} - -Channel *PrefsChannelPicker::get_current_channel() -{ - int number = prefs->out_config->buz_out_channel; - return channeldb->get(number); -} - -void PrefsChannelPicker::set_channel_number(int number) -{ - CLAMP(number, 0, channeldb->size() - 1); - prefs->out_config->buz_out_channel = number; - set_channel(get_current_channel()); -} - -int PrefsChannelPicker::has_signal() -{ - return 0; -} - -int PrefsChannelPicker::set_brightness(int value) -{ - prefs->out_config->brightness = value; - return 0; -} - -int PrefsChannelPicker::set_hue(int value) -{ - prefs->out_config->hue = value; - return 0; -} - -int PrefsChannelPicker::set_color(int value) -{ - prefs->out_config->color = value; - return 0; -} - -int PrefsChannelPicker::set_contrast(int value) -{ - prefs->out_config->contrast = value; - return 0; -} - -int PrefsChannelPicker::set_whiteness(int value) -{ - prefs->out_config->whiteness = value; - return 0; -} - -int PrefsChannelPicker::get_brightness() -{ - return prefs->out_config->brightness; -} - -int PrefsChannelPicker::get_hue() -{ - return prefs->out_config->hue; -} - -int PrefsChannelPicker::get_color() -{ - return prefs->out_config->color; -} - -int PrefsChannelPicker::get_contrast() -{ - return prefs->out_config->contrast; -} - -int PrefsChannelPicker::get_whiteness() -{ - return prefs->out_config->whiteness; -} - - - - - - -ChannelPicker::ChannelPicker(MWindow *mwindow, - ChannelDB *channeldb, - int x, - int y, - BC_WindowBase *parent_window) -{ - this->mwindow = mwindow; - this->parent_window = parent_window; - this->x = x; - this->y = y; - this->channeldb = channeldb; - channel_text = 0; - channel_select = 0; - channel_button = 0; - update_channel_list(); -} - -ChannelPicker::~ChannelPicker() -{ - delete channel_text; - delete channel_select; - delete channel_button; - channel_listitems.remove_all_objects(); -} - -void ChannelPicker::update_channel_list() -{ - channel_listitems.remove_all_objects(); - for(int i = 0; i < channeldb->size(); i++) - { - channel_listitems.append(new BC_ListBoxItem(channeldb->get(i)->title)); - } - - if(channel_text) - channel_text->update_list(&channel_listitems); -} - -int ChannelPicker::get_w() -{ - return channel_text->get_w() + - channel_select->get_w() + - channel_button->get_w() + - picture_button->get_w() + - ((Theme*)get_theme())->widget_border * 4; -} - - - - - - -BC_WindowBase* ChannelPicker::get_subwindow() -{ - return parent_window; - return 0; -} - - - - - - - -void ChannelPicker::create_objects() -{ - channel_text = 0; - update_channel_list(); - - - channel_text = new ChannelText(this, x, y); - channel_text->create_objects(); - - - x += channel_text->get_w() + ((Theme*)get_theme())->widget_border; - get_subwindow()->add_subwindow(channel_select = new ChannelTumbler(this, - x, - y)); - - - x += channel_select->get_w() + ((Theme*)get_theme())->widget_border; - get_subwindow()->add_subwindow(channel_button = new ChannelButton(this, - x, - y - 1)); - -//PRINT_TRACE - x += channel_button->get_w() + ((Theme*)get_theme())->widget_border; - get_subwindow()->add_subwindow(picture_button = new PictureButton(this, - x, - y - 1)); -//PRINT_TRACE - -} - -int ChannelPicker::reposition() -{ - channel_text->reposition_window(channel_text->get_x(), - channel_text->get_y()); - channel_select->reposition_window(channel_select->get_x(), - channel_select->get_y()); - channel_button->reposition_window(channel_button->get_x(), - channel_button->get_y()); - return 0; -} - -int ChannelPicker::close_threads() -{ - channel_button->thread->close_threads(); - return 0; -} - -const char* ChannelPicker::get_source_name(Channel *channel) -{ - if(channel->entry < chanlists[channel->freqtable].count) - return chanlists[channel->freqtable].list[channel->entry].name; - else - return chanlists[channel->freqtable].list[0].name; -} - -const char* ChannelPicker::current_channel_name() -{ - if(get_current_channel()) - { - return get_current_channel()->title; - } - else - return _("Channel"); -} - -int ChannelPicker::channel_down() -{ - Channel *channel = get_current_channel(); - if( !channel ) return 1; - int number = channeldb->number_of(channel); - if( number < 0 ) return 1; - if( --number < 0 ) number = 0; - set_channel_number(number); - return 0; -} - -int ChannelPicker::channel_up() -{ - Channel *channel = get_current_channel(); - if( !channel ) return 1; - int number = channeldb->number_of(channel); - if( number < 0 ) return 1; - if( ++number >= channeldb->size() ) number = channeldb->size()-1; - set_channel_number(number); - return 0; -} - - - - - -PictureButton::PictureButton(ChannelPicker *channel_picker, int x, int y) - : BC_Button(x, - y, - channel_picker->get_theme() ? - channel_picker->get_theme()->get_image_set("picture") : - 0) -{ - this->channel_picker = channel_picker; - thread = new ChannelEditPictureThread(channel_picker); - set_tooltip(_("Edit picture")); -} - -PictureButton::~PictureButton() -{ -//printf("PictureButton::PictureButton %d\n", __LINE__); - delete thread; -//printf("PictureButton::PictureButton %d\n", __LINE__); -} - -int PictureButton::handle_event() -{ - unlock_window(); - thread->edit_picture(); - lock_window("PictureButton::handle_event"); - return 1; -} - - - - -ChannelButton::ChannelButton(ChannelPicker *channel_picker, - int x, - int y) - : BC_Button(x, - y, - channel_picker->get_theme() ? - channel_picker->get_theme()->get_image_set("channel") : - 0) -{ - this->channel_picker = channel_picker; - thread = new ChannelEditThread(channel_picker, - channel_picker->channeldb); - set_tooltip(_("Edit channels")); -} - -ChannelButton::~ChannelButton() -{ - delete thread; -} - -int ChannelButton::handle_event() -{ - thread->start(); - return 1; -} - - -ChannelText::ChannelText(ChannelPicker *channel_picker, - int x, - int y) - : BC_PopupTextBox(channel_picker->get_subwindow(), - &channel_picker->channel_listitems, - channel_picker->current_channel_name(), - x, - y, - 200, - 300) -{ - - this->channel_picker = channel_picker; -} - -ChannelText::~ChannelText() -{ -} - -int ChannelText::handle_event() -{ - channel_picker->set_channel_number(get_number()); - return 0; -} - - - - -ChannelList::ChannelList(ChannelPicker *channel_picker, int x, int y) - : BC_ListBox(x, - y, - 100, - 200, - LISTBOX_TEXT, // Display text list or icons - &channel_picker->channel_listitems, // Each column has an ArrayList of BC_ListBoxItems. - 0, // Titles for columns. Set to 0 for no titles - 0, // width of each column - 1, // Total columns. - 0, // Pixel of top of window. - 1) // If this listbox is a popup window -{ - this->channel_picker = channel_picker; -} - -ChannelList::~ChannelList() -{ -} - -int ChannelList::handle_event() -{ - return 0; -} - - - -ChannelTumbler::ChannelTumbler(ChannelPicker *channel_picker, - int x, - int y) - : BC_Tumbler(x, y) -{ - this->channel_picker = channel_picker; -} -ChannelTumbler::~ChannelTumbler() -{ -} -int ChannelTumbler::handle_up_event() -{ - channel_picker->channel_up(); - return 1; -} -int ChannelTumbler::handle_down_event() -{ - channel_picker->channel_down(); - return 1; -} -int ChannelTumbler::keypress_event() -{ - if(get_keypress() == PGUP) - { - handle_up_event(); - return 1; - } - else - if(get_keypress() == PGDN) - { - handle_down_event(); - return 1; - } - else - return 0; -} - -