rework camera/projector tool_guis, add horz tumbler orient, update es.po
authorGood Guy <good1.2guy@gmail.com>
Tue, 29 Sep 2020 03:08:40 +0000 (21:08 -0600)
committerGood Guy <good1.2guy@gmail.com>
Tue, 29 Sep 2020 03:08:40 +0000 (21:08 -0600)
68 files changed:
cinelerra-5.1/cinelerra/automation.h
cinelerra-5.1/cinelerra/automation.inc
cinelerra-5.1/cinelerra/cwindowgui.C
cinelerra-5.1/cinelerra/cwindowtool.C
cinelerra-5.1/cinelerra/cwindowtool.h
cinelerra-5.1/cinelerra/cwindowtool.inc
cinelerra-5.1/cinelerra/localsession.C
cinelerra-5.1/cinelerra/mwindow.h
cinelerra-5.1/cinelerra/mwindowmove.C
cinelerra-5.1/guicast/bctumble.C
cinelerra-5.1/guicast/bctumble.h
cinelerra-5.1/plugins/theme_blond/blondtheme.C
cinelerra-5.1/plugins/theme_blond/data/autorange_bottom.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blond/data/autorange_hi.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blond/data/autorange_top.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blond/data/autorange_up.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blond_cv/blondcvtheme.C
cinelerra-5.1/plugins/theme_blond_cv/data/autorange_bottom.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blond_cv/data/autorange_hi.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blond_cv/data/autorange_top.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blond_cv/data/autorange_up.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blue/bluetheme.C
cinelerra-5.1/plugins/theme_blue/data/autorange_bottom.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blue/data/autorange_hi.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blue/data/autorange_top.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blue/data/autorange_up.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blue_dot/bluedottheme.C
cinelerra-5.1/plugins/theme_blue_dot/data/autorange_bottom.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blue_dot/data/autorange_hi.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blue_dot/data/autorange_top.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_blue_dot/data/autorange_up.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_bright/brighttheme.C
cinelerra-5.1/plugins/theme_bright/data/autorange_bottom.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_bright/data/autorange_hi.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_bright/data/autorange_top.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_bright/data/autorange_up.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_cakewalk/cakewalk.C
cinelerra-5.1/plugins/theme_cakewalk/data/autorange_bottom.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_cakewalk/data/autorange_hi.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_cakewalk/data/autorange_top.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_cakewalk/data/autorange_up.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_hulk/data/autorange_bottom.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_hulk/data/autorange_hi.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_hulk/data/autorange_top.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_hulk/data/autorange_up.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_hulk/hulktheme.C
cinelerra-5.1/plugins/theme_neophyte/data/autorange_bottom.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_neophyte/data/autorange_hi.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_neophyte/data/autorange_top.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_neophyte/data/autorange_up.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_neophyte/neophyte.C
cinelerra-5.1/plugins/theme_pinklady/data/autorange_bottom.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_pinklady/data/autorange_hi.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_pinklady/data/autorange_top.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_pinklady/data/autorange_up.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_pinklady/pinkladytheme.C
cinelerra-5.1/plugins/theme_suv/data/autorange_bottom.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_suv/data/autorange_hi..png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_suv/data/autorange_hi.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_suv/data/autorange_top.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_suv/data/autorange_up.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_suv/suv.C
cinelerra-5.1/plugins/theme_unflat/data/autorange_bottom.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_unflat/data/autorange_hi.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_unflat/data/autorange_top.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_unflat/data/autorange_up.png [new file with mode: 0644]
cinelerra-5.1/plugins/theme_unflat/unflattheme.C
cinelerra-5.1/po/es.po

index e25b6376c9d1d26720c57d50d405029a32f4b0ae..b626d66ad9f42139cf6b3c1401124bfb1f76a582 100644 (file)
@@ -43,8 +43,8 @@
                value = INFINITYGAIN;                                   \
        if (autogrouptype == AUTOGROUPTYPE_VIDEO_FADE)                  \
                CLAMP(value, 0, 100);                                   \
-       if (autogrouptype == AUTOGROUPTYPE_ZOOM && value < 0)           \
-               value = 0;                                              \
+       if (autogrouptype == AUTOGROUPTYPE_ZOOM && value < ZOOM_MIN)    \
+               value = ZOOM_MIN;                                       \
        else if (autogrouptype == AUTOGROUPTYPE_SPEED && value < SPEED_MIN) \
                value = SPEED_MIN;
 
index 53e498d13e95ffa97b147b0581d17dbd8af0f1f8..636eede386efd74a1c3dd4b02f9de55231551fdf 100644 (file)
@@ -89,5 +89,10 @@ enum
 };
 
 #define SPEED_MIN 0.005
+#define SPEED_MAX 200.0
+#define ZOOM_MIN 0.001
+#define ZOOM_MAX 1000.
+#define XY_MIN -32767
+#define XY_MAX 32767
 
 #endif
index 560b079e448b4eb7e0cffbd7fee30532e9fc2bdb..08fa9ef2f757c03424b1922059c73efd27d3a8d2 100644 (file)
@@ -2648,6 +2648,7 @@ void CWindowCanvas::reset_keyframe(int do_camera)
                gui->mwindow->edl->local_session->reset_view_limits();
                gui->mwindow->gui->zoombar->update_autozoom();
                mgui->unlock_window();
+               mwindow->save_backup();
        }
 }
 
index c0fc37cc3cf0272f6c64f1b4ac0f892cd8a8a6c4..d7a4ec6cf95de294bcf14c5d36b15ef8752f8d9c 100644 (file)
@@ -385,15 +385,27 @@ void CWindowCoord::create_objects()
 {
        BC_TumbleTextBox::create_objects();
        if( type >= 0 ) {
-               int x1 = get_x() + BC_TumbleTextBox::get_w() + xS(10), y1 = get_y();
+               float v = atof(get_text());
+               int xs10 = xS(10);
+               int x1 = get_x() + BC_TumbleTextBox::get_w() + xs10, y1 = get_y();
+               gui->add_subwindow(min_tumbler = new CWindowToolAutoRangeTumbler(this, x1, y1,
+                               0, _("Range min")));
+               x1 += min_tumbler->get_w() + xs10;
                int group = Automation::autogrouptype(type, 0);
                float min = gui->mwindow->edl->local_session->automation_mins[group];
                float max = gui->mwindow->edl->local_session->automation_maxs[group];
-               float v = atof(get_text());
                gui->add_subwindow(slider = new CWindowCoordSlider(this,
                                x1, y1, xS(150), min, max, v));
-               x1 += slider->get_w() + xS(5);
-               gui->add_subwindow(range = new CWindowCoordRange(this, x1, y1));
+               x1 += slider->get_w() + xS(10);
+               gui->add_subwindow(max_tumbler = new CWindowToolAutoRangeTumbler(this, x1, y1,
+                               1, _("Range max")));
+               x1 += max_tumbler->get_w() + xS(10);
+               gui->add_subwindow(range_reset = new CWindowToolAutoRangeReset(this, x1, y1));
+               x1 += range_reset->get_w() + xS(10);
+               gui->add_subwindow(range_text = new CWindowToolAutoRangeTextBox(this, x1, y1));
+               range_text->update_range();
+               x1 += range_text->get_w() + xS(10);
+               gui->add_subwindow(range = new CWindowCoordRangeTumbler(this, x1, y1));
        }
 }
 
@@ -407,7 +419,7 @@ void CWindowCoord::update_gui(float value)
                        local_session->automation_mins[group],
                        local_session->automation_maxs[group]);
                int x1 = range->get_x() + range->get_w() + xS(5);
-               int y1 = range->get_y() - yS(2), d = xS(16);
+               int y1 = range->get_y() + yS(5), d = xS(16);
                gui->set_color(GWindowGUI::auto_colors[type]);
                gui->draw_disc(x1, y1, d, d);
        }
@@ -443,16 +455,16 @@ int CWindowCoordSlider::handle_event()
        return 1;
 }
 
-CWindowCoordRange::CWindowCoordRange(CWindowCoord *coord, int x, int y)
+CWindowCoordRangeTumbler::CWindowCoordRangeTumbler(CWindowCoord *coord, int x, int y)
  : BC_Tumbler(x, y)
 {
        this->coord = coord;
 }
-CWindowCoordRange::~CWindowCoordRange()
+CWindowCoordRangeTumbler::~CWindowCoordRangeTumbler()
 {
 }
 
-int CWindowCoordRange::update(float scale)
+int CWindowCoordRangeTumbler::update(float scale)
 {
        CWindowCoordSlider *slider = coord->slider;
        MWindow *mwindow = coord->gui->mwindow;
@@ -462,33 +474,30 @@ int CWindowCoordRange::update(float scale)
        float max = local_session->automation_maxs[group];
        if( min >= max ) {
                switch( group ) {
-               case AUTOGROUPTYPE_ZOOM: min = 0.005;  max = 5.0;  break;
-               case AUTOGROUPTYPE_X:    min = -100;   max = 100;  break;
-               case AUTOGROUPTYPE_Y:    min = -100;   max = 100;  break;
+               case AUTOGROUPTYPE_ZOOM: min = 0.005;  max = 5.0;   break;
+               case AUTOGROUPTYPE_X:    min = -1000;  max = 1000;  break;
+               case AUTOGROUPTYPE_Y:    min = -1000;  max = 1000;  break;
                }
        }
        switch( group ) {
        case AUTOGROUPTYPE_ZOOM: { // exp
-               float lv = log(slider->get_value());
                float lmin = log(min), lmax = log(max);
                float lr = (lmax - lmin) * scale;
-               min = exp(lv - 0.5*lr);
-               max = exp(lv + 0.5*lr);
-               if( min < 0.001 ) min = 0.001;
-               if( max > 1000. ) max = 1000.;
+               if( (min = exp(lmin - lr)) < ZOOM_MIN ) min = ZOOM_MIN;
+               if( (max = exp(lmax + lr)) > ZOOM_MAX ) max = ZOOM_MAX;
                break; }
        case AUTOGROUPTYPE_X:
        case AUTOGROUPTYPE_Y: { // linear
-               float dr = (max - min) * (scale-1);
-               if( (min -= dr) < -32767 ) min = -32767;
-               if( (max += dr) >  32767 ) max =  32767;
+               float dr = (max - min) * scale;
+               if( (min -= dr) < XY_MIN ) min = XY_MIN;
+               if( (max += dr) > XY_MAX ) max =  XY_MAX;
                break; }
        }
        slider->update(slider->get_pointer_motion_range(),
                        slider->get_value(), min, max);
        unlock_window();
        MWindowGUI *mgui = mwindow->gui;
-       mgui->lock_window("CWindowCoordRange::update");
+       mgui->lock_window("CWindowCoordRangeTumbler::update");
        local_session->zoombar_showautotype = group;
        local_session->automation_mins[group] = min;
        local_session->automation_maxs[group] = max;
@@ -497,17 +506,17 @@ int CWindowCoordRange::update(float scale)
        mgui->update_patchbay();
        mgui->flash_canvas(1);
        mgui->unlock_window();
-       lock_window("CWindowCoordRange::update");
-       return 1;
+       lock_window("CWindowCoordRangeTumbler::update");
+       return coord->range_text->update_range();
 }
 
-int CWindowCoordRange::handle_up_event()
+int CWindowCoordRangeTumbler::handle_up_event()
 {
-       return update(1.25);
+       return update(0.125);
 }
-int CWindowCoordRange::handle_down_event()
+int CWindowCoordRangeTumbler::handle_down_event()
 {
-       return update(0.8);
+       return update(-0.1);
 }
 
 CWindowCropApply::CWindowCropApply(MWindow *mwindow, CWindowCropGUI *crop_gui, int x, int y)
@@ -942,7 +951,7 @@ int CWindowEyedropCheckBox::handle_event()
 
 
 CWindowCameraGUI::CWindowCameraGUI(MWindow *mwindow, CWindowTool *thread)
- : CWindowToolGUI(mwindow, thread, _(PROGRAM_NAME ": Camera"), xS(340), yS(170))
+ : CWindowToolGUI(mwindow, thread, _(PROGRAM_NAME ": Camera"), xS(580), yS(200))
 {
 }
 CWindowCameraGUI::~CWindowCameraGUI()
@@ -951,7 +960,7 @@ CWindowCameraGUI::~CWindowCameraGUI()
 
 void CWindowCameraGUI::create_objects()
 {
-       int xs10 = xS(10), xs15 = xS(15);
+       int xs5 = xS(5), xs10 = xS(10), xs15 = xS(15), xs25 = xS(25);
        int ys10 = yS(10), ys30 = yS(30);
        int x = xs10, y = ys10;
        Track *track = mwindow->cwindow->calculate_affected_track();
@@ -965,9 +974,14 @@ void CWindowCameraGUI::create_objects()
                mwindow->cwindow->calculate_affected_autos(track,
                        &x_auto, &y_auto, &z_auto, 1, 0, 0, 0);
        }
+       int x1 = x;
+       add_subwindow(bar1 = new BC_TitleBar(x1, y, xS(340), xs10, xs10, _("Position")));
+       x1 += bar1->get_w() + xS(35);
+       add_subwindow(bar2 = new BC_TitleBar(x1, y, get_w()-x1-xs10, xs10, xs10, _("Range")));
+       y += bar1->get_h() + ys10;
 
        add_subwindow(title = new BC_Title(x, y, "X:"));
-       int x1 = x + title->get_w() + xS(3);
+       x1 = x + title->get_w() + xS(3);
        float xvalue = x_auto ? x_auto->get_value() : 0;
        this->x = new CWindowCoord(this, x1, y, xvalue, AUTOMATION_CAMERA_X);
        this->x->create_objects();
@@ -980,22 +994,34 @@ void CWindowCameraGUI::create_objects()
        this->y->range->set_tooltip(_("expand Y range"));
        y += ys30;
        add_subwindow(title = new BC_Title(x = xs10, y, "Z:"));
-       x += title->get_w();
        float zvalue = z_auto ? z_auto->get_value() : 1;
        this->z = new CWindowCoord(this, x1, y, zvalue, AUTOMATION_CAMERA_Z);
        this->z->create_objects();
        this->z->set_increment(0.01);
        this->z->range->set_tooltip(_("expand Zoom range"));
+       y += ys30 + ys10;
 
-       y += ys30;
-       x1 = xs10;
+       x1 = x;
+       add_subwindow(bar3 = new BC_TitleBar(x1, y, xS(180)-x1, xs5, xs5, _("Justify")));
+       x1 += bar3->get_w() + xS(35);
+       add_subwindow(bar4 = new BC_TitleBar(x1, y, xS(375)-x1, xs5, xs5, _("Curve type")));
+       x1 += bar4->get_w() + xS(25);
+       add_subwindow(bar5 = new BC_TitleBar(x1, y, get_w()-xS(60)-x1, xs5, xs5, _("Keyframe")));
+       y += bar3->get_h() + ys10;
+
+       x1 = x;
        add_subwindow(button = new CWindowCameraLeft(mwindow, this, x1, y));
        x1 += button->get_w();
        add_subwindow(button = new CWindowCameraCenter(mwindow, this, x1, y));
        x1 += button->get_w();
        add_subwindow(button = new CWindowCameraRight(mwindow, this, x1, y));
-// additional Buttons to control the curve mode of the "current" keyframe
-       x1 += button->get_w() + xs15;
+       x1 += button->get_w() + xs25;
+       add_subwindow(button = new CWindowCameraTop(mwindow, this, x1, y));
+       x1 += button->get_w();
+       add_subwindow(button = new CWindowCameraMiddle(mwindow, this, x1, y));
+       x1 += button->get_w();
+       add_subwindow(button = new CWindowCameraBottom(mwindow, this, x1, y));
+       x1 += button->get_w() + xS(35);
        add_subwindow(t_smooth = new CWindowCurveToggle(Camera_Crv_Smooth, mwindow, this, x1, y));
        x1 += t_smooth->get_w() + xs10;
        add_subwindow(t_linear = new CWindowCurveToggle(Camera_Crv_Linear, mwindow, this, x1, y));
@@ -1005,21 +1031,14 @@ void CWindowCameraGUI::create_objects()
        add_subwindow(t_free = new CWindowCurveToggle(Camera_Crv_Free, mwindow, this, x1, y));
        x1 += t_free->get_w() + xs10;
        add_subwindow(t_bump = new CWindowCurveToggle(Camera_Crv_Bump, mwindow, this, x1, y));
-
-       y += button->get_h();
-       x1 = xs10;
-       add_subwindow(button = new CWindowCameraTop(mwindow, this, x1, y));
-       x1 += button->get_w();
-       add_subwindow(button = new CWindowCameraMiddle(mwindow, this, x1, y));
-       x1 += button->get_w();
-       add_subwindow(button = new CWindowCameraBottom(mwindow, this, x1, y));
-       x1 += button->get_w() + xs15;
+       x1 += button->get_w() + xs25;
+       y += yS(5);
        add_subwindow(add_keyframe = new CWindowCameraAddKeyframe(mwindow, this, x1, y));
        x1 += add_keyframe->get_w() + xs15;
        add_subwindow(auto_edge = new CWindowCurveAutoEdge(mwindow, this, x1, y));
        x1 += auto_edge->get_w() + xs10;
        add_subwindow(auto_span = new CWindowCurveAutoSpan(mwindow, this, x1, y));
-       x1 += auto_span->get_w() + xs15;
+       x1 += auto_span->get_w() + xS(50);
        add_subwindow(reset = new CWindowCameraReset(mwindow, this, x1, y));
 
 // fill in current auto keyframe values, set toggle states.
@@ -1086,9 +1105,160 @@ void CWindowCameraGUI::update()
                t_free->check_toggle_state(x_auto, y_auto, z_auto);
                t_bump->check_toggle_state(x_auto, y_auto, z_auto);
        }
+       x->range_text->update_range();
+       y->range_text->update_range();
+       z->range_text->update_range();
+}
+
+CWindowToolAutoRangeTumbler::CWindowToolAutoRangeTumbler(CWindowCoord *coord, int x, int y,
+               int use_max, const char *tip)
+ : BC_Tumbler(x, y, coord->gui->mwindow->theme->get_image_set("auto_range"),
+               TUMBLER_HORZ)
+{
+       this->coord = coord;
+       this->use_max = use_max;
+       set_tooltip(tip);
+}
+
+int CWindowToolAutoRangeTumbler::handle_up_event()
+{
+       coord->gui->mwindow->update_autorange(coord->type, 1, use_max);
+       coord->range_text->update_range();
+       return 1;
+}
+
+int CWindowToolAutoRangeTumbler::handle_down_event()
+{
+       coord->gui->mwindow->update_autorange(coord->type, 0, use_max);
+       coord->range_text->update_range();
+       return 1;
+}
+
+CWindowToolAutoRangeReset::CWindowToolAutoRangeReset(CWindowCoord *coord, int x, int y)
+ : BC_Button(x, y, coord->gui->mwindow->theme->get_image_set("reset_button"))
+{
+       this->coord = coord;
+       set_tooltip(_("Reset"));
+}
+
+int CWindowToolAutoRangeReset::handle_event()
+{
+       float v = 0;
+       int group = Automation::autogrouptype(coord->type, 0);
+       MWindow *mwindow = coord->gui->mwindow;
+       LocalSession *local_session = mwindow->edl->local_session;
+       float min = local_session->automation_mins[group];
+       float max = local_session->automation_maxs[group];
+       switch( group ) {
+       case AUTOGROUPTYPE_ZOOM: // exp
+               min = 0.005;  max= 5.000;  v = 1;
+               break;
+       case AUTOGROUPTYPE_X:
+               max = mwindow->edl->session->output_w;
+               min = -max;
+               break;
+       case AUTOGROUPTYPE_Y:
+               max = mwindow->edl->session->output_h;
+               min = -max;
+               break;
+       }
+       local_session->automation_mins[group] = min;
+       local_session->automation_maxs[group] = max;
+       coord->range_text->update_range();
+       unlock_window();
+       MWindowGUI *mgui = mwindow->gui;
+       mgui->lock_window("CWindowToolAutoRangeReset::update");
+       int color = GWindowGUI::auto_colors[coord->type];
+       mgui->zoombar->update_autozoom(group, color);
+       mgui->draw_overlays(0);
+       mgui->update_patchbay();
+       mgui->flash_canvas(1);
+       mgui->unlock_window();
+       mwindow->save_backup();
+       lock_window("CWindowToolAutoRangeReset::update");
+       CWindowCoordSlider *slider = coord->slider;
+       slider->update(slider->get_pointer_motion_range(), v, min, max);
+       return slider->handle_event();
 }
 
+CWindowToolAutoRangeTextBox::CWindowToolAutoRangeTextBox(CWindowCoord *coord, int x, int y)
+ : BC_TextBox(x, y, xS(130), 1, "0.000 to 0.000")
+{
+        this->coord = coord;
+        set_tooltip(_("Automation range"));
+}
 
+int CWindowToolAutoRangeTextBox::button_press_event()
+{
+        if (!is_event_win()) return 0;
+       int use_max = get_cursor_x() < get_w()/2 ? 0 : 1;
+        switch( get_buttonpress() ) {
+       case WHEEL_UP:
+               coord->gui->mwindow->update_autorange(coord->type, 1, use_max);
+               break;
+       case WHEEL_DOWN:
+               coord->gui->mwindow->update_autorange(coord->type, 0, use_max);
+               break;
+       default:
+               return BC_TextBox::button_press_event();
+        }
+       return coord->range_text->update_range();
+}
+
+int CWindowToolAutoRangeTextBox::handle_event()
+{
+        float imin, imax;
+        if( sscanf(this->get_text(),"%f to%f",&imin, &imax) == 2 ) {
+               MWindow *mwindow = coord->gui->mwindow;
+               int group = Automation::autogrouptype(coord->type, 0);
+               LocalSession *local_session = mwindow->edl->local_session;
+               float min = imin, max = imax;
+               switch( group ) {
+               case AUTOGROUPTYPE_ZOOM:
+                       if( min < ZOOM_MIN ) min = ZOOM_MIN;
+                       if( max > ZOOM_MAX ) max = ZOOM_MAX;
+                       break;
+               case AUTOGROUPTYPE_X:
+               case AUTOGROUPTYPE_Y:
+                       if( min < XY_MIN ) min = XY_MIN;
+                       if( max > XY_MAX ) max = XY_MAX;
+                       break;
+               }
+                if( max > min ) {
+                       local_session->automation_mins[group] = min;
+                       local_session->automation_maxs[group] = max;
+                       if( min != imin || max != imax ) update_range();
+                       mwindow->gui->lock_window("CWindowToolAutoRangeTextBox::handle_event");
+                       int color = GWindowGUI::auto_colors[coord->type];
+                       mwindow->gui->zoombar->update_autozoom(group, color);
+                       mwindow->gui->draw_overlays(0);
+                       mwindow->gui->update_patchbay();
+                       mwindow->gui->flash_canvas(1);
+                       mwindow->gui->unlock_window();
+               }
+       }
+       return 1;
+}
+
+int CWindowToolAutoRangeTextBox::update_range()
+{
+       char string[BCSTRLEN];
+       LocalSession *local_session = coord->gui->mwindow->edl->local_session;
+       int group = Automation::autogrouptype(coord->type, 0);
+       float min = local_session->automation_mins[group];
+       float max = local_session->automation_maxs[group];
+       switch( group ) {
+       case AUTOGROUPTYPE_ZOOM:
+               sprintf(string, "%0.03f to %0.03f\n", min, max);
+               break;
+       case AUTOGROUPTYPE_X:
+       case AUTOGROUPTYPE_Y:
+               sprintf(string, "%0.0f to %.0f\n", min, max);
+               break;
+       }
+       update(string);
+       return 1;
+}
 
 
 CWindowCameraLeft::CWindowCameraLeft(MWindow *mwindow, CWindowCameraGUI *gui, int x, int y)
@@ -1328,6 +1498,8 @@ CWindowCameraReset::CWindowCameraReset(MWindow *mwindow,
 
 int CWindowCameraReset::handle_event()
 {
+       mwindow->edl->local_session->reset_view_limits();
+       CWindowCameraGUI *gui = (CWindowCameraGUI *)this->gui;
        return gui->press(&CWindowCanvas::reset_camera);
 }
 
@@ -1365,7 +1537,7 @@ int CWindowCurveAutoSpan::handle_event()
 
 
 CWindowProjectorGUI::CWindowProjectorGUI(MWindow *mwindow, CWindowTool *thread)
- : CWindowToolGUI(mwindow, thread, _(PROGRAM_NAME ": Projector"), xS(340), yS(170))
+ : CWindowToolGUI(mwindow, thread, _(PROGRAM_NAME ": Projector"), xS(580), yS(200))
 {
 }
 CWindowProjectorGUI::~CWindowProjectorGUI()
@@ -1373,9 +1545,9 @@ CWindowProjectorGUI::~CWindowProjectorGUI()
 }
 void CWindowProjectorGUI::create_objects()
 {
-       int xs10 = xS(10), xs15 = xS(15);
-       int ys30 = yS(30);
-       int x = xs10, y = yS(10);
+       int xs5 = xS(5), xs10 = xS(10), xs15 = xS(15), xs25 = xS(25);
+       int ys10 = yS(10), ys30 = yS(30);
+       int x = xs10, y = ys10;
        Track *track = mwindow->cwindow->calculate_affected_track();
        FloatAuto *x_auto = 0;
        FloatAuto *y_auto = 0;
@@ -1389,9 +1561,13 @@ void CWindowProjectorGUI::create_objects()
                mwindow->cwindow->calculate_affected_autos(track,
                        &x_auto, &y_auto, &z_auto, 0, 0, 0, 0);
        }
-
+       int x1 = x;
+       add_subwindow(bar1 = new BC_TitleBar(x1, y, xS(340), xs10, xs10, _("Position")));
+       x1 += bar1->get_w() + xS(35);
+       add_subwindow(bar2 = new BC_TitleBar(x1, y, get_w()-x1-xs10, xs10, xs10, _("Range")));
+       y += bar1->get_h() + ys10;
        add_subwindow(title = new BC_Title(x = xs10, y, "X:"));
-       int x1 = x + title->get_w() + xS(3);
+       x1 = x + title->get_w() + xS(3);
        float xvalue = x_auto ? x_auto->get_value() : 0;
        this->x = new CWindowCoord(this, x1, y, xvalue, AUTOMATION_PROJECTOR_X);
        this->x->create_objects();
@@ -1409,40 +1585,46 @@ void CWindowProjectorGUI::create_objects()
        this->z->create_objects();
        this->z->range->set_tooltip(_("expand Zoom range"));
        this->z->set_increment(0.01);
+       y += ys30 + ys10;
 
-       y += ys30;
-       x1 = xs10;
+       x1 = x;
+       add_subwindow(bar3 = new BC_TitleBar(x1, y, xS(180)-x1, xs5, xs5, _("Justify")));
+       x1 += bar3->get_w() + xS(35);
+       add_subwindow(bar4 = new BC_TitleBar(x1, y, xS(375)-x1, xs5, xs5, _("Curve type")));
+       x1 += bar4->get_w() + xS(25);
+       add_subwindow(bar5 = new BC_TitleBar(x1, y, get_w()-xS(60)-x1, xs5, xs5, _("Keyframe")));
+       y += bar3->get_h() + ys10;
+
+       x1 = x;
        add_subwindow(button = new CWindowProjectorLeft(mwindow, this, x1, y));
        x1 += button->get_w();
        add_subwindow(button = new CWindowProjectorCenter(mwindow, this, x1, y));
        x1 += button->get_w();
        add_subwindow(button = new CWindowProjectorRight(mwindow, this, x1, y));
