merge hv v6, rework trace methods
[goodguy/history.git] / cinelerra-5.1 / cinelerra / mainmenu.C
index 737c54bd90ee2b3f746b9c30b40eb81938e450c8..06a12becdb551f45533a07bd5d9217eb8637570c 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(new SetBRenderRange(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;
 }
@@ -1241,15 +1241,15 @@ int PasteSubttl::handle_event()
 
 
 
-SetBRenderStart::SetBRenderStart(MWindow *mwindow)
- : BC_MenuItem(_("Set background render"))
+SetBRenderRange::SetBRenderRange(MWindow *mwindow)
+ : BC_MenuItem(_("Set background rendering"))
 {
        this->mwindow = mwindow;
 }
 
-int SetBRenderStart::handle_event()
+int SetBRenderRange::handle_event()
 {
-       mwindow->set_brender_start();
+       mwindow->set_brender_range();
        return 1;
 }
 
@@ -1417,14 +1417,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;
 }