asset drag/drop to viewers, bluebanana bug, listbox fontlist highlight
[goodguy/history.git] / cinelerra-5.1 / cinelerra / mainmenu.C
index 737c54bd90ee2b3f746b9c30b40eb81938e450c8..1b75ddfcd4078dd0f9fa00f6f6a8e6cdb255f9e8 100644 (file)
@@ -165,10 +165,9 @@ void MainMenu::create_objects()
        keyframemenu->add_item(new ClearKeyframes(mwindow));
        keyframemenu->add_item(new StraightenKeyframes(mwindow));
        keyframemenu->add_item(new BendKeyframes(mwindow));
-       keyframemenu->add_item(keyframe_curve_type =
-                new KeyframeCurveType(mwindow,
-                       mwindow->edl->local_session->floatauto_type));
+       keyframemenu->add_item(keyframe_curve_type = new KeyframeCurveType(mwindow));
        keyframe_curve_type->create_objects();
+       keyframe_curve_type->update(mwindow->edl->local_session->floatauto_type);
        keyframemenu->add_item(new BC_MenuItem("-"));
        keyframemenu->add_item(new CopyDefaultKeyframe(mwindow));
        keyframemenu->add_item(new PasteDefaultKeyframe(mwindow));
@@ -213,7 +212,7 @@ void MainMenu::create_objects()
        settingsmenu->add_item(new BC_MenuItem("-"));
        settingsmenu->add_item(new SaveSettingsNow(mwindow));
        settingsmenu->add_item(loop_playback = new LoopPlayback(mwindow));
-       settingsmenu->add_item(new SetBRenderStart(mwindow));
+       settingsmenu->add_item(brender_active = new SetBRenderActive(mwindow));
 // set scrubbing speed
 //     ScrubSpeed *scrub_speed;
 //     settingsmenu->add_item(scrub_speed = new ScrubSpeed(mwindow));
@@ -732,11 +731,10 @@ int BendKeyframes::handle_event()
 
 
 
-KeyframeCurveType::KeyframeCurveType(MWindow *mwindow, int curve_type)
+KeyframeCurveType::KeyframeCurveType(MWindow *mwindow)
  : BC_MenuItem(_("Create curve type..."))
 {
        this->mwindow = mwindow;
-       this->curve_type = curve_type;
        this->curve_menu = 0;
 }
 KeyframeCurveType::~KeyframeCurveType()
@@ -745,26 +743,28 @@ KeyframeCurveType::~KeyframeCurveType()
 
 void KeyframeCurveType::create_objects()
 {
-       curve_menu = new KeyframeCurveTypeMenu(this);
-       mwindow->gui->add_subwindow(curve_menu);
+       add_submenu(curve_menu = new KeyframeCurveTypeMenu(this));
        for( int i=FloatAuto::SMOOTH; i<=FloatAuto::FREE; ++i ) {
-               curve_menu->add_item(new KeyframeCurveTypeItem(i));
+               KeyframeCurveTypeItem *curve_type_item = new KeyframeCurveTypeItem(i, this);
+               curve_menu->add_submenuitem(curve_type_item);
        }
 }
 
-int KeyframeCurveType::handle_event()
+void KeyframeCurveType::update(int curve_type)
 {
        for( int i=0; i<curve_menu->total_items(); ++i ) {
-               KeyframeCurveTypeItem *curve_type_item =
-                       (KeyframeCurveTypeItem *)curve_menu->get_item(i);
+               KeyframeCurveTypeItem *curve_type_item = (KeyframeCurveTypeItem *)curve_menu->get_item(i);
                curve_type_item->set_checked(curve_type_item->type == curve_type);
        }
-       curve_menu->activate_menu();
+}
+
+int KeyframeCurveType::handle_event()
+{
        return 1;
 }
 
 KeyframeCurveTypeMenu::KeyframeCurveTypeMenu(KeyframeCurveType *menu_item)
- : BC_PopupMenu(0, 0, 0, "", 0)
+ : BC_SubMenu()
 {
        this->menu_item = menu_item;
 }
@@ -772,10 +772,11 @@ KeyframeCurveTypeMenu::~KeyframeCurveTypeMenu()
 {
 }
 
-KeyframeCurveTypeItem::KeyframeCurveTypeItem(int type)
+KeyframeCurveTypeItem::KeyframeCurveTypeItem(int type, KeyframeCurveType *main_item)
  : BC_MenuItem(FloatAuto::curve_name(type))
 {
        this->type = type;
+       this->main_item = main_item;
 }
 KeyframeCurveTypeItem::~KeyframeCurveTypeItem()
 {
@@ -783,9 +784,8 @@ KeyframeCurveTypeItem::~KeyframeCurveTypeItem()
 
 int KeyframeCurveTypeItem::handle_event()
 {
-       KeyframeCurveType *menu_item = ((KeyframeCurveTypeMenu *)get_popup_menu())->menu_item;
-       menu_item->curve_type = type;
-       menu_item->mwindow->set_keyframe_type(type);
+       main_item->update(type);
+       main_item->mwindow->set_keyframe_type(type);
        return 1;
 }
 
@@ -830,7 +830,7 @@ int PasteDefaultKeyframe::handle_event()
 }
 
 ClearDefaultKeyframe::ClearDefaultKeyframe(MWindow *mwindow)
- : BC_MenuItem(_("Clear default keyframe"), _("Alt-Del"), BACKSPACE)
+ : BC_MenuItem(_("Clear default keyframe"), _("Alt-Del"), DELETE)
 {
        set_alt();
        this->mwindow = mwindow;
@@ -879,7 +879,7 @@ int Paste::handle_event()
 }
 
 Clear::Clear(MWindow *mwindow)
