X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fcwindowgui.C;h=97ee1ceb260b02849b6f7e0c3545c92674cfc748;hb=fbdd13b462256ed4f3b35dc114385fe0b0de0dcd;hp=052a713d9a3eb5d831c7666ea464c15829a600c6;hpb=5d8a7826b0f80f00622e46baf75453995a76e343;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/cwindowgui.C b/cinelerra-5.1/cinelerra/cwindowgui.C index 052a713d..97ee1ceb 100644 --- a/cinelerra-5.1/cinelerra/cwindowgui.C +++ b/cinelerra-5.1/cinelerra/cwindowgui.C @@ -58,6 +58,7 @@ #include "tracks.h" #include "transportque.h" #include "vtrack.h" +#include "zoombar.h" static double my_zoom_table[] = @@ -163,8 +164,6 @@ void CWindowGUI::create_objects() canvas = new CWindowCanvas(mwindow, this); canvas->create_objects(mwindow->edl); - canvas->use_cwindow(); - add_subwindow(timebar = new CTimeBar(mwindow, this, @@ -283,7 +282,7 @@ int CWindowGUI::button_press_event() if( current_operation == CWINDOW_NONE && mwindow->edl != 0 && canvas->get_canvas() && mwindow->edl->session->cwindow_click2play && - canvas->get_canvas()->get_cursor_over_window() ) { + canvas->get_canvas()->cursor_above() ) { switch( get_buttonpress() ) { case LEFT_BUTTON: if( !cwindow->playback_engine->is_playing_back ) { @@ -746,7 +745,7 @@ CWindowEditing::CWindowEditing(MWindow *mwindow, CWindow *cwindow) mwindow->theme->cedit_x, mwindow->theme->cedit_y, mwindow->edl->session->editing_mode, 0, // use_editing_mode - 1, // use_keyframe + 0, // use_keyframe 0, // use_splice 0, // use_overwrite 1, // use_copy @@ -760,7 +759,8 @@ CWindowEditing::CWindowEditing(MWindow *mwindow, CWindow *cwindow) 1, // use_cut 0, // use_commerical 0, // use_goto - 1) // use_clk2play + 1, // use_clk2play + 1) // use_scope { this->mwindow = mwindow; this->cwindow = cwindow; @@ -972,6 +972,22 @@ void CWindowTransport::goto_end() gui->lock_window("CWindowTransport::goto_end 2"); } +CWindowCanvasToggleControls::CWindowCanvasToggleControls(CWindowCanvas *canvas) + : BC_MenuItem(calculate_text(canvas->get_controls())) +{ + this->canvas = canvas; +} +int CWindowCanvasToggleControls::handle_event() +{ + canvas->toggle_controls(); + set_text(calculate_text(canvas->get_controls())); + return 1; +} + +const char *CWindowCanvasToggleControls::calculate_text(int controls) +{ + return !controls ? _("Show controls") : _("Hide controls"); +} CWindowCanvas::CWindowCanvas(MWindow *mwindow, CWindowGUI *gui) @@ -985,6 +1001,19 @@ CWindowCanvas::CWindowCanvas(MWindow *mwindow, CWindowGUI *gui) last_xscroll = 0; last_yscroll = 0; last_zoom = 0; + controls = 0; +} + +void CWindowCanvas::create_objects(EDL *edl) +{ + Canvas::create_objects(edl); + canvas_menu->add_item(new CanvasPopupAuto(this)); + canvas_menu->add_item(new CanvasPopupResetCamera(this)); + canvas_menu->add_item(new CanvasPopupResetProjector(this)); + canvas_menu->add_item(new CanvasPopupCameraKeyframe(this)); + canvas_menu->add_item(new CanvasPopupProjectorKeyframe(this)); + canvas_menu->add_item(controls = new CWindowCanvasToggleControls(this)); + fullscreen_menu->add_item(new CanvasPopupAuto(this)); } void CWindowCanvas::status_event() @@ -1064,6 +1093,25 @@ int CWindowCanvas::do_scroll(EDL *edl, float cursor_x, float cursor_y) return 1; } +int CWindowCanvas::scope_on() +{ + EditPanelScopeDialog *scope_dialog = gui->edit_panel->scope_dialog; + if( !scope_dialog || !scope_dialog->scope_gui ) return 0; + if( scope_dialog->scope_gui->use_refresh ) return 0; + if( scope_dialog->scope_gui->use_release ) return 0; + return scope_dialog->running(); +} + +void CWindowCanvas::draw_scope(VFrame *output, int refresh) +{ + if( !output ) return; + EditPanelScopeDialog *scope_dialog = gui->edit_panel->scope_dialog; + if( !scope_dialog || !scope_dialog->scope_gui ) return; + if( scope_dialog->scope_gui->use_refresh && !refresh ) return; + if( scope_dialog->scope_gui->use_release && refresh >= 0 ) return; + scope_dialog->process(output); +} + void CWindowCanvas::draw_refresh(int flush) { BC_WindowBase *window = get_canvas(); @@ -2592,6 +2640,11 @@ void CWindowCanvas::reset_keyframe(int do_camera) z_keyframe->set_value(1); gui->sync_parameters(CHANGE_PARAMS, 1, 1); + MWindowGUI *mgui = mwindow->gui; + mgui->lock_window("CWindowCanvas::reset_keyframe"); + gui->mwindow->edl->local_session->reset_view_limits(); + gui->mwindow->gui->zoombar->update_autozoom(); + mgui->unlock_window(); } } @@ -3291,6 +3344,9 @@ int CWindowCanvas::button_release_event() { int result = 0; const char *undo_label = 0; + BC_WindowBase *window = get_canvas(); + if( window && !window->get_video_on() ) + draw_scope(refresh_frame, -1); switch( gui->current_operation ) { case CWINDOW_SCROLL: @@ -3373,7 +3429,7 @@ void CWindowCanvas::toggle_controls() gui->resize_event(gui->get_w(), gui->get_h()); } -int CWindowCanvas::get_cwindow_controls() +int CWindowCanvas::get_controls() { return mwindow->session->cwindow_controls; }