cin_db Makefile tweak, awdw vicon stop draw lock rework,
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / mainmenu.C
index f616d26a12819b6bf650ddf79c4ae2c06949d457..72b9b68bc9535d20c4d2fcbc81266db10912a27a 100644 (file)
@@ -209,6 +209,9 @@ void MainMenu::create_objects()
        trackmenu->add_item(new DeleteFirstTrack(mwindow));
        trackmenu->add_item(new DeleteLastTrack(mwindow));
        trackmenu->add_item(new ConcatenateTracks(mwindow));
+       trackmenu->add_item(new AlignTimecodes(mwindow));
+       trackmenu->add_item(new SwapTracksUp(mwindow));
+       trackmenu->add_item(new SwapTracksDown(mwindow));
        AppendTracks *append_tracks;
        trackmenu->add_item(append_tracks = new AppendTracks(mwindow));
        append_tracks->create_objects();
@@ -1158,7 +1161,7 @@ AddVideoTrack::AddVideoTrack(MWindow *mwindow)
 int AddVideoTrack::handle_event()
 {
        if( mwindow->session->current_operation == NO_OPERATION )
-               mwindow->add_video_track_entry();
+               mwindow->add_video_track_entry(1, 0);
        return 1;
 }
 
@@ -1290,6 +1293,34 @@ int MoveTracksDown::handle_event()
 }
 
 
+SwapTracksUp::SwapTracksUp(MWindow *mwindow)
+ : BC_MenuItem(_("Swap tracks up"), 0, UP)
+{
+       this->mwindow = mwindow;
+       set_shift();
+}
+
+int SwapTracksUp::handle_event()
+{
+       if( mwindow->session->current_operation == NO_OPERATION )
+               mwindow->swap_tracks_up();
+       return 1;
+}
+
+SwapTracksDown::SwapTracksDown(MWindow *mwindow)
+ : BC_MenuItem(_("Swap tracks down"), 0, DOWN)
+{
+       set_shift(); this->mwindow = mwindow;
+}
+
+int SwapTracksDown::handle_event()
+{
+       if( mwindow->session->current_operation == NO_OPERATION )
+               mwindow->swap_tracks_down();
+       return 1;
+}
+
+
 
 
 ConcatenateTracks::ConcatenateTracks(MWindow *mwindow)
@@ -1341,7 +1372,7 @@ AddSubttlTrack::AddSubttlTrack(MWindow *mwindow)
 int AddSubttlTrack::handle_event()
 {
        if( mwindow->session->current_operation == NO_OPERATION )
-               mwindow->add_subttl_track_entry();
+               mwindow->add_subttl_track_entry(1, 0);
        return 1;
 }
 
@@ -1509,7 +1540,9 @@ ShowVWindow::ShowVWindow(MWindow *mwindow)
 }
 int ShowVWindow::handle_event()
 {
+       mwindow->gui->unlock_window();
        mwindow->show_vwindow();
+       mwindow->gui->lock_window("ShowVWindow::handle_event");
        return 1;
 }
 
@@ -1521,7 +1554,9 @@ ShowAWindow::ShowAWindow(MWindow *mwindow)
 }
 int ShowAWindow::handle_event()
 {
+       mwindow->gui->unlock_window();
        mwindow->show_awindow();
+       mwindow->gui->lock_window("ShowAWindow::handle_event");
        return 1;
 }
 
@@ -1533,7 +1568,9 @@ ShowCWindow::ShowCWindow(MWindow *mwindow)
 }
 int ShowCWindow::handle_event()
 {
+       mwindow->gui->unlock_window();
        mwindow->show_cwindow();
+       mwindow->gui->lock_window("ShowCWindow::handle_event");
        return 1;
 }
 
@@ -1548,10 +1585,12 @@ ShowGWindow::ShowGWindow(MWindow *mwindow)
 int ShowGWindow::handle_event()
 {
        if( mwindow->session->current_operation == NO_OPERATION ) {
+               mwindow->gui->unlock_window();
                if( !mwindow->session->show_gwindow )
                        mwindow->show_gwindow();
                else
                        mwindow->hide_gwindow();
+               mwindow->gui->lock_window("ShowGWindow::handle_event");
                set_checked(mwindow->session->show_gwindow);
        }
        return 1;
@@ -1566,7 +1605,9 @@ ShowLWindow::ShowLWindow(MWindow *mwindow)
 }
 int ShowLWindow::handle_event()
 {
+       mwindow->gui->unlock_window();
        mwindow->show_lwindow();
+       mwindow->gui->lock_window("ShowLWindow::handle_event");
        return 1;
 }
 
@@ -1633,6 +1674,7 @@ void MixerItems::create_objects()
        mixer_submenu->add_submenuitem(new MixerViewer(this));
        mixer_submenu->add_submenuitem(new TileMixers(this));
        mixer_submenu->add_submenuitem(new AlignMixers(this));
+       mixer_submenu->add_submenuitem(new MixMasters(this));
 }
 
 int MixerItems::activate_submenu()
@@ -1674,7 +1716,9 @@ int MixerItem::handle_event()
        MWindow *mwindow = mixer_items->mwindow;
        Mixer *mixer = mwindow->edl->mixers.get_mixer(idx);
        if( !mixer ) return 0;
-        ZWindow *zwindow = mwindow->get_mixer(mixer);
+       ZWindow *zwindow = mwindow->get_mixer(idx);
+       if( !zwindow )
+               zwindow = mwindow->get_mixer(mixer);
        if( !zwindow->zgui ) {
                zwindow->set_title(mixer->title);
                zwindow->start();
@@ -1726,6 +1770,31 @@ int AlignMixers::handle_event()
        return 1;
 }
 
+MixMasters::MixMasters(MixerItems *mixer_items)
+ : MixerItem(mixer_items, _("Mix masters"), "", 0)
+{
+}
+
+int MixMasters::handle_event()
+{
+       MWindow *mwindow = mixer_items->mwindow;
+       mwindow->mix_masters();
+       return 1;
+}
+
+
+AlignTimecodes::AlignTimecodes(MWindow *mwindow)
+ : BC_MenuItem(_("Align Timecodes"))
+{
+       this->mwindow = mwindow;
+}
+
+int AlignTimecodes::handle_event()
+{
+       mwindow->align_timecodes();
+       return 1;
+}
+
 
 LoadLayoutItem::LoadLayoutItem(LoadLayout *load_layout, const char *text, int idx, int hotkey)
  : BC_MenuItem(text, "", hotkey)