add master/armed_gang track operations, tweak appearanceprefs layout, fix vicon video...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / vpatchgui.C
index f5c572d81b55263789c0987ad0550a500fff4396..73a4653aec4b3c0f94fc6ed7899d2c34a599dbd9 100644 (file)
@@ -96,7 +96,12 @@ int VPatchGUI::update(int x, int y)
                        delete fade;  fade = 0;
                }
                else {
-                       fade->update(fade->get_w(), mwindow->get_float_auto(this, AUTOMATION_FADE)->get_value(),
+                       FloatAuto *previous = 0, *next = 0;
+                       double unit_position = mwindow->edl->local_session->get_selectionstart(1);
+                       int64_t unit_pos = vtrack->to_units(unit_position, 0);
+                       FloatAutos *ptr = (FloatAutos*)track->automation->autos[AUTOMATION_FADE];
+                       float value = ptr->get_value(unit_pos, PLAY_FORWARD, previous, next);
+                       fade->update(fade->get_w(), value,
                                     mwindow->edl->local_session->automation_mins[AUTOGROUPTYPE_VIDEO_FADE],
                                     mwindow->edl->local_session->automation_maxs[AUTOGROUPTYPE_VIDEO_FADE]);
                }
@@ -104,7 +109,7 @@ int VPatchGUI::update(int x, int y)
        else if( h >= y2 ) {
                int64_t v = mwindow->get_float_auto(this, AUTOMATION_FADE)->get_value();
                patchbay->add_subwindow(fade = new VFadePatch(this, x1+x, y1+y,
-                       patchbay->get_w() - 10, v));
+                       patchbay->get_w() - xS(10), v));
        }
        y1 = y2;
 
@@ -125,13 +130,13 @@ int VPatchGUI::update(int x, int y)
                }
        }
        else if( h >= y2 ) {
-               patchbay->add_subwindow(mix = new VMixPatch(mwindow, this, x1+x, y1+y+5));
+               patchbay->add_subwindow(mix = new VMixPatch(mwindow, this, x1+x, y1+y+yS(5)));
                x1 += mix->get_w();
                patchbay->add_subwindow(mode = new VModePatch(mwindow, this, x1+x, y1+y));
                mode->create_objects();
                x1 += mode->get_w();
                patchbay->add_subwindow(nudge = new NudgePatch(mwindow, this, x1+x, y1+y,
-                       patchbay->get_w() - x1-x - 10));
+                       patchbay->get_w() - x1-x - xS(10)));
        }
        y1 = y2;
 
@@ -162,7 +167,7 @@ void VPatchGUI::update_faders(float v)
        float change = v - current->get_value();
        current->set_value(v);
 
-       if( track->gang && track->record )
+       if( track->is_ganged() && track->is_armed() )
                patchbay->synchronize_faders(change, TRACK_AUDIO, track);
        mwindow->undo->update_undo_after(_("fade"), LOAD_AUTOMATION);
        change_source = 0;
@@ -185,7 +190,7 @@ int VFadePatch::handle_event()
 }
 
 VKeyFadePatch::VKeyFadePatch(MWindow *mwindow, VPatchGUI *patch, int x, int y)
- : BC_SubWindow(x,y, 200,20, GWindowGUI::auto_colors[AUTOMATION_FADE])
+ : BC_SubWindow(x,y, xS(200),yS(20), GWindowGUI::auto_colors[AUTOMATION_FADE])
 {
        this->mwindow = mwindow;
        this->patch = patch;
@@ -195,7 +200,7 @@ void VKeyFadePatch::create_objects()
 {
        int x = 0, y = 0;
        int64_t v = mwindow->get_float_auto(patch, AUTOMATION_FADE)->get_value();
-       add_subwindow(vkey_fade_text = new VKeyFadeText(this, x, y, 64, v));
+       add_subwindow(vkey_fade_text = new VKeyFadeText(this, x, y, xS(64), v));
        x += vkey_fade_text->get_w();
        VFrame **lok_images = mwindow->theme->get_image_set("lok");
        int w1 = get_w() - x - lok_images[0]->get_w();
@@ -257,7 +262,7 @@ int VKeyFadeSlider::handle_event()
 
 
 VModePatch::VModePatch(MWindow *mwindow, VPatchGUI *patch, int x, int y)
- : BC_PopupMenu(x, y, patch->patchbay->mode_icons[0]->get_w() + 20,
+ : BC_PopupMenu(x, y, patch->patchbay->mode_icons[0]->get_w() + xS(20),
        "", 1, mwindow->theme->get_image_set("mode_popup", 0), 0)
 {
        this->mwindow = mwindow;