r870: Merge 2.1:
[cinelerra_cv.git] / cinelerra / transitionpopup.C
blobea1a4a8113dde04ab81b6097c1cd22ef610f44f6
1 #include "clip.h"
2 #include "edit.h"
3 #include "edl.h"
4 #include "edlsession.h"
5 #include "language.h"
6 #include "mwindow.h"
7 #include "mwindowgui.h"
8 #include "plugin.h"
9 #include "transition.h"
10 #include "track.h"
11 #include "tracks.h"
12 #include "transitionpopup.h"
15 TransitionLengthThread::TransitionLengthThread(MWindow *mwindow, TransitionPopup *popup)
16  : Thread()
18         this->mwindow = mwindow;
19         this->popup = popup;
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,
42                                 300, 
43                                 100, 
44                                 -1, 
45                                 -1, 
46                                 0,
47                                 0, 
48                                 1)
50         this->mwindow = mwindow;
51         this->transition = transition;
54 TransitionLengthDialog::~TransitionLengthDialog()
58         
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));
65         show_window();
68 int TransitionLengthDialog::close_event()
70         set_done(0);
71         return 1;
79 TransitionLengthText::TransitionLengthText(MWindow *mwindow, 
80         TransitionLengthDialog *gui,
81         int x, 
82         int y)
83  : BC_TumbleTextBox(gui, 
84         (float)gui->transition->edit->track->from_units(gui->transition->length),
85         (float)0, 
86         (float)100, 
87         x,
88         y,
89         100)
91         this->mwindow = mwindow;
92         this->gui = gui;
95 int TransitionLengthText::handle_event()
97         double result = atof(get_text());
98         if(!EQUIV(result, gui->transition->length))
99         {
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->update(0,
105                         1,
106                         0,
107                         0,
108                         0, 
109                         0,
110                         0);
111         }
112         
113         return 1;
126 TransitionPopup::TransitionPopup(MWindow *mwindow, MWindowGUI *gui)
127  : BC_PopupMenu(0, 
128                 0, 
129                 0, 
130                 "", 
131                 0)
133         this->mwindow = mwindow;
134         this->gui = gui;
137 TransitionPopup::~TransitionPopup()
139 //      delete dialog_thread;
143 void TransitionPopup::create_objects()
145         length_thread = new TransitionLengthThread(mwindow, this);
146 //      add_item(attach = new TransitionPopupAttach(mwindow, this));
147         add_item(show = new TransitionPopupShow(mwindow, this));
148         add_item(on = new TransitionPopupOn(mwindow, this));
149         add_item(length = new TransitionPopupLength(mwindow, this));
150         add_item(detach = new TransitionPopupDetach(mwindow, this));
153 int TransitionPopup::update(Transition *transition)
155         this->transition = transition;
156         show->set_checked(transition->show);
157         on->set_checked(transition->on);
158         char len_text[50];
159         sprintf(len_text, _("Length: %2.2f sec"), transition->track->from_units(transition->length));
160         length->set_text(len_text);
161         return 0;
168 TransitionPopupAttach::TransitionPopupAttach(MWindow *mwindow, TransitionPopup *popup)
169  : BC_MenuItem(_("Attach..."))
171         this->mwindow = mwindow;
172         this->popup = popup;
175 TransitionPopupAttach::~TransitionPopupAttach()
179 int TransitionPopupAttach::handle_event()
181 //      popup->dialog_thread->start();
190 TransitionPopupDetach::TransitionPopupDetach(MWindow *mwindow, TransitionPopup *popup)
191  : BC_MenuItem(_("Detach"))
193         this->mwindow = mwindow;
194         this->popup = popup;
197 TransitionPopupDetach::~TransitionPopupDetach()
201 int TransitionPopupDetach::handle_event()
203         mwindow->detach_transition(popup->transition);
204         return 1;
208 TransitionPopupOn::TransitionPopupOn(MWindow *mwindow, TransitionPopup *popup)
209  : BC_MenuItem(_("On"))
211         this->mwindow = mwindow;
212         this->popup = popup;
215 TransitionPopupOn::~TransitionPopupOn()
219 int TransitionPopupOn::handle_event()
221         popup->transition->on = !get_checked();
222         mwindow->sync_parameters(CHANGE_EDL);
223         return 1;
231 TransitionPopupShow::TransitionPopupShow(MWindow *mwindow, TransitionPopup *popup)
232  : BC_MenuItem(_("Show"))
234         this->mwindow = mwindow;
235         this->popup = popup;
238 TransitionPopupShow::~TransitionPopupShow()
242 int TransitionPopupShow::handle_event()
244         mwindow->show_plugin(popup->transition);
245         return 1;
255 TransitionPopupLength::TransitionPopupLength(MWindow *mwindow, TransitionPopup *popup)
256  : BC_MenuItem(_("Length"))
258         this->mwindow = mwindow;
259         this->popup = popup;
262 TransitionPopupLength::~TransitionPopupLength()
266 int TransitionPopupLength::handle_event()
268         popup->length_thread->start();
269         return 1;