switch( ref ) {
case NONAUTOTOGGLES_CAMERA_XYZ:
camera_xyz = toggle;
- accel = _("SHF+F1");
+ accel = _("Shift-F1");
break;
case NONAUTOTOGGLES_PROJECTOR_XYZ:
projector_xyz = toggle;
- accel = _("SHF+F2");
+ accel = _("Shift-F2");
break;
}
if( accel ) {
void GWindowGUI::update_toggles(int use_lock)
{
- if(use_lock) lock_window("GWindowGUI::update_toggles");
+ if(use_lock) {
+ lock_window("GWindowGUI::update_toggles");
+ set_cool(0);
+ }
for( int i=0; i<(int)(sizeof(toggle_order)/sizeof(toggle_order[0])); ++i ) {
if( toggles[i] ) toggles[i]->update();
this->info = info;
this->color = color;
this->color_button = 0;
+ hot = hot_value = 0;
}
GWindowToggle::~GWindowToggle()
int GWindowToggle::handle_event()
{
int value = get_value();
+ if( shift_down() ) {
+ if( !hot ) {
+ gui->set_hot(this);
+ value = 1;
+ }
+ else {
+ gui->set_cool(1);
+ value = hot_value;
+ }
+ }
+ else
+ gui->set_cool(0);
if( info->isauto >= 0 ) {
*gui->get_main_value(info) = value;
switch( info->ref ) {
unlock_window();
MWindow *mwindow = gui->mwindow;
mwindow->gui->lock_window("GWindowToggle::handle_event");
- if( !info->isauto ) {
- switch( info->ref ) {
- case NON_AUTOMATION_ASSETS:
- case NON_AUTOMATION_TITLES:
- mwindow->gui->update(1, 1, 0, 0, 1, 0, 0);
- break;
- case NON_AUTOMATION_TRANSITIONS:
- case NON_AUTOMATION_PLUGIN_AUTOS:
- mwindow->gui->draw_overlays(1);
- break;
- }
- }
- else
- mwindow->gui->draw_overlays(1);
+ mwindow->gui->update(1, 1, 0, 0, 1, 0, 0);
+ mwindow->gui->draw_overlays(1);
if( value && info->isauto > 0 ) {
int autogroup_type = -1;
draw_face(1,0);
}
+int GWindowToggle::draw_face(int flash, int flush)
+{
+ int ret = BC_Toggle::draw_face(flash, flush);
+ if( hot ) {
+ set_color(color);
+ set_opaque();
+ draw_rectangle(text_x-1, text_y-1, text_w+1, text_h+1);
+ if( flash ) this->flash(0);
+ if( flush ) this->flush();
+ }
+ return ret;
+}
+
+void GWindowGUI::set_cool(int reset, int all)
+{
+ for( int i=0; i<(int)(sizeof(toggles)/sizeof(toggles[0])); ++i ) {
+ GWindowToggle* toggle = toggles[i];
+ if( !toggle ) continue;
+ int *vp = get_main_value(toggle->info);
+ if( !vp ) continue;
+ if( toggle->hot ) {
+ toggle->hot = 0;
+ toggle->draw_face(1, 0);
+ }
+ if( reset > 0 )
+ *vp = toggle->hot_value;
+ else {
+ toggle->hot_value = *vp;
+ if( reset < 0 ) {
+ if ( all || toggle->info->isauto > 0 )
+ *vp = 0;
+ }
+ }
+ }
+ if( reset )
+ update_toggles(0);
+}
+
+void GWindowGUI::set_hot(GWindowToggle *toggle)
+{
+ int *vp = get_main_value(toggle->info);
+ if( !vp ) return;
+ set_cool(-1, !toggle->info->isauto ? 1 : 0);
+ toggle->hot = 1;
+ toggle->set_value(*vp = 1);
+}
+