prevent popup deactivation while button_down
[goodguy/history.git] / cinelerra-5.0 / cinelerra / mainmenu.C
index 3b8efd3c4dabb1ffece453c70abdaff58c2d3872..edad4a7bff9c4a4e6e471576b6d394769a36c280 100644 (file)
@@ -25,6 +25,7 @@
 #include "bcdisplayinfo.h"
 #include "bchash.h"
 #include "bcsignals.h"
+#include "bdcreate.h"
 #include "cache.h"
 #include "channelinfo.h"
 #include "cplayback.h"
@@ -32,6 +33,7 @@
 #include "cwindow.h"
 #include "cwindowgui.h"
 #include "dbwindow.h"
+#include "dvdcreate.h"
 #include "edl.h"
 #include "edlsession.h"
 #include "featheredits.h"
@@ -76,8 +78,8 @@
 #include <string.h>
 
 
-MainMenu::MainMenu(MWindow *mwindow, MWindowGUI *gui)
- : BC_MenuBar(0, 0, gui->get_w())
+MainMenu::MainMenu(MWindow *mwindow, MWindowGUI *gui, int w)
+ : BC_MenuBar(0, 0, w)
 {
        this->gui = gui;
        this->mwindow = mwindow; 
@@ -110,11 +112,13 @@ void MainMenu::create_objects()
        saveas->set_mainmenu(this);
        filemenu->add_item(record_menu_item = new RecordMenuItem(mwindow));
        filemenu->add_item(new ChannelScan(mwindow));
-       filemenu->add_item(new DbWindowScan(mwindow));
+       if( mwindow->has_commercials() )
+               filemenu->add_item(new DbWindowScan(mwindow));
        filemenu->add_item(new SubttlSWin(mwindow));
 
        filemenu->add_item(render = new RenderItem(mwindow));
        filemenu->add_item(new BatchRenderMenuItem(mwindow));
+       filemenu->add_item(new CreateBD_MenuItem(mwindow));
        filemenu->add_item(new CreateDVD_MenuItem(mwindow));
        filemenu->add_item(new BC_MenuItem("-"));
        filemenu->add_item(quit_program = new Quit(mwindow));
@@ -139,6 +143,7 @@ void MainMenu::create_objects()
        editmenu->add_item(new SelectAll(mwindow));
        editmenu->add_item(new BC_MenuItem("-"));
        editmenu->add_item(new MenuEditShuffle(mwindow));
+       editmenu->add_item(new MenuEditReverse(mwindow));
        editmenu->add_item(new MenuEditLength(mwindow));
        editmenu->add_item(new MenuEditAlign(mwindow));
        editmenu->add_item(new MenuTransitionLength(mwindow));
@@ -199,6 +204,7 @@ void MainMenu::create_objects()
        settingsmenu->add_item(keyframes_follow_edits = new KeyframesFollowEdits(mwindow));
        settingsmenu->add_item(cursor_on_frames = new CursorOnFrames(mwindow));
        settingsmenu->add_item(typeless_keyframes = new TypelessKeyframes(mwindow));
+       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));
@@ -238,9 +244,10 @@ void MainMenu::create_objects()
        windowmenu->add_item(show_cwindow = new ShowCWindow(mwindow));
        windowmenu->add_item(show_gwindow = new ShowGWindow(mwindow));
        windowmenu->add_item(show_lwindow = new ShowLWindow(mwindow));
+       windowmenu->add_item(new BC_MenuItem("-"));
        windowmenu->add_item(split_x = new SplitX(mwindow));
        windowmenu->add_item(split_y = new SplitY(mwindow));
-       windowmenu->add_item(new TileWindows(mwindow,_("Default positions"),-1));
+       windowmenu->add_item(new TileWindows(mwindow,_("Default positions"),-1,_("Ctrl+P"),'p'));
        windowmenu->add_item(new TileWindows(mwindow,_("Tile left"),0));
        windowmenu->add_item(new TileWindows(mwindow,_("Tile right"),1));
 }
@@ -627,7 +634,7 @@ int Undo::update_caption(const char *new_caption)
 }
 
 
