4 * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #include "editpopup.h"
25 #include "mainsession.h"
27 #include "mwindowgui.h"
28 #include "plugindialog.h"
29 #include "resizetrackthread.h"
32 #include "trackcanvas.h"
37 EditPopup::EditPopup(MWindow *mwindow, MWindowGUI *gui)
44 this->mwindow = mwindow;
48 EditPopup::~EditPopup()
52 void EditPopup::create_objects()
54 add_item(new EditAttachEffect(mwindow, this));
55 add_item(new EditMoveTrackUp(mwindow, this));
56 add_item(new EditMoveTrackDown(mwindow, this));
57 add_item(new EditPopupDeleteTrack(mwindow, this));
58 add_item(new EditPopupAddTrack(mwindow, this));
59 // add_item(new EditPopupTitle(mwindow, this));
63 int EditPopup::update(Track *track, Edit *edit)
68 if(track->data_type == TRACK_VIDEO && !resize_option)
70 add_item(resize_option = new EditPopupResize(mwindow, this));
71 add_item(matchsize_option = new EditPopupMatchSize(mwindow, this));
74 if(track->data_type == TRACK_AUDIO && resize_option)
76 remove_item(resize_option);
77 remove_item(matchsize_option);
92 EditAttachEffect::EditAttachEffect(MWindow *mwindow, EditPopup *popup)
93 : BC_MenuItem(_("Attach effect..."))
95 this->mwindow = mwindow;
97 dialog_thread = new PluginDialogThread(mwindow);
100 EditAttachEffect::~EditAttachEffect()
102 delete dialog_thread;
105 int EditAttachEffect::handle_event()
107 dialog_thread->start_window(popup->track,
109 _(PROGRAM_NAME ": Attach Effect"),
111 popup->track->data_type);
116 EditMoveTrackUp::EditMoveTrackUp(MWindow *mwindow, EditPopup *popup)
117 : BC_MenuItem(_("Move up"))
119 this->mwindow = mwindow;
122 EditMoveTrackUp::~EditMoveTrackUp()
125 int EditMoveTrackUp::handle_event()
127 mwindow->move_track_up(popup->track);
133 EditMoveTrackDown::EditMoveTrackDown(MWindow *mwindow, EditPopup *popup)
134 : BC_MenuItem(_("Move down"))
136 this->mwindow = mwindow;
139 EditMoveTrackDown::~EditMoveTrackDown()
142 int EditMoveTrackDown::handle_event()
144 mwindow->move_track_down(popup->track);
151 EditPopupResize::EditPopupResize(MWindow *mwindow, EditPopup *popup)
152 : BC_MenuItem(_("Resize track..."))
154 this->mwindow = mwindow;
156 dialog_thread = new ResizeTrackThread(mwindow);
158 EditPopupResize::~EditPopupResize()
160 delete dialog_thread;
163 int EditPopupResize::handle_event()
165 dialog_thread->start_window(popup->track);
174 EditPopupMatchSize::EditPopupMatchSize(MWindow *mwindow, EditPopup *popup)
175 : BC_MenuItem(_("Match output size"))
177 this->mwindow = mwindow;
180 EditPopupMatchSize::~EditPopupMatchSize()
184 int EditPopupMatchSize::handle_event()
186 mwindow->match_output_size(popup->track);
196 EditPopupDeleteTrack::EditPopupDeleteTrack(MWindow *mwindow, EditPopup *popup)
197 : BC_MenuItem(_("Delete track"))
199 this->mwindow = mwindow;
202 int EditPopupDeleteTrack::handle_event()
204 mwindow->delete_track(popup->track);
213 EditPopupAddTrack::EditPopupAddTrack(MWindow *mwindow, EditPopup *popup)
214 : BC_MenuItem(_("Add track"))
216 this->mwindow = mwindow;
220 int EditPopupAddTrack::handle_event()
222 switch( popup->track->data_type ) {
224 mwindow->add_audio_track_entry(1, popup->track);
227 mwindow->add_video_track_entry(popup->track);
230 mwindow->add_subttl_track_entry(popup->track);
241 EditPopupTitle::EditPopupTitle(MWindow *mwindow, EditPopup *popup)
242 : BC_MenuItem(_("User title..."))
244 this->mwindow = mwindow;
249 EditPopupTitle::~EditPopupTitle()
254 int EditPopupTitle::handle_event()
258 Track *trc = mwindow->session->track_highlighted;
260 if (trc && trc->record)
262 Edit *edt = mwindow->session->edit_highlighted;
265 window = new EditPopupTitleWindow (mwindow, popup);
266 window->create_objects();
267 result = window->run_window();
272 strcpy(edt->user_title, window->title_text->get_text());
283 EditPopupTitleWindow::EditPopupTitleWindow (MWindow *mwindow, EditPopup *popup)
284 : BC_Window (_(PROGRAM_NAME ": Set edit title"),
285 mwindow->gui->get_abs_cursor_x(0) - 400 / 2,
286 mwindow->gui->get_abs_cursor_y(0) - 500 / 2,
295 this->mwindow = mwindow;
297 this->edt = this->mwindow->session->edit_highlighted;
300 strcpy(new_text, this->edt->user_title);
304 EditPopupTitleWindow::~EditPopupTitleWindow()
308 int EditPopupTitleWindow::close_event()
314 void EditPopupTitleWindow::create_objects()
319 add_subwindow (new BC_Title (x, y, _("User title")));
320 add_subwindow (title_text = new EditPopupTitleText (this,
321 mwindow, x, y + 20));
322 add_tool(new BC_OKButton(this));
323 add_tool(new BC_CancelButton(this));
331 EditPopupTitleText::EditPopupTitleText (EditPopupTitleWindow *window,
332 MWindow *mwindow, int x, int y)
333 : BC_TextBox(x, y, 250, 1, (char*)(window->edt ? window->edt->user_title : ""))
335 this->window = window;
336 this->mwindow = mwindow;
339 EditPopupTitleText::~EditPopupTitleText()
343 int EditPopupTitleText::handle_event()