cut with active speed auto correction, add locale pref, mod prores dft profile to...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / appearanceprefs.C
index b3718b755876affa5e6f5ff72dbc5a43ec8c2690..435f70ad1bf6df6a54397e854a0f4ca2ee2ef3fd 100644 (file)
@@ -38,6 +38,7 @@ AppearancePrefs::AppearancePrefs(MWindow *mwindow, PreferencesWindow *pwindow)
 {
        hms = 0;
        hmsf = 0;
+       timecode = 0;
        samples = 0;
        frames = 0;
        hex = 0;
@@ -52,6 +53,7 @@ AppearancePrefs::~AppearancePrefs()
 {
        delete hms;
        delete hmsf;
+       delete timecode;
        delete samples;
        delete frames;
        delete hex;
@@ -92,7 +94,12 @@ void AppearancePrefs::create_objects()
        add_subwindow(new BC_Title(x, y, _("Plugin Icons:")));
        add_subwindow(plugin_icons = new ViewPluginIcons(x1, y, pwindow));
        plugin_icons->create_objects();
-       y += plugin_icons->get_h() + ys15;
+       y += plugin_icons->get_h() + ys10;
+       add_subwindow(new BC_Title(x, y, _("Locale:")));
+       LayoutLocale *layout_locale;
+       add_subwindow(layout_locale = new LayoutLocale(x1, y, pwindow));
+       layout_locale->create_objects();
+       y += layout_locale->get_h() + ys15;
        x1 = get_w()/2;
 
        int x2 = x1 + xS(160), y2 = y;
@@ -131,6 +138,10 @@ void AppearancePrefs::create_objects()
                pwindow->thread->edl->session->time_format == TIME_HMSF,
                x, y));
        y += ys20;
+       add_subwindow(timecode = new TimeFormatTimecode(pwindow, this,
+               pwindow->thread->edl->session->time_format == TIME_TIMECODE,
+               x, y));
+       y += ys20;
        add_subwindow(samples = new TimeFormatSamples(pwindow, this,
                pwindow->thread->edl->session->time_format == TIME_SAMPLES,
                x, y));
@@ -178,18 +189,17 @@ void AppearancePrefs::create_objects()
                x2, y, xS(80), yS(24), clr_color, clr_alpha));
        draw_3d_border(x2-2,y-2, xS(80)+4,xS(24)+4, 1);
        cwdw_bg_color->create_objects();
+       x2 += cwdw_bg_color->get_w();
        y += ys35;
 
-       x = x1;
-       add_subwindow(title = new BC_Title(x, y, _("YUV color space:")));
-       x += title->get_w() + margin;
+       add_subwindow(title = new BC_Title(x1, y, _("YUV color space:")));
+       x = x2 - xS(120);
        add_subwindow(yuv_color_space = new YuvColorSpace(x, y, pwindow));
        yuv_color_space->create_objects();
        y += yuv_color_space->get_h() + ys5;
 
-       x = x1;
-       add_subwindow(title = new BC_Title(x, y, _("YUV color range:")));
-       x += title->get_w() + margin;
+       add_subwindow(title = new BC_Title(x1, y, _("YUV color range:")));
+       x = x2 - xS(100);
        add_subwindow(yuv_color_range = new YuvColorRange(x, y, pwindow));
        yuv_color_range->create_objects();
        y += yuv_color_range->get_h() + ys35;
@@ -208,16 +218,16 @@ void AppearancePrefs::create_objects()
        UseWarnVersion *ver_warn = new UseWarnVersion(pwindow, x, y);
        add_subwindow(ver_warn);
        y += ver_warn->get_h() + ys5;
-       UseWarnStack *stack_warn = new UseWarnStack(pwindow, x, y);
-       add_subwindow(stack_warn);
-       y += stack_warn->get_h() + ys5;
        BD_WarnRoot *bdwr_warn = new BD_WarnRoot(pwindow, x, y);
        add_subwindow(bdwr_warn);
        y += bdwr_warn->get_h() + ys5;
+       UseWarnFileRef *warn_ref = new UseWarnFileRef(pwindow, x, y);
+       add_subwindow(warn_ref);
+       y += warn_ref->get_h() + ys5;
 
        x = get_w() / 3 + xs30;
        y = y1;
-       add_subwindow(title = new BC_Title(x1, y, _("Flags:"), LARGEFONT,
+       add_subwindow(title = new BC_Title(x, y, _("Flags:"), LARGEFONT,
                resources->text_default));
        y += title->get_h() + ys10;
        y1 = y;
@@ -256,6 +266,9 @@ void AppearancePrefs::create_objects()
        DeactivateFocusPolicy *focus_deactivate = new DeactivateFocusPolicy(pwindow, x, y);
        add_subwindow(focus_deactivate);
        y += focus_deactivate->get_h() + ys5;
+       AutoRotate *auto_rotate = new AutoRotate(pwindow, x, y);
+       add_subwindow(auto_rotate);
+       y += auto_rotate->get_h() + ys5;
 }
 
 int AppearancePrefs::update(int new_value)
@@ -264,6 +277,7 @@ int AppearancePrefs::update(int new_value)
        pwindow->thread->edl->session->time_format = new_value;
        hms->update(new_value == TIME_HMS);
        hmsf->update(new_value == TIME_HMSF);
+       timecode->update(new_value == TIME_TIMECODE);
        samples->update(new_value == TIME_SAMPLES);
        hex->update(new_value == TIME_SAMPLES_HEX);
        frames->update(new_value == TIME_FRAMES);
@@ -293,6 +307,16 @@ int TimeFormatHMSF::handle_event()
        return 1;
 }
 