-Redo::Redo(MWindow *mwindow) : BC_MenuItem(_("Redo"), "Shift+Z", 'Z') 
+Redo::Redo(MWindow *mwindow) : BC_MenuItem(_("Redo"), _("Shift+Z"), 'Z') 
 { 
        set_shift(1); 
        this->mwindow = mwindow; 
@@ -648,7 +655,7 @@ int Redo::update_caption(const char *new_caption)
 }
 
 CutKeyframes::CutKeyframes(MWindow *mwindow)
- : BC_MenuItem(_("Cut keyframes"), "Shift-X", 'X')
+ : BC_MenuItem(_("Cut keyframes"), _("Shift-X"), 'X')
 { 
        set_shift(); 
        this->mwindow = mwindow; 
@@ -661,7 +668,7 @@ int CutKeyframes::handle_event()
 }
 
 CopyKeyframes::CopyKeyframes(MWindow *mwindow)
- : BC_MenuItem(_("Copy keyframes"), "Shift-C", 'C')
+ : BC_MenuItem(_("Copy keyframes"), _("Shift-C"), 'C')
 { 
        set_shift(); 
        this->mwindow = mwindow; 
@@ -674,7 +681,7 @@ int CopyKeyframes::handle_event()
 }
 
 PasteKeyframes::PasteKeyframes(MWindow *mwindow)
- : BC_MenuItem(_("Paste keyframes"), "Shift-V", 'V')
+ : BC_MenuItem(_("Paste keyframes"), _("Shift-V"), 'V')
 {
        set_shift(); 
        this->mwindow = mwindow; 
@@ -687,7 +694,7 @@ int PasteKeyframes::handle_event()
 }
 
 ClearKeyframes::ClearKeyframes(MWindow *mwindow)
