+ScopeScopesOn::ScopeScopesOn(ScopeMenu *scope_menu, const char *text, int id)
+ : BC_MenuItem(text)
+{
+ this->scope_menu = scope_menu;
+ this->id = id;
+}
+
+int ScopeScopesOn::handle_event()
+{
+ int v = get_checked() ? 0 : 1;
+ set_checked(v);
+ ScopeGUI *gui = scope_menu->gui;
+ switch( id ) {
+ case SCOPE_HISTOGRAM:
+ gui->use_hist = v;
+ if( v ) gui->use_hist_parade = 0;
+ break;
+ case SCOPE_HISTOGRAM_RGB:
+ gui->use_hist_parade = v;
+ if( v ) gui->use_hist = 0;
+ break;
+ case SCOPE_WAVEFORM:
+ gui->use_wave = v;
+ if( v ) gui->use_wave_parade = 0;
+ break;
+ case SCOPE_WAVEFORM_RGB:
+ gui->use_wave_parade = v;
+ if( v ) gui->use_wave = 0;
+ break;
+ case SCOPE_WAVEFORM_PLY:
+ gui->use_wave_parade = -v;
+ if( v ) gui->use_wave = 0;
+ break;
+ case SCOPE_VECTORSCOPE:
+ gui->use_vector = v;
+ break;
+ }
+ gui->toggle_event();
+ gui->update_toggles();
+ gui->create_panels();
+ gui->update_scope();
+ gui->show_window();
+ return 1;
+}
+
+ScopeMenu::ScopeMenu(ScopeGUI *gui, int x, int y)
+ : BC_PopupMenu(x, y, xS(100), _("Scopes"))
+{
+ this->gui = gui;
+}
+
+void ScopeMenu::create_objects()
+{
+ add_item(hist_on =
+ new ScopeScopesOn(this, _("Histogram"), SCOPE_HISTOGRAM));
+ add_item(hist_rgb_on =
+ new ScopeScopesOn(this, _("Histogram RGB"), SCOPE_HISTOGRAM_RGB));
+ add_item(new BC_MenuItem("-"));
+ add_item(wave_on =
+ new ScopeScopesOn(this, _("Waveform"), SCOPE_WAVEFORM));
+ add_item(wave_rgb_on =
+ new ScopeScopesOn(this, _("Waveform RGB"), SCOPE_WAVEFORM_RGB));
+ add_item(wave_ply_on =
+ new ScopeScopesOn(this, _("Waveform ply"), SCOPE_WAVEFORM_PLY));
+ add_item(new BC_MenuItem("-"));
+ add_item(vect_on =
+ new ScopeScopesOn(this, _("Vectorscope"), SCOPE_VECTORSCOPE));
+}
+
+void ScopeMenu::update_toggles()
+{
+ hist_on->set_checked(gui->use_hist);
+ hist_rgb_on->set_checked(gui->use_hist_parade);
+ wave_on->set_checked(gui->use_wave);
+ wave_rgb_on->set_checked(gui->use_wave_parade>0);
+ wave_ply_on->set_checked(gui->use_wave_parade<0);
+ vect_on->set_checked(gui->use_vector);
+}
+
+
+ScopeGainReset::ScopeGainReset(ScopeGain *gain, int x, int y)
+ : BC_Button(x, y, gain->gui->theme->get_image_set("reset_button"))
+{
+ this->gain = gain;
+}
+
+int ScopeGainReset::calculate_w(BC_Theme *theme)
+{
+ VFrame *vfrm = *theme->get_image_set("reset_button");
+ return vfrm->get_w();
+}