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)
38 : BC_PopupMenu(0, 0, 0, "", 0)
40 this->mwindow = mwindow;
44 EditPopup::~EditPopup()
48 void EditPopup::create_objects()
50 add_item(new EditAttachEffect(mwindow, this));
51 add_item(new EditMoveTrackUp(mwindow, this));
52 add_item(new EditMoveTrackDown(mwindow, this));
53 add_item(new EditPopupDeleteTrack(mwindow, this));
54 add_item(new EditPopupAddTrack(mwindow, this));
55 // add_item(new EditPopupTitle(mwindow, this));
60 int EditPopup::update(Track *track, Edit *edit)
65 if(track->data_type == TRACK_VIDEO && !resize_option)
67 add_item(resize_option = new EditPopupResize(mwindow, this));
68 add_item(matchsize_option = new EditPopupMatchSize(mwindow, this));
71 if(track->data_type == TRACK_AUDIO && resize_option)
73 del_item(resize_option); resize_option = 0;
74 del_item(matchsize_option); matchsize_option = 0;
87 EditAttachEffect::EditAttachEffect(MWindow *mwindow, EditPopup *popup)
88 : BC_MenuItem(_("Attach effect..."))
90 this->mwindow = mwindow;
92 dialog_thread = new PluginDialogThread(mwindow);
95 EditAttachEffect::~EditAttachEffect()
100 int EditAttachEffect::handle_event()
102 dialog_thread->start_window(popup->track,
104 _(PROGRAM_NAME ": Attach Effect"),
106 popup->track->data_type);
111 EditMoveTrackUp::EditMoveTrackUp(MWindow *mwindow, EditPopup *popup)
112 : BC_MenuItem(_("Move up"))
114 this->mwindow = mwindow;
117 EditMoveTrackUp::~EditMoveTrackUp()
120 int EditMoveTrackUp::handle_event()
122 mwindow->move_track_up(popup->track);
128 EditMoveTrackDown::EditMoveTrackDown(MWindow *mwindow, EditPopup *popup)
129 : BC_MenuItem(_("Move down"))
131 this->mwindow = mwindow;
134 EditMoveTrackDown::~EditMoveTrackDown()
137 int EditMoveTrackDown::handle_event()
139 mwindow->move_track_down(popup->track);
146 EditPopupResize::EditPopupResize(MWindow *mwindow, EditPopup *popup)
147 : BC_MenuItem(_("Resize track..."))
149 this->mwindow = mwindow;
151 dialog_thread = new ResizeTrackThread(mwindow);
153 EditPopupResize::~EditPopupResize()
155 delete dialog_thread;
158 int EditPopupResize::handle_event()
160 dialog_thread->start_window(popup->track);
169 EditPopupMatchSize::EditPopupMatchSize(MWindow *mwindow, EditPopup *popup)
170 : BC_MenuItem(_("Match output size"))
172 this->mwindow = mwindow;
175 EditPopupMatchSize::~EditPopupMatchSize()
179 int EditPopupMatchSize::handle_event()
181 mwindow->match_output_size(popup->track);
191 EditPopupDeleteTrack::EditPopupDeleteTrack(MWindow *mwindow, EditPopup *popup)
192 : BC_MenuItem(_("Delete track"))
194 this->mwindow = mwindow;
197 int EditPopupDeleteTrack::handle_event()
199 mwindow->delete_track(popup->track);
208 EditPopupAddTrack::EditPopupAddTrack(MWindow *mwindow, EditPopup *popup)
209 : BC_MenuItem(_("Add track"))
211 this->mwindow = mwindow;
215 int EditPopupAddTrack::handle_event()
217 switch( popup->track->data_type ) {
219 mwindow->add_audio_track_entry(1, popup->track);
222 mwindow->add_video_track_entry(popup->track);
225 mwindow->add_subttl_track_entry(popup->track);
236 EditPopupTitle::EditPopupTitle(MWindow *mwindow, EditPopup *popup)
237 : BC_MenuItem(_("User title..."))
239 this->mwindow = mwindow;
244 EditPopupTitle::~EditPopupTitle()
249 int EditPopupTitle::handle_event()
253 Track *trc = mwindow->session->track_highlighted;
255 if (trc && trc->record)
257 Edit *edt = mwindow->session->edit_highlighted;
260 window = new EditPopupTitleWindow (mwindow, popup);
261 window->create_objects();
262 result = window->run_window();
267 strcpy(edt->user_title, window->title_text->get_text());
278 EditPopupTitleWindow::EditPopupTitleWindow (MWindow *mwindow, EditPopup *popup)
279 : BC_Window (_(PROGRAM_NAME ": Set edit title"),
280 mwindow->gui->get_abs_cursor_x(0) - 400 / 2,
281 mwindow->gui->get_abs_cursor_y(0) - 500 / 2,
290 this->mwindow = mwindow;
292 this->edt = this->mwindow->session->edit_highlighted;
295 strcpy(new_text, this->edt->user_title);
299 EditPopupTitleWindow::~EditPopupTitleWindow()
303 int EditPopupTitleWindow::close_event()
309 void EditPopupTitleWindow::create_objects()
314 add_subwindow (new BC_Title (x, y, _("User title")));
315 add_subwindow (title_text = new EditPopupTitleText (this,
316 mwindow, x, y + 20));
317 add_tool(new BC_OKButton(this));
318 add_tool(new BC_CancelButton(this));
326 EditPopupTitleText::EditPopupTitleText (EditPopupTitleWindow *window,
327 MWindow *mwindow, int x, int y)
328 : BC_TextBox(x, y, 250, 1, (char*)(window->edt ? window->edt->user_title : ""))
330 this->window = window;
331 this->mwindow = mwindow;
334 EditPopupTitleText::~EditPopupTitleText()
338 int EditPopupTitleText::handle_event()