-// additional Buttons to control the curve mode of the "current" keyframe
-       x1 += button->get_w() + xs15;
+       x1 += button->get_w() + xs25;
+       add_subwindow(button = new CWindowProjectorTop(mwindow, this, x1, y));
+       x1 += button->get_w();
+       add_subwindow(button = new CWindowProjectorMiddle(mwindow, this, x1, y));
+       x1 += button->get_w();
+       add_subwindow(button = new CWindowProjectorBottom(mwindow, this, x1, y));
+       x1 += button->get_w() + xS(35);
        add_subwindow(t_smooth = new CWindowCurveToggle(Projector_Crv_Smooth, mwindow, this, x1, y));
        x1 += t_smooth->get_w() + xs10;
        add_subwindow(t_linear = new CWindowCurveToggle(Projector_Crv_Linear, mwindow, this, x1, y));
-       x1 += t_linear->get_w() + xs15;
+       x1 += t_linear->get_w() + xs10;
        add_subwindow(t_tangent = new CWindowCurveToggle(Projector_Crv_Tangent, mwindow, this, x1, y));
        x1 += t_tangent->get_w() + xs10;
        add_subwindow(t_free = new CWindowCurveToggle(Projector_Crv_Free, mwindow, this, x1, y));
        x1 += t_free->get_w() + xs10;
        add_subwindow(t_bump = new CWindowCurveToggle(Projector_Crv_Bump, mwindow, this, x1, y));
-
-       y += button->get_h();
-       x1 = xs10;
-       add_subwindow(button = new CWindowProjectorTop(mwindow, this, x1, y));
-       x1 += button->get_w();
-       add_subwindow(button = new CWindowProjectorMiddle(mwindow, this, x1, y));
-       x1 += button->get_w();
-       add_subwindow(button = new CWindowProjectorBottom(mwindow, this, x1, y));
-       x1 += button->get_w() + xs15;
+       x1 += button->get_w() + xs25;
+       y += yS(5);
        add_subwindow(add_keyframe = new CWindowProjectorAddKeyframe(mwindow, this, x1, y));
        x1 += add_keyframe->get_w() + xs15;
-       add_subwindow(auto_span = new CWindowCurveAutoSpan(mwindow, this, x1, y));
-       x1 += auto_span->get_w() + xs10;
        add_subwindow(auto_edge = new CWindowCurveAutoEdge(mwindow, this, x1, y));
-       x1 += auto_edge->get_w() + xs15;
+       x1 += auto_edge->get_w() + xs10;
+       add_subwindow(auto_span = new CWindowCurveAutoSpan(mwindow, this, x1, y));
+       x1 += auto_span->get_w() + xS(50);
        add_subwindow(reset = new CWindowProjectorReset(mwindow, this, x1, y));
 
 // fill in current auto keyframe values, set toggle states.
@@ -1509,6 +1691,9 @@ void CWindowProjectorGUI::update()
                t_free->check_toggle_state(x_auto, y_auto, z_auto);
                t_bump->check_toggle_state(x_auto, y_auto, z_auto);
        }
+       x->range_text->update_range();
+       y->range_text->update_range();
+       z->range_text->update_range();
 }
 
 CWindowProjectorLeft::CWindowProjectorLeft(MWindow *mwindow, CWindowProjectorGUI *gui, int x, int y)
@@ -1714,6 +1899,8 @@ CWindowProjectorReset::CWindowProjectorReset(MWindow *mwindow,
 
 int CWindowProjectorReset::handle_event()
 {
+       mwindow->edl->local_session->reset_view_limits();
+       CWindowProjectorGUI *gui = (CWindowProjectorGUI *)this->gui;
        return gui->press(&CWindowCanvas::reset_projector);
 }
 
index 942651f2fbeab4d9ba230638523b0137c680b4c4..480663981dfdcdae24e9aa306aea562e25baedef 100644 (file)
@@ -118,9 +118,13 @@ public:
        int handle_event();
 
        CWindowToolGUI *gui;
-       CWindowCoordSlider *slider;
-       CWindowCoordRange *range;
        int type;
+       CWindowToolAutoRangeTumbler *min_tumbler;
+       CWindowCoordSlider *slider;
+       CWindowToolAutoRangeTumbler *max_tumbler;
+       CWindowToolAutoRangeReset *range_reset;
+       CWindowToolAutoRangeTextBox *range_text;
+       CWindowCoordRangeTumbler *range;
 };
 
 class CWindowCoordSlider : public BC_FSlider
@@ -134,11 +138,11 @@ public:
        CWindowCoord *coord;
 };
 
-class CWindowCoordRange : public BC_Tumbler
+class CWindowCoordRangeTumbler : public BC_Tumbler
 {
 public:
-       CWindowCoordRange(CWindowCoord *coord, int x, int y);
-       ~CWindowCoordRange();
+       CWindowCoordRangeTumbler(CWindowCoord *coord, int x, int y);
+       ~CWindowCoordRangeTumbler();
        int update(float scale);
        int handle_up_event();
        int handle_down_event();
@@ -804,6 +808,38 @@ public:
 };
 
 
+class CWindowToolAutoRangeTumbler : public BC_Tumbler
+{
+public:
+       CWindowToolAutoRangeTumbler(CWindowCoord *coord, int x, int y,
+                       int use_max, const char *tip);
+       int handle_up_event();
+       int handle_down_event();
+
+       CWindowCoord *coord;
+       int use_max;
+};
+
+class CWindowToolAutoRangeReset : public BC_Button
+{
+public:
+       CWindowToolAutoRangeReset(CWindowCoord *coord, int x, int y);
+       int handle_event();
+
+       CWindowCoord *coord;
+};
+
+class CWindowToolAutoRangeTextBox : public BC_TextBox
+{
+public:
+       CWindowToolAutoRangeTextBox(CWindowCoord *coord, int x, int y);
+       int button_press_event();
+       int handle_event();
+       int update_range();
+
+       CWindowCoord *coord;
+};
+
 
 class CWindowCameraGUI : public CWindowToolGUI
 {
@@ -814,9 +850,11 @@ public:
        void create_objects();
        void update();
 
+       BC_TitleBar *bar1, *bar2;
        CWindowCoord *x, *y, *z;
        CWindowCameraAddKeyframe *add_keyframe;
        CWindowCameraReset *reset;
+       BC_TitleBar *bar3, *bar4, *bar5;
        CWindowCurveToggle *t_smooth, *t_linear, *t_tangent, *t_free, *t_bump;
        CWindowCurveAutoSpan *auto_span;
        CWindowCurveAutoEdge *auto_edge;
@@ -912,9 +950,11 @@ public:
        void create_objects();
        void update();
 
+       BC_TitleBar *bar1, *bar2;
        CWindowCoord *x, *y, *z;
        CWindowProjectorAddKeyframe *add_keyframe;
        CWindowProjectorReset *reset;
+       BC_TitleBar *bar3, *bar4, *bar5;
        CWindowCurveToggle *t_smooth, *t_linear, *t_tangent, *t_free, *t_bump;
        CWindowCurveAutoSpan *auto_span;
        CWindowCurveAutoEdge *auto_edge;
index 4124fc03c2efb9479e8399bd85d47b47b33eaf3e..58cc0b3d97148ba97a4ca7f549ad5df3c064f9fb 100644 (file)
@@ -26,7 +26,7 @@ class CWindowTool;
 class CWindowToolGUI;
 class CWindowCoord;
 class CWindowCoordSlider;
-class CWindowCoordRange;
+class CWindowCoordRangeTumbler;
 class CWindowCurveAutoEdge;
 class CWindowCurveAutoSpan;
 class CWindowCropApply;
@@ -76,6 +76,9 @@ class CWindowDisableOpenGLMasking;
 class CWindowMaskGUI;
 class CWindowEyedropGUI;
 class CWindowEyedropCheckBox;
+class CWindowToolAutoRangeTumbler;
+class CWindowToolAutoRangeReset;
+class CWindowToolAutoRangeTextBox;
 class CWindowCameraGUI;
 class CWindowCameraLeft;
 class CWindowCameraCenter;
index 47d86c28f239cc4113423667d66c3d57d043f35d..75001658c7f76d98bbf8097c3cb781ba43977bdc 100644 (file)
@@ -24,6 +24,7 @@
 #include "clip.h"
 #include "bchash.h"
 #include "edl.h"
+#include "edlsession.h"
 #include "filesystem.h"
 #include "filexml.h"
 #include "floatauto.h"
@@ -511,9 +512,12 @@ void LocalSession::reset_view_limits()
 {
        automation_mins[AUTOGROUPTYPE_ZOOM] = 0.005;
        automation_maxs[AUTOGROUPTYPE_ZOOM] = 5.000;
-       automation_mins[AUTOGROUPTYPE_X] = -100;
-       automation_maxs[AUTOGROUPTYPE_X] = 100;
-       automation_mins[AUTOGROUPTYPE_Y] = -100;
-       automation_maxs[AUTOGROUPTYPE_Y] = 100;
+       int out_w = edl->session->output_w;
+       automation_mins[AUTOGROUPTYPE_X] = -out_w;
+       automation_maxs[AUTOGROUPTYPE_X] = out_w;
+       int out_h = edl->session->output_h;
+       automation_mins[AUTOGROUPTYPE_Y] = -out_h;
+       automation_maxs[AUTOGROUPTYPE_Y] = out_h;
+
 }
 
index b31f2642141ceddad78638c31c1210bd84ab20ef..30e632bfab7d353bc457a34f36cc630d63e2abe7 100644 (file)
@@ -265,6 +265,7 @@ public:
 // Fit selected autos to the vertical display range
        void fit_autos(int all);
        void change_currentautorange(int autogrouptype, int increment, int changemax);
+       void update_autorange(int type, int increment, int use_max);
        void expand_autos(int changeall, int domin, int domax);
        void shrink_autos(int changeall, int domin, int domax);
 // move the window to include the cursor
index 89aaaee1d457e997842141d6e96316a1ce95db33..305e4eac44d1dfd695a5186328097f5df8fca430 100644 (file)
@@ -28,6 +28,7 @@
 #include "edits.h"
 #include "edl.h"
 #include "edlsession.h"
+#include "gwindowgui.h"
 #include "keyframe.h"
 #include "labels.h"
 #include "localsession.h"
@@ -259,7 +260,7 @@ void MWindow::change_currentautorange(int autogrouptype, int increment, int chan
                        break;
                case AUTOGROUPTYPE_X:
                case AUTOGROUPTYPE_Y:
-                       val = floor(val + 5);
+                       val = floor(val + 50);
                        break;
                }
        }
@@ -278,7 +279,7 @@ void MWindow::change_currentautorange(int autogrouptype, int increment, int chan
                        break;
                case AUTOGROUPTYPE_X:
                case AUTOGROUPTYPE_Y:
-                       val = floor(val-5);
+                       val = floor(val-50);
                        break;
                }
        }
@@ -296,6 +297,18 @@ void MWindow::change_currentautorange(int autogrouptype, int increment, int chan
        }
 }
 
+void MWindow::update_autorange(int type, int increment, int use_max)
+{
+       gui->lock_window("MWindow::update_autorange");
+       int group = Automation::autogrouptype(type, 0);
+       change_currentautorange(group, increment, use_max);
+       int color = GWindowGUI::auto_colors[type];
+       gui->zoombar->update_autozoom(group, color);
+       gui->draw_overlays(0);
+       gui->update_patchbay();
+       gui->flash_canvas(1);
+       gui->unlock_window();
+}
 
 void MWindow::expand_autos(int changeall, int domin, int domax)
 {
index 1a807d4d4be048eae5f1e6c4fe3bd0242c3ad2f3..a605630034e53f9286a03ea55bd64a6bcf264bb6 100644 (file)
@@ -33,7 +33,7 @@
 #define TUMBLETOP_DN 3
 #define TOTAL_STATES 4
 
-BC_Tumbler::BC_Tumbler(int x, int y, VFrame **data)
+BC_Tumbler::BC_Tumbler(int x, int y, VFrame **data, int orient)
  : BC_SubWindow(x, y, 0, 0, -1)
 {
        for(int i = 0; i < TOTAL_STATES; i++)
@@ -41,6 +41,7 @@ BC_Tumbler::BC_Tumbler(int x, int y, VFrame **data)
        status = TUMBLE_UP;
        repeat_count = 0;
        this->data = data;
+       this->orient = orient;
 }
 
 
@@ -51,24 +52,23 @@ BC_Tumbler::~BC_Tumbler()
 }
 
 
-int BC_Tumbler::calculate_w()
+int BC_Tumbler::calculate_w(VFrame **data)
 {
-       return BC_WindowBase::get_resources()->tumble_data[0]->get_w();
+       VFrame **vfrms = data ? data : BC_WindowBase::get_resources()->tumble_data;
+       return vfrms[0]->get_w();
 }
 
