4 #include "edlsession.h"
7 #include "mwindowgui.h"
9 #include "transition.h"
12 #include "transitionpopup.h"
15 TransitionLengthThread::TransitionLengthThread(MWindow *mwindow, TransitionPopup *popup)
18 this->mwindow = mwindow;
22 TransitionLengthThread::~TransitionLengthThread()
26 void TransitionLengthThread::run()
28 TransitionLengthDialog window(mwindow, popup->transition);
29 window.create_objects();
30 int result = window.run_window();
38 TransitionLengthDialog::TransitionLengthDialog(MWindow *mwindow, Transition *transition)
39 : BC_Window(PROGRAM_NAME ": Transition length",
40 mwindow->gui->get_abs_cursor_x(1) - 150,
41 mwindow->gui->get_abs_cursor_y(1) - 50,
50 this->mwindow = mwindow;
51 this->transition = transition;
54 TransitionLengthDialog::~TransitionLengthDialog()
59 void TransitionLengthDialog::create_objects()
61 add_subwindow(new BC_Title(10, 10, _("Seconds:")));
62 text = new TransitionLengthText(mwindow, this, 100, 10);
63 text->create_objects();
64 add_subwindow(new BC_OKButton(this));
68 int TransitionLengthDialog::close_event()
79 TransitionLengthText::TransitionLengthText(MWindow *mwindow,
80 TransitionLengthDialog *gui,
83 : BC_TumbleTextBox(gui,
84 (float)gui->transition->edit->track->from_units(gui->transition->length),
91 this->mwindow = mwindow;
95 int TransitionLengthText::handle_event()
97 double result = atof(get_text());
98 if(!EQUIV(result, gui->transition->length))
100 gui->transition->length = gui->transition->track->to_units(result, 1);
101 if(gui->transition->edit->track->data_type == TRACK_VIDEO) mwindow->restart_brender();
102 mwindow->sync_parameters(CHANGE_PARAMS);
103 mwindow->edl->session->default_transition_length = result;
104 mwindow->gui->lock_window();
105 mwindow->gui->update(0,
112 mwindow->gui->unlock_window();
128 TransitionPopup::TransitionPopup(MWindow *mwindow, MWindowGUI *gui)
135 this->mwindow = mwindow;
139 TransitionPopup::~TransitionPopup()
141 // delete dialog_thread;
145 void TransitionPopup::create_objects()
147 length_thread = new TransitionLengthThread(mwindow, this);
148 // add_item(attach = new TransitionPopupAttach(mwindow, this));
149 add_item(show = new TransitionPopupShow(mwindow, this));
150 add_item(on = new TransitionPopupOn(mwindow, this));
151 add_item(length = new TransitionPopupLength(mwindow, this));
152 add_item(detach = new TransitionPopupDetach(mwindow, this));
155 int TransitionPopup::update(Transition *transition)
157 this->transition = transition;
158 show->set_checked(transition->show);
159 on->set_checked(transition->on);
161 sprintf(len_text, _("Length: %2.2f sec"), transition->track->from_units(transition->length));
162 length->set_text(len_text);
170 TransitionPopupAttach::TransitionPopupAttach(MWindow *mwindow, TransitionPopup *popup)
171 : BC_MenuItem(_("Attach..."))
173 this->mwindow = mwindow;
177 TransitionPopupAttach::~TransitionPopupAttach()
181 int TransitionPopupAttach::handle_event()
183 // popup->dialog_thread->start();
192 TransitionPopupDetach::TransitionPopupDetach(MWindow *mwindow, TransitionPopup *popup)
193 : BC_MenuItem(_("Detach"))
195 this->mwindow = mwindow;
199 TransitionPopupDetach::~TransitionPopupDetach()
203 int TransitionPopupDetach::handle_event()
205 mwindow->detach_transition(popup->transition);
210 TransitionPopupOn::TransitionPopupOn(MWindow *mwindow, TransitionPopup *popup)
211 : BC_MenuItem(_("On"))
213 this->mwindow = mwindow;
217 TransitionPopupOn::~TransitionPopupOn()
221 int TransitionPopupOn::handle_event()
223 popup->transition->on = !get_checked();
224 mwindow->sync_parameters(CHANGE_EDL);
233 TransitionPopupShow::TransitionPopupShow(MWindow *mwindow, TransitionPopup *popup)
234 : BC_MenuItem(_("Show"))
236 this->mwindow = mwindow;
240 TransitionPopupShow::~TransitionPopupShow()
244 int TransitionPopupShow::handle_event()
246 mwindow->show_plugin(popup->transition);
257 TransitionPopupLength::TransitionPopupLength(MWindow *mwindow, TransitionPopup *popup)
258 : BC_MenuItem(_("Length"))
260 this->mwindow = mwindow;
264 TransitionPopupLength::~TransitionPopupLength()
268 int TransitionPopupLength::handle_event()
270 popup->length_thread->start();