From 7fa4ccc2c91d37f20f3618261e4cbaa9d5d3c740 Mon Sep 17 00:00:00 2001 From: Good Guy Date: Wed, 5 Sep 2018 10:30:33 -0600 Subject: [PATCH] theme inout highlight color, drag timebar inout/labels --- cinelerra-5.1/cinelerra/theme.C | 1 + cinelerra-5.1/cinelerra/theme.h | 1 + cinelerra-5.1/cinelerra/timebar.C | 58 +++++++++++++++++++++++++++++-- cinelerra-5.1/cinelerra/timebar.h | 4 +++ 4 files changed, 62 insertions(+), 2 deletions(-) diff --git a/cinelerra-5.1/cinelerra/theme.C b/cinelerra-5.1/cinelerra/theme.C index 65865a24..f9e32f49 100644 --- a/cinelerra-5.1/cinelerra/theme.C +++ b/cinelerra-5.1/cinelerra/theme.C @@ -78,6 +78,7 @@ Theme::Theme() BC_WindowBase::get_resources()->recursive_resizing = 0; audio_color = BLACK; fade_h = 22; + inout_highlight_color = GREEN; meter_h = 17; mode_h = 30; pan_h = 32; diff --git a/cinelerra-5.1/cinelerra/theme.h b/cinelerra-5.1/cinelerra/theme.h index 47e54584..2c980bcb 100644 --- a/cinelerra-5.1/cinelerra/theme.h +++ b/cinelerra-5.1/cinelerra/theme.h @@ -188,6 +188,7 @@ public: int ctransport_x, ctransport_y; int czoom_x, czoom_y, czoom_w; int fade_h; + int inout_highlight_color; int loadfile_pad; int loadmode_w; int mbuttons_x, mbuttons_y, mbuttons_w, mbuttons_h; diff --git a/cinelerra-5.1/cinelerra/timebar.C b/cinelerra-5.1/cinelerra/timebar.C index 10a095f9..755e8e41 100644 --- a/cinelerra-5.1/cinelerra/timebar.C +++ b/cinelerra-5.1/cinelerra/timebar.C @@ -71,6 +71,8 @@ LabelGUI::LabelGUI(MWindow *mwindow, TimeBar *timebar, LabelGUI::~LabelGUI() { + if( timebar->drag_label == this ) + timebar->drag_label = 0; } int LabelGUI::get_y(MWindow *mwindow, TimeBar *timebar) @@ -93,7 +95,7 @@ void LabelGUI::reposition(int flush) int LabelGUI::button_press_event() { - int result = 0; + int result = test_drag_label(1); if( this->is_event_win() && get_buttonpress() == 3 ) { if( label ) { @@ -110,6 +112,38 @@ int LabelGUI::button_press_event() return result; } +int LabelGUI::button_release_event() +{ + int ret = BC_Toggle::button_release_event(); + test_drag_label(0); + return ret; +} + +int LabelGUI::test_drag_label(int press) +{ + if( is_event_win() && get_buttonpress() == 1 ) { + switch( timebar->current_operation ) { + case TIMEBAR_NONE: + if( press && get_value() ) { + timebar->current_operation = TIMEBAR_DRAG_LABEL; + timebar->drag_label = this; + set_cursor(MOVE_CURSOR, 0, 0); + mwindow->undo->update_undo_before(_("drag label"), this); + return 1; + } + break; + case TIMEBAR_DRAG_LABEL: + if( !press ) { + timebar->current_operation = TIMEBAR_NONE; + set_cursor(ARROW_CURSOR, 0, 0); + mwindow->undo->update_undo_after(_("drag label"), LOAD_TIMEBAR); + } + break; + } + } + return 0; +} + int LabelGUI::handle_event() { timebar->select_label(position); @@ -171,6 +205,7 @@ TimeBar::TimeBar(MWindow *mwindow, BC_WindowBase *gui, //printf("TimeBar::TimeBar %d %d %d %d\n", x, y, w, h); this->gui = gui; this->mwindow = mwindow; + this->drag_label = 0; label_edit = new LabelEdit(mwindow, mwindow->awindow, 0); pane = 0; highlighted = 0; @@ -325,7 +360,7 @@ void TimeBar::draw_inout_highlight() int out_x = position_to_pixel(out_position); CLAMP(in_x, 0, get_w()); CLAMP(out_x, 0, get_w()); - set_color(GREEN); + set_color(mwindow->theme->inout_highlight_color); int lw = 5; set_line_width(lw); set_inverse(); @@ -767,6 +802,25 @@ int TimeBar::cursor_motion_event() result = move_preview(redraw); break; + case TIMEBAR_DRAG_LABEL: + if( drag_label ) { + int pixel = get_relative_cursor_x(); + double position = pixel_to_position(pixel); + if( drag_label->label ) + drag_label->label->position = position; + else if( drag_label == in_point ) { + EDL *edl = get_edl(); + edl->local_session->set_inpoint(position); + } + else if( drag_label == out_point ) { + EDL *edl = get_edl(); + edl->local_session->set_outpoint(position); + } + } + highlighted = 1; + redraw = 1; + break; + default: if( cursor_above() ) { highlighted = 1; diff --git a/cinelerra-5.1/cinelerra/timebar.h b/cinelerra-5.1/cinelerra/timebar.h index 54d952c4..e661e17e 100644 --- a/cinelerra-5.1/cinelerra/timebar.h +++ b/cinelerra-5.1/cinelerra/timebar.h @@ -48,6 +48,7 @@ class PresentationGUI; #define TIMEBAR_DRAG_LEFT 2 #define TIMEBAR_DRAG_RIGHT 3 #define TIMEBAR_DRAG_CENTER 4 +#define TIMEBAR_DRAG_LABEL 5 class LabelGUI : public BC_Toggle { @@ -64,9 +65,11 @@ public: virtual int handle_event(); static int get_y(MWindow *mwindow, TimeBar *timebar); void reposition(int flush = 1); + int test_drag_label(int press); Label *label; int button_press_event(); + int button_release_event(); MWindow *mwindow; VWindowGUI *gui; TimeBar *timebar; @@ -189,6 +192,7 @@ public: // Operation started by a buttonpress int current_operation; + LabelGUI *drag_label; private: int get_preview_pixels(int &x1, int &x2); -- 2.26.2