- : BC_MenuItem(_("Clear"), _("Del"), BACKSPACE)
+ : BC_MenuItem(_("Clear"), _("Del"), DELETE)
 {
        this->mwindow = mwindow;
 }
@@ -1237,28 +1237,22 @@ int PasteSubttl::handle_event()
 }
 
 
-
-
-
-
-SetBRenderStart::SetBRenderStart(MWindow *mwindow)
- : BC_MenuItem(_("Set background render"))
+SetBRenderActive::SetBRenderActive(MWindow *mwindow)
+ : BC_MenuItem(_("Toggle background rendering"),_("Shift-G"),'G')
 {
        this->mwindow = mwindow;
+       set_shift(1);
 }
 
-int SetBRenderStart::handle_event()
+int SetBRenderActive::handle_event()
 {
-       mwindow->set_brender_start();
+       int v = mwindow->brender_active ? 0 : 1;
+       set_checked(v);
+       mwindow->set_brender_active(v);
        return 1;
 }
 
 
-
-
-
-
-
 LabelsFollowEdits::LabelsFollowEdits(MWindow *mwindow)
  : BC_MenuItem(_("Edit labels"))
 {
@@ -1277,16 +1271,16 @@ int LabelsFollowEdits::handle_event()
 
 
 PluginsFollowEdits::PluginsFollowEdits(MWindow *mwindow)
- : BC_MenuItem(_("Edit effects")) 
-{ 
-       this->mwindow = mwindow; 
+ : BC_MenuItem(_("Edit effects"))
+{
+       this->mwindow = mwindow;
        set_checked(mwindow->edl->session->plugins_follow_edits);
 }
 
 int PluginsFollowEdits::handle_event()
 {
        set_checked(get_checked() ^ 1);
-       mwindow->edl->session->plugins_follow_edits = get_checked(); 
+       mwindow->edl->session->plugins_follow_edits = get_checked();
        return 1;
 }
 
@@ -1294,45 +1288,45 @@ int PluginsFollowEdits::handle_event()
 
 
 KeyframesFollowEdits::KeyframesFollowEdits(MWindow *mwindow)
- : BC_MenuItem(_("Keyframes follow edits")) 
-{ 
-       this->mwindow = mwindow; 
+ : BC_MenuItem(_("Keyframes follow edits"))
+{
+       this->mwindow = mwindow;
        set_checked(mwindow->edl->session->autos_follow_edits);
 }
 
 int KeyframesFollowEdits::handle_event()
-{ 
-       mwindow->edl->session->autos_follow_edits ^= 1; 
+{
+       mwindow->edl->session->autos_follow_edits ^= 1;
        set_checked(!get_checked());
        return 1;
 }
 
 
 CursorOnFrames::CursorOnFrames(MWindow *mwindow)
- : BC_MenuItem(_("Align cursor on frames")) 
-{ 
-       this->mwindow = mwindow; 
+ : BC_MenuItem(_("Align cursor on frames"))
+{
+       this->mwindow = mwindow;
        set_checked(mwindow->edl->session->cursor_on_frames);
 }
 
 int CursorOnFrames::handle_event()
 {
-       mwindow->edl->session->cursor_on_frames = !mwindow->edl->session->cursor_on_frames; 
+       mwindow->edl->session->cursor_on_frames = !mwindow->edl->session->cursor_on_frames;
        set_checked(mwindow->edl->session->cursor_on_frames);
        return 1;
 }
 
 
 TypelessKeyframes::TypelessKeyframes(MWindow *mwindow)
- : BC_MenuItem(_("Typeless keyframes")) 
-{ 
-       this->mwindow = mwindow; 
+ : BC_MenuItem(_("Typeless keyframes"))
+{
+       this->mwindow = mwindow;
        set_checked(mwindow->edl->session->typeless_keyframes);
 }
 
 int TypelessKeyframes::handle_event()
 {
-       mwindow->edl->session->typeless_keyframes = !mwindow->edl->session->typeless_keyframes; 
+       mwindow->edl->session->typeless_keyframes = !mwindow->edl->session->typeless_keyframes;
        set_checked(mwindow->edl->session->typeless_keyframes);
        return 1;
 }
@@ -1358,9 +1352,9 @@ int ScrubSpeed::handle_event()
        return 1;
 }
 
-SaveSettingsNow::SaveSettingsNow(MWindow *mwindow) : BC_MenuItem(_("Save settings now")) 
-{ 
-       this->mwindow = mwindow; 
+SaveSettingsNow::SaveSettingsNow(MWindow *mwindow) : BC_MenuItem(_("Save settings now"))
+{
+       this->mwindow = mwindow;
 }
 
 int SaveSettingsNow::handle_event()
@@ -1417,14 +1411,19 @@ int ShowCWindow::handle_event()
 
 
 ShowGWindow::ShowGWindow(MWindow *mwindow)
- : BC_MenuItem(_("Show Overlays"))
+ : BC_MenuItem(_("Show Overlays"), _("Ctrl-0"), '0')
 {
        this->mwindow = mwindow;
+       set_ctrl(1);
        set_checked(mwindow->session->show_gwindow);
 }
 int ShowGWindow::handle_event()
 {
-       mwindow->show_gwindow();
+       if( !mwindow->session->show_gwindow )
+               mwindow->show_gwindow();
+       else
+               mwindow->hide_gwindow();
+       set_checked(mwindow->session->show_gwindow);
        return 1;
 }