X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmwindowgui.C;h=2b59a6361279e285891bf262ca0117baca25adf2;hp=36532ac7da51752a2b1cdd9d3f52bc2bd93d49d4;hb=9999347f8546c8b7d030c7938da54716f0ee695a;hpb=3fc547b01e919d3044bacf2a78baddeaed04e3a0 diff --git a/cinelerra-5.1/cinelerra/mwindowgui.C b/cinelerra-5.1/cinelerra/mwindowgui.C index 36532ac7..2b59a636 100644 --- a/cinelerra-5.1/cinelerra/mwindowgui.C +++ b/cinelerra-5.1/cinelerra/mwindowgui.C @@ -36,6 +36,7 @@ #include "edl.h" #include "edlsession.h" #include "filesystem.h" +#include "filexml.h" #include "keyframepopup.h" #include "keys.h" #include "language.h" @@ -65,6 +66,7 @@ #include "swindow.h" #include "theme.h" #include "trackcanvas.h" +#include "trackpopup.h" #include "trackscroll.h" #include "tracks.h" #include "transitionpopup.h" @@ -116,6 +118,7 @@ MWindowGUI::MWindowGUI(MWindow *mwindow) statusbar = 0; zoombar = 0; mainclock = 0; + track_menu = 0; edit_menu = 0; plugin_menu = 0; keyframe_menu = 0; @@ -336,6 +339,9 @@ void MWindowGUI::create_objects() // cursor->create_objects(); + if(debug) printf("MWindowGUI::create_objects %d\n", __LINE__); + add_subwindow(track_menu = new TrackPopup(mwindow, this)); + track_menu->create_objects(); if(debug) printf("MWindowGUI::create_objects %d\n", __LINE__); add_subwindow(edit_menu = new EditPopup(mwindow, this)); edit_menu->create_objects(); @@ -1002,6 +1008,7 @@ int MWindowGUI::drag_motion() if( mwindow->session->current_operation == DRAG_ASSET || mwindow->session->current_operation == DRAG_EDIT || + mwindow->session->current_operation == DRAG_GROUP || mwindow->session->current_operation == DRAG_AEFFECT_COPY || mwindow->session->current_operation == DRAG_VEFFECT_COPY ) { @@ -1165,9 +1172,17 @@ int MWindowGUI::keypress_event() int result = mbuttons->keypress_event(); if( result ) return result; - Track *this_track = 0; + Track *this_track = 0, *first_track = 0; + int collapse = 0, packed = 0, overwrite = 0, plugins = 0; + double position = 0; - switch(get_keypress()) { + switch( get_keypress() ) { + case 'A': + if( !ctrl_down() || !shift_down() || alt_down() ) break; + mwindow->edl->tracks->clear_selected_edits(); + draw_overlays(1); + result = 1; + break; case 'e': mwindow->toggle_editing_mode(); result = 1; @@ -1181,8 +1196,58 @@ int MWindowGUI::keypress_event() result = 1; break; - case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': + case 'C': + packed = 1; + case 'c': + if( !ctrl_down() || alt_down() ) break; + mwindow->selected_edits_to_clipboard(packed); + result = 1; + break; + case 'P': + plugins = 1; + case 'b': + overwrite = -1; // fall thru + case 'v': + if( !ctrl_down() || alt_down() ) break; + if( mwindow->session->current_operation == DROP_TARGETING ) { + mwindow->session->current_operation = NO_OPERATION; + mwindow->gui->set_editing_mode(1); + int pane_no = 0; + for( ; pane_noover_track(); + if( first_track ) break; + } + if( first_track ) { + int cursor_x = pane[pane_no]->canvas->get_relative_cursor_x(); + position = mwindow->edl->get_cursor_position(cursor_x, pane_no); + } + } + else + position = mwindow->edl->local_session->get_selectionstart(); + if( !plugins ) + mwindow->paste(position, first_track, 0, overwrite); + else + mwindow->paste_clipboard(first_track, position, 1, 0, 1, 1, 1); + mwindow->edl->tracks->clear_selected_edits(); + draw_overlays(1); + result = 1; + break; + case 'M': + collapse = 1; + case 'm': + mwindow->cut_selected_edits(0, collapse); + result = 1; + break; + case 'z': + collapse = 1; + case 'x': + if( !ctrl_down() || alt_down() ) break; + mwindow->cut_selected_edits(1, collapse); + result = 1; + break; + + case '1' ... '8': if( !alt_down() || shift_down() ) break; if( !mwindow->select_asset(get_keypress()-'1',1) ) result = 1; @@ -1296,18 +1361,7 @@ int MWindowGUI::keypress_event() result = 1; break; - case KEY_F1: - case KEY_F2: - case KEY_F3: - case KEY_F4: - case KEY_F5: - case KEY_F6: - case KEY_F7: - case KEY_F8: - case KEY_F9: - case KEY_F10: - case KEY_F11: - case KEY_F12: + case KEY_F1 ... KEY_F12: resend_event(mwindow->cwindow->gui); return 1; } @@ -2404,10 +2458,12 @@ ProxyToggle::~ProxyToggle() int ProxyToggle::handle_event() { int disabled = get_value(); + mwindow->gui->unlock_window(); if( disabled ) mwindow->disable_proxy(); else mwindow->enable_proxy(); + mwindow->gui->lock_window("ProxyToggle::handle_event"); set_tooltip(!disabled ? _("Disable proxy") : _("Enable proxy")); return 1; }