X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ftransitionpopup.C;h=a748244bdca7c960b82e6896e1186db5667d9952;hp=dd834d566221cfb7e8f25444b1285d31624e6570;hb=refs%2Fheads%2Fmaster;hpb=55b362978e0118efc34c0a654b19c99484c0f346 diff --git a/cinelerra-5.1/cinelerra/transitionpopup.C b/cinelerra-5.1/cinelerra/transitionpopup.C index dd834d56..a748244b 100644 --- a/cinelerra-5.1/cinelerra/transitionpopup.C +++ b/cinelerra-5.1/cinelerra/transitionpopup.C @@ -2,6 +2,7 @@ /* * CINELERRA * Copyright (C) 2008 Adam Williams + * Copyright (C) 2003-2016 Cinelerra CV contributors * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -53,11 +54,14 @@ void TransitionLengthThread::start(Transition *transition, double length) BC_DialogThread::start(); } +#define TLW_W xS(300) +#define TLW_H yS(100) + BC_Window* TransitionLengthThread::new_gui() { BC_DisplayInfo display_info; - int x = display_info.get_abs_cursor_x() - 150; - int y = display_info.get_abs_cursor_y() - 50; + int x = display_info.get_abs_cursor_x() - TLW_W / 2; + int y = display_info.get_abs_cursor_y() - TLW_H / 2; TransitionLengthDialog *gui = new TransitionLengthDialog(mwindow, this, x, y); gui->create_objects(); return gui; @@ -65,6 +69,7 @@ BC_Window* TransitionLengthThread::new_gui() void TransitionLengthThread::handle_close_event(int result) { + if( mwindow->in_destructor ) return; if( !result ) { if( transition ) mwindow->set_transition_length(transition, new_length); @@ -107,20 +112,15 @@ int TransitionUnitsItem::handle_event() { TransitionUnitsPopup *units_popup = (TransitionUnitsPopup *)get_popup_menu(); TransitionLengthDialog *gui = units_popup->gui; - TransitionLengthText *length_text = gui->text; - EDLSession *session = gui->mwindow->edl->session; double length = gui->thread->new_length; - char text[BCSTRLEN]; units_popup->units = id; - Units::totext(text, length, units_popup->units, session->sample_rate, - session->frame_rate, session->frames_per_foot); - length_text->update(text); + gui->update_text(length); units_popup->set_text(get_text()); return 1; } TransitionUnitsPopup::TransitionUnitsPopup(TransitionLengthDialog *gui, int x, int y) - : BC_PopupMenu(x, y, 100, "", 1) + : BC_PopupMenu(x, y, xS(120), "", 1) { this->gui = gui; units = TIME_SECONDS; @@ -145,10 +145,12 @@ void TransitionUnitsPopup::create_objects() TransitionLengthDialog::TransitionLengthDialog(MWindow *mwindow, TransitionLengthThread *thread, int x, int y) : BC_Window(_(PROGRAM_NAME ": Transition length"), x, y, - 300, 100, -1, -1, 0, 0, 1) + TLW_W, TLW_H, -1, -1, 0, 0, 1) { this->mwindow = mwindow; this->thread = thread; +// *** CONTEXT_HELP *** + context_help_set_keyword("Transition Plugins"); } TransitionLengthDialog::~TransitionLengthDialog() @@ -159,9 +161,9 @@ TransitionLengthDialog::~TransitionLengthDialog() void TransitionLengthDialog::create_objects() { lock_window("TransitionLengthDialog::create_objects"); - add_subwindow(units_popup = new TransitionUnitsPopup(this, 10, 10)); + add_subwindow(units_popup = new TransitionUnitsPopup(this, xS(10), yS(10))); units_popup->create_objects(); - text = new TransitionLengthText(mwindow, this, 160, 10); + text = new TransitionLengthText(mwindow, this, xS(160), yS(10)); text->create_objects(); text->set_precision(3); text->set_increment(0.1); @@ -177,11 +179,22 @@ int TransitionLengthDialog::close_event() return 1; } +void TransitionLengthDialog::update_text(double length) +{ + int units = units_popup->units; + EDLSession *session = mwindow->edl->session; + char string[BCSTRLEN]; + Units::totext(string, length, units, + session->sample_rate, session->frame_rate, + session->frames_per_foot); + text->update(string); +} + TransitionLengthText::TransitionLengthText(MWindow *mwindow, TransitionLengthDialog *gui, int x, int y) : BC_TumbleTextBox(gui, (float)gui->thread->new_length, - 0.f, 100.f, x, y, 100) + 0.f, 100.f, x, y, xS(100)) { this->mwindow = mwindow; this->gui = gui; @@ -216,11 +229,7 @@ int TransitionLengthText::handle_up_down(int dir) break; } double length = gui->thread->new_length + delta * dir; - char text[BCSTRLEN]; - Units::totext(text, length, units, - session->sample_rate, session->frame_rate, - session->frames_per_foot); - update(text); + gui->update_text(length); return gui->thread->update(length); }