3 #include "channeledit.h"
4 #include "channelpicker.h"
5 #include "chantables.h"
7 #include "mwindowgui.h"
14 #define _(String) gettext(String)
15 #define gettext_noop(String) String
16 #define N_(String) gettext_noop (String)
18 ChannelEditThread::ChannelEditThread(MWindow *mwindow,
19 ChannelPicker *channel_picker,
20 ArrayList<Channel*> *channeldb,
24 this->channel_picker = channel_picker;
25 this->mwindow = mwindow;
26 this->channeldb = channeldb;
27 this->record = record;
31 ChannelEditThread::~ChannelEditThread()
35 void ChannelEditThread::run()
38 //printf("ChannelEditThread::run 1\n");
44 window->lock_window();
45 window->raise_window();
47 window->unlock_window();
53 //printf("ChannelEditThread::run 1\n");
55 // Copy master channel list to temporary.
56 new_channels = new ArrayList <Channel*>;
57 for(i = 0; i < channel_picker->channeldb->total; i++)
59 new_channels->append(new Channel(channel_picker->channeldb->values[i]));
61 current_channel = channel_picker->get_current_channel_number();
63 //printf("ChannelEditThread::run 1\n");
64 // Run the window using the temporary.
65 ChannelEditWindow window(mwindow, this, channel_picker);
66 window.create_objects();
67 this->window = &window;
68 int result = window.run_window();
71 //printf("ChannelEditThread::run 1\n");
74 // Copy new channels to master list
75 channel_picker->channeldb->remove_all_objects();
77 for(i = 0; i < new_channels->total; i++)
79 channel_picker->channeldb->append(new Channel(new_channels->values[i]));
81 channel_picker->update_channel_list();
84 record->record_gui->lock_window();
85 record->record_gui->update_batch_sources();
86 record->set_channel(current_channel);
87 record->record_gui->unlock_window();
88 record->save_defaults();
90 mwindow->save_defaults();
98 record->set_channel(record->get_editing_batch()->channel);
102 //printf("ChannelEditThread::run 1\n");
103 window.edit_thread->close_threads();
104 window.picture_thread->close_threads();
106 //printf("ChannelEditThread::run 2\n");
107 new_channels->remove_all_objects();
111 //printf("ChannelEditThread::run 3\n");
114 int ChannelEditThread::close_threads()
116 if(in_progress && window)
118 window->edit_thread->close_threads();
119 window->picture_thread->close_threads();
127 ChannelEditWindow::ChannelEditWindow(MWindow *mwindow,
128 ChannelEditThread *thread,
129 ChannelPicker *channel_picker)
130 : BC_Window(PROGRAM_NAME ": Channels",
131 mwindow->gui->get_abs_cursor_x() - 330,
132 mwindow->gui->get_abs_cursor_y(),
141 this->thread = thread;
142 this->channel_picker = channel_picker;
143 this->mwindow = mwindow;
145 ChannelEditWindow::~ChannelEditWindow()
148 for(i = 0; i < channel_list.total; i++)
150 delete channel_list.values[i];
152 channel_list.remove_all();
154 delete picture_thread;
157 int ChannelEditWindow::create_objects()
159 int x = 10, y = 10, i;
162 // Create channel list
163 for(i = 0; i < thread->new_channels->total; i++)
165 channel_list.append(new BC_ListBoxItem(thread->new_channels->values[i]->title));
168 add_subwindow(list_box = new ChannelEditList(mwindow, this, x, y));
172 add_subwindow(new ChannelEditSelect(mwindow, this, x, y));
175 add_subwindow(new ChannelEditAdd(mwindow, this, x, y));
177 add_subwindow(new ChannelEdit(mwindow, this, x, y));
179 add_subwindow(new ChannelEditMoveUp(mwindow, this, x, y));
181 add_subwindow(new ChannelEditMoveDown(mwindow, this, x, y));
183 add_subwindow(new ChannelEditDel(mwindow, this, x, y));
185 add_subwindow(new ChannelEditPicture(mwindow, this, x, y));
188 add_subwindow(new BC_OKButton(this));
190 add_subwindow(new BC_CancelButton(this));
192 edit_thread = new ChannelEditEditThread(this,
195 picture_thread = new ChannelEditPictureThread(channel_picker, this);
200 int ChannelEditWindow::close_event()
205 int ChannelEditWindow::add_channel()
207 Channel *new_channel;
209 new_channel = new Channel;
210 if(thread->new_channels->total) *new_channel = *(thread->new_channels->values[thread->new_channels->total - 1]);
211 channel_list.append(new BC_ListBoxItem(new_channel->title));
212 thread->new_channels->append(new_channel);
214 edit_thread->edit_channel(new_channel, 0);
218 int ChannelEditWindow::update_list()
220 list_box->update(&channel_list, 0, 0, 1, list_box->get_yposition());
223 int ChannelEditWindow::update_list(Channel *channel)
226 for(i = 0; i < thread->new_channels->total; i++)
227 if(thread->new_channels->values[i] == channel) break;
229 if(i < thread->new_channels->total)
231 channel_list.values[i]->set_text(channel->title);
238 int ChannelEditWindow::edit_channel()
240 if(list_box->get_selection_number(0, 0) > -1)
243 edit_thread->edit_channel(thread->new_channels->values[list_box->get_selection_number(0, 0)], 1);
247 int ChannelEditWindow::edit_picture()
249 picture_thread->edit_picture();
252 int ChannelEditWindow::delete_channel(int number)
254 delete thread->new_channels->values[number];
255 channel_list.remove_number(number);
256 thread->new_channels->remove_number(number);
260 int ChannelEditWindow::delete_channel(Channel *channel)
263 for(i = 0; i < thread->new_channels->total; i++)
265 if(thread->new_channels->values[i] == channel)
270 if(i < thread->new_channels->total) delete_channel(i);
274 int ChannelEditWindow::move_channel_up()
276 if(list_box->get_selection_number(0, 0) > -1)
278 int number2 = list_box->get_selection_number(0, 0);
279 int number1 = number2 - 1;
281 BC_ListBoxItem *temp_text;
283 if(number1 < 0) number1 = thread->new_channels->total - 1;
285 temp = thread->new_channels->values[number1];
286 thread->new_channels->values[number1] = thread->new_channels->values[number2];
287 thread->new_channels->values[number2] = temp;
289 temp_text = channel_list.values[number1];
290 channel_list.values[number1] = channel_list.values[number2];
291 channel_list.values[number2] = temp_text;
292 list_box->update(&channel_list,
296 list_box->get_xposition(),
297 list_box->get_yposition(),
304 int ChannelEditWindow::move_channel_down()
306 if(list_box->get_selection_number(0, 0) > -1)
308 int number2 = list_box->get_selection_number(0, 0);
309 int number1 = number2 + 1;
311 BC_ListBoxItem *temp_text;
313 if(number1 > thread->new_channels->total - 1) number1 = 0;
315 temp = thread->new_channels->values[number1];
316 thread->new_channels->values[number1] = thread->new_channels->values[number2];
317 thread->new_channels->values[number2] = temp;
318 temp_text = channel_list.values[number1];
319 channel_list.values[number1] = channel_list.values[number2];
320 channel_list.values[number2] = temp_text;
321 list_box->update(&channel_list,
325 list_box->get_xposition(),
326 list_box->get_yposition(),
333 int ChannelEditWindow::change_channel_from_list(int channel_number)
336 if(channel_number > -1 && channel_number < thread->new_channels->total)
338 thread->current_channel = channel_number;
339 channel_picker->set_channel(thread->new_channels->values[channel_number]);
343 ChannelEditSelect::ChannelEditSelect(MWindow *mwindow, ChannelEditWindow *window, int x, int y)
344 : BC_GenericButton(x, y, _("Select"))
346 this->window = window;
348 ChannelEditSelect::~ChannelEditSelect()
351 int ChannelEditSelect::handle_event()
353 window->change_channel_from_list(
354 window->list_box->get_selection_number(0, 0));
357 ChannelEditAdd::ChannelEditAdd(MWindow *mwindow, ChannelEditWindow *window, int x, int y)
358 : BC_GenericButton(x, y, _("Add..."))
360 this->window = window;
362 ChannelEditAdd::~ChannelEditAdd()
365 int ChannelEditAdd::handle_event()
367 window->add_channel();
370 ChannelEditList::ChannelEditList(MWindow *mwindow, ChannelEditWindow *window, int x, int y)
376 &(window->channel_list))
378 this->window = window;
380 ChannelEditList::~ChannelEditList()
383 int ChannelEditList::handle_event()
385 window->edit_channel();
388 ChannelEditMoveUp::ChannelEditMoveUp(MWindow *mwindow, ChannelEditWindow *window, int x, int y)
389 : BC_GenericButton(x, y, _("Move up"))
391 this->window = window;
393 ChannelEditMoveUp::~ChannelEditMoveUp()
396 int ChannelEditMoveUp::handle_event()
399 window->move_channel_up();
403 ChannelEditMoveDown::ChannelEditMoveDown(MWindow *mwindow, ChannelEditWindow *window, int x, int y)
404 : BC_GenericButton(x, y, _("Move down"))
406 this->window = window;
408 ChannelEditMoveDown::~ChannelEditMoveDown()
411 int ChannelEditMoveDown::handle_event()
414 window->move_channel_down();
418 ChannelEditDel::ChannelEditDel(MWindow *mwindow, ChannelEditWindow *window, int x, int y)
419 : BC_GenericButton(x, y, _("Delete"))
421 this->window = window;
423 ChannelEditDel::~ChannelEditDel()
426 int ChannelEditDel::handle_event()
428 if(window->list_box->get_selection_number(0, 0) > -1) window->delete_channel(window->list_box->get_selection_number(0, 0));
431 ChannelEdit::ChannelEdit(MWindow *mwindow, ChannelEditWindow *window, int x, int y)
432 : BC_GenericButton(x, y, _("Edit..."))
434 this->window = window;
436 ChannelEdit::~ChannelEdit()
439 int ChannelEdit::handle_event()
441 window->edit_channel();
444 ChannelEditPicture::ChannelEditPicture(MWindow *mwindow, ChannelEditWindow *window, int x, int y)
445 : BC_GenericButton(x, y, _("Picture..."))
447 this->window = window;
449 ChannelEditPicture::~ChannelEditPicture()
452 int ChannelEditPicture::handle_event()
454 window->edit_picture();
459 // ================================= Edit a single channel
463 ChannelEditEditThread::ChannelEditEditThread(ChannelEditWindow *window,
464 ChannelPicker *channel_picker,
468 this->window = window;
469 this->channel_picker = channel_picker;
470 this->record = record;
476 ChannelEditEditThread::~ChannelEditEditThread()
480 int ChannelEditEditThread::close_threads()
484 edit_window->set_done(1);
490 int ChannelEditEditThread::edit_channel(Channel *channel, int editing)
492 if(in_progress) return 1;
496 this->editing = editing;
497 this->output_channel = channel;
498 this->new_channel = *output_channel;
503 char *ChannelEditEditThread::value_to_freqtable(int value)
508 return _("NTSC_BCAST");
511 return _("NTSC_CABLE");
514 return _("NTSC_HRC");
517 return _("NTSC_BCAST_JP");
520 return _("NTSC_CABLE_JP");
523 return _("PAL_AUSTRALIA");
526 return _("PAL_EUROPE");
529 return _("PAL_E_EUROPE");
532 return _("PAL_ITALY");
535 return _("PAL_IRELAND");
538 return _("PAL_NEWZEALAND");
543 char* ChannelEditEditThread::value_to_norm(int value)
559 char* ChannelEditEditThread::value_to_input(int value)
561 if(channel_picker->get_video_inputs()->total > value)
562 return channel_picker->get_video_inputs()->values[value];
567 void ChannelEditEditThread::set_device()
569 channel_picker->set_channel(&new_channel);
572 int ChannelEditEditThread::change_source(char *source_name)
575 for(i = 0; i < chanlists[new_channel.freqtable].count; i++)
577 if(!strcasecmp(chanlists[new_channel.freqtable].list[i].name, source_name))
579 new_channel.entry = i;
580 i = chanlists[new_channel.freqtable].count;
586 int ChannelEditEditThread::source_up()
589 if(new_channel.entry > chanlists[new_channel.freqtable].count - 1) new_channel.entry = 0;
590 source_text->update(chanlists[new_channel.freqtable].list[new_channel.entry].name);
594 int ChannelEditEditThread::source_down()
597 if(new_channel.entry < 0) new_channel.entry = chanlists[new_channel.freqtable].count - 1;
598 source_text->update(chanlists[new_channel.freqtable].list[new_channel.entry].name);
602 int ChannelEditEditThread::set_input(int value)
604 new_channel.input = value;
608 int ChannelEditEditThread::set_norm(int value)
610 new_channel.norm = value;
614 int ChannelEditEditThread::set_freqtable(int value)
616 new_channel.freqtable = value;
617 if(new_channel.entry > chanlists[new_channel.freqtable].count - 1) new_channel.entry = 0;
618 source_text->update(chanlists[new_channel.freqtable].list[new_channel.entry].name);
622 void ChannelEditEditThread::run()
624 ChannelEditEditWindow edit_window(this, window, channel_picker);
625 edit_window.create_objects(&new_channel);
626 this->edit_window = &edit_window;
627 int result = edit_window.run_window();
628 this->edit_window = 0;
631 *output_channel = new_channel;
632 window->lock_window();
633 window->update_list(output_channel);
634 window->unlock_window();
640 window->lock_window();
641 window->delete_channel(output_channel);
642 window->unlock_window();
650 ChannelEditEditWindow::ChannelEditEditWindow(ChannelEditEditThread *thread,
651 ChannelEditWindow *window,
652 ChannelPicker *channel_picker)
653 : BC_Window(PROGRAM_NAME ": Edit Channel",
654 channel_picker->mwindow->gui->get_abs_cursor_x(),
655 channel_picker->mwindow->gui->get_abs_cursor_y(),
664 this->channel_picker = channel_picker;
665 this->window = window;
666 this->thread = thread;
668 ChannelEditEditWindow::~ChannelEditEditWindow()
671 int ChannelEditEditWindow::create_objects(Channel *channel)
673 this->new_channel = channel;
676 add_subwindow(new BC_Title(x, y, _("Title:")));
677 add_subwindow(new ChannelEditEditTitle(x, y + 20, thread));
679 add_subwindow(new BC_Title(x, y, _("Source:")));
681 add_subwindow(thread->source_text = new ChannelEditEditSource(x, y, thread));
683 add_subwindow(new ChannelEditEditSourceTumbler(x, y, thread));
686 add_subwindow(new BC_Title(x, y, _("Fine:")));
687 add_subwindow(new ChannelEditEditFine(x + 130, y, thread));
689 add_subwindow(new BC_Title(x, y, _("Norm:")));
690 ChannelEditEditNorm *norm;
691 add_subwindow(norm = new ChannelEditEditNorm(x + 130, y, thread));
695 add_subwindow(new BC_Title(x, y, _("Frequency table:")));
696 ChannelEditEditFreqtable *table;
697 add_subwindow(table = new ChannelEditEditFreqtable(x + 130, y, thread));
701 add_subwindow(new BC_Title(x, y, _("Input:")));
702 ChannelEditEditInput *input;
703 add_subwindow(input = new ChannelEditEditInput(x + 130, y, thread, thread->record));
707 add_subwindow(new BC_OKButton(x, y));
709 add_subwindow(new BC_CancelButton(x, y));
714 ChannelEditEditTitle::ChannelEditEditTitle(int x, int y, ChannelEditEditThread *thread)
715 : BC_TextBox(x, y, 150, 1, thread->new_channel.title)
717 this->thread = thread;
719 ChannelEditEditTitle::~ChannelEditEditTitle()
722 int ChannelEditEditTitle::handle_event()
724 if(strlen(get_text()) < 1024)
725 strcpy(thread->new_channel.title, get_text());
729 ChannelEditEditSource::ChannelEditEditSource(int x, int y, ChannelEditEditThread *thread)
730 : BC_TextBox(x, y, 150, 1, chanlists[thread->new_channel.freqtable].list[thread->new_channel.entry].name)
732 this->thread = thread;
735 ChannelEditEditSource::~ChannelEditEditSource()
738 int ChannelEditEditSource::handle_event()
740 thread->change_source(get_text());
744 ChannelEditEditSourceTumbler::ChannelEditEditSourceTumbler(int x, int y, ChannelEditEditThread *thread)
747 this->thread = thread;
749 ChannelEditEditSourceTumbler::~ChannelEditEditSourceTumbler()
752 int ChannelEditEditSourceTumbler::handle_up_event()
756 int ChannelEditEditSourceTumbler::handle_down_event()
758 thread->source_down();
761 ChannelEditEditInput::ChannelEditEditInput(int x, int y, ChannelEditEditThread *thread, Record *record)
762 : BC_PopupMenu(x, y, 150, thread->value_to_input(thread->new_channel.input))
764 this->thread = thread;
765 this->record = record;
767 ChannelEditEditInput::~ChannelEditEditInput()
770 int ChannelEditEditInput::add_items()
772 ArrayList<char*> *inputs;
773 inputs = thread->channel_picker->get_video_inputs();
776 for(int i = 0; i < inputs->total; i++)
778 add_item(new ChannelEditEditInputItem(thread, inputs->values[i], i));
781 int ChannelEditEditInput::handle_event()
785 ChannelEditEditInputItem::ChannelEditEditInputItem(ChannelEditEditThread *thread, char *text, int value)
788 this->thread = thread;
791 ChannelEditEditInputItem::~ChannelEditEditInputItem()
794 int ChannelEditEditInputItem::handle_event()
796 get_popup_menu()->set_text(get_text());
797 thread->set_input(value);
800 ChannelEditEditNorm::ChannelEditEditNorm(int x, int y, ChannelEditEditThread *thread)
801 : BC_PopupMenu(x, y, 100, thread->value_to_norm(thread->new_channel.norm))
803 this->thread = thread;
805 ChannelEditEditNorm::~ChannelEditEditNorm()
808 int ChannelEditEditNorm::add_items()
810 add_item(new ChannelEditEditNormItem(thread, thread->value_to_norm(NTSC), NTSC));
811 add_item(new ChannelEditEditNormItem(thread, thread->value_to_norm(PAL), PAL));
812 add_item(new ChannelEditEditNormItem(thread, thread->value_to_norm(SECAM), SECAM));
817 ChannelEditEditNormItem::ChannelEditEditNormItem(ChannelEditEditThread *thread, char *text, int value)
821 this->thread = thread;
823 ChannelEditEditNormItem::~ChannelEditEditNormItem()
826 int ChannelEditEditNormItem::handle_event()
828 get_popup_menu()->set_text(get_text());
829 thread->set_norm(value);
833 ChannelEditEditFreqtable::ChannelEditEditFreqtable(int x, int y, ChannelEditEditThread *thread)
834 : BC_PopupMenu(x, y, 150, thread->value_to_freqtable(thread->new_channel.freqtable))
836 this->thread = thread;
838 ChannelEditEditFreqtable::~ChannelEditEditFreqtable()
841 int ChannelEditEditFreqtable::add_items()
843 add_item(new ChannelEditEditFreqItem(thread, thread->value_to_freqtable(NTSC_BCAST), NTSC_BCAST));
844 add_item(new ChannelEditEditFreqItem(thread, thread->value_to_freqtable(NTSC_CABLE), NTSC_CABLE));
845 add_item(new ChannelEditEditFreqItem(thread, thread->value_to_freqtable(NTSC_HRC), NTSC_HRC));
846 add_item(new ChannelEditEditFreqItem(thread, thread->value_to_freqtable(NTSC_BCAST_JP), NTSC_BCAST_JP));
847 add_item(new ChannelEditEditFreqItem(thread, thread->value_to_freqtable(NTSC_CABLE_JP), NTSC_CABLE_JP));
848 add_item(new ChannelEditEditFreqItem(thread, thread->value_to_freqtable(PAL_AUSTRALIA), PAL_AUSTRALIA));
849 add_item(new ChannelEditEditFreqItem(thread, thread->value_to_freqtable(PAL_EUROPE), PAL_EUROPE));
850 add_item(new ChannelEditEditFreqItem(thread, thread->value_to_freqtable(PAL_E_EUROPE), PAL_E_EUROPE));
851 add_item(new ChannelEditEditFreqItem(thread, thread->value_to_freqtable(PAL_ITALY), PAL_ITALY));
852 add_item(new ChannelEditEditFreqItem(thread, thread->value_to_freqtable(PAL_IRELAND), PAL_IRELAND));
853 add_item(new ChannelEditEditFreqItem(thread, thread->value_to_freqtable(PAL_NEWZEALAND), PAL_NEWZEALAND));
857 ChannelEditEditFreqItem::ChannelEditEditFreqItem(ChannelEditEditThread *thread, char *text, int value)
861 this->thread = thread;
863 ChannelEditEditFreqItem::~ChannelEditEditFreqItem()
866 int ChannelEditEditFreqItem::handle_event()
868 get_popup_menu()->set_text(get_text());
869 thread->set_freqtable(value);
874 ChannelEditEditFine::ChannelEditEditFine(int x, int y, ChannelEditEditThread *thread)
882 thread->new_channel.fine_tune)
884 this->thread = thread;
886 ChannelEditEditFine::~ChannelEditEditFine()
889 int ChannelEditEditFine::handle_event()
891 thread->new_channel.fine_tune = get_value();
892 thread->set_device();
896 // ========================== picture quality
898 ChannelEditPictureThread::ChannelEditPictureThread(ChannelPicker *channel_picker, ChannelEditWindow *window)
901 this->channel_picker = channel_picker;
902 this->window = window;
906 ChannelEditPictureThread::~ChannelEditPictureThread()
910 int ChannelEditPictureThread::edit_picture()
912 if(in_progress) return 1;
919 void ChannelEditPictureThread::run()
921 ChannelEditPictureWindow edit_window(this, channel_picker);
922 edit_window.create_objects();
923 this->edit_window = &edit_window;
924 int result = edit_window.run_window();
925 this->edit_window = 0;
930 int ChannelEditPictureThread::close_threads()
934 edit_window->set_done(1);
941 ChannelEditPictureWindow::ChannelEditPictureWindow(ChannelEditPictureThread *thread, ChannelPicker *channel_picker)
942 : BC_Window(PROGRAM_NAME ": Picture",
943 channel_picker->mwindow->gui->get_abs_cursor_x() - 200,
944 channel_picker->mwindow->gui->get_abs_cursor_y() - 220,
950 this->thread = thread;
951 this->channel_picker = channel_picker;
953 ChannelEditPictureWindow::~ChannelEditPictureWindow()
956 int ChannelEditPictureWindow::create_objects()
959 add_subwindow(new BC_Title(x, y + 10, _("Brightness:")));
960 add_subwindow(new ChannelEditBright(x + 100, y, channel_picker, channel_picker->get_brightness()));
962 add_subwindow(new BC_Title(x, y + 10, _("Contrast:")));
963 add_subwindow(new ChannelEditContrast(x + 135, y, channel_picker, channel_picker->get_contrast()));
965 add_subwindow(new BC_Title(x, y + 10, _("Color:")));
966 add_subwindow(new ChannelEditColor(x + 100, y, channel_picker, channel_picker->get_color()));
968 add_subwindow(new BC_Title(x, y + 10, _("Hue:")));
969 add_subwindow(new ChannelEditHue(x + 135, y, channel_picker, channel_picker->get_hue()));
971 add_subwindow(new BC_Title(x, y + 10, _("Whiteness:")));
972 add_subwindow(new ChannelEditWhiteness(x + 100, y, channel_picker, channel_picker->get_whiteness()));
975 add_subwindow(new BC_OKButton(x, y));
981 ChannelEditBright::ChannelEditBright(int x, int y, ChannelPicker *channel_picker, int value)
988 this->channel_picker = channel_picker;
990 ChannelEditBright::~ChannelEditBright() {}
991 int ChannelEditBright::handle_event()
993 channel_picker->set_brightness(get_value());
996 ChannelEditContrast::ChannelEditContrast(int x, int y, ChannelPicker *channel_picker, int value)
1003 this->channel_picker = channel_picker;
1005 ChannelEditContrast::~ChannelEditContrast() {}
1006 int ChannelEditContrast::handle_event()
1008 channel_picker->set_contrast(get_value());
1011 ChannelEditColor::ChannelEditColor(int x, int y, ChannelPicker *channel_picker, int value)
1018 this->channel_picker = channel_picker;
1020 ChannelEditColor::~ChannelEditColor() {}
1021 int ChannelEditColor::handle_event()
1023 channel_picker->set_color(get_value());
1026 ChannelEditHue::ChannelEditHue(int x, int y, ChannelPicker *channel_picker, int value)
1033 this->channel_picker = channel_picker;
1035 ChannelEditHue::~ChannelEditHue() {}
1036 int ChannelEditHue::handle_event()
1038 channel_picker->set_hue(get_value());
1041 ChannelEditWhiteness::ChannelEditWhiteness(int x, int y, ChannelPicker *channel_picker, int value)
1048 this->channel_picker = channel_picker;
1050 ChannelEditWhiteness::~ChannelEditWhiteness() {}
1051 int ChannelEditWhiteness::handle_event()
1053 channel_picker->set_whiteness(get_value());