remove ExportEDL as an option until fixed
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / mainmenu.C
index 9c5c81851084f20da98696684ea089874be9704f..60d72d5a7a4e709600c5bc33173752d141d8fa89 100644 (file)
@@ -90,6 +90,8 @@ MainMenu::MainMenu(MWindow *mwindow, MWindowGUI *gui, int w)
 {
        this->gui = gui;
        this->mwindow = mwindow;
+// *** CONTEXT_HELP ***
+       context_help_set_keyword("Program Window");
 }
 
 MainMenu::~MainMenu()
@@ -118,8 +120,8 @@ void MainMenu::create_objects()
        filemenu->add_item(saveas = new SaveAs(mwindow));
        save->create_objects(saveas);
        saveas->set_mainmenu(this);
-       SaveProject *save_project;
-       filemenu->add_item(save_project = new SaveProject(mwindow));
+       filemenu->add_item(new SaveProject(mwindow));
+       filemenu->add_item(new SaveSession(mwindow));
 
        filemenu->add_item(record_menu_item = new RecordMenuItem(mwindow));
 #ifdef HAVE_DVB
@@ -132,7 +134,7 @@ void MainMenu::create_objects()
        filemenu->add_item(new SubttlSWin(mwindow));
 
        filemenu->add_item(render = new RenderItem(mwindow));
-       filemenu->add_item(new ExportEDLItem(mwindow));
+//     filemenu->add_item(new ExportEDLItem(mwindow));
        filemenu->add_item(new BatchRenderMenuItem(mwindow));
        filemenu->add_item(new CreateBD_MenuItem(mwindow));
        filemenu->add_item(new CreateDVD_MenuItem(mwindow));
@@ -207,13 +209,13 @@ void MainMenu::create_objects()
        add_menu(trackmenu = new BC_Menu(_("Tracks")));
        trackmenu->add_item(new MoveTracksUp(mwindow));
        trackmenu->add_item(new MoveTracksDown(mwindow));
+       trackmenu->add_item(new RollTracksUp(mwindow));
+       trackmenu->add_item(new RollTracksDown(mwindow));
        trackmenu->add_item(new DeleteTracks(mwindow));
        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();
@@ -223,7 +225,6 @@ void MainMenu::create_objects()
 
        settingsmenu->add_item(new SetFormat(mwindow));
        settingsmenu->add_item(preferences = new PreferencesMenuitem(mwindow));
-       ProxyMenuItem *proxy;
        settingsmenu->add_item(proxy = new ProxyMenuItem(mwindow));
        proxy->create_objects();
        ConvertMenuItem *convert;
@@ -638,7 +639,7 @@ int DumpUndo::handle_event()
 
 // ================================================= edit
 
-Undo::Undo(MWindow *mwindow) : BC_MenuItem(_("Undo"), "z", 'z')
+Undo::Undo(MWindow *mwindow) : BC_MenuItem(_("Undo"), "z or Ctrl-z", 'z')
 {
        this->mwindow = mwindow;
 }
@@ -1345,7 +1346,8 @@ int MoveTracksUp::handle_event()
 MoveTracksDown::MoveTracksDown(MWindow *mwindow)
  : BC_MenuItem(_("Move tracks down"), _("Shift-Down"), DOWN)
 {
-       set_shift(); this->mwindow = mwindow;
+       this->mwindow = mwindow;
+       set_shift();
 }
 
 int MoveTracksDown::handle_event()
@@ -1356,30 +1358,33 @@ int MoveTracksDown::handle_event()
 }
 
 
-SwapTracksUp::SwapTracksUp(MWindow *mwindow)
- : BC_MenuItem(_("Swap tracks up"), 0, UP)
+RollTracksUp::RollTracksUp(MWindow *mwindow)
+ : BC_MenuItem(_("Roll tracks up"), _("Ctrl-Shift-Up"), UP)
 {
        this->mwindow = mwindow;
+       set_ctrl();
        set_shift();
 }
 