-int BC_Tumbler::calculate_h()
+int BC_Tumbler::calculate_h(VFrame **data)
 {
-       return BC_WindowBase::get_resources()->tumble_data[0]->get_h();
+       VFrame **vfrms = data ? data : BC_WindowBase::get_resources()->tumble_data;
+       return vfrms[0]->get_h();
 }
 
 
 int BC_Tumbler::initialize()
 {
 // Get the image
-       if(data)
-               set_images(data);
-       else
-               set_images(get_resources()->tumble_data);
+       set_images(data ? data : get_resources()->tumble_data);
        w = images[TUMBLE_UP]->get_w();
        h = images[TUMBLE_UP]->get_h();
 
@@ -82,9 +82,6 @@ int BC_Tumbler::initialize()
 
 int BC_Tumbler::reposition_window(int x, int y, int w, int h)
 {
-       if (w > 0 || h > 0)
-               printf("BC_Tumbler::reposition_window - w & h haven't been implemented yet!! (probably never will be)");
-
        BC_WindowBase::reposition_window(x, y);
        draw_face(0);
        return 0;
@@ -101,12 +98,10 @@ int BC_Tumbler::update_bitmaps(VFrame **data)
 
 int BC_Tumbler::set_images(VFrame **data)
 {
-       for(int i = 0; i < TOTAL_STATES; i++)
-       {
-               if(images[i]) delete images[i];
+       for(int i = 0; i < TOTAL_STATES; ++i ) {
+               if( images[i] ) delete images[i];
                images[i] = new BC_Pixmap(parent_window, data[i], PIXMAP_ALPHA);
        }
-
        return 0;
 }
 
@@ -121,46 +116,28 @@ int BC_Tumbler::draw_face(int flush)
 int BC_Tumbler::repeat_event(int64_t duration)
 {
 //printf("BC_Tumbler::repeat_event 1 %d\n", duration);
-       if(duration == top_level->get_resources()->tooltip_delay)
-       {
-               if(tooltip_text && tooltip_text[0] != 0 &&
-                       status == TUMBLE_UPHI)
-               {
+       if( duration == top_level->get_resources()->tooltip_delay ) {
+               if( tooltip_text && tooltip_text[0] != 0 && status == TUMBLE_UPHI ) {
                        show_tooltip();
                        return 1;
                }
        }
-       else
-       if(duration == top_level->get_resources()->tumble_duration)
-       {
+       else if( duration == top_level->get_resources()->tumble_duration ) {
 //printf("BC_Tumbler::repeat_event 2\n");
-               repeat_count++;
 // delay the 1st repeat
-               if(repeat_count > 1 && repeat_count < 5) return 0;
-               if(status == TUMBLETOP_DN)
-               {
-                       handle_up_event();
-                       return 1;
-               }
-               else
-               if(status == TUMBLEBOTTOM_DN)
-               {
-                       handle_down_event();
-                       return 1;
-               }
+               if( ++repeat_count > 1 && repeat_count < 5 ) return 0;
+               if( status == TUMBLETOP_DN ) { handle_up_event(); return 1; }
+               if( status == TUMBLEBOTTOM_DN) { handle_down_event(); return 1; }
        }
        return 0;
 }
 
 int BC_Tumbler::cursor_enter_event()
 {
-       if(top_level->event_win == win)
-       {
-               if(! top_level->button_down && status == TUMBLE_UP)
-               {
-                       status = TUMBLE_UPHI;
-                       draw_face(1);
-               }
+       if( top_level->event_win != win ) return 0;
+       if( !top_level->button_down && status == TUMBLE_UP ) {
+               status = TUMBLE_UPHI;
+               draw_face(1);
        }
        return 0;
 }
@@ -168,8 +145,7 @@ int BC_Tumbler::cursor_enter_event()
 int BC_Tumbler::cursor_leave_event()
 {
        hide_tooltip();
-       if(status == TUMBLE_UPHI)
-       {
+       if( status == TUMBLE_UPHI ) {
                status = TUMBLE_UP;
                draw_face(1);
        }
@@ -179,62 +155,39 @@ int BC_Tumbler::cursor_leave_event()
 int BC_Tumbler::button_press_event()
 {
        hide_tooltip();
-       if(top_level->event_win == win)
-       {
+       if( top_level->event_win != win ) return 0;
 //printf("BC_Tumbler::button_press_event 1 %d\n", get_buttonpress());
-               if(get_buttonpress() == 4)
-               {
-                       status = TUMBLETOP_DN;
-                       draw_face(1);
-                       handle_up_event();
-//                     repeat_count = 0;
-//                     repeat_event(top_level->get_resources()->tumble_duration);
-               }
-               else
-               if(get_buttonpress() == 5)
-               {
+       if( get_buttonpress() == WHEEL_UP ) {
+               status = TUMBLETOP_DN;
+               draw_face(1);
+               handle_up_event();
+       }
+       else if( get_buttonpress() == WHEEL_DOWN ) {
                        status = TUMBLEBOTTOM_DN;
                        draw_face(1);
                        handle_down_event();
-//                     repeat_count = 0;
-//                     repeat_event(top_level->get_resources()->tumble_duration);
                }
-               else
-               {
-                       if(top_level->cursor_y < get_h() / 2)
-                       {
-                               status = TUMBLETOP_DN;
-                       }
-                       else
-                       {
-                               status = TUMBLEBOTTOM_DN;
-                       }
-
-                       draw_face(1);
+       else {
+               status = orient == TUMBLER_HORZ ?
+                       top_level->cursor_x > get_w()/2 ? TUMBLETOP_DN : TUMBLEBOTTOM_DN :
+                       top_level->cursor_y < get_h()/2 ? TUMBLETOP_DN : TUMBLEBOTTOM_DN ;
+               draw_face(1);
 
-                       top_level->set_repeat(top_level->get_resources()->tumble_duration);
-                       repeat_count = 0;
-                       repeat_event(top_level->get_resources()->tumble_duration);
+               top_level->set_repeat(top_level->get_resources()->tumble_duration);
+               repeat_count = 0;
+               repeat_event(top_level->get_resources()->tumble_duration);
 //printf("BC_Tumbler::button_press_event 2 %d\n", get_buttonpress());
-               }
-               return 1;
        }
-       return 0;
+       return 1;
 }
 
 int BC_Tumbler::button_release_event()
 {
        hide_tooltip();
-       if(top_level->event_win == win)
-       {
-               if(status == TUMBLEBOTTOM_DN || status == TUMBLETOP_DN)
-               {
-                       top_level->unset_repeat(top_level->get_resources()->tumble_duration);
-                       if(cursor_inside())
-                               status = TUMBLE_UPHI;
-                       else
-                               status = TUMBLE_UP;
-               }
+       if( top_level->event_win != win ) return 0;
+       if( status == TUMBLEBOTTOM_DN || status == TUMBLETOP_DN ) {
+               top_level->unset_repeat(top_level->get_resources()->tumble_duration);
+               status = cursor_inside() ? TUMBLE_UPHI : TUMBLE_UP;
                draw_face(1);
        }
        return 0;
@@ -242,10 +195,9 @@ int BC_Tumbler::button_release_event()
 
 int BC_Tumbler::cursor_motion_event()
 {
-       if(top_level->button_down && top_level->event_win == win &&
-               !cursor_inside() &&
-               !(status == TUMBLETOP_DN || status == TUMBLEBOTTOM_DN))
-       {
+       if( top_level->event_win != win ) return 0;
+       if( top_level->button_down && !cursor_inside() &&
+           !(status == TUMBLETOP_DN || status == TUMBLEBOTTOM_DN) ) {
                status = TUMBLE_UP;
                draw_face(1);
        }
index 6668ebfda11096350c2ed88a3d54017d9c47f875..0e219998fcf027a57a119f11e6d939003f2c29a5 100644 (file)
 
 #include "bcsubwindow.h"
 
+#define TUMBLER_VERT 0
+#define TUMBLER_HORZ 1
+
 class BC_Tumbler : public BC_SubWindow
 {
 public:
-       BC_Tumbler(int x, int y, VFrame **data = 0);
+       BC_Tumbler(int x, int y, VFrame **data = 0, int orient=TUMBLER_VERT);
        virtual ~BC_Tumbler();
 
        virtual int handle_up_event() { return 0; };
        virtual int handle_down_event() { return 0; };
        int repeat_event(int64_t repeat_id);
-       static int calculate_w();
-       static int calculate_h();
+       static int calculate_w(VFrame **data = 0);
+       static int calculate_h(VFrame **data = 0);
 
        int initialize();
        int set_images(VFrame **data);
@@ -55,6 +58,7 @@ private:
 
        BC_Pixmap *images[4];
        int status;
+       int orient;
        int64_t repeat_count;
        VFrame **data;
 };
index a6a9bc32f306e89eaf0ddfb690c90d750b724751..ea04e1c5988523d19d00eb01c07676cc46036655 100644 (file)
@@ -576,6 +576,7 @@ void BlondTheme::initialize()
 
        new_image_set("zoombar_menu", 3, "zoompopup_up.png", "zoompopup_hi.png", "zoompopup_dn.png");
        new_image_set("zoombar_tumbler", 4, "zoomtumble_up.png", "zoomtumble_hi.png", "zoomtumble_bottom.png", "zoomtumble_top.png");
+       new_image_set("auto_range", 4, "autorange_up.png", "autorange_hi.png", "autorange_bottom.png", "autorange_top.png");
 
        new_image_set("mode_popup", 3, "mode_up.png", "mode_hi.png", "mode_dn.png");
        new_image("mode_add", "mode_add.png");
diff --git a/cinelerra-5.1/plugins/theme_blond/data/autorange_bottom.png b/cinelerra-5.1/plugins/theme_blond/data/autorange_bottom.png
new file mode 100644 (file)
index 0000000..5304f57
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond/data/autorange_bottom.png differ
diff --git a/cinelerra-5.1/plugins/theme_blond/data/autorange_hi.png b/cinelerra-5.1/plugins/theme_blond/data/autorange_hi.png
new file mode 100644 (file)
index 0000000..6ecf2ca
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond/data/autorange_hi.png differ
diff --git a/cinelerra-5.1/plugins/theme_blond/data/autorange_top.png b/cinelerra-5.1/plugins/theme_blond/data/autorange_top.png
new file mode 100644 (file)
index 0000000..ee79e90
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond/data/autorange_top.png differ
diff --git a/cinelerra-5.1/plugins/theme_blond/data/autorange_up.png b/cinelerra-5.1/plugins/theme_blond/data/autorange_up.png
new file mode 100644 (file)
index 0000000..3792d0b
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond/data/autorange_up.png differ
index 347110ca942ef31e0a0731867035d01d2157f7fc..0321c395134a6ba3ff3b2db74e4b3a5a209d0551 100644 (file)
@@ -594,6 +594,7 @@ void BlondCVTheme::initialize()
 
        new_image_set("zoombar_menu", 3, "generic_up.png", "generic_hi.png", "generic_dn.png");
        new_image_set("zoombar_tumbler", 4, "tumble_up.png", "tumble_hi.png", "tumble_bottom.png", "tumble_top.png");
+       new_image_set("auto_range", 4, "autorange_up.png", "autorange_hi.png", "autorange_bottom.png", "autorange_top.png");
 
        new_image_set("mode_popup", 3, "generic_up.png", "generic_hi.png", "generic_dn.png");
        new_image("mode_add", "mode_add.png");
diff --git a/cinelerra-5.1/plugins/theme_blond_cv/data/autorange_bottom.png b/cinelerra-5.1/plugins/theme_blond_cv/data/autorange_bottom.png
new file mode 100644 (file)
index 0000000..1e3cf7e
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond_cv/data/autorange_bottom.png differ
diff --git a/cinelerra-5.1/plugins/theme_blond_cv/data/autorange_hi.png b/cinelerra-5.1/plugins/theme_blond_cv/data/autorange_hi.png
new file mode 100644 (file)
index 0000000..8defd29
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond_cv/data/autorange_hi.png differ
diff --git a/cinelerra-5.1/plugins/theme_blond_cv/data/autorange_top.png b/cinelerra-5.1/plugins/theme_blond_cv/data/autorange_top.png
new file mode 100644 (file)
index 0000000..9cadd11
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond_cv/data/autorange_top.png differ
diff --git a/cinelerra-5.1/plugins/theme_blond_cv/data/autorange_up.png b/cinelerra-5.1/plugins/theme_blond_cv/data/autorange_up.png
new file mode 100644 (file)
index 0000000..1838601
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blond_cv/data/autorange_up.png differ
index 9f64aa7cb8627eabb995b169c642dba93e9d0c74..cacdd3efa1a324a71ad3f268e75cb286bc796b8e 100644 (file)
@@ -575,6 +575,7 @@ void BlueDotTheme::initialize()
 
        new_image_set("zoombar_menu", 3, "zoompopup_up.png", "zoompopup_hi.png", "zoompopup_dn.png");
        new_image_set("zoombar_tumbler", 4, "zoomtumble_up.png", "zoomtumble_hi.png", "zoomtumble_bottom.png", "zoomtumble_top.png");
+       new_image_set("auto_range", 4, "autorange_up.png", "autorange_hi.png", "autorange_bottom.png", "autorange_top.png");
 
        new_image_set("mode_popup", 3, "mode_up.png", "mode_hi.png", "mode_dn.png");
        new_image("mode_add", "mode_add.png");
diff --git a/cinelerra-5.1/plugins/theme_blue/data/autorange_bottom.png b/cinelerra-5.1/plugins/theme_blue/data/autorange_bottom.png
new file mode 100644 (file)
index 0000000..b193703
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue/data/autorange_bottom.png differ
diff --git a/cinelerra-5.1/plugins/theme_blue/data/autorange_hi.png b/cinelerra-5.1/plugins/theme_blue/data/autorange_hi.png
new file mode 100644 (file)
index 0000000..e442afd
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue/data/autorange_hi.png differ
diff --git a/cinelerra-5.1/plugins/theme_blue/data/autorange_top.png b/cinelerra-5.1/plugins/theme_blue/data/autorange_top.png
new file mode 100644 (file)
index 0000000..969f481
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue/data/autorange_top.png differ
diff --git a/cinelerra-5.1/plugins/theme_blue/data/autorange_up.png b/cinelerra-5.1/plugins/theme_blue/data/autorange_up.png
new file mode 100644 (file)
index 0000000..0f4e4aa
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue/data/autorange_up.png differ
index 8fb86f34e08efa122c435ba4a6883678605da6eb..6203e863de9d3e5a8959b41e8f42b26de25d331c 100644 (file)
@@ -588,6 +588,7 @@ void BlueDotTheme::initialize()
        //Here an improvement may be needed
        new_image_set("zoombar_menu", 3, "generic_up.png", "generic_hi.png", "generic_dn.png");
        new_image_set("zoombar_tumbler", 4, "tumble_up.png", "tumble_hi.png", "tumble_bottom.png", "tumble_top.png");
+       new_image_set("auto_range", 4, "autorange_up.png", "autorange_hi.png", "autorange_bottom.png", "autorange_top.png");
 
 //Graphic Copied from default. Improve!!
        new_image_set("mode_popup", 3, "generic_up.png", "generic_hi.png", "generic_dn.png");
diff --git a/cinelerra-5.1/plugins/theme_blue_dot/data/autorange_bottom.png b/cinelerra-5.1/plugins/theme_blue_dot/data/autorange_bottom.png
new file mode 100644 (file)
index 0000000..11814cc
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue_dot/data/autorange_bottom.png differ
diff --git a/cinelerra-5.1/plugins/theme_blue_dot/data/autorange_hi.png b/cinelerra-5.1/plugins/theme_blue_dot/data/autorange_hi.png
new file mode 100644 (file)
index 0000000..9a57699
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue_dot/data/autorange_hi.png differ
diff --git a/cinelerra-5.1/plugins/theme_blue_dot/data/autorange_top.png b/cinelerra-5.1/plugins/theme_blue_dot/data/autorange_top.png
new file mode 100644 (file)
index 0000000..f4003e8
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue_dot/data/autorange_top.png differ
diff --git a/cinelerra-5.1/plugins/theme_blue_dot/data/autorange_up.png b/cinelerra-5.1/plugins/theme_blue_dot/data/autorange_up.png
new file mode 100644 (file)
index 0000000..f29072c
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_blue_dot/data/autorange_up.png differ
index 32740bba0c8355fbbdfe9a2deafe42b7145ad300..20d32da37e52d4ae0eae6597e698f0d6768f182b 100644 (file)
@@ -580,6 +580,7 @@ void BrightTheme::initialize()
 
        new_image_set("zoombar_menu", 3, "zoompopup_up.png", "zoompopup_hi.png", "zoompopup_dn.png");
        new_image_set("zoombar_tumbler", 4, "tumble_up.png", "tumble_hi.png", "tumble_bottom.png", "tumble_top.png");
+       new_image_set("auto_range", 4, "autorange_up.png", "autorange_hi.png", "autorange_bottom.png", "autorange_top.png");
 
        new_image_set("mode_popup", 3, "mode_up.png", "mode_hi.png", "mode_dn.png");
        new_image("mode_add", "mode_add.png");
diff --git a/cinelerra-5.1/plugins/theme_bright/data/autorange_bottom.png b/cinelerra-5.1/plugins/theme_bright/data/autorange_bottom.png
new file mode 100644 (file)
index 0000000..07e3441
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_bright/data/autorange_bottom.png differ
diff --git a/cinelerra-5.1/plugins/theme_bright/data/autorange_hi.png b/cinelerra-5.1/plugins/theme_bright/data/autorange_hi.png
new file mode 100644 (file)
index 0000000..fe59edb
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_bright/data/autorange_hi.png differ
diff --git a/cinelerra-5.1/plugins/theme_bright/data/autorange_top.png b/cinelerra-5.1/plugins/theme_bright/data/autorange_top.png
new file mode 100644 (file)
index 0000000..cbb034d
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_bright/data/autorange_top.png differ
diff --git a/cinelerra-5.1/plugins/theme_bright/data/autorange_up.png b/cinelerra-5.1/plugins/theme_bright/data/autorange_up.png
new file mode 100644 (file)
index 0000000..8590601
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_bright/data/autorange_up.png differ
index b6194ec22f24c6264f6e5d46c3ce36257f7221e5..9a42c48e6221db729f577d1be3babb9872bfcb94 100644 (file)
@@ -591,6 +591,11 @@ void CAKEWALKTHEME::initialize()
       "zoomtumble_hi.png",
       "zoomtumble_bottom.png",
       "zoomtumble_top.png");
+new_image_set("auto_range", 4,
+      "autorange_up.png",
+      "autorange_hi.png",
+      "autorange_bottom.png",
+      "autorange_top.png");
  new_image_set("mode_popup", 3,
       "mode_up.png", "mode_hi.png", "mode_dn.png");
  new_image("mode_add", "mode_add.png");
diff --git a/cinelerra-5.1/plugins/theme_cakewalk/data/autorange_bottom.png b/cinelerra-5.1/plugins/theme_cakewalk/data/autorange_bottom.png
new file mode 100644 (file)
index 0000000..22787e1
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_cakewalk/data/autorange_bottom.png differ
diff --git a/cinelerra-5.1/plugins/theme_cakewalk/data/autorange_hi.png b/cinelerra-5.1/plugins/theme_cakewalk/data/autorange_hi.png
new file mode 100644 (file)
index 0000000..c5b2fbc
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_cakewalk/data/autorange_hi.png differ
diff --git a/cinelerra-5.1/plugins/theme_cakewalk/data/autorange_top.png b/cinelerra-5.1/plugins/theme_cakewalk/data/autorange_top.png
new file mode 100644 (file)
index 0000000..75efb5f
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_cakewalk/data/autorange_top.png differ
diff --git a/cinelerra-5.1/plugins/theme_cakewalk/data/autorange_up.png b/cinelerra-5.1/plugins/theme_cakewalk/data/autorange_up.png
new file mode 100644 (file)
index 0000000..45264a6
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_cakewalk/data/autorange_up.png differ
diff --git a/cinelerra-5.1/plugins/theme_hulk/data/autorange_bottom.png b/cinelerra-5.1/plugins/theme_hulk/data/autorange_bottom.png
new file mode 100644 (file)
index 0000000..642202a
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_hulk/data/autorange_bottom.png differ
diff --git a/cinelerra-5.1/plugins/theme_hulk/data/autorange_hi.png b/cinelerra-5.1/plugins/theme_hulk/data/autorange_hi.png
new file mode 100644 (file)
index 0000000..fd550d2
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_hulk/data/autorange_hi.png differ
diff --git a/cinelerra-5.1/plugins/theme_hulk/data/autorange_top.png b/cinelerra-5.1/plugins/theme_hulk/data/autorange_top.png
new file mode 100644 (file)
index 0000000..85bbf3a
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_hulk/data/autorange_top.png differ
diff --git a/cinelerra-5.1/plugins/theme_hulk/data/autorange_up.png b/cinelerra-5.1/plugins/theme_hulk/data/autorange_up.png
new file mode 100644 (file)
index 0000000..abfc475
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_hulk/data/autorange_up.png differ
index 218164722ff8665bd6aab8f4ced384f848c704bb..1922f850c4f88ff2338f9b9b2f87ace92cb04251 100644 (file)
@@ -575,6 +575,7 @@ void HULKTHEME::initialize()
 
        new_image_set("zoombar_menu", 3, "zoompopup_up.png", "zoompopup_hi.png", "zoompopup_dn.png");
        new_image_set("zoombar_tumbler", 4, "zoomtumble_up.png", "zoomtumble_hi.png", "zoomtumble_bottom.png", "zoomtumble_top.png");
+       new_image_set("auto_range", 4, "autorange_up.png", "autorange_hi.png", "autorange_bottom.png", "autorange_top.png");
 
        new_image_set("mode_popup", 3, "mode_up.png", "mode_hi.png", "mode_dn.png");
        new_image("mode_add", "mode_add.png");
diff --git a/cinelerra-5.1/plugins/theme_neophyte/data/autorange_bottom.png b/cinelerra-5.1/plugins/theme_neophyte/data/autorange_bottom.png
new file mode 100644 (file)
index 0000000..ad80e31
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_neophyte/data/autorange_bottom.png differ
diff --git a/cinelerra-5.1/plugins/theme_neophyte/data/autorange_hi.png b/cinelerra-5.1/plugins/theme_neophyte/data/autorange_hi.png
new file mode 100644 (file)
index 0000000..a29ac4e
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_neophyte/data/autorange_hi.png differ
diff --git a/cinelerra-5.1/plugins/theme_neophyte/data/autorange_top.png b/cinelerra-5.1/plugins/theme_neophyte/data/autorange_top.png
new file mode 100644 (file)
index 0000000..5e71371
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_neophyte/data/autorange_top.png differ
diff --git a/cinelerra-5.1/plugins/theme_neophyte/data/autorange_up.png b/cinelerra-5.1/plugins/theme_neophyte/data/autorange_up.png
new file mode 100644 (file)
index 0000000..4d9ea33
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_neophyte/data/autorange_up.png differ
index 827ef45f004a56aed567749da5340d64cf4159ab..0ec9ad120dad9da814dbd1ed291954bf3bdd248f 100644 (file)
@@ -712,6 +712,11 @@ void NEOPHYTETHEME::initialize()
                                  "zoomtumble_hi.png",
                                  "zoomtumble_bottom.png",
                                  "zoomtumble_top.png");
+       new_image_set("auto_range", 4,
+                                 "autorange_up.png",
+                                 "autorange_hi.png",
+                                 "autorange_bottom.png",
+                                 "autorange_top.png");
 
        new_image_set("mode_popup", 3,
                                  "mode_up.png", "mode_hi.png", "mode_dn.png");
diff --git a/cinelerra-5.1/plugins/theme_pinklady/data/autorange_bottom.png b/cinelerra-5.1/plugins/theme_pinklady/data/autorange_bottom.png
new file mode 100644 (file)
index 0000000..84b659d
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_pinklady/data/autorange_bottom.png differ
diff --git a/cinelerra-5.1/plugins/theme_pinklady/data/autorange_hi.png b/cinelerra-5.1/plugins/theme_pinklady/data/autorange_hi.png
new file mode 100644 (file)
index 0000000..07be4db
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_pinklady/data/autorange_hi.png differ
diff --git a/cinelerra-5.1/plugins/theme_pinklady/data/autorange_top.png b/cinelerra-5.1/plugins/theme_pinklady/data/autorange_top.png
new file mode 100644 (file)
index 0000000..b9d1038
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_pinklady/data/autorange_top.png differ
diff --git a/cinelerra-5.1/plugins/theme_pinklady/data/autorange_up.png b/cinelerra-5.1/plugins/theme_pinklady/data/autorange_up.png
new file mode 100644 (file)
index 0000000..84a6ebc
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_pinklady/data/autorange_up.png differ
index a2e6b319dbeaf265e59a2ef190f3cd7d00e3a73c..4082149cac4a4183826d3f60e97ab99c466aa00f 100644 (file)
@@ -575,6 +575,7 @@ void PINKLADY::initialize()
 
        new_image_set("zoombar_menu", 3, "zoompopup_up.png", "zoompopup_hi.png", "zoompopup_dn.png");
        new_image_set("zoombar_tumbler", 4, "zoomtumble_up.png", "zoomtumble_hi.png", "zoomtumble_bottom.png", "zoomtumble_top.png");
+       new_image_set("auto_range", 4, "autorange_up.png", "autorange_hi.png", "autorange_bottom.png", "autorange_top.png");
 
        new_image_set("mode_popup", 3, "mode_up.png", "mode_hi.png", "mode_dn.png");
        new_image("mode_add", "mode_add.png");
diff --git a/cinelerra-5.1/plugins/theme_suv/data/autorange_bottom.png b/cinelerra-5.1/plugins/theme_suv/data/autorange_bottom.png
new file mode 100644 (file)
index 0000000..07e3441
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_suv/data/autorange_bottom.png differ
diff --git a/cinelerra-5.1/plugins/theme_suv/data/autorange_hi..png b/cinelerra-5.1/plugins/theme_suv/data/autorange_hi..png
new file mode 100644 (file)
index 0000000..fe59edb
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_suv/data/autorange_hi..png differ
diff --git a/cinelerra-5.1/plugins/theme_suv/data/autorange_hi.png b/cinelerra-5.1/plugins/theme_suv/data/autorange_hi.png
new file mode 100644 (file)
index 0000000..fe59edb
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_suv/data/autorange_hi.png differ
diff --git a/cinelerra-5.1/plugins/theme_suv/data/autorange_top.png b/cinelerra-5.1/plugins/theme_suv/data/autorange_top.png
new file mode 100644 (file)
index 0000000..cbb034d
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_suv/data/autorange_top.png differ
diff --git a/cinelerra-5.1/plugins/theme_suv/data/autorange_up.png b/cinelerra-5.1/plugins/theme_suv/data/autorange_up.png
new file mode 100644 (file)
index 0000000..8590601
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_suv/data/autorange_up.png differ
index 8b0e702c01eef55da97945450d944520aeb8138a..a4f8cedaca452232c5d95a8e38cb82d647c16e9e 100644 (file)
@@ -571,6 +571,7 @@ void SUV::initialize()
 
        new_image_set("zoombar_menu", 3, "zoompopup_up.png", "zoompopup_hi.png", "zoompopup_dn.png");
        new_image_set("zoombar_tumbler", 4, "zoomtumble_up.png", "zoomtumble_hi.png", "zoomtumble_bottom.png", "zoomtumble_top.png");
+       new_image_set("auto_range", 4, "autorange_up.png", "autorange_hi.png", "autorange_bottom.png", "autorange_top.png");
        new_image_set("plugin_on", 5, "plugin_on.png", "plugin_onhi.png", "plugin_onselect.png", "plugin_ondn.png", "plugin_onselecthi.png");
        new_image_set("plugin_show", 5, "plugin_show.png", "plugin_showhi.png", "plugin_showselect.png", "plugin_showdn.png", "plugin_showselecthi.png");
 
diff --git a/cinelerra-5.1/plugins/theme_unflat/data/autorange_bottom.png b/cinelerra-5.1/plugins/theme_unflat/data/autorange_bottom.png
new file mode 100644 (file)
index 0000000..fd4cc5a
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_unflat/data/autorange_bottom.png differ
diff --git a/cinelerra-5.1/plugins/theme_unflat/data/autorange_hi.png b/cinelerra-5.1/plugins/theme_unflat/data/autorange_hi.png
new file mode 100644 (file)
index 0000000..f3c2420
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_unflat/data/autorange_hi.png differ
diff --git a/cinelerra-5.1/plugins/theme_unflat/data/autorange_top.png b/cinelerra-5.1/plugins/theme_unflat/data/autorange_top.png
new file mode 100644 (file)
index 0000000..cb18502
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_unflat/data/autorange_top.png differ
diff --git a/cinelerra-5.1/plugins/theme_unflat/data/autorange_up.png b/cinelerra-5.1/plugins/theme_unflat/data/autorange_up.png
new file mode 100644 (file)
index 0000000..171e2a5
Binary files /dev/null and b/cinelerra-5.1/plugins/theme_unflat/data/autorange_up.png differ
index ac19da3713b0fea84b41a285e18eb626830948c7..576b9bbe14f57fc102ec4bc636d8278c45481808 100644 (file)
@@ -576,6 +576,7 @@ void UNFLATTHEME::initialize()
 
        new_image_set("zoombar_menu", 3, "zoompopup_up.png", "zoompopup_hi.png", "zoompopup_dn.png");
        new_image_set("zoombar_tumbler", 4, "zoomtumble_up.png", "zoomtumble_hi.png", "zoomtumble_bottom.png", "zoomtumble_top.png");
+       new_image_set("auto_range", 4, "autorange_up.png", "autorange_hi.png", "autorange_bottom.png", "autorange_top.png");
 
        new_image_set("mode_popup", 3, "mode_up.png", "mode_hi.png", "mode_dn.png");
        new_image("mode_add", "mode_add.png");
index aeb0a3efe46d08953f0a6e70285ebc186111013f..1e7e2b6dc3ce7d8c68141d36adb0e025e9bc1065 100644 (file)
@@ -8,7 +8,7 @@ msgstr ""
 "Project-Id-Version: Cinelerra 5.1\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2016-10-15 14:02-0600\n"
-"PO-Revision-Date: 2020-08-26 00:03+0200\n"
+"PO-Revision-Date: 2020-09-06 08:00+0200\n"
 "Last-Translator: Sergio Daniel Gomez <sergio.sgsistemas@gmail.com>\n"
 "Language-Team: SPANISH <LL@li.org>\n"
 "Language: es\n"
@@ -46,16 +46,26 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-09-03 16:31-0600\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
 
 #: guicast/bcbutton.C:266 guicast/bcbutton.C:274 guicast/bcbutton.C:494
-#: cinelerra/preferencesthread.C:672
+#: cinelerra/preferencesthread.C:673
 msgid "OK"
 msgstr "OK"
 
 #: guicast/bcbutton.C:322 guicast/bcbutton.C:330 guicast/bcbutton.C:338
 #: guicast/bcbutton.C:521 guicast/bcbutton.C:523 guicast/bcbutton.C:530
 #: cinelerra/confirmquit.C:108 cinelerra/confirmquit.C:110
-#: cinelerra/preferencesthread.C:745 cinelerra/preferencesthread.C:747
+#: cinelerra/preferencesthread.C:746 cinelerra/preferencesthread.C:748
 msgid "Cancel"
 msgstr "Cancelar"
 
@@ -174,7 +184,7 @@ msgstr ": Borrar"
 msgid "File"
 msgstr "Archivo"
 
-#: guicast/bcfilebox.inc:48
+#: guicast/bcfilebox.inc:48 plugins/scale/scalewin.C:90
 msgid "Size"
 msgstr "Tamaño"
 
@@ -219,17 +229,17 @@ msgstr "Introducir un nuevo nombre para el archivo:"
 msgid "Conversion from %s to %s is not available\n"
 msgstr "La conversión de %s a %s no está disponible\n"
 
-#: guicast/bctextbox.C:2902 cinelerra/editpopup.C:192
+#: guicast/bctextbox.C:2902 cinelerra/editpopup.C:208
 msgid "Cut"
 msgstr "Cortar"
 
-#: guicast/bctextbox.C:2916 cinelerra/clippopup.C:247 cinelerra/editpopup.C:163
-#: cinelerra/mainmenu.C:894 cinelerra/proxypopup.C:205 cinelerra/savefile.C:131
+#: guicast/bctextbox.C:2916 cinelerra/clippopup.C:247 cinelerra/editpopup.C:179
+#: cinelerra/mainmenu.C:957 cinelerra/proxypopup.C:205 cinelerra/savefile.C:131
 msgid "Copy"
 msgstr "Copiar"
 
-#: guicast/bctextbox.C:2929 cinelerra/clippopup.C:280 cinelerra/editpopup.C:249
-#: cinelerra/mainmenu.C:907 cinelerra/proxypopup.C:238 cinelerra/swindow.C:553
+#: guicast/bctextbox.C:2929 cinelerra/clippopup.C:280 cinelerra/editpopup.C:266
+#: cinelerra/mainmenu.C:970 cinelerra/proxypopup.C:238 cinelerra/swindow.C:553
 msgid "Paste"
 msgstr "Pegar"
 
@@ -250,7 +260,7 @@ msgstr "%s: falló la inicialización de opengl\n"
 
 #: guicast/bcwindowbase.C:2429
 msgid " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
-msgstr ""
+msgstr " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
 
 #: guicast/test.C:165
 msgid ""
@@ -302,7 +312,7 @@ msgstr "Seg"
 msgid "Minutes:Seconds"
 msgstr "Minutos: Segundos"
 
-#: guicast/units.h:82 cinelerra/editpopup.C:344
+#: guicast/units.h:82 cinelerra/editpopup.C:361
 msgid "Timecode"
 msgstr "Código tiempo"
 
@@ -396,7 +406,7 @@ msgstr "Sigue la configuración de audio"
 
 #: cinelerra/adeviceprefs.C:648
 msgid "Server (blank for default):"
-msgstr ""
+msgstr "Servidor (En blanco por defecto):"
 
 #: cinelerra/amodule.C:269
 #, c-format
@@ -413,7 +423,7 @@ msgid "Plugin %d"
 msgstr "Plugin %d"
 
 #: cinelerra/apanel.C:86 cinelerra/gwindowgui.C:71
-#: cinelerra/keyframepopup.C:569 cinelerra/mainmenu.C:256
+#: cinelerra/keyframepopup.C:590 cinelerra/mainmenu.C:258
 msgid "Mute"
 msgstr "Silenciar"
 
@@ -421,25 +431,46 @@ msgstr "Silenciar"
 msgid "Play"
 msgstr "Reproducir"
 
-#: cinelerra/apatchgui.C:186 cinelerra/apatchgui.C:193
-#: cinelerra/vpatchgui.C:165 cinelerra/vpatchgui.C:172
+#: cinelerra/apatchgui.C:185 cinelerra/apatchgui.C:191
+#: cinelerra/vpatchgui.C:164 cinelerra/vpatchgui.C:170
 #: plugins/bluebanana/bluebananawindow.C:2121
 msgid "fade"
 msgstr "desvanecer"
 
-#: cinelerra/apatchgui.C:304 cinelerra/gwindowgui.C:79 cinelerra/mainmenu.C:258
+#: cinelerra/apatchgui.C:332 cinelerra/gwindowgui.C:79 cinelerra/mainmenu.C:260
 msgid "Pan"
 msgstr "Panorámica"
 
-#: cinelerra/apatchgui.C:314 cinelerra/apatchgui.C:322
+#: cinelerra/apatchgui.C:341 cinelerra/apatchgui.C:346
 msgid "pan"
 msgstr "panorámica"
 
-#: cinelerra/apatchgui.C:370 cinelerra/mixersalign.C:73
-#: cinelerra/mixersalign.C:188 cinelerra/vpatchgui.C:485
+#: cinelerra/apatchgui.C:392 cinelerra/mixersalign.C:73
+#: cinelerra/mixersalign.C:188 cinelerra/vpatchgui.C:509
 msgid "Mixer"
 msgstr "Mezclador"
 
+#: cinelerra/apatchgui.C:402 cinelerra/keyframepopup.C:773
+#: cinelerra/vpatchgui.C:519 plugins/crikey/crikeywindow.C:97
+#: plugins/descratch/descratch.C:705 plugins/edge/edge.C:74
+msgid "Edge"
+msgstr "Borde"
+
+#: cinelerra/apatchgui.C:406 cinelerra/keyframepopup.C:777
+#: cinelerra/vpatchgui.C:523
+msgid "Bump uses left edge"
+msgstr "Saltar usa el borde izquierdo"
+
+#: cinelerra/apatchgui.C:418 cinelerra/keyframepopup.C:789
+#: cinelerra/vpatchgui.C:535
+msgid "Span"
+msgstr "Abarcar"
+
+#: cinelerra/apatchgui.C:422 cinelerra/keyframepopup.C:793
+#: cinelerra/vpatchgui.C:539
+msgid "Bump spans to next"
+msgstr "El salto se extiende al siguiente"
+
 #: cinelerra/appearanceprefs.C:81
 msgid "Layout:"
 msgstr "Diseño:"
@@ -452,160 +483,164 @@ msgstr "Tema:"
 msgid "Plugin Icons:"
 msgstr "Complemento Íconos:"
 
-#: cinelerra/appearanceprefs.C:103
+#: cinelerra/appearanceprefs.C:98
+msgid "Language:"
+msgstr "Lenguaje:"
+
+#: cinelerra/appearanceprefs.C:108
 msgid "Layout Scale:"
 msgstr "Escala de diseño:"
 
-#: cinelerra/appearanceprefs.C:107
+#: cinelerra/appearanceprefs.C:112
 msgid "View thumbnail size:"
 msgstr "Tamaño de miniatura:"
 
-#: cinelerra/appearanceprefs.C:111
+#: cinelerra/appearanceprefs.C:116
 msgid "Vicon quality:"
 msgstr "Calidad de Vicon:"
 
-#: cinelerra/appearanceprefs.C:115
+#: cinelerra/appearanceprefs.C:120
 msgid "Vicon color mode:"
 msgstr "Modo de color de Vicon:"
 
-#: cinelerra/appearanceprefs.C:125
+#: cinelerra/appearanceprefs.C:130
 msgid "Time Format:"
 msgstr "Formato de Tiempo:"
 
-#: cinelerra/appearanceprefs.C:156
+#: cinelerra/appearanceprefs.C:161
 msgid "Frames per foot:"
 msgstr "Fotogramas por pie:"
 
-#: cinelerra/appearanceprefs.C:170 cinelerra/channeledit.C:1417
+#: cinelerra/appearanceprefs.C:175 cinelerra/channeledit.C:1417
 #: cinelerra/channeledit.C:1491 plugins/chromakey/chromakey.C:135
 #: plugins/chromakeyhsv/chromakey.C:187 plugins/sketcher/sketcherwindow.C:386
 #: plugins/sketcher/sketcherwindow.C:387 plugins/titler/titlerwindow.C:355
 msgid "Color:"
 msgstr "Color:"
 
-#: cinelerra/appearanceprefs.C:173
+#: cinelerra/appearanceprefs.C:178
 msgid "Highlighting Inversion color:"
 msgstr "Resaltando el color de inversión:"
 
-#: cinelerra/appearanceprefs.C:180
+#: cinelerra/appearanceprefs.C:185
 msgid "Composer BG Color:"
 msgstr "Color de fondo del compositor:"
 
-#: cinelerra/appearanceprefs.C:190
+#: cinelerra/appearanceprefs.C:195
 msgid "YUV color space:"
 msgstr "Espacio de color YUV:"
 
-#: cinelerra/appearanceprefs.C:196
+#: cinelerra/appearanceprefs.C:201
 msgid "YUV color range:"
 msgstr "Rango de color YUV:"
 
-#: cinelerra/appearanceprefs.C:207
+#: cinelerra/appearanceprefs.C:212
 msgid "Warnings:"
 msgstr "Advertencias:"
 
-#: cinelerra/appearanceprefs.C:225
+#: cinelerra/appearanceprefs.C:230
 msgid "Flags:"
 msgstr "Banderines:"
 
-#: cinelerra/appearanceprefs.C:489
+#: cinelerra/appearanceprefs.C:530
 msgid "Use thumbnails in resource window"
 msgstr "Usar miniaturas en la ventana de recursos"
 
-#: cinelerra/appearanceprefs.C:550 plugins/descratch/descratch.C:625
+#: cinelerra/appearanceprefs.C:591 plugins/descratch/descratch.C:625
 msgid "Low"
 msgstr "Bajo"
 
-#: cinelerra/appearanceprefs.C:551
+#: cinelerra/appearanceprefs.C:592
 msgid "Med"
 msgstr "Medio"
 
-#: cinelerra/appearanceprefs.C:552 plugins/descratch/descratch.C:626
+#: cinelerra/appearanceprefs.C:593 plugins/descratch/descratch.C:626
 msgid "High"
 msgstr "Intenso"
 
-#: cinelerra/appearanceprefs.C:587
+#: cinelerra/appearanceprefs.C:628
 msgid "Show tip of the day"
-msgstr "ver consejo del día"
+msgstr "Ver consejo del día"
 
-#: cinelerra/appearanceprefs.C:600
+#: cinelerra/appearanceprefs.C:641
 msgid "ffmpeg probe warns rebuild indexes"
 msgstr "ffmpeg advertirá recarga de archivos"
 
-#: cinelerra/appearanceprefs.C:613
+#: cinelerra/appearanceprefs.C:654
 msgid "EDL version warns if mismatched"
 msgstr "EDL advierte si no coinciden las versiones"
 
-#: cinelerra/appearanceprefs.C:626
+#: cinelerra/appearanceprefs.C:667
 msgid "Create Bluray warns if not root"
 msgstr "Advertencias de Bluray si no se es root"
 
-#: cinelerra/appearanceprefs.C:639
+#: cinelerra/appearanceprefs.C:680
 msgid "Warn on creating file references"
 msgstr "Advertir sobre la creación de referencias de archivo"
 
-#: cinelerra/appearanceprefs.C:653
+#: cinelerra/appearanceprefs.C:694
 msgid "Popups activate on button up"
 msgstr "Las ventanas emergentes se activan al hacer click"
 
-#: cinelerra/appearanceprefs.C:666
+#: cinelerra/appearanceprefs.C:707
 msgid "Set Input Focus when window entered"
 msgstr "Establecer el enfoque cuando se pone sobre la ventana"
 
-#: cinelerra/appearanceprefs.C:679
+#: cinelerra/appearanceprefs.C:720
 msgid "Click to activate text focus"
 msgstr "Clic para activar foco en texto"
 
-#: cinelerra/appearanceprefs.C:695
+#: cinelerra/appearanceprefs.C:736
 msgid "Click to deactivate text focus"
 msgstr "Click para desactivar foco en texto"
 
-#: cinelerra/appearanceprefs.C:711
+#: cinelerra/appearanceprefs.C:752
 msgid "Auto rotate ffmpeg media"
 msgstr "Auto rotar medios ffmpeg"
 
-#: cinelerra/appearanceprefs.C:724
+#: cinelerra/appearanceprefs.C:765
 msgid "Always show next frame"
 msgstr "Mostrar fotograma siguiente"
 
-#: cinelerra/appearanceprefs.C:737
+#: cinelerra/appearanceprefs.C:778
 msgid "Autocolor assets"
 msgstr "Colorear los Clips"
 
-#: cinelerra/appearanceprefs.C:769 plugins/colorspace/colorspacewindow.C:28
+#: cinelerra/appearanceprefs.C:810 plugins/colorspace/colorspacewindow.C:28
 msgid "BT601"
 msgstr "BT601"
 
-#: cinelerra/appearanceprefs.C:770 plugins/colorspace/colorspacewindow.C:29
+#: cinelerra/appearanceprefs.C:811 plugins/colorspace/colorspacewindow.C:29
 msgid "BT709"
 msgstr "BT709"
 
-#: cinelerra/appearanceprefs.C:771 plugins/colorspace/colorspacewindow.C:30
+#: cinelerra/appearanceprefs.C:812 plugins/colorspace/colorspacewindow.C:30
 msgid "BT2020"
 msgstr "BT2020"
 
-#: cinelerra/appearanceprefs.C:813 cinelerra/compresspopup.C:39
+#: cinelerra/appearanceprefs.C:854 cinelerra/compresspopup.C:39
 #: cinelerra/file.inc:112 plugins/colorspace/colorspacewindow.C:77
 msgid "JPEG"
 msgstr "JPEG"
 
-#: cinelerra/appearanceprefs.C:814 cinelerra/file.inc:116
+#: cinelerra/appearanceprefs.C:855 cinelerra/file.inc:116
 #: plugins/colorspace/colorspacewindow.C:78
 msgid "MPEG"
 msgstr "MPEG"
 
-#: cinelerra/appearanceprefs.C:856
+#: cinelerra/appearanceprefs.C:897
 msgid "Perpetual session"
 msgstr "Abrir última sesión"
 
-#: cinelerra/appearanceprefs.C:869
+#: cinelerra/appearanceprefs.C:910
 msgid "Clears before toggle"
 msgstr "No acumular seleccionados"
 
-#: cinelerra/appearanceprefs.C:882
+#: cinelerra/appearanceprefs.C:923
 msgid "Timeline Rectify Audio"
 msgstr "Ver audio como picos"
 
-#: cinelerra/appearanceprefs.C:895
+#: cinelerra/appearanceprefs.C:936
 msgid "Composer BG color"
 msgstr "Color de fondo del compositor"
 
@@ -728,7 +763,7 @@ msgstr "frms"
 
 #: cinelerra/assetedit.C:548
 msgid "Time Code Start:"
-msgstr "Inicio Códio Tiempo"
+msgstr "Inicio del Código Tiempo:"
 
 #: cinelerra/assetedit.C:754
 msgid "Detail"
@@ -764,12 +799,12 @@ msgid "Info..."
 msgstr "Información..."
 
 #: cinelerra/assetpopup.C:204 cinelerra/clippopup.C:451
-#: cinelerra/editpopup.C:102
+#: cinelerra/editpopup.C:103
 msgid "Open EDL"
 msgstr "Abrir EDL"
 
-#: cinelerra/assetpopup.C:226 cinelerra/editpopup.C:120
-#: cinelerra/mwindow.C:2137
+#: cinelerra/assetpopup.C:226 cinelerra/editpopup.C:121
+#: cinelerra/mwindow.C:2144
 #, c-format
 msgid ""
 "Error: unable to open:\n"
@@ -778,8 +813,8 @@ msgstr ""
 "Error: no se puede abrir:\n"
 " %s"
 
-#: cinelerra/assetpopup.C:232 cinelerra/editpopup.C:126
-#: cinelerra/mwindow.C:2162
+#: cinelerra/assetpopup.C:232 cinelerra/editpopup.C:127
+#: cinelerra/mwindow.C:2169
 #, c-format
 msgid ""
 "Error: unable to load:\n"
@@ -788,7 +823,7 @@ msgstr ""
 "Error: no se puede cargar:\n"
 " %s"
 
-#: cinelerra/assetpopup.C:244 cinelerra/mwindow.C:4030
+#: cinelerra/assetpopup.C:244 cinelerra/mwindow.C:4037
 #, c-format
 msgid ""
 "media is not EDL:\n"
@@ -798,7 +833,7 @@ msgstr ""
 "%s"
 
 #: cinelerra/assetpopup.C:250 cinelerra/clippopup.C:474
-#: cinelerra/mwindowgui.C:2358
+#: cinelerra/mwindowgui.C:2388
 msgid "Close EDL"
 msgstr "Cerrar EDL"
 
@@ -815,7 +850,7 @@ msgid "Sort"
 msgstr "Ordenar"
 
 #: cinelerra/assetpopup.C:328 cinelerra/clippopup.C:191
-#: cinelerra/mainmenu.C:251 cinelerra/proxypopup.C:149
+#: cinelerra/mainmenu.C:253 cinelerra/proxypopup.C:149
 msgid "View"
 msgstr "Ver"
 
@@ -870,7 +905,7 @@ msgid "Unused"
 msgstr "No usado"
 
 #: cinelerra/assetpopup.C:544 cinelerra/channeledit.C:153
-#: cinelerra/ffmpeg.C:1996 cinelerra/ffmpeg.C:2043 cinelerra/fileexr.C:186
+#: cinelerra/ffmpeg.C:2034 cinelerra/ffmpeg.C:2081 cinelerra/fileexr.C:186
 #: cinelerra/fileffmpeg.C:596 cinelerra/fileffmpeg.C:767
 #: cinelerra/filetiff.C:118 cinelerra/proxypopup.C:317
 #: cinelerra/recordbatches.C:309 cinelerra/recordgui.C:323
@@ -1086,7 +1121,7 @@ msgstr "Objectivo de origen"
 msgid "No Play"
 msgstr "No Reproducir"
 
-#: cinelerra/awindowgui.C:972 cinelerra/awindowgui.C:1031
+#: cinelerra/awindowgui.C:949 cinelerra/awindowgui.C:1031
 #, c-format
 msgid "Reading %s"
 msgstr "Leyendo %s"
@@ -1259,8 +1294,8 @@ msgstr "Sin Tiempo"
 msgid "Timed"
 msgstr "Cronometrado"
 
-#: cinelerra/batch.C:141 cinelerra/batchrender.C:964 cinelerra/ffmpeg.C:3290
-#: cinelerra/ffmpeg.C:3402 cinelerra/file.C:1307 cinelerra/file.C:1334
+#: cinelerra/batch.C:141 cinelerra/batchrender.C:964 cinelerra/ffmpeg.C:3324
+#: cinelerra/ffmpeg.C:3436 cinelerra/file.C:1307 cinelerra/file.C:1334
 #: cinelerra/interfaceprefs.C:551 cinelerra/interlacemodes.h:27
 #: cinelerra/loadmode.C:116 cinelerra/new.C:873 cinelerra/record.C:741
 #: cinelerra/vdeviceprefs.C:659 plugins/motion2point/motionwindow.C:791
@@ -1393,8 +1428,8 @@ msgid "New"
 msgstr "Nuevo"
 
 #: cinelerra/batchrender.C:1056 cinelerra/channeledit.C:577
-#: cinelerra/clippopup.C:340 cinelerra/cwindowtool.C:2037
-#: cinelerra/cwindowtool.C:2091 cinelerra/dbwindow.C:240
+#: cinelerra/clippopup.C:340 cinelerra/cwindowtool.C:2045
+#: cinelerra/cwindowtool.C:2099 cinelerra/dbwindow.C:240
 #: cinelerra/keyframegui.C:756 cinelerra/labelpopup.C:87
 #: cinelerra/recordbatches.C:487 plugins/piano/piano.C:835
 #: plugins/synthesizer/synthesizer.C:1311
@@ -1571,7 +1606,6 @@ msgstr "Formato:"
 
 #: cinelerra/bdcreate.C:786 cinelerra/dvdcreate.C:926
 #: cinelerra/resizetrackthread.C:125 plugins/pitch/pitch.C:418
-#: plugins/scale/scalewin.C:52
 msgid "Scale:"
 msgstr "Escala:"
 
@@ -1747,12 +1781,12 @@ msgstr "Valor"
 msgid "Add"
 msgstr "Agregar"
 
-#: cinelerra/binfolder.C:1635 cinelerra/mainmenu.C:949
+#: cinelerra/binfolder.C:1635 cinelerra/mainmenu.C:1012
 #: cinelerra/shbtnprefs.C:172
 msgid "Del"
 msgstr "Supr"
 
-#: cinelerra/binfolder.C:1655 cinelerra/cwindowtool.C:496
+#: cinelerra/binfolder.C:1655 cinelerra/cwindowtool.C:514
 #: cinelerra/fileffmpeg.C:1222 cinelerra/fileffmpeg.C:1627
 #: cinelerra/keyframegui.C:794 cinelerra/loadfile.C:192
 #: cinelerra/mixersalign.C:428 cinelerra/mixersalign.C:436
@@ -1760,7 +1794,7 @@ msgstr "Supr"
 #: cinelerra/plugindialog.C:477 cinelerra/pluginfclient.C:223
 #: cinelerra/pluginfclient.C:575 cinelerra/pluginfclient.C:606
 #: cinelerra/pluginlv2gui.C:98 cinelerra/pluginlv2gui.C:225
-#: cinelerra/preferencesthread.C:644 cinelerra/preferencesthread.C:646
+#: cinelerra/preferencesthread.C:645 cinelerra/preferencesthread.C:647
 #: cinelerra/setformat.C:800
 msgid "Apply"
 msgstr "Aplicar"
@@ -2655,7 +2689,7 @@ msgstr "Zoom"
 msgid "Crop Video..."
 msgstr "Recortar Vídeo..."
 
-#: cinelerra/cropvideo.C:97 cinelerra/cwindowtool.C:568
+#: cinelerra/cropvideo.C:97 cinelerra/cwindowtool.C:586
 msgid ": Crop"
 msgstr ": Recortar"
 
@@ -2683,11 +2717,11 @@ msgstr "Mostrar controles"
 msgid "Hide controls"
 msgstr "Ocultar controles"
 
-#: cinelerra/cwindowgui.C:1832 cinelerra/cwindowgui.C:3381
+#: cinelerra/cwindowgui.C:1832 cinelerra/cwindowgui.C:3385
 msgid "mask rotate"
 msgstr "rotación de máscara"
 
-#: cinelerra/cwindowgui.C:1836 cinelerra/cwindowgui.C:3385
+#: cinelerra/cwindowgui.C:1836 cinelerra/cwindowgui.C:3389
 msgid "mask scale"
 msgstr "escalar máscara"
 
@@ -2699,8 +2733,8 @@ msgstr "máscara convertir"
 msgid "mask adjust"
 msgstr "ajuste de máscara"
 
-#: cinelerra/cwindowgui.C:1864 cinelerra/cwindowtool.C:3075
-#: cinelerra/cwindowtool.C:3102
+#: cinelerra/cwindowgui.C:1864 cinelerra/cwindowtool.C:3083
+#: cinelerra/cwindowtool.C:3110
 msgid "mask point"
 msgstr "punto de máscara"
 
@@ -2708,29 +2742,29 @@ msgstr "punto de máscara"
 msgid "Eyedrop"
 msgstr "Eyedrop"
 
-#: cinelerra/cwindowgui.C:3103 cinelerra/cwindowgui.C:3364
-#: cinelerra/cwindowtool.C:1010 cinelerra/cwindowtool.C:1058
-#: cinelerra/cwindowtool.C:1124 cinelerra/cwindowtool.C:1128
-#: cinelerra/cwindowtool.C:1155 cinelerra/cwindowtool.C:1159
-#: cinelerra/cwindowtool.C:1192 cinelerra/cwindowtool.C:1197
-#: cinelerra/cwindowtool.C:1231 cinelerra/cwindowtool.C:1236
-#: cinelerra/cwindowtool.C:1261 cinelerra/cwindowtool.C:1265
-#: cinelerra/cwindowtool.C:1298 cinelerra/cwindowtool.C:1303
+#: cinelerra/cwindowgui.C:3107 cinelerra/cwindowgui.C:3368
+#: cinelerra/cwindowtool.C:1034 cinelerra/cwindowtool.C:1041
+#: cinelerra/cwindowtool.C:1120 cinelerra/cwindowtool.C:1124
+#: cinelerra/cwindowtool.C:1151 cinelerra/cwindowtool.C:1155
+#: cinelerra/cwindowtool.C:1188 cinelerra/cwindowtool.C:1193
+#: cinelerra/cwindowtool.C:1227 cinelerra/cwindowtool.C:1232
+#: cinelerra/cwindowtool.C:1257 cinelerra/cwindowtool.C:1261
+#: cinelerra/cwindowtool.C:1294 cinelerra/cwindowtool.C:1299
 msgid "camera"
 msgstr "cámara"
 
-#: cinelerra/cwindowgui.C:3105 cinelerra/cwindowgui.C:3368
-#: cinelerra/cwindowtool.C:1423 cinelerra/cwindowtool.C:1469
-#: cinelerra/cwindowtool.C:1524 cinelerra/cwindowtool.C:1529
-#: cinelerra/cwindowtool.C:1553 cinelerra/cwindowtool.C:1557
-#: cinelerra/cwindowtool.C:1583 cinelerra/cwindowtool.C:1588
-#: cinelerra/cwindowtool.C:1614 cinelerra/cwindowtool.C:1619
-#: cinelerra/cwindowtool.C:1643 cinelerra/cwindowtool.C:1647
-#: cinelerra/cwindowtool.C:1673 cinelerra/cwindowtool.C:1678
+#: cinelerra/cwindowgui.C:3109 cinelerra/cwindowgui.C:3372
+#: cinelerra/cwindowtool.C:1457 cinelerra/cwindowtool.C:1464
+#: cinelerra/cwindowtool.C:1532 cinelerra/cwindowtool.C:1537
+#: cinelerra/cwindowtool.C:1561 cinelerra/cwindowtool.C:1565
+#: cinelerra/cwindowtool.C:1591 cinelerra/cwindowtool.C:1596
+#: cinelerra/cwindowtool.C:1622 cinelerra/cwindowtool.C:1627
+#: cinelerra/cwindowtool.C:1651 cinelerra/cwindowtool.C:1655
+#: cinelerra/cwindowtool.C:1681 cinelerra/cwindowtool.C:1686
 msgid "projector"
 msgstr "proyector"
 
-#: cinelerra/cwindowgui.C:3377
+#: cinelerra/cwindowgui.C:3381
 msgid "mask"
 msgstr "máscara"
 
@@ -2738,280 +2772,314 @@ msgstr "máscara"
 msgid "Auto"
 msgstr "Auto"
 
-#: cinelerra/cwindowtool.C:519
+#: cinelerra/cwindowtool.C:537
 msgid "Reformat"
 msgstr "Reformatear"
 
-#: cinelerra/cwindowtool.C:520 cinelerra/resizetrackthread.C:339
+#: cinelerra/cwindowtool.C:538 cinelerra/resizetrackthread.C:339
 #: cinelerra/scale.C:90
 msgid "Resize"
 msgstr "Cambiar el tamaño"
 
-#: cinelerra/cwindowtool.C:521
+#: cinelerra/cwindowtool.C:539
 msgid "Shrink"
 msgstr "Encoger"
 
-#: cinelerra/cwindowtool.C:591 plugins/boxblur/boxblur.C:467
-#: plugins/titler/titlerwindow.C:294 plugins/titler/titlerwindow.C:308
+#: cinelerra/cwindowtool.C:609 plugins/boxblur/boxblur.C:467
+#: plugins/scale/scalewin.C:93 plugins/titler/titlerwindow.C:294
+#: plugins/titler/titlerwindow.C:308
 msgid "W:"
 msgstr "An:"
 
-#: cinelerra/cwindowtool.C:615 plugins/boxblur/boxblur.C:474
-#: plugins/titler/titlerwindow.C:295 plugins/titler/titlerwindow.C:313
+#: cinelerra/cwindowtool.C:633 plugins/boxblur/boxblur.C:474
+#: plugins/scale/scalewin.C:101 plugins/titler/titlerwindow.C:295
+#: plugins/titler/titlerwindow.C:313
 msgid "H:"
 msgstr "Al:"
 
-#: cinelerra/cwindowtool.C:679
+#: cinelerra/cwindowtool.C:697
 msgid ": Color"
 msgstr ": Color"
 
-#: cinelerra/cwindowtool.C:696
+#: cinelerra/cwindowtool.C:714
 msgid "X,Y:"
 msgstr "X,Y:"
 
-#: cinelerra/cwindowtool.C:698 plugins/blur/blurwindow.C:61
+#: cinelerra/cwindowtool.C:716 plugins/blur/blurwindow.C:61
 #: plugins/lens/lens.C:492 plugins/oilpainting/oil.C:304
 #: plugins/spherecam/spherecam.C:319 plugins/tracer/tracerwindow.C:156
 #: plugins/unsharp/unsharpwindow.C:48 plugins/zoomblur/zoomblur.C:161
 msgid "Radius:"
 msgstr "Radio:"
 
-#: cinelerra/cwindowtool.C:701
+#: cinelerra/cwindowtool.C:719
 msgid "Red:"
 msgstr "Rojo:"
 
-#: cinelerra/cwindowtool.C:703
+#: cinelerra/cwindowtool.C:721
 msgid "Green:"
 msgstr "Verde:"
 
-#: cinelerra/cwindowtool.C:705
+#: cinelerra/cwindowtool.C:723
 msgid "Blue:"
 msgstr "Azul:"
 
-#: cinelerra/cwindowtool.C:828
+#: cinelerra/cwindowtool.C:843
 msgid "\"smooth\" Curve on current Camera Keyframes"
-msgstr "\"suavizar \" Curva en actual fotograma de cámara"
+msgstr "Fotograma clave de cámara tipo SUAVE"
 
-#: cinelerra/cwindowtool.C:834
+#: cinelerra/cwindowtool.C:845
 msgid "\"linear\" Curve on current Camera Keyframes"
-msgstr "\"lineal\" Curva en actual fotograma de cámara"
+msgstr "Fotograma clave de cámara tipo LINEAL"
+
+#: cinelerra/cwindowtool.C:847
+msgid "\"tangent\" Curve on current Camera Keyframes"
+msgstr "Fotograma clave de cámara tipo TANGENTE"
 
-#: cinelerra/cwindowtool.C:840
+#: cinelerra/cwindowtool.C:849
+msgid "\"free\" Curve on current Camera Keyframes"
+msgstr "Fotograma clave de cámara tipo LIBRE"
+
+#: cinelerra/cwindowtool.C:851
+msgid "\"bump\" Curve on current Camera Keyframes"
+msgstr "Fotograma clave de cámara tipo SALTO"
+
+#: cinelerra/cwindowtool.C:854
 msgid "\"smooth\" Curve on current Projector Keyframes"
-msgstr "\"suavizar \" Curva en actual fotograma de proyector"
+msgstr "Fotograma clave de proyector tipo SUAVE"
 
-#: cinelerra/cwindowtool.C:846
+#: cinelerra/cwindowtool.C:856
 msgid "\"linear\" Curve on current Projector Keyframes"
-msgstr "\"lineal\" Curva en actual fotograma de proyector"
+msgstr "Fotograma clave de proyector tipo LINEAL"
+
+#: cinelerra/cwindowtool.C:858
+msgid "\"tangent\" Curve on current Projector Keyframes"
+msgstr "Fotograma clave de proyector tipo TANGENTE"
+
+#: cinelerra/cwindowtool.C:860
+msgid "\"free\" Curve on current Projector Keyframes"
+msgstr "Fotograma clave de proyector tipo LIBRE"
+
+#: cinelerra/cwindowtool.C:862
+msgid "\"bump\" Curve on current Projector Keyframes"
+msgstr "Fotograma clave de proyector tipo SALTO"
 
-#: cinelerra/cwindowtool.C:912
+#: cinelerra/cwindowtool.C:929
 msgid "Use maximum"
 msgstr "Usar el máximo"
 
-#: cinelerra/cwindowtool.C:928
+#: cinelerra/cwindowtool.C:945
 msgid ": Camera"
 msgstr ": Cámara"
 
-#: cinelerra/cwindowtool.C:956 cinelerra/cwindowtool.C:1369
+#: cinelerra/cwindowtool.C:974 cinelerra/cwindowtool.C:1398
 msgid "expand X range"
 msgstr "ampliar rango X"
 
-#: cinelerra/cwindowtool.C:962 cinelerra/cwindowtool.C:1375
+#: cinelerra/cwindowtool.C:980 cinelerra/cwindowtool.C:1404
 msgid "expand Y range"
 msgstr "ampliar rango Y"
 
-#: cinelerra/cwindowtool.C:970 cinelerra/cwindowtool.C:1381
+#: cinelerra/cwindowtool.C:988 cinelerra/cwindowtool.C:1410
 msgid "expand Zoom range"
 msgstr "ampliar rango de Zoom"
 
-#: cinelerra/cwindowtool.C:1103 cinelerra/cwindowtool.C:1511
+#: cinelerra/cwindowtool.C:1099 cinelerra/cwindowtool.C:1519
 msgid "Left justify"
 msgstr "Justificar izquierda"
 
-#: cinelerra/cwindowtool.C:1143 cinelerra/cwindowtool.C:1541
+#: cinelerra/cwindowtool.C:1139 cinelerra/cwindowtool.C:1549
 msgid "Center horizontal"
 msgstr "Central horizontal"
 
-#: cinelerra/cwindowtool.C:1171 cinelerra/cwindowtool.C:1569
+#: cinelerra/cwindowtool.C:1167 cinelerra/cwindowtool.C:1577
 msgid "Right justify"
 msgstr "Justificar derecha"
 
-#: cinelerra/cwindowtool.C:1210 cinelerra/cwindowtool.C:1600
+#: cinelerra/cwindowtool.C:1206 cinelerra/cwindowtool.C:1608
 msgid "Top justify"
 msgstr "Justificar arriba"
 
-#: cinelerra/cwindowtool.C:1249 cinelerra/cwindowtool.C:1631
+#: cinelerra/cwindowtool.C:1245 cinelerra/cwindowtool.C:1639
 msgid "Center vertical"
 msgstr "Vertical centro"
 
-#: cinelerra/cwindowtool.C:1277 cinelerra/cwindowtool.C:1659
+#: cinelerra/cwindowtool.C:1273 cinelerra/cwindowtool.C:1667
 msgid "Bottom justify"
 msgstr "Justificar abajo"
 
-#: cinelerra/cwindowtool.C:1316
+#: cinelerra/cwindowtool.C:1312
 msgid "Add Keyframe: Shift-F11"
 msgstr "Agregar fotograma clave: Mayús-F11"
 
-#: cinelerra/cwindowtool.C:1330
+#: cinelerra/cwindowtool.C:1326
 msgid "Reset Camera: F11"
 msgstr "Restablecer la cámara: F11"
 
 #: cinelerra/cwindowtool.C:1340
+msgid "Bump edit edge left/right"
+msgstr "Borde de edición del salto izquierda/derecha"
+
+#: cinelerra/cwindowtool.C:1356
+msgid "Bump spans to next/prev"
+msgstr "El salto se extiende al siguiente/anterior"
+
+#: cinelerra/cwindowtool.C:1368
 msgid ": Projector"
 msgstr ": Proyector"
 
-#: cinelerra/cwindowtool.C:1690
+#: cinelerra/cwindowtool.C:1698
 msgid "Add Keyframe: Shift-F12"
 msgstr "Agregar fotograma clave: Mayús-F12"
 
-#: cinelerra/cwindowtool.C:1704
+#: cinelerra/cwindowtool.C:1712
 msgid "Reset Projector: F12"
 msgstr "Restablecer proyector: F12"
 
-#: cinelerra/cwindowtool.C:1971 cinelerra/cwindowtool.C:1979
+#: cinelerra/cwindowtool.C:1979 cinelerra/cwindowtool.C:1987
 msgid "mask enable"
 msgstr "activar máscara"
 
-#: cinelerra/cwindowtool.C:1990
+#: cinelerra/cwindowtool.C:1998
 msgid "Show/Hide mask"
 msgstr "Mostrar/Ocultar máscaras"
 
-#: cinelerra/cwindowtool.C:1997 cinelerra/cwindowtool.C:2006
+#: cinelerra/cwindowtool.C:2005 cinelerra/cwindowtool.C:2014
 msgid "mask enables"
 msgstr "habilitar máscara"
 
-#: cinelerra/cwindowtool.C:2013 cinelerra/cwindowtool.C:2031
+#: cinelerra/cwindowtool.C:2021 cinelerra/cwindowtool.C:2039
 msgid "Solo"
 msgstr "Solo"
 
-#: cinelerra/cwindowtool.C:2017
+#: cinelerra/cwindowtool.C:2025
 msgid "Solo video track"
 msgstr "Única pista de video"
 
-#: cinelerra/cwindowtool.C:2041
+#: cinelerra/cwindowtool.C:2049
 msgid "Delete mask"
 msgstr "Eliminar la máscara de la pista seleccionada"
 
-#: cinelerra/cwindowtool.C:2057 cinelerra/cwindowtool.C:2083
+#: cinelerra/cwindowtool.C:2065 cinelerra/cwindowtool.C:2091
 msgid "mask delete"
 msgstr "eliminar máscara"
 
-#: cinelerra/cwindowtool.C:2095
+#: cinelerra/cwindowtool.C:2103
 msgid "Delete point"
 msgstr "Eliminar Punto"
 
-#: cinelerra/cwindowtool.C:2110 cinelerra/cwindowtool.C:2152
+#: cinelerra/cwindowtool.C:2118 cinelerra/cwindowtool.C:2160
 msgid "point delete"
 msgstr "eliminar punto"
 
-#: cinelerra/cwindowtool.C:2201 cinelerra/cwindowtool.C:2223
+#: cinelerra/cwindowtool.C:2209 cinelerra/cwindowtool.C:2231
 msgid "Focus"
 msgstr "Pivote"
 
-#: cinelerra/cwindowtool.C:2205
+#: cinelerra/cwindowtool.C:2213
 msgid "Center for rotate/scale"
 msgstr "Punto de pivote para escalar o rotar"
 
-#: cinelerra/cwindowtool.C:2251 plugins/sketcher/sketcherwindow.C:1425
+#: cinelerra/cwindowtool.C:2259 plugins/sketcher/sketcherwindow.C:1425
 msgid "Help"
 msgstr "Ayuda"
 
-#: cinelerra/cwindowtool.C:2255 plugins/sketcher/sketcherwindow.C:1429
+#: cinelerra/cwindowtool.C:2263 plugins/sketcher/sketcherwindow.C:1429
 msgid "Show help text"
 msgstr "Mostrar texto de ayuda"
 
-#: cinelerra/cwindowtool.C:2272
+#: cinelerra/cwindowtool.C:2280
 msgid "Markers"
 msgstr "Ver puntos"
 
-#: cinelerra/cwindowtool.C:2292
+#: cinelerra/cwindowtool.C:2300
 msgid "Boundary"
 msgstr "Ver contorno"
 
-#: cinelerra/cwindowtool.C:2341 cinelerra/cwindowtool.C:2368
+#: cinelerra/cwindowtool.C:2349 cinelerra/cwindowtool.C:2376
 msgid "mask feather"
 msgstr "máscara pluma"
 
-#: cinelerra/cwindowtool.C:2472 cinelerra/cwindowtool.C:2500
+#: cinelerra/cwindowtool.C:2480 cinelerra/cwindowtool.C:2508
 msgid "mask fade"
 msgstr "desvanecer máscara"
 
-#: cinelerra/cwindowtool.C:2563
+#: cinelerra/cwindowtool.C:2571
 msgid "Gang fader"
 msgstr "Activar para desvanecer todas las formas"
 
-#: cinelerra/cwindowtool.C:2581
+#: cinelerra/cwindowtool.C:2589
 msgid "Gang rotate/scale/translate"
 msgstr "Activar para que mover/rotar/escalar afecte a toda las formas"
 
-#: cinelerra/cwindowtool.C:2599
+#: cinelerra/cwindowtool.C:2607
 msgid "Gang points"
 msgstr ""
 "El desplazamiento desde los valores\n"
 "x e y afecta a todos los puntos de la forma"
 
-#: cinelerra/cwindowtool.C:2629
+#: cinelerra/cwindowtool.C:2637
 msgid "Apply mask before plugins"
 msgstr "Aplicar antes de los efectos"
 
-#: cinelerra/cwindowtool.C:2660
+#: cinelerra/cwindowtool.C:2668
 msgid "Disable OpenGL masking"
 msgstr "Deshabilitar enmascarar OpenGL"
 
-#: cinelerra/cwindowtool.C:2696
+#: cinelerra/cwindowtool.C:2704
 msgid "Delete all masks"
 msgstr "Eliminar todas las máscaras"
 
-#: cinelerra/cwindowtool.C:2721 cinelerra/cwindowtool.C:2723
+#: cinelerra/cwindowtool.C:2729 cinelerra/cwindowtool.C:2731
 msgid "del masks"
 msgstr "borra máscaras"
 
-#: cinelerra/cwindowtool.C:2737
+#: cinelerra/cwindowtool.C:2745
 msgid "Gang feather"
 msgstr "Aplicar pluma a todas las formas"
 
-#: cinelerra/cwindowtool.C:2751
+#: cinelerra/cwindowtool.C:2759
 msgid ": Mask"
 msgstr ": Máscara"
 
-#: cinelerra/cwindowtool.C:2788
+#: cinelerra/cwindowtool.C:2796
 msgid "Masks on Track"
 msgstr "Máscaras en Pista"
 
-#: cinelerra/cwindowtool.C:2791 plugins/cdripper/cdripwindow.C:45
+#: cinelerra/cwindowtool.C:2799 plugins/cdripper/cdripwindow.C:45
 #: plugins/cdripper/cdripwindow.C:49
 msgid "Track:"
 msgstr "Pista:"
 
-#: cinelerra/cwindowtool.C:2800
+#: cinelerra/cwindowtool.C:2808
 msgid "Video track"
 msgstr "Pista de vídeo"
 
-#: cinelerra/cwindowtool.C:2807
+#: cinelerra/cwindowtool.C:2815
 msgid "Masks"
 msgstr "Máscaras"
 
-#: cinelerra/cwindowtool.C:2809
+#: cinelerra/cwindowtool.C:2817
 msgid "Mask:"
 msgstr "Máscara:"
 
-#: cinelerra/cwindowtool.C:2812 cinelerra/cwindowtool.C:3538
+#: cinelerra/cwindowtool.C:2820 cinelerra/cwindowtool.C:3546
 msgid "Mask name"
 msgstr "Nombre de máscara"
 
-#: cinelerra/cwindowtool.C:2820
+#: cinelerra/cwindowtool.C:2828
 msgid "Select:"
 msgstr "Seleccionar:"
 
-#: cinelerra/cwindowtool.C:2837
+#: cinelerra/cwindowtool.C:2845
 msgid "Enable:"
 msgstr "Activar:"
 
-#: cinelerra/cwindowtool.C:2845
+#: cinelerra/cwindowtool.C:2853
 msgid "Preset Shapes"
 msgstr "Formas predefinidas"
 
-#: cinelerra/cwindowtool.C:2848 plugins/findobj/findobjwindow.C:871
+#: cinelerra/cwindowtool.C:2856 plugins/findobj/findobjwindow.C:871
 #: plugins/findobj/findobjwindow.C:887 plugins/gradient/gradient.C:337
 #: plugins/piano/piano.C:688 plugins/piano/piano.C:941
 #: plugins/synthesizer/synthesizer.C:975 plugins/synthesizer/synthesizer.C:1409
@@ -3020,87 +3088,87 @@ msgstr "Formas predefinidas"
 msgid "Square"
 msgstr "Cuadrado"
 
-#: cinelerra/cwindowtool.C:2850
+#: cinelerra/cwindowtool.C:2858
 msgid "Circle"
 msgstr "Círculo"
 
-#: cinelerra/cwindowtool.C:2852 plugins/piano/piano.C:689
+#: cinelerra/cwindowtool.C:2860 plugins/piano/piano.C:689
 #: plugins/piano/piano.C:942 plugins/synthesizer/synthesizer.C:976
 #: plugins/synthesizer/synthesizer.C:1410 plugins/tremolo/tremolo.C:474
 #, c-format
 msgid "Triangle"
 msgstr "Triángulo"
 
-#: cinelerra/cwindowtool.C:2854
+#: cinelerra/cwindowtool.C:2862
 msgid "Oval"
 msgstr "Óvalo"
 
-#: cinelerra/cwindowtool.C:2861
+#: cinelerra/cwindowtool.C:2869
 msgid "Position & Scale"
 msgstr "Reset posición y escala        -        Mover / Escalar"
 
-#: cinelerra/cwindowtool.C:2867
+#: cinelerra/cwindowtool.C:2875
 msgid "xlate/scale x"
 msgstr "mover/escalar eje x"
 
-#: cinelerra/cwindowtool.C:2869
+#: cinelerra/cwindowtool.C:2877
 msgid "xlate/scale y"
 msgstr "mover/escalar eje y"
 
-#: cinelerra/cwindowtool.C:2871
+#: cinelerra/cwindowtool.C:2879
 msgid "xlate/scale xy"
 msgstr "mover/escalar libre (ejes x-y)"
 
-#: cinelerra/cwindowtool.C:2874
+#: cinelerra/cwindowtool.C:2882
 msgid "Fade & Feather"
 msgstr "Desvanecer y Pluma"
 
-#: cinelerra/cwindowtool.C:2877
+#: cinelerra/cwindowtool.C:2885
 msgid "Fade:"
 msgstr "Desvanecer:"
 
-#: cinelerra/cwindowtool.C:2885 plugins/shapewipe/shapewipe.C:284
+#: cinelerra/cwindowtool.C:2893 plugins/shapewipe/shapewipe.C:284
 #: plugins/spherecam/spherecam.C:392 plugins/tracer/tracerwindow.C:153
 msgid "Feather:"
 msgstr "Pluma:"
 
-#: cinelerra/cwindowtool.C:2894
+#: cinelerra/cwindowtool.C:2902
 msgid "Mask Points"
 msgstr "Puntos de máscara"
 
-#: cinelerra/cwindowtool.C:2897
+#: cinelerra/cwindowtool.C:2905
 msgid "Point:"
 msgstr "Punto:"
 
-#: cinelerra/cwindowtool.C:2902
+#: cinelerra/cwindowtool.C:2910
 msgid "linear point"
 msgstr "punto seleccionado lineal"
 
-#: cinelerra/cwindowtool.C:2904
+#: cinelerra/cwindowtool.C:2912
 msgid "smooth point"
 msgstr "punto seleccionado suave"
 
-#: cinelerra/cwindowtool.C:2913
+#: cinelerra/cwindowtool.C:2921
 msgid "linear curve"
-msgstr "forma de la capa activa lineal"
+msgstr "curva lineal"
 
-#: cinelerra/cwindowtool.C:2915 cinelerra/keyframepopup.C:458
+#: cinelerra/cwindowtool.C:2923 cinelerra/keyframepopup.C:478
 msgid "smooth curve"
-msgstr "forma de la capa activa suave"
+msgstr "curva suave"
 
-#: cinelerra/cwindowtool.C:2923
+#: cinelerra/cwindowtool.C:2931
 msgid "linear all"
-msgstr "todas las formas lineales"
+msgstr "todo lineal"
 
-#: cinelerra/cwindowtool.C:2925
+#: cinelerra/cwindowtool.C:2933
 msgid "smooth all"
-msgstr "todas las formas suaves"
+msgstr "todo suave"
 
-#: cinelerra/cwindowtool.C:2929
+#: cinelerra/cwindowtool.C:2937
 msgid "Pivot Point"
 msgstr "Punto de pivote"
 
-#: cinelerra/cwindowtool.C:2955
+#: cinelerra/cwindowtool.C:2963
 msgid ""
 "Shift+LMB: move an end point\n"
 "Ctrl+LMB: move a control point\n"
@@ -3120,91 +3188,91 @@ msgstr ""
 "Ctrl+Rueda: Girar alrededor del pivote o cursor del ratón\n"
 "Ctrl+Mayús+Rueda: Escalar - cursor del ratón como pivote"
 
-#: cinelerra/cwindowtool.C:3156 cinelerra/cwindowtool.C:3197
+#: cinelerra/cwindowtool.C:3164 cinelerra/cwindowtool.C:3205
 msgid "mask smooth"
 msgstr "suavizar máscara"
 
-#: cinelerra/cwindowtool.C:3258 cinelerra/cwindowtool.C:3287
+#: cinelerra/cwindowtool.C:3266 cinelerra/cwindowtool.C:3295
 msgid "mask center"
 msgstr "centro de máscara"
 
-#: cinelerra/cwindowtool.C:3308 cinelerra/cwindowtool.C:3352
+#: cinelerra/cwindowtool.C:3316 cinelerra/cwindowtool.C:3360
 msgid "mask normal"
 msgstr "máscara normal"
 
-#: cinelerra/cwindowtool.C:3383 cinelerra/cwindowtool.C:3406
-#: cinelerra/cwindowtool.C:3723 cinelerra/cwindowtool.C:3744
+#: cinelerra/cwindowtool.C:3391 cinelerra/cwindowtool.C:3414
+#: cinelerra/cwindowtool.C:3731 cinelerra/cwindowtool.C:3752
 msgid "mask shape"
 msgstr "forma de máscara"
 
-#: cinelerra/cwindowtool.C:3427
+#: cinelerra/cwindowtool.C:3435
 msgid "Load preset"
 msgstr "Cargar preestablecido"
 
-#: cinelerra/cwindowtool.C:3445
+#: cinelerra/cwindowtool.C:3453
 msgid "Save preset"
 msgstr "Guardar preestablecido"
 
-#: cinelerra/cwindowtool.C:3501
+#: cinelerra/cwindowtool.C:3509
 msgid ": Save Mask"
 msgstr ": Guardar máscara"
 
-#: cinelerra/cwindowtool.C:3502
+#: cinelerra/cwindowtool.C:3510
 msgid ": Delete Mask"
 msgstr ": Eliminar máscara"
 
-#: cinelerra/cwindowtool.C:3530
+#: cinelerra/cwindowtool.C:3538
 msgid "Save mask:"
 msgstr "Guardar máscara:"
 
-#: cinelerra/cwindowtool.C:3530
+#: cinelerra/cwindowtool.C:3538
 msgid "Delete mask:"
 msgstr "Eliminar preestablecido:"
 
-#: cinelerra/cwindowtool.C:3583
+#: cinelerra/cwindowtool.C:3591
 msgid "Delete preset"
 msgstr "Eliminar preestablecido"
 
-#: cinelerra/cwindowtool.C:3603
+#: cinelerra/cwindowtool.C:3611
 msgid "center mask"
 msgstr "centrar máscara"
 
-#: cinelerra/cwindowtool.C:3618
+#: cinelerra/cwindowtool.C:3626
 msgid "normalize mask"
 msgstr "restaurar tamaño de la máscara"
 
-#: cinelerra/cwindowtool.C:3789
+#: cinelerra/cwindowtool.C:3797
 msgid ": Ruler"
 msgstr ": Regla"
 
-#: cinelerra/cwindowtool.C:3805
+#: cinelerra/cwindowtool.C:3813
 msgid "Current:"
 msgstr "Actual:"
 
-#: cinelerra/cwindowtool.C:3808
+#: cinelerra/cwindowtool.C:3816
 msgid "Point 1:"
 msgstr "Punto 1:"
 
-#: cinelerra/cwindowtool.C:3811
+#: cinelerra/cwindowtool.C:3819
 msgid "Point 2:"
 msgstr "Punto 2:"
 
-#: cinelerra/cwindowtool.C:3814
+#: cinelerra/cwindowtool.C:3822
 msgid "Deltas:"
 msgstr "Tramos:"
 
-#: cinelerra/cwindowtool.C:3817
+#: cinelerra/cwindowtool.C:3825
 msgid "Distance:"
 msgstr "Distancia:"
 
-#: cinelerra/cwindowtool.C:3820 plugins/gradient/gradient.C:220
+#: cinelerra/cwindowtool.C:3828 plugins/gradient/gradient.C:220
 #: plugins/linearblur/linearblur.C:166 plugins/polar/polar.C:260
 #: plugins/radialblur/radialblur.C:163 plugins/rotate/rotate.C:365
 #: plugins/timefront/timefront.C:203
 msgid "Angle:"
 msgstr "Ángulo:"
 
-#: cinelerra/cwindowtool.C:3825
+#: cinelerra/cwindowtool.C:3833
 #, c-format
 msgid ""
 "Press Ctrl to lock ruler to the\n"
@@ -3213,12 +3281,12 @@ msgstr ""
 "Presiona Ctrl para bloquear la regla en el\n"
 " ángulo de 45%c%c más cercano."
 
-#: cinelerra/cwindowtool.C:3831
+#: cinelerra/cwindowtool.C:3839
 #, c-format
 msgid "Press Alt to translate the ruler."
 msgstr "Presionar Alt para transladar la regla."
 
-#: cinelerra/cwindowtool.C:3858
+#: cinelerra/cwindowtool.C:3866
 #, c-format
 msgid "%0.01f pixels"
 msgstr "%0.01f pixeles"
@@ -3227,7 +3295,7 @@ msgstr "%0.01f pixeles"
 msgid "Media DB..."
 msgstr "Media db..."
 
-#: cinelerra/dbwindow.C:202 cinelerra/mainmenu.C:1734
+#: cinelerra/dbwindow.C:202 cinelerra/mainmenu.C:1798
 msgid "Shift-M"
 msgstr "Mayús-M"
 
@@ -3879,8 +3947,8 @@ msgstr "** %scarrier, dvb_locked %s\n"
 msgid "no "
 msgstr "no "
 
-#: cinelerra/devicedvbinput.C:494 cinelerra/mwindow.C:675
-#: cinelerra/mwindow.C:724
+#: cinelerra/devicedvbinput.C:494 cinelerra/mwindow.C:682
+#: cinelerra/mwindow.C:731
 msgid "lock"
 msgstr "bloquear"
 
@@ -4094,88 +4162,96 @@ msgstr ": CódigoTiempo"
 msgid "hour  min   sec   frms"
 msgstr "horas  min  seg  frms"
 
-#: cinelerra/editpopup.C:140
+#: cinelerra/editpopup.C:141
 #, c-format
 msgid "Edit is not EDL: %s"
 msgstr "Editar no es EDL: %s"
 
-#: cinelerra/editpopup.C:148 cinelerra/mainmenu.C:1011
+#: cinelerra/editpopup.C:149 cinelerra/mainmenu.C:1074
 msgid "Clear Select"
 msgstr "Desselecionar todos los clips"
 
-#: cinelerra/editpopup.C:148
+#: cinelerra/editpopup.C:149
 msgid "Ctrl-Shift-A"
 msgstr "Ctrl-Mayús-A"
 
-#: cinelerra/editpopup.C:163
+#: cinelerra/editpopup.C:164
+msgid "Select Edits"
+msgstr "Seleccionar ediciones"
+
+#: cinelerra/editpopup.C:164
+msgid "Ctrl-Alt-a"
+msgstr "Ctrl-Alt-a"
+
+#: cinelerra/editpopup.C:179
 msgid "Ctrl-c"
 msgstr "Ctrl-c"
 
-#: cinelerra/editpopup.C:177
+#: cinelerra/editpopup.C:193
 msgid "Copy pack"
 msgstr "Copiar para juntar al pegar"
 
-#: cinelerra/editpopup.C:177
+#: cinelerra/editpopup.C:193
 msgid "Ctrl-Shift-C"
 msgstr "Ctrl-Mayús-C"
 
-#: cinelerra/editpopup.C:192
+#: cinelerra/editpopup.C:208
 msgid "Ctrl-x"
 msgstr "Ctrl-x"
 
-#: cinelerra/editpopup.C:206
+#: cinelerra/editpopup.C:222
 msgid "Cut pack"
 msgstr "Cortar para juntar al pegar"
 
-#: cinelerra/editpopup.C:206
-msgid "Ctrl-z"
-msgstr "Ctrl-z"
+#: cinelerra/editpopup.C:222
+msgid "Ctrl-Alt-z"
+msgstr "Ctrl-Alt-z"
 
-#: cinelerra/editpopup.C:220
+#: cinelerra/editpopup.C:237
 msgid "editpopup#Mute"
 msgstr "Cortar dejando el hueco"
 
-#: cinelerra/editpopup.C:220
+#: cinelerra/editpopup.C:237
 msgid "Ctrl-m"
 msgstr "Ctrl-m"
 
-#: cinelerra/editpopup.C:234
+#: cinelerra/editpopup.C:251
 msgid "Mute pack"
 msgstr "Cortar dejando el hueco para juntar al pegar"
 
-#: cinelerra/editpopup.C:234
+#: cinelerra/editpopup.C:251
 msgid "Ctrl-Shift-M"
 msgstr "Ctrl-Mayús-M"
 
-#: cinelerra/editpopup.C:249
+#: cinelerra/editpopup.C:266
 msgid "Ctrl-v"
 msgstr "Ctrl-v"
 
-#: cinelerra/editpopup.C:269
+#: cinelerra/editpopup.C:286
 msgid "Overwrite"
 msgstr "Sobrescribir"
 
-#: cinelerra/editpopup.C:269
+#: cinelerra/editpopup.C:286
 msgid "Ctrl-b"
 msgstr "Ctrl-b"
 
-#: cinelerra/editpopup.C:289
+#: cinelerra/editpopup.C:306
 msgid "Overwrite Plugins"
 msgstr "Sobreescribir solo los efectos"
 
-#: cinelerra/editpopup.C:289
+#: cinelerra/editpopup.C:306
 msgid "Ctrl-Shift-P"
 msgstr "Ctrl-Mayús-P"
 
-#: cinelerra/editpopup.C:313
+#: cinelerra/editpopup.C:330
 msgid "Collect Effects"
 msgstr "Copiar sólo los efectos"
 
-#: cinelerra/editpopup.C:328
+#: cinelerra/editpopup.C:345
 msgid "Paste Effects"
 msgstr "Pegar sólo los efectos"
 
-#: cinelerra/editpopup.C:344
+#: cinelerra/editpopup.C:361
 msgid "Ctrl-!"
 msgstr "Ctrl-!"
 
@@ -4248,29 +4324,29 @@ msgstr "Pluma por el número de fotogramas:"
 msgid "%s  err: %s\n"
 msgstr "%s  err: %s\n"
 
-#: cinelerra/ffmpeg.C:421 cinelerra/ffmpeg.C:3602
+#: cinelerra/ffmpeg.C:423 cinelerra/ffmpeg.C:3734
 msgid "cant allocate codec context\n"
 msgstr "no puede asignar contexto de códec %s:%s\n"
 
-#: cinelerra/ffmpeg.C:463
+#: cinelerra/ffmpeg.C:465
 msgid "open decoder failed\n"
 msgstr "fallo apertura de decodificador\n"
 
-#: cinelerra/ffmpeg.C:466
+#: cinelerra/ffmpeg.C:468
 #, c-format
 msgid "can't open input file: %s\n"
 msgstr "no se puede abrir archivo de entrada: %s\n"
 
-#: cinelerra/ffmpeg.C:534
+#: cinelerra/ffmpeg.C:536
 msgid "av_buffersrc_add_frame_flags failed\n"
 msgstr "av_buffersrc_add_frame_flags fallaron\n"
 
-#: cinelerra/ffmpeg.C:1075 cinelerra/ffmpeg.C:1128
+#: cinelerra/ffmpeg.C:1079 cinelerra/ffmpeg.C:1132
 #: cinelerra/performanceprefs.C:339 cinelerra/plugin.C:225
 msgid "none"
 msgstr "ninguno"
 
-#: cinelerra/ffmpeg.C:1432
+#: cinelerra/ffmpeg.C:1324 cinelerra/ffmpeg.C:1508
 #, c-format
 msgid ""
 "Error retrieving data from GPU to CPU\n"
@@ -4279,131 +4355,140 @@ msgstr ""
 "Error recuperando datos desde GPU a CPU\n"
 "archivo: %s\n"
 
-#: cinelerra/ffmpeg.C:2125
+#: cinelerra/ffmpeg.C:1331
+#, c-format
+msgid ""
+"Error converting data from GPU to CPU\n"
+"file: %s\n"
+msgstr ""
+"Error al convertir datos de GPU a CPU\n"
+"archivo: %s\n"
+
+#: cinelerra/ffmpeg.C:2163
 #, c-format
 msgid "options open failed %s\n"
 msgstr "opciones de apertura fallaron %s\n"
 
-#: cinelerra/ffmpeg.C:2131
+#: cinelerra/ffmpeg.C:2169
 #, c-format
 msgid "format/codec not found %s\n"
 msgstr "formato / códec no encontrado %s\n"
 
-#: cinelerra/ffmpeg.C:2231
+#: cinelerra/ffmpeg.C:2269
 #, c-format
 msgid "err reading %s: line %d\n"
 msgstr "errar lectura %s: línea %d\n"
 
-#: cinelerra/ffmpeg.C:2322
+#: cinelerra/ffmpeg.C:2360
 msgid "(unkn)"
 msgstr "(Desconocido)"
 
-#: cinelerra/ffmpeg.C:2326
+#: cinelerra/ffmpeg.C:2364
 #, c-format
 msgid "vid%d (%d),  id 0x%06x:\n"
 msgstr "vid%d (%d),  id 0x%06x:\n"
 
-#: cinelerra/ffmpeg.C:2358
+#: cinelerra/ffmpeg.C:2396
 #, c-format
 msgid "aud%d (%d),  id 0x%06x:\n"
 msgstr "aud%d (%d),  id 0x%06x:\n"
 
-#: cinelerra/ffmpeg.C:2455
+#: cinelerra/ffmpeg.C:2493
 #, c-format
 msgid "can't stat file: %s\n"
 msgstr "no se puede identificar el archivo: %s\n"
 
-#: cinelerra/ffmpeg.C:2566
+#: cinelerra/ffmpeg.C:2600
 #, c-format
 msgid "FFMPEG::open_decoder: some stream have bad times: %s\n"
 msgstr "FFMPEG::abrir_decodificador: algunos flujos tienen mal el tiempo: %s\n"
 
-#: cinelerra/ffmpeg.C:2584
+#: cinelerra/ffmpeg.C:2618
 #, c-format
 msgid "bad file path: %s\n"
 msgstr "mala ruta del archivo: %s\n"
 
-#: cinelerra/ffmpeg.C:2589
+#: cinelerra/ffmpeg.C:2623
 #, c-format
 msgid "bad file format: %s\n"
 msgstr "formato de archivo incorrecto: %s\n"
 
-#: cinelerra/ffmpeg.C:2593
+#: cinelerra/ffmpeg.C:2627
 #, c-format
 msgid "mismatch audio/video file format: %s\n"
 msgstr "desajuste formato de archivo de audio / vídeo: %s\n"
 
-#: cinelerra/ffmpeg.C:2603
+#: cinelerra/ffmpeg.C:2637
 #, c-format
 msgid "failed: %s\n"
 msgstr "fallado: %s\n"
 
-#: cinelerra/ffmpeg.C:2627
+#: cinelerra/ffmpeg.C:2661
 #, c-format
 msgid "get_encoder failed %s:%s\n"
 msgstr "get_encoder falló %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2646
+#: cinelerra/ffmpeg.C:2680
 #, c-format
 msgid "cant find codec %s:%s\n"
 msgstr "no puedo encontrar códec %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2652
+#: cinelerra/ffmpeg.C:2686
 #, c-format
 msgid "unknown codec %s:%s\n"
 msgstr "códec desconocido %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2659
+#: cinelerra/ffmpeg.C:2693
 #, c-format
 msgid "cant create stream %s:%s\n"
 msgstr "no puedo crear el flujo %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2667
+#: cinelerra/ffmpeg.C:2701
 #, c-format
 msgid "duplicate audio %s:%s\n"
 msgstr "duplicado de audio %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2672
+#: cinelerra/ffmpeg.C:2706
 #, c-format
 msgid "bad audio options %s:%s\n"
 msgstr "malas opciones de audio %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2708
+#: cinelerra/ffmpeg.C:2742
 #, c-format
 msgid "check_sample_rate failed %s\n"
 msgstr "check_sample_rate falló %s\n"
 
-#: cinelerra/ffmpeg.C:2727
+#: cinelerra/ffmpeg.C:2761
 #, c-format
 msgid "duplicate video %s:%s\n"
 msgstr "video duplicado %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2732
+#: cinelerra/ffmpeg.C:2766
 #, c-format
 msgid "bad video options %s:%s\n"
 msgstr "malas opciones de vídeo %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2801
+#: cinelerra/ffmpeg.C:2835
 #, c-format
 msgid "check_frame_rate failed %s\n"
 msgstr "check_frame_rate falló %s\n"
 
-#: cinelerra/ffmpeg.C:2817
+#: cinelerra/ffmpeg.C:2851
 #, c-format
 msgid "not audio/video, %s:%s\n"
 msgstr "no audio / vídeo, %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2855
+#: cinelerra/ffmpeg.C:2889
 #, c-format
 msgid "error: stats file = %s\n"
 msgstr "error: archivo datos = %s\n"
 
-#: cinelerra/ffmpeg.C:2878
+#: cinelerra/ffmpeg.C:2912
 #, c-format
 msgid "open failed %s:%s\n"
 msgstr "falla al abrir %s:%s\n"
 
-#: cinelerra/ffmpeg.C:2888
+#: cinelerra/ffmpeg.C:2922
 #, c-format
 msgid ""
 "bitstream filter failed %s:\n"
@@ -4412,7 +4497,7 @@ msgstr ""
 "fallo en el filtro de flujo de bits %s:\n"
 "%s\n"
 
-#: cinelerra/ffmpeg.C:3032
+#: cinelerra/ffmpeg.C:3066
 #, c-format
 msgid ""
 "Cant write image2 header file: %s\n"
@@ -4421,27 +4506,27 @@ msgstr ""
 "No se puede escribir el archivo de encabezado \"image2\": %s\n"
 "  %m"
 
-#: cinelerra/ffmpeg.C:3082
+#: cinelerra/ffmpeg.C:3116
 #, c-format
 msgid "bad format options %s\n"
 msgstr "opciones de formato incorrectas %s\n"
 
-#: cinelerra/ffmpeg.C:3597
+#: cinelerra/ffmpeg.C:3729
 #, c-format
 msgid "cant find decoder codec %d\n"
 msgstr "no se puede encontrar un decodificador para este codec %d\n"
 
-#: cinelerra/ffmpeg.C:3624
+#: cinelerra/ffmpeg.C:3756
 #, c-format
 msgid "av_frame_alloc failed\n"
 msgstr "av_frame_alloc falla\n"
 
-#: cinelerra/ffmpeg.C:3654
+#: cinelerra/ffmpeg.C:3786
 #, c-format
 msgid "codec open failed\n"
 msgstr "error al abrir el códec\n"
 
-#: cinelerra/ffmpeg.C:3684
+#: cinelerra/ffmpeg.C:3816
 msgid "over 100 read_frame errs\n"
 msgstr "más de 100 read_frame yerra\n"
 
@@ -5671,12 +5756,12 @@ msgstr "ArchivoVorvis::abrir_archivo %s: flujo de bits invalido.\n"
 msgid "Flipbook..."
 msgstr "Flipbook..."
 
-#: cinelerra/floatauto.C:448 cinelerra/scopewindow.C:1326
+#: cinelerra/floatauto.C:446 cinelerra/scopewindow.C:1326
 #: plugins/titler/titlerwindow.C:692
 msgid "Smooth"
 msgstr "Suave"
 
-#: cinelerra/floatauto.C:449 plugins/gradient/gradient.C:260
+#: cinelerra/floatauto.C:447 plugins/gradient/gradient.C:260
 #: plugins/gradient/gradient.C:334
 #: plugins/histogram_bezier/bistogramwindow.C:848
 #: plugins/perspective/perspective.C:626 plugins/timefront/timefront.C:371
@@ -5684,15 +5769,19 @@ msgstr "Suave"
 msgid "Linear"
 msgstr "Lineal"
 
-#: cinelerra/floatauto.C:450
+#: cinelerra/floatauto.C:448
 msgid "Tangent"
 msgstr "Tangente en bloque"
 
-#: cinelerra/floatauto.C:451
+#: cinelerra/floatauto.C:449
 msgid "Disjoint"
 msgstr "Tangente disjunta"
 
-#: cinelerra/floatauto.C:453
+#: cinelerra/floatauto.C:450
+msgid "Bump"
+msgstr "Salto"
+
+#: cinelerra/floatauto.C:452
 msgid "Error"
 msgstr "Error"
 
@@ -5828,31 +5917,31 @@ msgstr "Fotogramas Clave Efectos"
 msgid "Hard Edges"
 msgstr "Bordes duros"
 
-#: cinelerra/gwindowgui.C:72 cinelerra/mainmenu.C:263
+#: cinelerra/gwindowgui.C:72 cinelerra/mainmenu.C:265
 msgid "Camera X"
 msgstr "Cámara X"
 
-#: cinelerra/gwindowgui.C:73 cinelerra/mainmenu.C:265
+#: cinelerra/gwindowgui.C:73 cinelerra/mainmenu.C:267
 msgid "Camera Y"
 msgstr "Cámara Y"
 
-#: cinelerra/gwindowgui.C:74 cinelerra/mainmenu.C:267
+#: cinelerra/gwindowgui.C:74 cinelerra/mainmenu.C:269
 msgid "Camera Z"
 msgstr "Cámara Z"
 
-#: cinelerra/gwindowgui.C:75 cinelerra/mainmenu.C:269
+#: cinelerra/gwindowgui.C:75 cinelerra/mainmenu.C:271
 msgid "Projector X"
 msgstr "Proyector X"
 
-#: cinelerra/gwindowgui.C:76 cinelerra/mainmenu.C:271
+#: cinelerra/gwindowgui.C:76 cinelerra/mainmenu.C:273
 msgid "Projector Y"
 msgstr "Proyector Y"
 
-#: cinelerra/gwindowgui.C:77 cinelerra/mainmenu.C:273
+#: cinelerra/gwindowgui.C:77 cinelerra/mainmenu.C:275
 msgid "Projector Z"
 msgstr "Proyector Z"
 
-#: cinelerra/gwindowgui.C:78 cinelerra/mainmenu.C:255
+#: cinelerra/gwindowgui.C:78 cinelerra/mainmenu.C:257 cinelerra/mainmenu.C:873
 msgid "Fade"
 msgstr "Fundido / Volumen"
 
@@ -5861,13 +5950,13 @@ msgstr "Fundido / Volumen"
 msgid "Mode"
 msgstr "Modo"
 
-#: cinelerra/gwindowgui.C:81 cinelerra/mainmenu.C:260
+#: cinelerra/gwindowgui.C:81 cinelerra/mainmenu.C:262
 #: plugins/crikey/crikeywindow.C:98
 #: plugins/denoiseseltempavg/seltempavgwindow.C:68
 msgid "Mask"
 msgstr "Máscara"
 
-#: cinelerra/gwindowgui.C:82 cinelerra/mainmenu.C:261
+#: cinelerra/gwindowgui.C:82 cinelerra/mainmenu.C:263 cinelerra/mainmenu.C:875
 msgid "Speed"
 msgstr "Velocidad"
 
@@ -6119,11 +6208,11 @@ msgstr "No hacer nada"
 
 #: cinelerra/interlacemodes.h:49
 msgid "Shift Up 1 pixel"
-msgstr "mover arriba 1 píxel"
+msgstr "Mover arriba 1 píxel"
 
 #: cinelerra/interlacemodes.h:52
 msgid "Shift Down 1 pixel"
-msgstr "mover abajo 1 píxel"
+msgstr "Mover abajo 1 píxel"
 
 #: cinelerra/interlacemodes.h:59
 msgid "unknown"
@@ -6182,60 +6271,64 @@ msgstr "Aplicar a todas las claves seleccionadas"
 msgid "keyframegui#Save"
 msgstr "Guardar"
 
-#: cinelerra/keyframepopup.C:103
+#: cinelerra/keyframepopup.C:107
 msgid "Show Plugin Settings"
 msgstr "Mostrar configuración del plugin"
 
-#: cinelerra/keyframepopup.C:180
+#: cinelerra/keyframepopup.C:188
 msgid "Delete keyframe"
 msgstr "Borrar fotograma clave"
 
-#: cinelerra/keyframepopup.C:192 cinelerra/keyframepopup.C:196
+#: cinelerra/keyframepopup.C:200 cinelerra/keyframepopup.C:204
 msgid "delete keyframe"
 msgstr "borrar fotograma clave"
 
-#: cinelerra/keyframepopup.C:209 cinelerra/keyframepopup.C:535
+#: cinelerra/keyframepopup.C:217 cinelerra/keyframepopup.C:556
 msgid "Hide keyframe type"
 msgstr "Ocultar tipo de fotograma clave"
 
-#: cinelerra/keyframepopup.C:227
+#: cinelerra/keyframepopup.C:235
 msgid "Show keyframe settings"
 msgstr "Mostrar preferencias del fotograma clave"
 
-#: cinelerra/keyframepopup.C:342
+#: cinelerra/keyframepopup.C:362
 msgid "Copy keyframe"
 msgstr "Copiar fotograma clave"
 
-#: cinelerra/keyframepopup.C:459
+#: cinelerra/keyframepopup.C:479
 msgid "linear segments"
 msgstr "segmentos lineales"
 
-#: cinelerra/keyframepopup.C:460
+#: cinelerra/keyframepopup.C:480
 msgid "tangent edit"
-msgstr "tangente en bloque - usar ( Ctrl )"
+msgstr "tangente en bloque - Ctrl para manipular"
 
-#: cinelerra/keyframepopup.C:461
+#: cinelerra/keyframepopup.C:481
 msgid "disjoint edit"
-msgstr "tangente Disjunta - usar ( Ctrl )"
+msgstr "tangente Disjunta - Ctrl para manipular"
 
-#: cinelerra/keyframepopup.C:463
+#: cinelerra/keyframepopup.C:482
+msgid "bump edit"
+msgstr "editar salto"
+
+#: cinelerra/keyframepopup.C:484
 msgid "misconfigured"
 msgstr "mal configurado"
 
-#: cinelerra/keyframepopup.C:478 cinelerra/keyframepopup.C:484
+#: cinelerra/keyframepopup.C:499 cinelerra/keyframepopup.C:505
 msgid "change keyframe curve mode"
 msgstr "cambiar modo de curva del fotograma clave"
 
-#: cinelerra/keyframepopup.C:498
+#: cinelerra/keyframepopup.C:519
 msgid "Edit Params..."
 msgstr "Editar parámetros..."
 
-#: cinelerra/keyframepopup.C:592 cinelerra/keyframepopup.C:595
-#: cinelerra/mwindowedit.C:1274
+#: cinelerra/keyframepopup.C:611 cinelerra/keyframepopup.C:614
+#: cinelerra/mwindowedit.C:1283
 msgid "mute"
 msgstr "mutear"
 
-#: cinelerra/keyframepopup.C:644 cinelerra/keyframepopup.C:654
+#: cinelerra/keyframepopup.C:697 cinelerra/keyframepopup.C:723
 msgid "speed"
 msgstr "velocidad"
 
@@ -6336,22 +6429,22 @@ msgstr "Referencia"
 msgid "Program"
 msgstr "Programa"
 
-#: cinelerra/main.C:209
+#: cinelerra/main.C:211
 #, c-format
 msgid ": Could not set locale.\n"
 msgstr ": No se pudo establecer la configuración regional.\n"
 
-#: cinelerra/main.C:240
+#: cinelerra/main.C:242
 #, c-format
 msgid "%s: -c needs a filename.\n"
 msgstr "%s:. -c Necesita un nombre de archivo\n"
 
-#: cinelerra/main.C:255
+#: cinelerra/main.C:257
 #, c-format
 msgid "-b may not be used by the user.\n"
 msgstr "-b No puede ser utilizada por el usuario.\n"
 
-#: cinelerra/main.C:311
+#: cinelerra/main.C:313
 #, c-format
 msgid ""
 "\n"
@@ -6360,7 +6453,7 @@ msgstr ""
 "\n"
 "Uso:\n"
 
-#: cinelerra/main.C:312
+#: cinelerra/main.C:314
 #, c-format
 msgid ""
 "%s [-f] [-c configuration] [-d port] [-n nice] [-r batch file] [filenames]\n"
@@ -6369,42 +6462,42 @@ msgstr ""
 "%s [-f] [configuración -c] [puerto -d] [nice -n] [ lote ficheros -r] [nombre de archivo]\n"
 "\n"
 
-#: cinelerra/main.C:313
+#: cinelerra/main.C:315
 #, c-format
 msgid "-d = Run in the background as renderfarm client.  The port (400) is optional.\n"
 msgstr "-d = Ejecutar en el fondo como cliente de granja de renderizado. El puerto (400) es opcional.\n"
 
-#: cinelerra/main.C:314
+#: cinelerra/main.C:316
 #, c-format
 msgid "-f = Run in the foreground as renderfarm client.  Substitute for -d.\n"
 msgstr "-f = Ejecutar en primer plan como cliente de granja de renderizado.  Substituir por -d.\n"
 
-#: cinelerra/main.C:315
+#: cinelerra/main.C:317
 #, c-format
 msgid "-n = Nice value if running as renderfarm client. (19)\n"
 msgstr "-n = Buen valor si se ejecuta como cliente de granja de renderizado. (20)\n"
 
-#: cinelerra/main.C:316
+#: cinelerra/main.C:318
 #, c-format
 msgid "-c = Configuration file to use instead of %s/%s.\n"
 msgstr "-c = Archivo de configuración para utilizar en lugar de %s /%s.\n"
 
-#: cinelerra/main.C:318
+#: cinelerra/main.C:320
 #, c-format
 msgid "-r = batch render the contents of the batch file (%s/%s) with no GUI.  batch file is optional.\n"
 msgstr "-r = Renderizado por lotes el contenido del archivo por lotes (%s /%s) sin archivo por lotes GUI. Es opcional.\n"
 
-#: cinelerra/main.C:320
+#: cinelerra/main.C:322
 #, c-format
 msgid "-S = do not reload perpetual session\n"
 msgstr "-S = no recargar sesión perpetua\n"
 
-#: cinelerra/main.C:321
+#: cinelerra/main.C:323
 #, c-format
 msgid "-x = reload from backup\n"
 msgstr "-x = recargar desde copia de seguridad\n"
 
-#: cinelerra/main.C:322
+#: cinelerra/main.C:324
 #, c-format
 msgid ""
 "filenames = files to load\n"
@@ -6435,186 +6528,202 @@ msgstr "Editar"
 msgid "Keyframes"
 msgstr "Fotogramas clave"
 
-#: cinelerra/mainmenu.C:189 cinelerra/mixersalign.C:261 cinelerra/new.C:344
+#: cinelerra/mainmenu.C:191 cinelerra/mixersalign.C:261 cinelerra/new.C:344
 #: cinelerra/setformat.C:303
 msgid "Audio"
 msgstr "Audio"
 
-#: cinelerra/mainmenu.C:198 cinelerra/new.C:375 cinelerra/setformat.C:342
+#: cinelerra/mainmenu.C:200 cinelerra/new.C:375 cinelerra/setformat.C:342
 msgid "Video"
 msgstr "Vídeo"
 
-#: cinelerra/mainmenu.C:205
+#: cinelerra/mainmenu.C:207
 msgid "Tracks"
 msgstr "Pistas"
 
-#: cinelerra/mainmenu.C:220 cinelerra/scopewindow.C:1316
+#: cinelerra/mainmenu.C:222 cinelerra/scopewindow.C:1316
 msgid "Settings"
 msgstr "Ajustes"
 
-#: cinelerra/mainmenu.C:257 cinelerra/vpatchgui.C:272
+#: cinelerra/mainmenu.C:259 cinelerra/vpatchgui.C:300
 msgid "Overlay mode"
 msgstr "Modo de Superposición"
 
-#: cinelerra/mainmenu.C:276
+#: cinelerra/mainmenu.C:278
 msgid "Window"
 msgstr "Ventana"
 
-#: cinelerra/mainmenu.C:287
+#: cinelerra/mainmenu.C:289
 msgid "Tile left"
 msgstr "Mover al monitor izquierdo"
 
-#: cinelerra/mainmenu.C:288
+#: cinelerra/mainmenu.C:290
 msgid "Tile right"
 msgstr "Mover al monitor derecho"
 
-#: cinelerra/mainmenu.C:291
+#: cinelerra/mainmenu.C:293
 msgid "Default positions"
 msgstr "Posiciones predeterminadas"
 
-#: cinelerra/mainmenu.C:291
+#: cinelerra/mainmenu.C:293
 msgid "Ctrl-P"
 msgstr "Ctrl-P"
 
-#: cinelerra/mainmenu.C:292
+#: cinelerra/mainmenu.C:294
 msgid "Load layout..."
 msgstr "Cargar diseño..."
 
-#: cinelerra/mainmenu.C:294
+#: cinelerra/mainmenu.C:296
 msgid "Save layout..."
 msgstr "Guardar diseño..."
 
-#: cinelerra/mainmenu.C:561
+#: cinelerra/mainmenu.C:563
 msgid "Dumps..."
 msgstr "Volcados..."
 
-#: cinelerra/mainmenu.C:582
+#: cinelerra/mainmenu.C:584
 msgid "Dump CICache"
 msgstr "Vaciar CICache"
 
-#: cinelerra/mainmenu.C:592
+#: cinelerra/mainmenu.C:594
 msgid "Dump EDL"
 msgstr "Vaciar EDL"
 
-#: cinelerra/mainmenu.C:604
+#: cinelerra/mainmenu.C:606
 msgid "Dump Plugins"
 msgstr "Vaciar Plugins"
 
-#: cinelerra/mainmenu.C:616
+#: cinelerra/mainmenu.C:618
 msgid "Dump Assets"
 msgstr "Vaciar clips"
 
-#: cinelerra/mainmenu.C:626
+#: cinelerra/mainmenu.C:628
 msgid "Dump Undo"
 msgstr "Deshacer volcado"
 
-#: cinelerra/mainmenu.C:639 cinelerra/mixersalign.C:482
+#: cinelerra/mainmenu.C:641 cinelerra/mixersalign.C:482
 msgid "Undo"
 msgstr "Deshacer"
 
-#: cinelerra/mainmenu.C:652
+#: cinelerra/mainmenu.C:654
 #, c-format
 msgid "Undo %s"
 msgstr "Deshacer: %s"
 
-#: cinelerra/mainmenu.C:658
+#: cinelerra/mainmenu.C:660
 msgid "Redo"
 msgstr "Rehacer"
 
-#: cinelerra/mainmenu.C:658
+#: cinelerra/mainmenu.C:660
 msgid "Shift-Z"
 msgstr "Mayús-Z"
 
-#: cinelerra/mainmenu.C:673
+#: cinelerra/mainmenu.C:675
 #, c-format
 msgid "Redo %s"
 msgstr "Rehacer: %s"
 
-#: cinelerra/mainmenu.C:679
+#: cinelerra/mainmenu.C:681
 msgid "Cut keyframes"
 msgstr "Cortar fotogramas clave"
 
-#: cinelerra/mainmenu.C:679
+#: cinelerra/mainmenu.C:681
 msgid "Shift-X"
 msgstr "Mayús-X"
 
-#: cinelerra/mainmenu.C:693
+#: cinelerra/mainmenu.C:695
 msgid "Copy keyframes"
 msgstr "Copiar fotogramas clave"
 
-#: cinelerra/mainmenu.C:693
+#: cinelerra/mainmenu.C:695
 msgid "Shift-C"
 msgstr "Mayús-C"
 
-#: cinelerra/mainmenu.C:707
+#: cinelerra/mainmenu.C:709
 msgid "Paste keyframes"
 msgstr "Pegar fotogramas clave"
 
-#: cinelerra/mainmenu.C:707
+#: cinelerra/mainmenu.C:709
 msgid "Shift-V"
 msgstr "Mayús-V"
 
-#: cinelerra/mainmenu.C:721
+#: cinelerra/mainmenu.C:723
 msgid "Clear keyframes"
 msgstr "Eliminar Fotogramas clave"
 
-#: cinelerra/mainmenu.C:721
+#: cinelerra/mainmenu.C:723
 msgid "Shift-Del"
 msgstr "Mayús-Supr"
 
-#: cinelerra/mainmenu.C:737
-msgid "Change to linear"
-msgstr "Convertir en lineal"
-
-#: cinelerra/mainmenu.C:752
-msgid "Change to smooth"
-msgstr "Convertir en suavizado"
+#: cinelerra/mainmenu.C:757
+msgid "Set curve modes..."
+msgstr "Cambiar tipo de curva →..."
 
-#: cinelerra/mainmenu.C:766
+#: cinelerra/mainmenu.C:772
 msgid "Create curve type..."
-msgstr "Crear tipo clave..."
+msgstr "Nuevas curvas tipo →..."
+
+#: cinelerra/mainmenu.C:863
+msgid "Create keyframes..."
+msgstr "Crear fotogramas clave →..."
+
+#: cinelerra/mainmenu.C:872
+msgid "Visible"
+msgstr "Visible"
+
+#: cinelerra/mainmenu.C:877
+msgid "Camera XYZ"
+msgstr "Cámara XYZ"
+
+#: cinelerra/mainmenu.C:879
+msgid "Projector XYZ"
+msgstr "Proyector XYZ"
 
-#: cinelerra/mainmenu.C:825
+#: cinelerra/mainmenu.C:881
+msgid "Fade+Speed+XYZ"
+msgstr "Fundido+Velocidad+XYZ"
+
+#: cinelerra/mainmenu.C:888
 msgid "Cut default keyframe"
 msgstr "Cortar fotograma clave por defecto"
 
-#: cinelerra/mainmenu.C:825
+#: cinelerra/mainmenu.C:888
 msgid "Alt-x"
 msgstr "Alt-x"
 
-#: cinelerra/mainmenu.C:839
+#: cinelerra/mainmenu.C:902
 msgid "Copy default keyframe"
 msgstr "Copiar fotograma clave por defecto"
 
-#: cinelerra/mainmenu.C:839
+#: cinelerra/mainmenu.C:902
 msgid "Alt-c"
 msgstr "Alt-c"
 
-#: cinelerra/mainmenu.C:853
+#: cinelerra/mainmenu.C:916
 msgid "Paste default keyframe"
 msgstr "Pegar fotograma clave por defecto"
 
-#: cinelerra/mainmenu.C:853
+#: cinelerra/mainmenu.C:916
 msgid "Alt-v"
 msgstr "Alt-v"
 
-#: cinelerra/mainmenu.C:867
+#: cinelerra/mainmenu.C:930
 msgid "Clear default keyframe"
 msgstr "Borrar fotograma clave por defecto"
 
-#: cinelerra/mainmenu.C:867
+#: cinelerra/mainmenu.C:930
 msgid "Alt-Del"
 msgstr "Alt-Supr"
 
-#: cinelerra/mainmenu.C:881
+#: cinelerra/mainmenu.C:944
 msgid "Split | Cut"
 msgstr "Dividir | Cortar"
 
-#: cinelerra/mainmenu.C:929
+#: cinelerra/mainmenu.C:992
 msgid "Clear..."
-msgstr "Opciones para Eliminar..."
+msgstr "Eliminar →..."
 
-#: cinelerra/mainmenu.C:949 cinelerra/recordbatches.C:546
+#: cinelerra/mainmenu.C:1012 cinelerra/recordbatches.C:546
 #: cinelerra/swindow.C:569 plugins/compressor/compressor.C:688
 #: plugins/compressormulti/comprmultigui.C:621
 #: plugins/histogram_bezier/bistogramwindow.C:82
@@ -6623,276 +6732,276 @@ msgstr "Opciones para Eliminar..."
 msgid "Clear"
 msgstr "Eliminar"
 
-#: cinelerra/mainmenu.C:963
+#: cinelerra/mainmenu.C:1026
 msgid "Paste silence"
 msgstr "Insertar Silencio"
 
-#: cinelerra/mainmenu.C:963
+#: cinelerra/mainmenu.C:1026
 msgid "Shift-Space"
 msgstr "Mayús-Espacio"
 
-#: cinelerra/mainmenu.C:977
+#: cinelerra/mainmenu.C:1040
 msgid "Select All"
 msgstr "Seleccionar todo/nada"
 
-#: cinelerra/mainmenu.C:989
+#: cinelerra/mainmenu.C:1052
 msgid "Clear Hard Edges"
 msgstr "Eliminar bordes duros"
 
-#: cinelerra/mainmenu.C:1000
+#: cinelerra/mainmenu.C:1063
 msgid "Clear labels"
 msgstr "Eliminar etiquetas"
 
-#: cinelerra/mainmenu.C:1024
+#: cinelerra/mainmenu.C:1087
 msgid "Cut ads"
 msgstr "Cortar anuncios"
 
-#: cinelerra/mainmenu.C:1036
+#: cinelerra/mainmenu.C:1099
 msgid "Detach transitions"
 msgstr "Quitar transiciones"
 
-#: cinelerra/mainmenu.C:1048
+#: cinelerra/mainmenu.C:1111
 msgid "Mute Region"
 msgstr "Eliminar dejando el hueco"
 
-#: cinelerra/mainmenu.C:1062
+#: cinelerra/mainmenu.C:1125
 msgid "Trim Selection"
 msgstr "Recortar lo seleccionado"
 
-#: cinelerra/mainmenu.C:1087 cinelerra/mainmenu.C:1155
+#: cinelerra/mainmenu.C:1150 cinelerra/mainmenu.C:1218
 #: cinelerra/trackpopup.C:237
 msgid "Add track"
 msgstr "Añadir pista"
 
-#: cinelerra/mainmenu.C:1100 cinelerra/mainmenu.C:1170
+#: cinelerra/mainmenu.C:1163 cinelerra/mainmenu.C:1233
 #: cinelerra/trackpopup.C:224
 msgid "Delete track"
 msgstr "Eliminar pista"
 
-#: cinelerra/mainmenu.C:1111 cinelerra/mainmenu.C:1196
+#: cinelerra/mainmenu.C:1174 cinelerra/mainmenu.C:1259
 msgid "Default Transition"
 msgstr "Transición predeterminada"
 
-#: cinelerra/mainmenu.C:1125
+#: cinelerra/mainmenu.C:1188
 msgid "Map 1:1"
 msgstr "Mapa 1:1"
 
-#: cinelerra/mainmenu.C:1137
+#: cinelerra/mainmenu.C:1200
 msgid "Map 5.1:2"
 msgstr "Mapa 5.1:2"
 
-#: cinelerra/mainmenu.C:1155
+#: cinelerra/mainmenu.C:1218
 msgid "Shift-T"
 msgstr "Mayús-T"
 
-#: cinelerra/mainmenu.C:1183
+#: cinelerra/mainmenu.C:1246
 msgid "Reset Translation"
 msgstr "Restablecer Trasformación"
 
-#: cinelerra/mainmenu.C:1196
+#: cinelerra/mainmenu.C:1259
 msgid "Shift-U"
 msgstr "Mayús-U"
 
-#: cinelerra/mainmenu.C:1225
+#: cinelerra/mainmenu.C:1288
 msgid "Delete tracks"
 msgstr "Eliminar las pistas"
 
-#: cinelerra/mainmenu.C:1237
+#: cinelerra/mainmenu.C:1300
 msgid "Delete first track"
 msgstr "Eliminar primera pista"
 
-#: cinelerra/mainmenu.C:1253
+#: cinelerra/mainmenu.C:1316
 msgid "Delete last track"
 msgstr "Eliminar última pista"
 
-#: cinelerra/mainmenu.C:1269
+#: cinelerra/mainmenu.C:1332
 msgid "Move tracks up"
 msgstr "Mover pistas hacia arriba"
 
-#: cinelerra/mainmenu.C:1269
+#: cinelerra/mainmenu.C:1332
 msgid "Shift-Up"
 msgstr "Mayús-flecha↑"
 
-#: cinelerra/mainmenu.C:1283
+#: cinelerra/mainmenu.C:1346
 msgid "Move tracks down"
 msgstr "Mover pistas hacia abajo"
 
-#: cinelerra/mainmenu.C:1283
+#: cinelerra/mainmenu.C:1346
 msgid "Shift-Down"
 msgstr "Mayús-flecha↓"
 
-#: cinelerra/mainmenu.C:1297
+#: cinelerra/mainmenu.C:1360
 msgid "Swap tracks up"
 msgstr "Subir pistas"
 
-#: cinelerra/mainmenu.C:1311
+#: cinelerra/mainmenu.C:1374
 msgid "Swap tracks down"
 msgstr "Bajar pistas"
 
-#: cinelerra/mainmenu.C:1327
+#: cinelerra/mainmenu.C:1390
 msgid "Concatenate tracks"
 msgstr "Concatenar pistas"
 
-#: cinelerra/mainmenu.C:1344
+#: cinelerra/mainmenu.C:1407
 msgid "Loop Playback"
 msgstr "Reproducción en bucle"
 
-#: cinelerra/mainmenu.C:1344
+#: cinelerra/mainmenu.C:1407
 msgid "Shift-L"
 msgstr "Mayús-L"
 
-#: cinelerra/mainmenu.C:1366
+#: cinelerra/mainmenu.C:1429
 msgid "Add subttl"
 msgstr "Añadir SUBTTL"
 
-#: cinelerra/mainmenu.C:1366
+#: cinelerra/mainmenu.C:1429
 msgid "Shift-Y"
 msgstr "Mayús-Y"
 
-#: cinelerra/mainmenu.C:1380 cinelerra/swindow.C:467
+#: cinelerra/mainmenu.C:1443 cinelerra/swindow.C:467
 msgid "paste subttl"
 msgstr "pegar SUBTTL"
 
-#: cinelerra/mainmenu.C:1394
+#: cinelerra/mainmenu.C:1457
 msgid "Toggle background rendering"
 msgstr "Alternar renderizado de fondo"
 
-#: cinelerra/mainmenu.C:1394
+#: cinelerra/mainmenu.C:1457
 msgid "Shift-G"
 msgstr "Mayús-G"
 
-#: cinelerra/mainmenu.C:1412
+#: cinelerra/mainmenu.C:1475
 msgid "Edit labels"
-msgstr "Editar etiquetas"
+msgstr "Ediciones afectan a etiquetas"
 
-#: cinelerra/mainmenu.C:1429
+#: cinelerra/mainmenu.C:1492
 msgid "Edit effects"
-msgstr "Editar efectos"
+msgstr "Ediciones afectan a efectos"
 
-#: cinelerra/mainmenu.C:1446
+#: cinelerra/mainmenu.C:1509
 msgid "Keyframes follow edits"
-msgstr "Fotogramas clave siguen las ediciones"
+msgstr "Ediciones afectan a claves de fotograma"
 
-#: cinelerra/mainmenu.C:1461
+#: cinelerra/mainmenu.C:1524
 msgid "Align cursor on frames"
 msgstr "Alinear el cursor a los fotogramas"
 
-#: cinelerra/mainmenu.C:1461
+#: cinelerra/mainmenu.C:1524
 msgid "Ctrl-a"
 msgstr "Ctrl-a"
 
-#: cinelerra/mainmenu.C:1477
+#: cinelerra/mainmenu.C:1540
 msgid "Typeless keyframes"
-msgstr "Fotogramas clave sin tipo"
+msgstr "Claves de fotograma sin tipo"
 
-#: cinelerra/mainmenu.C:1492 cinelerra/mainmenu.C:1502
+#: cinelerra/mainmenu.C:1555 cinelerra/mainmenu.C:1565
 msgid "Slow Shuttle"
 msgstr "Trasladar lento"
 
-#: cinelerra/mainmenu.C:1507
+#: cinelerra/mainmenu.C:1570
 msgid "Fast Shuttle"
 msgstr "Trasladar Fast"
 
-#: cinelerra/mainmenu.C:1513
+#: cinelerra/mainmenu.C:1576
 msgid "Save settings now"
 msgstr "Guardar preferencias ahora"
 
-#: cinelerra/mainmenu.C:1513
-msgid "Ctrl-s"
-msgstr "Ctrl-s"
+#: cinelerra/mainmenu.C:1576
+msgid "Ctrl-Shift-S"
+msgstr "Ctrl-Shift-S"
 
-#: cinelerra/mainmenu.C:1523
+#: cinelerra/mainmenu.C:1587
 msgid "Saved settings."
 msgstr "Preferencias guardadas."
 
-#: cinelerra/mainmenu.C:1536
+#: cinelerra/mainmenu.C:1600
 msgid "Show Viewer"
 msgstr "Mostrar Visor"
 
-#: cinelerra/mainmenu.C:1550
+#: cinelerra/mainmenu.C:1614
 msgid "Show Resources"
 msgstr "Mostrar Recursos"
 
-#: cinelerra/mainmenu.C:1564
+#: cinelerra/mainmenu.C:1628
 msgid "Show Compositor"
 msgstr "Mostrar Compositor"
 
-#: cinelerra/mainmenu.C:1579
+#: cinelerra/mainmenu.C:1643
 msgid "Show Overlays"
 msgstr "Mostrar Superposiciones"
 
-#: cinelerra/mainmenu.C:1579
+#: cinelerra/mainmenu.C:1643
 msgid "Ctrl-0"
 msgstr "Ctrl-0"
 
-#: cinelerra/mainmenu.C:1601
+#: cinelerra/mainmenu.C:1665
 msgid "Show Levels"
 msgstr "Mostrar Niveles"
 
-#: cinelerra/mainmenu.C:1636
+#: cinelerra/mainmenu.C:1700
 msgid "Split X pane"
 msgstr "Dividir vista en X"
 
-#: cinelerra/mainmenu.C:1636
+#: cinelerra/mainmenu.C:1700
 msgid "Ctrl-1"
 msgstr "Ctrl-1"
 
-#: cinelerra/mainmenu.C:1650
+#: cinelerra/mainmenu.C:1714
 msgid "Split Y pane"
 msgstr "Dividir vista en Y"
 
-#: cinelerra/mainmenu.C:1650
+#: cinelerra/mainmenu.C:1714
 msgid "Ctrl-2"
 msgstr "Ctrl-2"
 
-#: cinelerra/mainmenu.C:1665
+#: cinelerra/mainmenu.C:1729
 msgid "Mixers..."
 msgstr "Mezcladores..."
 
-#: cinelerra/mainmenu.C:1734
+#: cinelerra/mainmenu.C:1798
 msgid "Mixer Viewer"
 msgstr "Visor de mezcladores"
 
-#: cinelerra/mainmenu.C:1747
+#: cinelerra/mainmenu.C:1811
 msgid "Tile mixers"
 msgstr "Mezcladores de mosaico"
 
-#: cinelerra/mainmenu.C:1760
+#: cinelerra/mainmenu.C:1824
 msgid "Align mixers"
 msgstr "Alinear mezcladores"
 
-#: cinelerra/mainmenu.C:1774
+#: cinelerra/mainmenu.C:1838
 msgid "Mix masters"
 msgstr "Mezclador master"
 
-#: cinelerra/mainmenu.C:1787
+#: cinelerra/mainmenu.C:1851
 msgid "Align Timecodes"
 msgstr "Alinear códigos de tiempo"
 
-#: cinelerra/mainmenu.C:1806
+#: cinelerra/mainmenu.C:1870
 #, c-format
 msgid "Ctrl-Shift+F%d"
 msgstr "Ctrl-Mayús+F%d"
 
-#: cinelerra/mainmenu.C:1851 cinelerra/mainmenu.C:1897
+#: cinelerra/mainmenu.C:1915 cinelerra/mainmenu.C:1961
 #, c-format
 msgid "Layout %d"
 msgstr "Diseño %d"
 
-#: cinelerra/mainmenu.C:1985
+#: cinelerra/mainmenu.C:2049
 msgid ": Layout"
 msgstr ": Diseño"
 
-#: cinelerra/mainmenu.C:2004
+#: cinelerra/mainmenu.C:2068
 msgid "Layout Name:"
 msgstr "Nombre de diseño:"
 
-#: cinelerra/mainmenu.C:2013
+#: cinelerra/mainmenu.C:2077
 #, c-format
 msgid "a-z,A-Z,0-9_ only, %dch max"
 msgstr "a-z,A-Z,0-9_ solo, %dch max"
 
-#: cinelerra/mainmenu.C:2069
+#: cinelerra/mainmenu.C:2133
 msgid "Load Recent..."
 msgstr "Cargar recientes..."
 
@@ -6901,8 +7010,8 @@ msgstr "Cargar recientes..."
 msgid "%s ETA: %s"
 msgstr "%s tiempo estimado: %s"
 
-#: cinelerra/mainsession.C:669 cinelerra/mwindow.C:4037
-#: cinelerra/mwindowedit.C:2222
+#: cinelerra/mainsession.C:669 cinelerra/mwindow.C:4044
+#: cinelerra/mwindowedit.C:2236
 #, c-format
 msgid "Clip %d"
 msgstr "Clip %d"
@@ -6992,7 +7101,7 @@ msgstr "No se ha seleccionado un rango para procesar."
 msgid ": %s"
 msgstr ": %s"
 
-#: cinelerra/menueffects.C:460 cinelerra/mwindow.C:3926
+#: cinelerra/menueffects.C:460 cinelerra/mwindow.C:3933
 #: cinelerra/packagerenderer.C:170
 #, c-format
 msgid "Couldn't open %s"
@@ -7045,7 +7154,7 @@ msgid "Show meters"
 msgstr "Mostrar Vúmetros de Audio"
 
 #: cinelerra/mixersalign.C:73 cinelerra/mixersalign.C:261
-#: cinelerra/patchgui.C:718
+#: cinelerra/patchgui.C:720
 msgid "Nudge"
 msgstr "Empujar"
 
@@ -7100,7 +7209,8 @@ msgstr "pos"
 #: plugins/perspective/perspective.C:559 plugins/polar/polar.C:335
 #: plugins/radialblur/radialblur.C:275 plugins/reframert/reframert.C:275
 #: plugins/rgbshift/rgbshift.C:115 plugins/rotate/rotate.C:304
-#: plugins/rumbler/rumbler.C:154 plugins/sharpen/sharpenwindow.C:167
+#: plugins/rumbler/rumbler.C:154 plugins/scale/scalewin.C:540
+#: plugins/sharpen/sharpenwindow.C:167
 #: plugins/shiftinterlace/shiftinterlace.C:188
 #: plugins/sketcher/sketcherwindow.C:1383
 #: plugins/sketcher/sketcherwindow.C:1403
@@ -7217,91 +7327,91 @@ msgstr "ajuste de selección de mezclador cancelado"
 msgid "Error in match render."
 msgstr "Error en ajuste de renderizado."
 
-#: cinelerra/mwindow.C:651
+#: cinelerra/mwindow.C:658
 #, c-format
 msgid "MWindow::init_plugins: can't open plugin index: %s\n"
 msgstr "MWindow::init_plugins: no se abrir el índice del complemento: %s\n"
 
-#: cinelerra/mwindow.C:673
+#: cinelerra/mwindow.C:680
 #, c-format
 msgid "MWindow::init_plugins: can't %s plugin index: %s\n"
 msgstr "MWindow::init_plugins: no se puede %s el índice del complemento: %s\n"
 
-#: cinelerra/mwindow.C:675 cinelerra/mwindow.C:724
+#: cinelerra/mwindow.C:682 cinelerra/mwindow.C:731
 msgid "create"
 msgstr "crear"
 
-#: cinelerra/mwindow.C:705
+#: cinelerra/mwindow.C:712
 #, c-format
 msgid "MWindow::init_ladspa_plugins: can't open ladspa plugin index: %s\n"
 msgstr "MWindow::init_ladspa_index: no se puede abrir el índice del complemento ladspa: %s\n"
 
-#: cinelerra/mwindow.C:722
+#: cinelerra/mwindow.C:729
 #, c-format
 msgid "MWindow::init_ladspa_plugins: can't %s ladspa plugin index: %s\n"
 msgstr "MWindow::init_ladspa_index: no se puede %s el índice del complemento ladspa: %s\n"
 
-#: cinelerra/mwindow.C:1104
+#: cinelerra/mwindow.C:1111
 #, c-format
 msgid "MWindow::init_theme: prefered theme %s not found.\n"
 msgstr "MWindow::init_theme: tema preferido %s no encontrado\n"
 
-#: cinelerra/mwindow.C:1109
+#: cinelerra/mwindow.C:1116
 #, c-format
 msgid "MWindow::init_theme: trying default theme %s\n"
 msgstr "MWindow::init_theme: tratar el tema por defecto %s\n"
 
-#: cinelerra/mwindow.C:1119
+#: cinelerra/mwindow.C:1126
 #, c-format
 msgid "MWindow::init_theme: theme_plugin not found.\n"
 msgstr "MWindow::init_theme: no se encontró theme_plugin\n"
 
-#: cinelerra/mwindow.C:1125
+#: cinelerra/mwindow.C:1132
 #, c-format
 msgid "MWindow::init_theme: unable to load theme %s\n"
 msgstr "MWindow::init_theme: no puede cargar el tema %s\n"
 
-#: cinelerra/mwindow.C:1377 cinelerra/mwindowedit.C:2786
+#: cinelerra/mwindow.C:1384 cinelerra/mwindowedit.C:2892
 #: cinelerra/zwindow.C:289
 #, c-format
 msgid "Mixer %d"
 msgstr "Mezclador %d"
 
-#: cinelerra/mwindow.C:1423
+#: cinelerra/mwindow.C:1430
 msgid "create mixers"
 msgstr "crear mezcladores"
 
-#: cinelerra/mwindow.C:1797
+#: cinelerra/mwindow.C:1804
 msgid "multiple video tracks"
 msgstr "múltiples pistas de vídeo"
 
-#: cinelerra/mwindow.C:1809
+#: cinelerra/mwindow.C:1816
 msgid "crosses edits"
 msgstr "cruza ediciones"
 
-#: cinelerra/mwindow.C:1811
+#: cinelerra/mwindow.C:1818
 msgid "not asset"
 msgstr "no es un recurso"
 
-#: cinelerra/mwindow.C:1830
+#: cinelerra/mwindow.C:1837
 msgid "no file"
 msgstr "ningún archivo"
 
-#: cinelerra/mwindow.C:1836
+#: cinelerra/mwindow.C:1843
 msgid "db failed"
 msgstr "db fracasado"
 
-#: cinelerra/mwindow.C:1840
+#: cinelerra/mwindow.C:1847
 #, c-format
 msgid "put_commercial: %s"
 msgstr "put_commercial: %s"
 
-#: cinelerra/mwindow.C:2003
+#: cinelerra/mwindow.C:2010
 #, c-format
 msgid "Loading %s"
 msgstr "Cargando %s"
 
-#: cinelerra/mwindow.C:2015
+#: cinelerra/mwindow.C:2022
 #, c-format
 msgid ""
 "%s's resolution is %dx%d.\n"
@@ -7311,7 +7421,7 @@ msgstr ""
 "\n"
 "Es posible que las imágenes con dimensiones impares no se decodifiquen correctamente."
 
-#: cinelerra/mwindow.C:2022
+#: cinelerra/mwindow.C:2029
 #, c-format
 msgid ""
 "%s's index was built for program number %d\n"
@@ -7322,16 +7432,16 @@ msgstr ""
 "Preferencias de reproducción es %d.\n"
 "  Usando programa %d."
 
-#: cinelerra/mwindow.C:2056 cinelerra/mwindow.C:2057
+#: cinelerra/mwindow.C:2063 cinelerra/mwindow.C:2064
 #, c-format
 msgid "Failed to open %s"
 msgstr "Fracaso al abrir %s"
 
-#: cinelerra/mwindow.C:2098
+#: cinelerra/mwindow.C:2105
 msgid "'s format couldn't be determined."
 msgstr "el formato 's no se pudo determinar."
 
-#: cinelerra/mwindow.C:2149
+#: cinelerra/mwindow.C:2156
 #, c-format
 msgid ""
 "XML file %s\n"
@@ -7340,12 +7450,12 @@ msgstr ""
 "Archivo XML %s\n"
 " no es de cinelerra."
 
-#: cinelerra/mwindow.C:2151
+#: cinelerra/mwindow.C:2158
 #, c-format
 msgid "Unknown %s"
 msgstr "Desconocido %s"
 
-#: cinelerra/mwindow.C:2158
+#: cinelerra/mwindow.C:2165
 #, c-format
 msgid ""
 "Warning: XML from cinelerra version %s\n"
@@ -7354,7 +7464,7 @@ msgstr ""
 "Cuidado: XML de la versión %s de cinelerra\n"
 "Datos de la sesión pueden ser incompatibles."
 
-#: cinelerra/mwindow.C:2215
+#: cinelerra/mwindow.C:2222
 #, c-format
 msgid ""
 "Error: Unable to load xml:\n"
@@ -7363,15 +7473,15 @@ msgstr ""
 "Error: No se puede cargar el xml:\n"
 "  %s"
 
-#: cinelerra/mwindow.C:2347
+#: cinelerra/mwindow.C:2354
 msgid "load"
 msgstr "cargar"
 
-#: cinelerra/mwindow.C:2467 cinelerra/mwindow.C:2580
+#: cinelerra/mwindow.C:2474 cinelerra/mwindow.C:2587
 msgid "proxy"
 msgstr "proxy"
 
-#: cinelerra/mwindow.C:2603 cinelerra/mwindow.C:2618
+#: cinelerra/mwindow.C:2610 cinelerra/mwindow.C:2625
 #, c-format
 msgid ""
 "The %s '%s' in file '%s' is not part of your installation of Cinelerra.\n"
@@ -7380,12 +7490,12 @@ msgstr ""
 "La %s '%s' en el archivo '%s' no forma parte de su instalación de Cinelerra. \n"
 "Posiblemente su proyecto no se exportará correctamente y Cinelerra puede bloquearse. \n"
 
-#: cinelerra/mwindow.C:2646
+#: cinelerra/mwindow.C:2653
 #, c-format
 msgid "MWindow::init_shm: couldn't open %s for reading.\n"
 msgstr "MWindow::init_shm: no se pudo abrir %s para lectura.\n"
 
-#: cinelerra/mwindow.C:2653
+#: cinelerra/mwindow.C:2660
 #, c-format
 msgid ""
 "MWindow::init_shm: %s is %p.\n"
@@ -7400,94 +7510,94 @@ msgstr ""
 "antes de intentar iniciar cinelerra.\n"
 "Debería ser al menos 0x%jx para Cinelerra.\n"
 
-#: cinelerra/mwindow.C:2684
+#: cinelerra/mwindow.C:2691
 msgid "Initializing Plugins"
 msgstr "Iniciando Plugins"
 
-#: cinelerra/mwindow.C:2691
+#: cinelerra/mwindow.C:2698
 msgid "Initializing GUI"
 msgstr "Iniciando GUI"
 
-#: cinelerra/mwindow.C:2699
+#: cinelerra/mwindow.C:2706
 msgid "Initializing Fonts"
 msgstr "Iniciando Fuentes"
 
-#: cinelerra/mwindow.C:3888
+#: cinelerra/mwindow.C:3895
 #, c-format
 msgid "Cant write FileREF: %s"
 msgstr "No se puede escribir el archivoREF: %s"
 
-#: cinelerra/mwindow.C:3915
+#: cinelerra/mwindow.C:3922
 msgid "open edl"
 msgstr "abrir edl"
 
-#: cinelerra/mwindow.C:3933
+#: cinelerra/mwindow.C:3940
 #, c-format
 msgid "\"%s\" %jdC written"
 msgstr "\"%s\" %jdC escrito"
 
-#: cinelerra/mwindow.C:4007
+#: cinelerra/mwindow.C:4014
 #, c-format
 msgid "Nested_%02d%02d%02d-%02d%02d%02d_"
 msgstr "Anidado_%02d%02d%02d-%02d%02d%02d_"
 
-#: cinelerra/mwindow.C:4018
+#: cinelerra/mwindow.C:4025
 msgid "clip2media"
 msgstr "clip2deMedios"
 
-#: cinelerra/mwindow.C:4048
+#: cinelerra/mwindow.C:4055
 #, c-format
 msgid "From: %s"
 msgstr "Desde: %s"
 
-#: cinelerra/mwindow.C:4050
+#: cinelerra/mwindow.C:4057
 msgid "media2clip"
 msgstr "medios2clip"
 
-#: cinelerra/mwindow.C:4064 cinelerra/mwindow.C:4076
+#: cinelerra/mwindow.C:4071 cinelerra/mwindow.C:4083
 msgid "reference"
 msgstr "referencia"
 
-#: cinelerra/mwindow.C:4176
+#: cinelerra/mwindow.C:4183
 #, c-format
 msgid "Couldn't open %s for writing."
 msgstr "No se pudo abrir %s para la escritura."
 
-#: cinelerra/mwindow.C:4229
+#: cinelerra/mwindow.C:4236
 msgid "perpetual load"
 msgstr "carga perpetua"
 
-#: cinelerra/mwindow.C:4255
+#: cinelerra/mwindow.C:4262
 #, c-format
 msgid "Copying: %s\n"
 msgstr "Copiando: %s\n"
 
-#: cinelerra/mwindow.C:4342
+#: cinelerra/mwindow.C:4349
 #, c-format
 msgid "Saving to %s:\n"
 msgstr "Guardando a: %s\n"
 
-#: cinelerra/mwindow.C:4404
+#: cinelerra/mwindow.C:4411
 #, c-format
 msgid "\"%s\" %dC written"
 msgstr "\"%s\" %dC escrito"
 
-#: cinelerra/mwindow.C:4411
+#: cinelerra/mwindow.C:4418
 #, c-format
 msgid "Couldn't open %s."
 msgstr "No se pudo abrir %s."
 
-#: cinelerra/mwindow.C:4588
+#: cinelerra/mwindow.C:4589
 msgid "remove assets"
 msgstr "eliminar clips"
 
-#: cinelerra/mwindow.C:4822
+#: cinelerra/mwindow.C:4823
 #, c-format
 msgid "Using %s"
 msgstr "Utilizando %s"
 
-#: cinelerra/mwindow.C:4952 cinelerra/mwindowedit.C:196
-#: cinelerra/mwindowedit.C:243 cinelerra/preferencesthread.C:288
+#: cinelerra/mwindow.C:4953 cinelerra/mwindowedit.C:196
+#: cinelerra/mwindowedit.C:243 cinelerra/preferencesthread.C:289
 msgid ""
 "This project's dimensions are not multiples of 4 so\n"
 "it can't be rendered by OpenGL."
@@ -7495,19 +7605,19 @@ msgstr ""
 "Las dimensiones de este proyecto no son múltiplos de 4 por lo\n"
 " cual no puede ser renderizado con OpenGL."
 
-#: cinelerra/mwindow.C:5069
+#: cinelerra/mwindow.C:5070
 msgid "select asset"
 msgstr "selecionar clip"
 
-#: cinelerra/mwindow.C:5183
+#: cinelerra/mwindow.C:5184
 msgid ": Confirm update"
 msgstr ": Confirmar actualizar"
 
-#: cinelerra/mwindow.C:5198
+#: cinelerra/mwindow.C:5199
 msgid "FileREF not updated:"
 msgstr "ArchivoREF no actualizado:"
 
-#: cinelerra/mwindow.C:5203
+#: cinelerra/mwindow.C:5204
 msgid "Save file ref changes?"
 msgstr "¿Guardar los cambios del archivo de ref?"
 
@@ -7532,336 +7642,340 @@ msgstr "clip a calidad"
 msgid "clear"
 msgstr "eliminar"
 
-#: cinelerra/mwindowedit.C:357
+#: cinelerra/mwindowedit.C:358
 msgid "clear keyframes"
 msgstr "eliminar clave"
 
-#: cinelerra/mwindowedit.C:370
+#: cinelerra/mwindowedit.C:371
 msgid "clear default keyframe"
 msgstr "eliminar el fotograma clave por defecto"
 
-#: cinelerra/mwindowedit.C:382
+#: cinelerra/mwindowedit.C:383
 msgid "clear labels"
 msgstr "eliminar etiquetas"
 
-#: cinelerra/mwindowedit.C:406
+#: cinelerra/mwindowedit.C:407
 msgid "clear hard edges"
 msgstr "limpie bordes duros"
 
-#: cinelerra/mwindowedit.C:434
+#: cinelerra/mwindowedit.C:443
 msgid "concatenate tracks"
 msgstr "concatenar pistas"
 
-#: cinelerra/mwindowedit.C:572
+#: cinelerra/mwindowedit.C:581
 msgid "crop"
 msgstr "recortar"
 
-#: cinelerra/mwindowedit.C:595
+#: cinelerra/mwindowedit.C:604
 msgid "blade"
 msgstr "dividir"
 
-#: cinelerra/mwindowedit.C:615
+#: cinelerra/mwindowedit.C:624
 msgid "split | cut"
 msgstr "dividir | cortar"
 
-#: cinelerra/mwindowedit.C:673
+#: cinelerra/mwindowedit.C:682
 msgid "cut keyframes"
 msgstr "cortar fotogramas clave"
 
-#: cinelerra/mwindowedit.C:689
+#: cinelerra/mwindowedit.C:698
 msgid "cut default keyframe"
 msgstr "cortar fotograma clave por defecto"
 
-#: cinelerra/mwindowedit.C:701
+#: cinelerra/mwindowedit.C:710
 msgid "delete tracks"
 msgstr "borrar pistas"
 
-#: cinelerra/mwindowedit.C:715
+#: cinelerra/mwindowedit.C:724
 msgid "delete track"
 msgstr "eliminar pista"
 
-#: cinelerra/mwindowedit.C:804
+#: cinelerra/mwindowedit.C:813
 msgid "insert effect"
 msgstr "insertar efecto"
 
-#: cinelerra/mwindowedit.C:942
+#: cinelerra/mwindowedit.C:951
 msgid "drag handle"
 msgstr "gestiona arrastrar"
 
-#: cinelerra/mwindowedit.C:960
+#: cinelerra/mwindowedit.C:969
 msgid "match output size"
 msgstr "ajustar a la dimensión de la salida"
 
-#: cinelerra/mwindowedit.C:995
+#: cinelerra/mwindowedit.C:1004
 msgid "del edit"
 msgstr "eliminar edición"
 
-#: cinelerra/mwindowedit.C:1005
+#: cinelerra/mwindowedit.C:1014
 msgid "cut edit"
 msgstr "cortar edición"
 
-#: cinelerra/mwindowedit.C:1024
+#: cinelerra/mwindowedit.C:1033
 msgid "move edit"
 msgstr "mover el recorte"
 
-#: cinelerra/mwindowedit.C:1066
+#: cinelerra/mwindowedit.C:1075
 msgid "paste clip"
 msgstr "pegar clip"
 
-#: cinelerra/mwindowedit.C:1098
+#: cinelerra/mwindowedit.C:1107
 msgid "move group"
 msgstr "mover grupo"
 
-#: cinelerra/mwindowedit.C:1111
+#: cinelerra/mwindowedit.C:1120
 msgid "paste effect"
 msgstr "pegar efecto"
 
-#: cinelerra/mwindowedit.C:1124
+#: cinelerra/mwindowedit.C:1133
 msgid "move effect"
 msgstr "mover efecto"
 
-#: cinelerra/mwindowedit.C:1139
+#: cinelerra/mwindowedit.C:1148
 msgid "move effect up"
 msgstr "mover efecto arriba"
 
-#: cinelerra/mwindowedit.C:1152
+#: cinelerra/mwindowedit.C:1161
 msgid "move effect down"
 msgstr "mover efecto abajo"
 
-#: cinelerra/mwindowedit.C:1163
+#: cinelerra/mwindowedit.C:1172
 msgid "move track down"
 msgstr "mover la pista abajo"
 
-#: cinelerra/mwindowedit.C:1176
+#: cinelerra/mwindowedit.C:1185
 msgid "move tracks down"
 msgstr "mover las pistas abajo"
 
-#: cinelerra/mwindowedit.C:1189
+#: cinelerra/mwindowedit.C:1198
 msgid "move track up"
 msgstr "mover la pista arriba"
 
-#: cinelerra/mwindowedit.C:1201
+#: cinelerra/mwindowedit.C:1210
 msgid "move tracks up"
 msgstr "mover las pistas arriba"
 
-#: cinelerra/mwindowedit.C:1213
+#: cinelerra/mwindowedit.C:1222
 msgid "swap track down"
-msgstr "Bajar pista"
+msgstr "intercambiar pista de abajo"
 
-#: cinelerra/mwindowedit.C:1226
+#: cinelerra/mwindowedit.C:1235
 msgid "swap tracks down"
-msgstr "Bajar pistas"
+msgstr "intercambiar pistas de abajo"
 
-#: cinelerra/mwindowedit.C:1239
+#: cinelerra/mwindowedit.C:1248
 msgid "swap track up"
-msgstr "Subir pista"
+msgstr "intercambiar pista de arriba"
 
-#: cinelerra/mwindowedit.C:1251
+#: cinelerra/mwindowedit.C:1260
 msgid "swap tracks up"
-msgstr "Subir pistas"
+msgstr "intercambiar pistas de arriba"
 
-#: cinelerra/mwindowedit.C:1329
+#: cinelerra/mwindowedit.C:1338
 msgid "overwrite"
 msgstr "sobrescribir"
 
-#: cinelerra/mwindowedit.C:1382
+#: cinelerra/mwindowedit.C:1392
 msgid "paste"
 msgstr "pegar"
 
-#: cinelerra/mwindowedit.C:1419
+#: cinelerra/mwindowedit.C:1430
 msgid "paste assets"
 msgstr "pegar clips"
 
-#: cinelerra/mwindowedit.C:1495
+#: cinelerra/mwindowedit.C:1507
 msgid "paste keyframes"
 msgstr "pegar fotogramas clave"
 
-#: cinelerra/mwindowedit.C:1521
+#: cinelerra/mwindowedit.C:1533
 msgid "paste default keyframe"
 msgstr "pegar fotogramas clave por defecto"
 
-#: cinelerra/mwindowedit.C:1833 cinelerra/mwindowedit.C:1840
+#: cinelerra/mwindowedit.C:1845 cinelerra/mwindowedit.C:1852
 msgid "silence"
 msgstr "silencio"
 
-#: cinelerra/mwindowedit.C:1856
+#: cinelerra/mwindowedit.C:1869
 msgid "detach transition"
 msgstr "quitar transición"
 
-#: cinelerra/mwindowedit.C:1873
+#: cinelerra/mwindowedit.C:1886
 msgid "detach transitions"
 msgstr "quitar transiciones"
 
-#: cinelerra/mwindowedit.C:1888 cinelerra/mwindowedit.C:1916
-#: cinelerra/mwindowedit.C:1936 cinelerra/mwindowedit.C:1957
+#: cinelerra/mwindowedit.C:1901 cinelerra/mwindowedit.C:1929
+#: cinelerra/mwindowedit.C:1949 cinelerra/mwindowedit.C:1970
 msgid "transition"
 msgstr "transición"
 
-#: cinelerra/mwindowedit.C:1903
+#: cinelerra/mwindowedit.C:1916
 msgid "attach transitions"
 msgstr "adjuntar transiciones"
 
-#: cinelerra/mwindowedit.C:1928 cinelerra/mwindowedit.C:1948
+#: cinelerra/mwindowedit.C:1941 cinelerra/mwindowedit.C:1961
 #, c-format
 msgid "No default transition %s found."
 msgstr "No se encontró ninguna transición %s predeterminada."
 
-#: cinelerra/mwindowedit.C:1975
+#: cinelerra/mwindowedit.C:1988
 msgid "shuffle edits"
 msgstr "mezclar ediciones"
 
-#: cinelerra/mwindowedit.C:1994
+#: cinelerra/mwindowedit.C:2007
 msgid "reverse edits"
 msgstr "ediciones inverso"
 
-#: cinelerra/mwindowedit.C:2013
+#: cinelerra/mwindowedit.C:2026
 msgid "align edits"
 msgstr "alinear ediciones"
 
-#: cinelerra/mwindowedit.C:2032
+#: cinelerra/mwindowedit.C:2045
 msgid "edit length"
 msgstr "edita la longitud"
 
-#: cinelerra/mwindowedit.C:2052 cinelerra/mwindowedit.C:2071
+#: cinelerra/mwindowedit.C:2065 cinelerra/mwindowedit.C:2084
 msgid "transition length"
 msgstr "longitud de transición"
 
-#: cinelerra/mwindowedit.C:2135
+#: cinelerra/mwindowedit.C:2148
 msgid "resize track"
 msgstr "cambiar el tamaño de la pista"
 
-#: cinelerra/mwindowedit.C:2148
+#: cinelerra/mwindowedit.C:2161
 msgid "in point"
 msgstr "punto de entrada"
 
-#: cinelerra/mwindowedit.C:2161
+#: cinelerra/mwindowedit.C:2174
 msgid "out point"
 msgstr "punto de salida"
 
-#: cinelerra/mwindowedit.C:2174
+#: cinelerra/mwindowedit.C:2187
 msgid "clear in/out"
 msgstr "eliminar entrada/salida"
 
-#: cinelerra/mwindowedit.C:2211
+#: cinelerra/mwindowedit.C:2224
 msgid "splice"
 msgstr "empalmar"
 
-#: cinelerra/mwindowedit.C:2326
+#: cinelerra/mwindowedit.C:2340
 msgid "label"
 msgstr "etiqueta"
 
-#: cinelerra/mwindowedit.C:2342
+#: cinelerra/mwindowedit.C:2356
 msgid "trim selection"
 msgstr "eliminar selección"
 
-#: cinelerra/mwindowedit.C:2401
+#: cinelerra/mwindowedit.C:2416
 msgid "create new folder failed"
 msgstr "fallo crear nueva carpeta"
 
-#: cinelerra/mwindowedit.C:2403
+#: cinelerra/mwindowedit.C:2418
 msgid "new folder"
 msgstr "nueva carpeta"
 
-#: cinelerra/mwindowedit.C:2411
+#: cinelerra/mwindowedit.C:2426
 msgid "delete folder failed"
 msgstr "falla eliminar carpeta"
 
-#: cinelerra/mwindowedit.C:2413
+#: cinelerra/mwindowedit.C:2428
 msgid "del folder"
 msgstr "eliminar carpeta"
 
-#: cinelerra/mwindowedit.C:2449
+#: cinelerra/mwindowedit.C:2464
 msgid "map 1:1"
 msgstr "mapa 1:1"
 
-#: cinelerra/mwindowedit.C:2449
+#: cinelerra/mwindowedit.C:2464
 msgid "map 5.1:2"
 msgstr "mapa 5.1:2"
 
-#: cinelerra/mwindowedit.C:2526
+#: cinelerra/mwindowedit.C:2541
 msgid "convert assets format error"
 msgstr "error de formato de conversión de activos"
 
-#: cinelerra/mwindowedit.C:2528
+#: cinelerra/mwindowedit.C:2543
 msgid "No convertable assets found"
 msgstr "Activos no convertibles encontrados"
 
-#: cinelerra/mwindowedit.C:2543
+#: cinelerra/mwindowedit.C:2558
 msgid "convert"
 msgstr "convertir"
 
-#: cinelerra/mwindowedit.C:2560
+#: cinelerra/mwindowedit.C:2575
 msgid "cut ads"
 msgstr "cortar anuncios"
 
-#: cinelerra/mwindowedit.C:2635 cinelerra/mwindowedit.C:2680
+#: cinelerra/mwindowedit.C:2741 cinelerra/mwindowedit.C:2786
 msgid "Selected edit track not armed."
 msgstr "La pista seleccionada no esta activa para edición."
 
-#: cinelerra/mwindowedit.C:2638 cinelerra/mwindowedit.C:2686
+#: cinelerra/mwindowedit.C:2744 cinelerra/mwindowedit.C:2792
 msgid "More than one edit selected on a track."
 msgstr "Hay mas de un clip seleccionado para edición en esta pista."
 
-#: cinelerra/mwindowedit.C:2641
+#: cinelerra/mwindowedit.C:2747
 msgid "No effects under selected edit."
 msgstr "No hay efectos bajo el clip seleccionado para edición."
 
-#: cinelerra/mwindowedit.C:2644
+#: cinelerra/mwindowedit.C:2750
 msgid "No edits selected."
 msgstr "No hay clips seleccionados para edición."
 
-#: cinelerra/mwindowedit.C:2647 cinelerra/mwindowedit.C:2695
+#: cinelerra/mwindowedit.C:2753 cinelerra/mwindowedit.C:2801
 msgid "Shared effect added without master."
 msgstr "Efecto compartido agregado sin referencia maestra."
 
-#: cinelerra/mwindowedit.C:2668
+#: cinelerra/mwindowedit.C:2774
 msgid "Error clipboard buffer empty."
 msgstr "Error, el portapapeles para copia está vacio."
 
-#: cinelerra/mwindowedit.C:2683
+#: cinelerra/mwindowedit.C:2789
 msgid "Track type mismatched."
 msgstr "El tipo de pista no coincide."
 
-#: cinelerra/mwindowedit.C:2689
+#: cinelerra/mwindowedit.C:2795
 msgid "Too few target edits to add group effects."
 msgstr "No hay suficientes clips seleccionados para agregar efectos en grupo."
 
-#: cinelerra/mwindowedit.C:2692
+#: cinelerra/mwindowedit.C:2798
 msgid "Too many target edits to add group effects."
 msgstr "Demasiados clips de destino para agregar efectos de grupo."
 
-#: cinelerra/mwindowedit.C:2701
+#: cinelerra/mwindowedit.C:2807
 msgid "paste effects"
 msgstr "pegar efectos"
 
-#: cinelerra/mwindowedit.C:2708
+#: cinelerra/mwindowedit.C:2814
 msgid "Error loading clip from clipboard buffer."
 msgstr "Error al cargar el clip desde el búfer del portapapeles."
 
-#: cinelerra/mwindowedit.C:2719
+#: cinelerra/mwindowedit.C:2825
 msgid "align timecodes"
 msgstr "alinear cçodigos de tiempo"
 
-#: cinelerra/mwindowedit.C:2804
+#: cinelerra/mwindowedit.C:2910
 msgid "mix masters"
 msgstr "mezcladores maestros"
 
+#: cinelerra/mwindowedit.C:2927
+msgid "create kyfrms"
+msgstr "crear ftgClaves"
+
 #: cinelerra/mwindowgui.C:85
 msgid ": Program"
 msgstr ": Programa"
 
-#: cinelerra/mwindowgui.C:2349
+#: cinelerra/mwindowgui.C:2379
 msgid "Changing the base codecs may require rebuilding indexes."
 msgstr ""
 "Cambiar la base de codificación puede requerir recargar los archivos.\n"
 "Puede hacer esto desde la ventana de recursos. Seleccione los archivos\n"
 "y desde el submenú del botón derecho elija \"Recargar seleccionados\"."
 
-#: cinelerra/mwindowgui.C:2388 cinelerra/mwindowgui.C:2422
+#: cinelerra/mwindowgui.C:2418 cinelerra/mwindowgui.C:2452
 msgid "Disable proxy"
 msgstr "Desactivar proxy"
 
-#: cinelerra/mwindowgui.C:2388 cinelerra/mwindowgui.C:2422
+#: cinelerra/mwindowgui.C:2418 cinelerra/mwindowgui.C:2452
 msgid "Enable proxy"
 msgstr "Activar proxy"
 
@@ -8365,72 +8479,72 @@ msgstr "Intercambiar dimensiones"
 msgid "Render file per label and no labels\n"
 msgstr "Procesar archivo por etiqueta y sin etiquetas\n"
 
-#: cinelerra/patchgui.C:334
+#: cinelerra/patchgui.C:336
 msgid "Play track"
 msgstr ""
 "Silenciar pista\n"
 "AFECTA AL RENDER"
 
-#: cinelerra/patchgui.C:359
+#: cinelerra/patchgui.C:361
 msgid "play patch"
 msgstr "reproducir parte"
 
-#: cinelerra/patchgui.C:387
+#: cinelerra/patchgui.C:389
 msgid "Arm track"
 msgstr ""
 "Bloquear/Desbloquear edición de la pista (TAB)\n"
 "Click con Mayúsculas bloquea/desbloquea las demás (Mayús-TAB)"
 
-#: cinelerra/patchgui.C:417
+#: cinelerra/patchgui.C:419
 msgid "record patch"
 msgstr "parchear la grabación"
 
-#: cinelerra/patchgui.C:444
+#: cinelerra/patchgui.C:446
 msgid "Gang faders"
 msgstr ""
 "Encadena el cambio de valores cuando se hace uso del deslizador\n"
 "Este cambio afectará a todas las pistas activas que tengan este icono activado\n"
 "Muy útil para cambiar la ganancia de las pistas de audio de manera simultánea"
 
-#: cinelerra/patchgui.C:469
+#: cinelerra/patchgui.C:471
 msgid "gang patch"
 msgstr "junta parte"
 
-#: cinelerra/patchgui.C:496
+#: cinelerra/patchgui.C:498
 msgid "Draw media"
 msgstr "Ver/ocultar miniaturas"
 
-#: cinelerra/patchgui.C:521
+#: cinelerra/patchgui.C:523
 msgid "draw patch"
 msgstr "dibujar parte"
 
-#: cinelerra/patchgui.C:547
+#: cinelerra/patchgui.C:549
 msgid "Don't send to output"
 msgstr ""
 "Silenciar pista, se puede animar\n"
 "AFECTA AL RENDER"
 
-#: cinelerra/patchgui.C:587
+#: cinelerra/patchgui.C:589
 msgid "mute patch"
 msgstr "silenciar parte"
 
-#: cinelerra/patchgui.C:599
+#: cinelerra/patchgui.C:601
 msgid "Track Data Height"
 msgstr "Altura de la pista"
 
-#: cinelerra/patchgui.C:626
+#: cinelerra/patchgui.C:628
 msgid "Master Track"
 msgstr "Pista Maestra"
 
-#: cinelerra/patchgui.C:669
+#: cinelerra/patchgui.C:671
 msgid "expand patch"
 msgstr "ampliar parte"
 
-#: cinelerra/patchgui.C:696 cinelerra/patchgui.C:700
+#: cinelerra/patchgui.C:698 cinelerra/patchgui.C:702
 msgid "track title"
 msgstr "título de la pista"
 
-#: cinelerra/patchgui.C:729 cinelerra/patchgui.C:735
+#: cinelerra/patchgui.C:731 cinelerra/patchgui.C:737
 msgid "nudge."
 msgstr "empujar."
 
@@ -8786,23 +8900,23 @@ msgstr "Encender"
 msgid "Preset Edit"
 msgstr "Editar preestablecidos"
 
-#: cinelerra/preferences.C:425
+#: cinelerra/preferences.C:429
 msgid "Current Manual"
 msgstr "Manual Actual"
 
-#: cinelerra/preferences.C:426
+#: cinelerra/preferences.C:430
 msgid "Setting Shell Commands"
 msgstr "Ajustes de Comandos del Shell"
 
-#: cinelerra/preferences.C:427
+#: cinelerra/preferences.C:431
 msgid "Shortcuts"
 msgstr "Atajos de teclado"
 
-#: cinelerra/preferences.C:428
+#: cinelerra/preferences.C:432
 msgid "RenderMux"
 msgstr "RenderizarMux"
 
-#: cinelerra/preferences.inc:36
+#: cinelerra/preferences.inc:38
 msgid ""
 "Currently: Try FFMpeg first\n"
 "   Click to: Try FFMpeg last"
@@ -8810,7 +8924,7 @@ msgstr ""
 "Actualmente: Probar FFMpeg Primero\n"
 "        Clic para: Probar FFMpeg Último"
 
-#: cinelerra/preferences.inc:37
+#: cinelerra/preferences.inc:39
 msgid ""
 "Currently: Try FFMpeg last\n"
 "   Click to: Try FFMpeg first"
@@ -8826,59 +8940,59 @@ msgstr "Preferencias..."
 msgid "Shift-P"
 msgstr "Mayús-P"
 
-#: cinelerra/preferencesthread.C:375 cinelerra/render.C:864
+#: cinelerra/preferencesthread.C:376 cinelerra/render.C:864
 msgid "render"
 msgstr "renderizar"
 
-#: cinelerra/preferencesthread.C:378 cinelerra/record.C:439
+#: cinelerra/preferencesthread.C:379 cinelerra/record.C:439
 msgid "record"
 msgstr "grabar"
 
-#: cinelerra/preferencesthread.C:389
+#: cinelerra/preferencesthread.C:390
 msgid "*Playback A"
 msgstr "*Reproducción A"
 
-#: cinelerra/preferencesthread.C:389
+#: cinelerra/preferencesthread.C:390
 msgid "Playback A"
 msgstr "Reproducción A"
 
-#: cinelerra/preferencesthread.C:392
+#: cinelerra/preferencesthread.C:393
 msgid "*Playback B"
 msgstr "*Reproducción B"
 
-#: cinelerra/preferencesthread.C:392
+#: cinelerra/preferencesthread.C:393
 msgid "Playback B"
 msgstr "Reproducción B"
 
-#: cinelerra/preferencesthread.C:394
+#: cinelerra/preferencesthread.C:395
 msgid "Recording"
 msgstr "Grabación"
 
-#: cinelerra/preferencesthread.C:396
+#: cinelerra/preferencesthread.C:397
 msgid "Performance"
 msgstr "Rendimiento"
 
-#: cinelerra/preferencesthread.C:398
+#: cinelerra/preferencesthread.C:399
 msgid "Interface"
 msgstr "Interfaz"
 
-#: cinelerra/preferencesthread.C:400
+#: cinelerra/preferencesthread.C:401
 msgid "Appearance"
 msgstr "Apariencia"
 
-#: cinelerra/preferencesthread.C:402
+#: cinelerra/preferencesthread.C:403
 msgid "About"
 msgstr "Acerca de"
 
-#: cinelerra/preferencesthread.C:427
+#: cinelerra/preferencesthread.C:428
 msgid ": Preferences"
 msgstr ": Preferencias"
 
-#: cinelerra/preferencesthread.C:690
+#: cinelerra/preferencesthread.C:691
 msgid "restart"
 msgstr "reiniciar"
 
-#: cinelerra/preferencesthread.C:709
+#: cinelerra/preferencesthread.C:710
 #, c-format
 msgid "Busy: %s in progress. Are you sure?"
 msgstr "Atención: Se va a %s la aplicación. ¿Está seguro?"
@@ -9575,13 +9689,11 @@ msgstr ""
 msgid ": Resize Track"
 msgstr ": Cambiar el tamaño de la pista"
 
-#: cinelerra/resizetrackthread.C:121 plugins/scale/scalewin.C:65
-#: plugins/titler/titlerwindow.C:243
+#: cinelerra/resizetrackthread.C:121 plugins/titler/titlerwindow.C:243
 msgid "Size:"
 msgstr "Tamaño:"
 
 #: cinelerra/resizetrackthread.C:132 cinelerra/resizetrackthread.C:143
-#: plugins/scale/scalewin.C:70
 msgid "x"
 msgstr "x"
 
@@ -9634,6 +9746,18 @@ msgstr "Recargar Proyecto"
 msgid "Export Project..."
 msgstr "Exportar Proyecto..."
 
+#: cinelerra/savefile.C:258
+msgid "Save Session"
+msgstr "Guardar Sesión"
+
+#: cinelerra/savefile.C:258
+msgid "Ctrl-s"
+msgstr "Ctrl-s"
+
+#: cinelerra/savefile.C:269
+msgid "Saved session."
+msgstr "Sesión guardada."
+
 #: cinelerra/scale.C:36
 msgid "Resize..."
 msgstr "Redimensionar..."
@@ -9658,7 +9782,7 @@ msgstr "Proporción An:"
 msgid "H Ratio:"
 msgstr "Proporción Al:"
 
-#: cinelerra/scale.C:343 plugins/scale/scalewin.C:234
+#: cinelerra/scale.C:343 plugins/scale/scalewin.C:257
 msgid "Constrain ratio"
 msgstr "Restringir proporcion"
 
@@ -9984,11 +10108,11 @@ msgstr "Siguiente"
 msgid "Previous tip"
 msgstr "Anterior"
 
-#: cinelerra/trackcanvas.C:4659
+#: cinelerra/trackcanvas.C:4712
 msgid "keyframe"
 msgstr "fotograma clave"
 
-#: cinelerra/trackcanvas.C:4869
+#: cinelerra/trackcanvas.C:4922
 msgid "hard_edge"
 msgstr "borde_duro"
 
@@ -10167,144 +10291,144 @@ msgstr "Mostrar títulos"
 msgid "Show transitions"
 msgstr "Mostrar transiciones"
 
-#: cinelerra/vpatchgui.C:303 cinelerra/vpatchgui.C:308
+#: cinelerra/vpatchgui.C:330 cinelerra/vpatchgui.C:333
 msgid "mode"
 msgstr "modo"
 
-#: cinelerra/vpatchgui.C:324
+#: cinelerra/vpatchgui.C:348
 msgid "Arithmetic..."
 msgstr "Aritmética..."
 
-#: cinelerra/vpatchgui.C:331
+#: cinelerra/vpatchgui.C:355
 msgid "PorterDuff..."
 msgstr "PuertoSinValor..."
 
-#: cinelerra/vpatchgui.C:343
+#: cinelerra/vpatchgui.C:367
 msgid "Logical..."
 msgstr "Lógico..."
 
-#: cinelerra/vpatchgui.C:352
+#: cinelerra/vpatchgui.C:376
 msgid "Graphic Art..."
 msgstr "Arte Grafico..."
 
-#: cinelerra/vpatchgui.C:383 cinelerra/vpatchgui.C:414
+#: cinelerra/vpatchgui.C:407 cinelerra/vpatchgui.C:438
 msgid "Normal"
 msgstr "Normal"
 
-#: cinelerra/vpatchgui.C:384
+#: cinelerra/vpatchgui.C:408
 msgid "Addition"
 msgstr "Suma"
 
-#: cinelerra/vpatchgui.C:385
+#: cinelerra/vpatchgui.C:409
 msgid "Subtract"
 msgstr "Resta"
 
-#: cinelerra/vpatchgui.C:386 plugins/overlayaudio/overlayaudio.C:175
+#: cinelerra/vpatchgui.C:410 plugins/overlayaudio/overlayaudio.C:175
 msgid "Multiply"
 msgstr "Multiplicar"
 
-#: cinelerra/vpatchgui.C:387
+#: cinelerra/vpatchgui.C:411
 msgid "Divide"
 msgstr "Dividir"
 
-#: cinelerra/vpatchgui.C:388 plugins/timeavg/timeavgwindow.C:231
+#: cinelerra/vpatchgui.C:412 plugins/timeavg/timeavgwindow.C:231
 msgid "Replace"
 msgstr "Reemplazar"
 
-#: cinelerra/vpatchgui.C:389
+#: cinelerra/vpatchgui.C:413
 msgid "Max"
 msgstr "Máx"
 
-#: cinelerra/vpatchgui.C:390
+#: cinelerra/vpatchgui.C:414
 msgid "Min"
 msgstr "Mín"
 
-#: cinelerra/vpatchgui.C:391
+#: cinelerra/vpatchgui.C:415
 msgid "Darken"
 msgstr "Más oscuro"
 
-#: cinelerra/vpatchgui.C:392
+#: cinelerra/vpatchgui.C:416
 msgid "Lighten"
 msgstr "Aclarar"
 
-#: cinelerra/vpatchgui.C:393
+#: cinelerra/vpatchgui.C:417
 msgid "Dst"
 msgstr "Dst"
 
-#: cinelerra/vpatchgui.C:394
+#: cinelerra/vpatchgui.C:418
 msgid "DstAtop"
 msgstr "DstAtop"
 
-#: cinelerra/vpatchgui.C:395
+#: cinelerra/vpatchgui.C:419
 msgid "DstIn"
 msgstr "DstIn"
 
-#: cinelerra/vpatchgui.C:396
+#: cinelerra/vpatchgui.C:420
 msgid "DstOut"
 msgstr "DstOut"
 
-#: cinelerra/vpatchgui.C:397
+#: cinelerra/vpatchgui.C:421
 msgid "DstOver"
 msgstr "DstOver"
 
-#: cinelerra/vpatchgui.C:398
+#: cinelerra/vpatchgui.C:422
 msgid "Src"
 msgstr "Src"
 
-#: cinelerra/vpatchgui.C:399
+#: cinelerra/vpatchgui.C:423
 msgid "SrcAtop"
 msgstr "SrcAtop"
 
-#: cinelerra/vpatchgui.C:400
+#: cinelerra/vpatchgui.C:424
 msgid "SrcIn"
 msgstr "SrcIn"
 
-#: cinelerra/vpatchgui.C:401
+#: cinelerra/vpatchgui.C:425
 msgid "SrcOut"
 msgstr "SrcOut"
 
-#: cinelerra/vpatchgui.C:402
+#: cinelerra/vpatchgui.C:426
 msgid "SrcOver"
 msgstr "SrcOver"
 
-#: cinelerra/vpatchgui.C:403
+#: cinelerra/vpatchgui.C:427
 msgid "AND"
 msgstr "Y"
 
-#: cinelerra/vpatchgui.C:404
+#: cinelerra/vpatchgui.C:428
 msgid "OR"
 msgstr "O"
 
-#: cinelerra/vpatchgui.C:405
+#: cinelerra/vpatchgui.C:429
 msgid "XOR"
 msgstr "XOR"
 
-#: cinelerra/vpatchgui.C:406 plugins/overlay/overlay.C:606
+#: cinelerra/vpatchgui.C:430 plugins/overlay/overlay.C:606
 #: plugins/overlayaudio/overlayaudio.C:325
 msgid "Overlay"
 msgstr "Superposición"
 
-#: cinelerra/vpatchgui.C:407
+#: cinelerra/vpatchgui.C:431
 msgid "Screen"
 msgstr "Pantalla"
 
-#: cinelerra/vpatchgui.C:408
+#: cinelerra/vpatchgui.C:432
 msgid "Burn"
 msgstr "Quemar"
 
-#: cinelerra/vpatchgui.C:409
+#: cinelerra/vpatchgui.C:433
 msgid "Dodge"
 msgstr "Esquivar"
 
-#: cinelerra/vpatchgui.C:410
+#: cinelerra/vpatchgui.C:434
 msgid "Hardlight"
 msgstr "Luz dura"
 
-#: cinelerra/vpatchgui.C:411
+#: cinelerra/vpatchgui.C:435
 msgid "Softlight"
 msgstr "Luz tenue"
 
-#: cinelerra/vpatchgui.C:412
+#: cinelerra/vpatchgui.C:436
 msgid "Difference"
 msgstr "Diferencia"
 
@@ -10670,18 +10794,20 @@ msgstr "Posición y Tamaño"
 
 #: plugins/boxblur/boxblur.C:464 plugins/crikey/crikeywindow.C:150
 #: plugins/perspective/perspective.C:139 plugins/radialblur/radialblur.C:150
-#: plugins/rotate/rotate.C:378 plugins/sketcher/sketcherwindow.C:448
-#: plugins/titler/titlerwindow.C:292 plugins/titler/titlerwindow.C:296
-#: plugins/tracer/tracerwindow.C:114 plugins/zoomblur/zoomblur.C:148
+#: plugins/rotate/rotate.C:378 plugins/scale/scalewin.C:71
+#: plugins/sketcher/sketcherwindow.C:448 plugins/titler/titlerwindow.C:292
+#: plugins/titler/titlerwindow.C:296 plugins/tracer/tracerwindow.C:114
+#: plugins/zoomblur/zoomblur.C:148
 msgid "X:"
 msgstr "X:"
 
 #: plugins/boxblur/boxblur.C:471 plugins/crikey/crikeywindow.C:159
 #: plugins/perspective/perspective.C:145 plugins/radialblur/radialblur.C:157
-#: plugins/rotate/rotate.C:386 plugins/sketcher/sketcherwindow.C:465
-#: plugins/titler/titlerwindow.C:293 plugins/titler/titlerwindow.C:301
-#: plugins/tracer/tracerwindow.C:126 plugins/yuv/yuv.C:264
-#: plugins/yuv/yuvwindow.C:43 plugins/zoomblur/zoomblur.C:155
+#: plugins/rotate/rotate.C:386 plugins/scale/scalewin.C:79
+#: plugins/sketcher/sketcherwindow.C:465 plugins/titler/titlerwindow.C:293
+#: plugins/titler/titlerwindow.C:301 plugins/tracer/tracerwindow.C:126
+#: plugins/yuv/yuv.C:264 plugins/yuv/yuvwindow.C:43
+#: plugins/zoomblur/zoomblur.C:155
 msgid "Y:"
 msgstr "Y:"
 
@@ -11167,11 +11293,6 @@ msgstr "Banda de derivación"
 msgid "CriKey"
 msgstr "CriKey"
 
-#: plugins/crikey/crikeywindow.C:97 plugins/descratch/descratch.C:705
-#: plugins/edge/edge.C:74
-msgid "Edge"
-msgstr "Borde"
-
 #: plugins/crikey/crikeywindow.C:143
 msgid "Draw mode:"
 msgstr "Modo dibujo:"
@@ -11923,7 +12044,8 @@ msgstr "Coincidencia exacta"
 msgid "Aspect"
 msgstr "Aspecto"
 
-#: plugins/findobj/findobjwindow.C:804 plugins/scale/scale.C:90
+#: plugins/findobj/findobjwindow.C:804 plugins/scale/scale.C:114
+#: plugins/scale/scalewin.C:67
 msgid "Scale"
 msgstr "Escala"
 
@@ -12923,7 +13045,7 @@ msgstr "EQ paramétrico"
 
 #: plugins/perspective/perspective.C:133
 msgid "Current: "
-msgstr "Actual:"
+msgstr "Actual: "
 
 #: plugins/perspective/perspective.C:152 plugins/perspective/perspective.C:679
 msgid "Perspective"
@@ -13269,11 +13391,11 @@ msgstr "seq:"
 msgid "Rumbler"
 msgstr "Calador"
 
-#: plugins/scale/scalewin.C:204
+#: plugins/scale/scalewin.C:225
 msgid "Use fixed scale"
 msgstr "Usar escala fija"
 
-#: plugins/scale/scalewin.C:220
+#: plugins/scale/scalewin.C:242
 msgid "Use fixed size"
 msgstr "Usar tamaño fijo"
 
@@ -14324,21 +14446,3 @@ msgstr "Y Ampliación:"
 #: plugins/zoomblur/zoomblur.C:352
 msgid "Zoom Blur"
 msgstr "Desenfoque Zoom"
-
-msgid "Set curve modes..."
-msgstr "Establecer modo de curva..."
-
-msgid "Create keyframes..."
-msgstr "Crear fotogramas clave..."
-
-msgid "Bump"
-msgstr "Salto"
-
-msgid "Camera XYZ"
-msgstr "Cámara XYZ"
-
-msgid "Projector XYZ"
-msgstr "Proyector XYZ"
-
-msgid "Fade+Speed+XYZ"
-msgstr "Fundido+Velocidad+XYZ"