+TimeFormatTimecode::TimeFormatTimecode(PreferencesWindow *pwindow, AppearancePrefs *tfwindow, int value, int x, int y)
+ : BC_Radial(x, y, value, TIME_TIMECODE_TEXT)
+{ this->pwindow = pwindow; this->tfwindow = tfwindow; }
+
+int TimeFormatTimecode::handle_event()
+{
+       tfwindow->update(TIME_TIMECODE);
+       return 1;
+}
+
 TimeFormatSamples::TimeFormatSamples(PreferencesWindow *pwindow, AppearancePrefs *tfwindow, int value, int x, int y)
  : BC_Radial(x, y, value, TIME_SAMPLES_TEXT)
 { this->pwindow = pwindow; this->tfwindow = tfwindow; }
@@ -443,6 +467,42 @@ int ViewPluginIconItem::handle_event()
        return 1;
 }
 
+LayoutLocale::LayoutLocale(int x, int y, PreferencesWindow *pwindow)
+ : BC_PopupMenu(x, y, xS(200), pwindow->thread->preferences->locale, 1)
+{
+       this->pwindow = pwindow;
+}
+LayoutLocale::~LayoutLocale()
+{
+}
+
+const char *LayoutLocale::locale_list[] = { LOCALE_LIST, 0 };
+
+void LayoutLocale::create_objects()
+{
+       for( const char *tp, **lp=locale_list; (tp=*lp)!=0; ++lp )
+               add_item(new LayoutLocaleItem(this, tp));
+}
+
+int LayoutLocale::handle_event()
+{
+       return 1;
+}
+
+LayoutLocaleItem::LayoutLocaleItem(LayoutLocale *popup, const char *text)
+ : BC_MenuItem(text)
+{
+       this->popup = popup;
+}
+
+int LayoutLocaleItem::handle_event()
+{
+       popup->set_text(get_text());
+       strcpy(popup->pwindow->thread->preferences->locale, get_text());
+       popup->handle_event();
+       return 1;
+}
+
 ViewLayoutScale::ViewLayoutScale(PreferencesWindow *pwindow,
                AppearancePrefs *aprefs, int x, int y)
  : BC_TumbleTextBox(aprefs,
@@ -602,32 +662,33 @@ int UseWarnVersion::handle_event()
        return 1;
 }
 
-UseWarnStack::UseWarnStack(PreferencesWindow *pwindow, int x, int y)
- : BC_CheckBox(x, y, pwindow->thread->preferences->warn_stack,
-       _("Stack warns if reference not modified"))
+BD_WarnRoot::BD_WarnRoot(PreferencesWindow *pwindow, int x, int y)
+ : BC_CheckBox(x, y, pwindow->thread->preferences->bd_warn_root,
+       _("Create Bluray warns if not root"))
 {
        this->pwindow = pwindow;
 }
 
-int UseWarnStack::handle_event()
+int BD_WarnRoot::handle_event()
 {
-       pwindow->thread->preferences->warn_stack = get_value();
+       pwindow->thread->preferences->bd_warn_root = get_value();
        return 1;
 }
 
-BD_WarnRoot::BD_WarnRoot(PreferencesWindow *pwindow, int x, int y)
- : BC_CheckBox(x, y, pwindow->thread->preferences->bd_warn_root,
-       _("Create Bluray warns if not root"))
+UseWarnFileRef::UseWarnFileRef(PreferencesWindow *pwindow, int x, int y)
+ : BC_CheckBox(x, y, pwindow->thread->preferences->warn_fileref,
+       _("Warn on creating file references"))
 {
        this->pwindow = pwindow;
 }
 
-int BD_WarnRoot::handle_event()
+int UseWarnFileRef::handle_event()
 {
-       pwindow->thread->preferences->bd_warn_root = get_value();
+       pwindow->thread->preferences->warn_fileref = get_value();
        return 1;
 }
 
+
 PopupMenuBtnup::PopupMenuBtnup(PreferencesWindow *pwindow, int x, int y)
  : BC_CheckBox(x, y, pwindow->thread->preferences->popupmenu_btnup,
        _("Popups activate on button up"))
@@ -686,6 +747,19 @@ int DeactivateFocusPolicy::handle_event()
        return 1;
 }
 
+AutoRotate::AutoRotate(PreferencesWindow *pwindow, int x, int y)
+ : BC_CheckBox(x, y, pwindow->thread->preferences->auto_rotate != 0,
+       _("Auto rotate ffmpeg media"))
+{
+       this->pwindow = pwindow;
+}
+
+int AutoRotate::handle_event()
+{
+       pwindow->thread->preferences->auto_rotate = get_value();
+       return 1;
+}
+
 ForwardRenderDisplacement::ForwardRenderDisplacement(PreferencesWindow *pwindow, int x, int y)
  : BC_CheckBox(x, y, pwindow->thread->preferences->forward_render_displacement,
        _("Always show next frame"))
@@ -733,9 +807,9 @@ int HighlightInverseColor::handle_event()
 
 
 const char *YuvColorSpace::color_space[] = {
-       N_("BT601"),
-       N_("BT709"),
-       N_("BT2020"),
+       N_("BT601"), // COLOR_SPACE_BT601
+       N_("BT709"), // COLOR_SPACE_BT709
+       N_("BT2020"), // COLOR_SPACE_BT2020
 };
 
 YuvColorSpace::YuvColorSpace(int x, int y, PreferencesWindow *pwindow)
@@ -777,8 +851,8 @@ int YuvColorSpaceItem::handle_event()
 
 
 const char *YuvColorRange::color_range[] = {
-       N_("JPEG"),
-       N_("MPEG"),
+       N_("JPEG"), // COLOR_RANGE_JPEG
+       N_("MPEG"), // COLOR_RANGE_MPEG
 };
 
 YuvColorRange::YuvColorRange(int x, int y, PreferencesWindow *pwindow)