-int SwapTracksUp::handle_event()
+int RollTracksUp::handle_event()
 {
        if( mwindow->session->current_operation == NO_OPERATION )
-               mwindow->swap_tracks_up();
+               mwindow->roll_tracks_up();
        return 1;
 }
 
-SwapTracksDown::SwapTracksDown(MWindow *mwindow)
- : BC_MenuItem(_("Swap tracks down"), 0, DOWN)
+RollTracksDown::RollTracksDown(MWindow *mwindow)
+ : BC_MenuItem(_("Roll tracks down"), _("Ctrl-Shift-Down"), DOWN)
 {
-       set_shift(); this->mwindow = mwindow;
+       this->mwindow = mwindow;
+       set_ctrl();
+       set_shift();
 }
 
-int SwapTracksDown::handle_event()
+int RollTracksDown::handle_event()
 {
        if( mwindow->session->current_operation == NO_OPERATION )
-               mwindow->swap_tracks_down();
+               mwindow->roll_tracks_down();
        return 1;
 }
 
@@ -1573,10 +1578,11 @@ int ScrubSpeed::handle_event()
 }
 
 SaveSettingsNow::SaveSettingsNow(MWindow *mwindow)
- : BC_MenuItem(_("Save settings now"),_("Ctrl-s"),'s')
+ : BC_MenuItem(_("Save settings now"),_("Ctrl-Shift-S"),'S')
 {
        this->mwindow = mwindow;
        set_ctrl(1);
+       set_shift(1);
 }
 
 int SaveSettingsNow::handle_event()
@@ -1603,9 +1609,15 @@ ShowVWindow::ShowVWindow(MWindow *mwindow)
 }
 int ShowVWindow::handle_event()
 {
-       mwindow->gui->unlock_window();
-       mwindow->show_vwindow();
-       mwindow->gui->lock_window("ShowVWindow::handle_event");
+       if( mwindow->session->current_operation == NO_OPERATION ) {
+               mwindow->gui->unlock_window();
+               if( !mwindow->session->show_vwindow )
+                       mwindow->show_vwindow(1);
+               else
+                       mwindow->hide_vwindow(1);
+               mwindow->gui->lock_window("ShowVWindow::handle_event");
+               set_checked(mwindow->session->show_vwindow);
+       }
        return 1;
 }
 
@@ -1617,9 +1629,16 @@ ShowAWindow::ShowAWindow(MWindow *mwindow)
 }
 int ShowAWindow::handle_event()
 {
-       mwindow->gui->unlock_window();
-       mwindow->show_awindow();
-       mwindow->gui->lock_window("ShowAWindow::handle_event");
+       if( mwindow->session->current_operation == NO_OPERATION ) {
+               mwindow->gui->unlock_window();
+               if( !mwindow->session->show_awindow )
+                       mwindow->show_awindow();
+               else
+                       mwindow->hide_awindow();
+               mwindow->gui->lock_window("ShowAWindow::handle_event");
+               set_checked(mwindow->session->show_awindow);
+
+       }
        return 1;
 }
 
@@ -1631,9 +1650,15 @@ ShowCWindow::ShowCWindow(MWindow *mwindow)
 }
 int ShowCWindow::handle_event()
 {
-       mwindow->gui->unlock_window();
-       mwindow->show_cwindow();
-       mwindow->gui->lock_window("ShowCWindow::handle_event");
+       if( mwindow->session->current_operation == NO_OPERATION ) {
+               mwindow->gui->unlock_window();
+               if( !mwindow->session->show_cwindow )
+                       mwindow->show_cwindow();
+               else
+                       mwindow->hide_cwindow();
+               mwindow->gui->lock_window("ShowCWindow::handle_event");
+               set_checked(mwindow->session->show_cwindow);
+       }
        return 1;
 }
 