- : BC_MenuItem(_("Clear keyframes"), "Shift-Del", DELETE)
+ : BC_MenuItem(_("Clear keyframes"), _("Shift-Del"), DELETE)
 {
        set_shift(); 
        this->mwindow = mwindow; 
@@ -731,7 +738,7 @@ int BendKeyframes::handle_event()
 
 
 KeyframeType::KeyframeType(MWindow *mwindow, int type)
- : BC_MenuItem("Create bezier")
+ : BC_MenuItem(_("Create bezier"))
 {
        this->mwindow = mwindow;
        set_checked(type == Auto::BEZIER);
@@ -753,7 +760,7 @@ int KeyframeType::handle_event()
 
 
 CutDefaultKeyframe::CutDefaultKeyframe(MWindow *mwindow)
- : BC_MenuItem(_("Cut default keyframe"), "Alt-X", 'X')
+ : BC_MenuItem(_("Cut default keyframe"), _("Alt-X"), 'X')
 { 
        set_alt(); 
        this->mwindow = mwindow; 
@@ -766,7 +773,7 @@ int CutDefaultKeyframe::handle_event()
 }
 
 CopyDefaultKeyframe::CopyDefaultKeyframe(MWindow *mwindow)
- : BC_MenuItem(_("Copy default keyframe"), "Alt-c", 'c')
+ : BC_MenuItem(_("Copy default keyframe"), _("Alt-c"), 'c')
 { 
        set_alt(); 
        this->mwindow = mwindow; 
@@ -779,7 +786,7 @@ int CopyDefaultKeyframe::handle_event()
 }
 
 PasteDefaultKeyframe::PasteDefaultKeyframe(MWindow *mwindow)
- : BC_MenuItem(_("Paste default keyframe"), "Alt-v", 'v')
+ : BC_MenuItem(_("Paste default keyframe"), _("Alt-v"), 'v')
 {
        set_alt(); 
        this->mwindow = mwindow; 
@@ -792,7 +799,7 @@ int PasteDefaultKeyframe::handle_event()
 }
 
 ClearDefaultKeyframe::ClearDefaultKeyframe(MWindow *mwindow)
- : BC_MenuItem(_("Clear default keyframe"), "Alt-Del", BACKSPACE)
+ : BC_MenuItem(_("Clear default keyframe"), _("Alt-Del"), BACKSPACE)
 {
        set_alt(); 
        this->mwindow = mwindow; 
@@ -841,7 +848,7 @@ int Paste::handle_event()
 }
 
 Clear::Clear(MWindow *mwindow)
- : BC_MenuItem(_("Clear"), "Del", BACKSPACE) 
+ : BC_MenuItem(_("Clear"), _("Del"), BACKSPACE) 
 {
        this->mwindow = mwindow; 
 }
@@ -855,7 +862,7 @@ int Clear::handle_event()
 }
 
 PasteSilence::PasteSilence(MWindow *mwindow)
- : BC_MenuItem(_("Paste silence"), "Shift+Space", ' ')
+ : BC_MenuItem(_("Paste silence"), _("Shift+Space"), ' ')
 { 
        this->mwindow = mwindow; 
        set_shift(); 
@@ -1018,7 +1025,7 @@ int MapAudio2::handle_event()
 
 
 AddVideoTrack::AddVideoTrack(MWindow *mwindow)
- : BC_MenuItem(_("Add track"), "Shift-T", 'T')
+ : BC_MenuItem(_("Add track"), _("Shift-T"), 'T')
 {
        set_shift();
        this->mwindow = mwindow;
@@ -1058,7 +1065,7 @@ int ResetTranslation::handle_event()
 
 
 DefaultVTransition::DefaultVTransition(MWindow *mwindow)
- : BC_MenuItem(_("Default Transition"), "Shift-U", 'U')
+ : BC_MenuItem(_("Default Transition"), _("Shift-U"), 'U')
 {
        set_shift();
        this->mwindow = mwindow;
@@ -1154,7 +1161,7 @@ int ConcatenateTracks::handle_event()
 
 
 LoopPlayback::LoopPlayback(MWindow *mwindow)
- : BC_MenuItem(_("Loop Playback"), "Shift+L", 'L')
+ : BC_MenuItem(_("Loop Playback"), _("Shift+L"), 'L')
 {
        this->mwindow = mwindow;
        set_checked(mwindow->edl->local_session->loop_playback);
@@ -1174,7 +1181,7 @@ int LoopPlayback::handle_event()
 
 
 AddSubttlTrack::AddSubttlTrack(MWindow *mwindow)
- : BC_MenuItem(_("Add subttl"), "Shift-Y", 'Y')
+ : BC_MenuItem(_("Add subttl"), _("Shift-Y"), 'Y')
 {
        set_shift();
        this->mwindow = mwindow;
@@ -1403,25 +1410,27 @@ int ShowLWindow::handle_event()
        return 1;
 }
 
-TileWindows::TileWindows(MWindow *mwindow, const char *item_title, int config)
- : BC_MenuItem(item_title)
+TileWindows::TileWindows(MWindow *mwindow, const char *item_title, int config,
+               const char *hot_keytext, int hot_key)
+ : BC_MenuItem(item_title, hot_keytext, hot_key)
 {
        this->mwindow = mwindow;
        this->config = config;
+       if( hot_key ) set_ctrl(1);
 }
 int TileWindows::handle_event()
 {
        int window_config = config >= 0 ? config :
                mwindow->session->window_config;
        if( mwindow->tile_windows(window_config) ) {
-               mwindow->reload_status = 1;
-               mwindow->quit(1);
+               mwindow->restart_status = 1;
+               mwindow->gui->set_done(0);
        }
        return 1;
 }
 
 SplitX::SplitX(MWindow *mwindow)
- : BC_MenuItem(_("Split X pane"), "Ctrl+1", '1')
+ : BC_MenuItem(_("Split X pane"), _("Ctrl+1"), '1')
 {
        this->mwindow = mwindow;
        set_ctrl(1);
@@ -1434,7 +1443,7 @@ int SplitX::handle_event()
 }
 
 SplitY::SplitY(MWindow *mwindow)
- : BC_MenuItem(_("Split Y pane"), "Ctrl+2", '2')
+ : BC_MenuItem(_("Split Y pane"), _("Ctrl+2"), '2')
 {
        this->mwindow = mwindow;
        set_ctrl(1);