@@ -1668,9 +1693,16 @@ ShowLWindow::ShowLWindow(MWindow *mwindow)
 }
 int ShowLWindow::handle_event()
 {
-       mwindow->gui->unlock_window();
-       mwindow->show_lwindow();
-       mwindow->gui->lock_window("ShowLWindow::handle_event");
+       if( mwindow->session->current_operation == NO_OPERATION ) {
+
+               mwindow->gui->unlock_window();
+               if( !mwindow->session->show_lwindow )
+                       mwindow->show_lwindow();
+               else
+                       mwindow->hide_lwindow();
+               mwindow->gui->lock_window("ShowLWindow::handle_event");
+               set_checked(mwindow->session->show_lwindow);
+       }
        return 1;
 }
 
@@ -1735,7 +1767,7 @@ void MixerItems::create_objects()
        BC_SubMenu *mixer_submenu = new BC_SubMenu();
        add_submenu(mixer_submenu);
        mixer_submenu->add_submenuitem(new MixerViewer(this));
-       mixer_submenu->add_submenuitem(new TileMixers(this));
+       mixer_submenu->add_submenuitem(new DragTileMixers(this));
        mixer_submenu->add_submenuitem(new AlignMixers(this));
        mixer_submenu->add_submenuitem(new MixMasters(this));
 }
@@ -1806,16 +1838,51 @@ int MixerViewer::handle_event()
        return 1;
 }
 
-TileMixers::TileMixers(MixerItems *mixer_items)
- : MixerItem(mixer_items, _("Tile mixers"), "Alt-t", 't')
+DragTileMixers::DragTileMixers(MixerItems *mixer_items)
+ : MixerItem(mixer_items, _("Drag Tile mixers"), "Alt-t", 't')
 {
        set_alt();
+       drag_box = 0;
 }
 
-int TileMixers::handle_event()
+DragTileMixers::~DragTileMixers()
 {
-       MWindow *mwindow = mixer_items->mwindow;
-       mwindow->tile_mixers();
+       delete drag_box;
+}
+
+int DragTileMixers::handle_event()
+{
+       if( !drag_box ) {
+               MWindow *mwindow = mixer_items->mwindow;
+               drag_box = new TileMixersDragBox(mwindow->gui);
+       }
+       if( !drag_box->running() )
+               drag_box->start(this);
+       return 1;
+}
+
+TileMixersDragBox::TileMixersDragBox(MWindowGUI *gui)
+ : BC_DragBox(gui)
+{
+       tile_mixers = 0;
+}
+
+void TileMixersDragBox::start(DragTileMixers *tile_mixers)
+{
+       this->tile_mixers = tile_mixers;
+       start_drag();
+}
+
+int TileMixersDragBox::handle_done_event(int x0, int y0, int x1, int y1)
+{
+       MWindow *mwindow = tile_mixers->mixer_items->mwindow;
+       if( x0 >= x1 || y0 >= y1 ) x0 = x1 = y0 = y1 = 0;
+       mwindow->session->tile_mixers_x = x0;
+       mwindow->session->tile_mixers_y = y0;
+       mwindow->session->tile_mixers_w = x1 - x0;
+       mwindow->session->tile_mixers_h = y1 - y0;
+       mwindow->tile_mixers(x0, y0, x1, y1);
+       tile_mixers = 0;
        return 1;
 }
 
@@ -2048,6 +2115,8 @@ LoadLayoutConfirm::LoadLayoutConfirm(LoadLayoutDialog *layout_dialog, int x, int
  : BC_Window(_(PROGRAM_NAME ": Layout"), x, y, xS(300),yS(140), xS(300),yS(140), 0)
 {
        this->layout_dialog = layout_dialog;
+// *** CONTEXT_HELP ***
+       context_help_set_keyword("Window Layouts");
 }
 
 LoadLayoutConfirm::~LoadLayoutConfirm()