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 "awindowgui.h"
24 #include "bcsignals.h"
26 #include "cplayback.h"
28 #include "cwindowgui.h"
29 #include "editpanel.h"
31 #include "edlsession.h"
35 #include "localsession.h"
36 #include "mainclock.h"
39 #include "meterpanel.h"
41 #include "mwindowgui.h"
42 #include "playbackengine.h"
45 #include "trackcanvas.h"
46 #include "transportque.h"
51 EditPanel::EditPanel(MWindow *mwindow,
52 BC_WindowBase *subwindow,
58 int use_splice, // Extra buttons
73 this->editing_mode = editing_mode;
74 this->use_editing_mode = use_editing_mode;
75 this->use_keyframe = use_keyframe;
76 this->use_splice = use_splice;
77 this->use_overwrite = use_overwrite;
79 this->use_extract = 0;
80 this->use_copy = use_copy;
81 this->use_paste = use_paste;
82 this->use_undo = use_undo;
83 this->mwindow = mwindow;
84 this->subwindow = subwindow;
85 this->use_fit = use_fit;
86 this->use_labels = use_labels;
87 this->use_toclip = use_toclip;
88 this->use_meters = use_meters;
89 this->is_mwindow = is_mwindow;
90 this->use_cut = use_cut;
91 this->use_commercial = use_commercial;
105 this->commercial = 0;
108 this->labelbutton = 0;
115 this->meter_panel = 0;
122 EditPanel::~EditPanel()
126 void EditPanel::set_meters(MeterPanel *meter_panel)
128 this->meter_panel = meter_panel;
132 void EditPanel::update()
134 int new_editing_mode = mwindow->edl->session->editing_mode;
135 if(arrow) arrow->update(new_editing_mode == EDITING_ARROW);
136 if(ibeam) ibeam->update(new_editing_mode == EDITING_IBEAM);
137 if(keyframe) keyframe->update(mwindow->edl->session->auto_keyframes);
140 //printf("EditPanel::update %d %p %p\n", __LINE__, subwindow, (BC_WindowBase*)mwindow->cwindow->gui);
141 if(subwindow == (BC_WindowBase*)mwindow->cwindow->gui)
143 //printf("EditPanel::update %d %d\n", __LINE__, mwindow->edl->session->cwindow_meter);
144 meters->update(mwindow->edl->session->cwindow_meter);
145 mwindow->cwindow->gui->update_meters();
149 //printf("EditPanel::update %d %d\n", __LINE__, mwindow->edl->session->vwindow_meter);
150 meters->update(mwindow->edl->session->vwindow_meter);
156 void EditPanel::delete_buttons()
160 if(arrow) delete arrow;
161 if(ibeam) delete ibeam;
168 if(inpoint) delete inpoint;
169 if(outpoint) delete outpoint;
170 if(use_copy) delete copy;
171 if(use_splice) delete splice;
172 if(use_overwrite) delete overwrite;
173 if(use_lift) delete lift;
174 if(use_extract) delete extract;
176 if(commercial) delete commercial;
177 if(copy) delete copy;
178 if(use_paste) delete paste;
206 int EditPanel::calculate_w(MWindow *mwindow, int use_keyframe, int total_buttons)
209 int button_w = mwindow->theme->get_image_set("ibeam")[0]->get_w();
212 result += button_w + mwindow->theme->toggle_margin;
215 result += button_w * total_buttons;
219 int EditPanel::calculate_h(MWindow *mwindow)
221 return mwindow->theme->get_image_set("ibeam")[0]->get_h();
224 void EditPanel::create_buttons()
232 subwindow->add_subwindow(arrow = new ArrowButton(mwindow, this, x1, y1));
233 x1 += arrow->get_w();
234 subwindow->add_subwindow(ibeam = new IBeamButton(mwindow, this, x1, y1));
235 x1 += ibeam->get_w();
240 subwindow->add_subwindow(keyframe = new KeyFrameButton(mwindow, this, x1, y1));
241 x1 += keyframe->get_w();
242 x1 += mwindow->theme->toggle_margin;
246 subwindow->add_subwindow(inpoint = new EditInPoint(mwindow, this, x1, y1));
247 x1 += inpoint->get_w();
248 subwindow->add_subwindow(outpoint = new EditOutPoint(mwindow, this, x1, y1));
249 x1 += outpoint->get_w();
252 subwindow->add_subwindow(splice = new EditSplice(mwindow, this, x1, y1));
253 x1 += splice->get_w();
257 subwindow->add_subwindow(overwrite = new EditOverwrite(mwindow, this, x1, y1));
258 x1 += overwrite->get_w();
262 subwindow->add_subwindow(lift = new EditLift(mwindow, this, x1, y1));
267 subwindow->add_subwindow(extract = new EditExtract(mwindow, this, x1, y1));
268 x1 += extract->get_w();
272 subwindow->add_subwindow(clip = new EditToClip(mwindow, this, x1, y1));
278 subwindow->add_subwindow(cut = new EditCut(mwindow, this, x1, y1));
283 subwindow->add_subwindow(copy = new EditCopy(mwindow, this, x1, y1));
288 subwindow->add_subwindow(paste = new EditPaste(mwindow, this, x1, y1));
289 x1 += paste->get_w();
296 printf("EditPanel::create_objects: meter_panel == 0\n");
298 subwindow->add_subwindow(meters = new MeterShow(mwindow, meter_panel, x1, y1));
299 x1 += meters->get_w();
304 subwindow->add_subwindow(labelbutton = new EditLabelbutton(mwindow,
308 x1 += labelbutton->get_w();
309 subwindow->add_subwindow(prevlabel = new EditPrevLabel(mwindow,
314 x1 += prevlabel->get_w();
315 subwindow->add_subwindow(nextlabel = new EditNextLabel(mwindow,
320 x1 += nextlabel->get_w();
323 // all windows except VWindow since it's only implemented in MWindow.
326 subwindow->add_subwindow(prevedit = new EditPrevEdit(mwindow,
331 x1 += prevedit->get_w();
332 subwindow->add_subwindow(nextedit = new EditNextEdit(mwindow,
337 x1 += nextedit->get_w();
342 subwindow->add_subwindow(fit = new EditFit(mwindow, this, x1, y1));
344 subwindow->add_subwindow(fit_autos = new EditFitAutos(mwindow, this, x1, y1));
345 x1 += fit_autos->get_w();
350 subwindow->add_subwindow(undo = new EditUndo(mwindow, this, x1, y1));
352 subwindow->add_subwindow(redo = new EditRedo(mwindow, this, x1, y1));
358 subwindow->add_subwindow(commercial = new EditCommercial(mwindow, this, x1, y1));
359 x1 += commercial->get_w();
366 void EditPanel::toggle_label()
368 mwindow->toggle_label(is_mwindow);
371 void EditPanel::prev_label()
373 int shift_down = subwindow->shift_down();
374 int have_mwindow_lock = mwindow->gui->get_window_lock();
375 int have_subwindow_lock =
376 subwindow->get_top_level() == mwindow->gui->get_top_level() ?
377 0 : subwindow->get_window_lock();
378 if(have_mwindow_lock)
379 mwindow->gui->unlock_window();
380 if(have_subwindow_lock)
381 subwindow->unlock_window();
383 mwindow->gui->mbuttons->transport->handle_transport(STOP, 1, 0, 0);
385 if(have_subwindow_lock)
386 subwindow->lock_window("EditPanel::prev_label 1");
388 mwindow->gui->lock_window("EditPanel::prev_label 2");
390 mwindow->prev_label(shift_down);
392 if(!have_mwindow_lock)
393 mwindow->gui->unlock_window();
396 void EditPanel::next_label()
398 int shift_down = subwindow->shift_down();
399 int have_mwindow_lock = mwindow->gui->get_window_lock();
400 int have_subwindow_lock =
401 subwindow->get_top_level() == mwindow->gui->get_top_level() ?
402 0 : subwindow->get_window_lock();
403 if(have_mwindow_lock)
404 mwindow->gui->unlock_window();
405 if(have_subwindow_lock)
406 subwindow->unlock_window();
408 mwindow->gui->mbuttons->transport->handle_transport(STOP, 1, 0, 0);
410 if(have_subwindow_lock)
411 subwindow->lock_window("EditPanel::next_label 1");
413 mwindow->gui->lock_window("EditPanel::next_label 2");
415 mwindow->next_label(shift_down);
417 if(!have_mwindow_lock)
418 mwindow->gui->unlock_window();
423 void EditPanel::prev_edit()
425 int shift_down = subwindow->shift_down();
426 int have_mwindow_lock = mwindow->gui->get_window_lock();
427 int have_subwindow_lock =
428 subwindow->get_top_level() == mwindow->gui->get_top_level() ?
429 0 : subwindow->get_window_lock();
430 if(have_mwindow_lock)
431 mwindow->gui->unlock_window();
432 if(have_subwindow_lock)
433 subwindow->unlock_window();
435 mwindow->gui->mbuttons->transport->handle_transport(STOP, 1, 0, 0);
437 if(have_subwindow_lock)
438 subwindow->lock_window("EditPanel::prev_edit 1");
440 mwindow->gui->lock_window("EditPanel::prev_edit 2");
442 mwindow->prev_edit_handle(shift_down);
444 if(!have_mwindow_lock)
445 mwindow->gui->unlock_window();
448 void EditPanel::next_edit()
450 int shift_down = subwindow->shift_down();
451 int have_mwindow_lock = mwindow->gui->get_window_lock();
452 int have_subwindow_lock =
453 subwindow->get_top_level() == mwindow->gui->get_top_level() ?
454 0 : subwindow->get_window_lock();
455 if(have_mwindow_lock)
456 mwindow->gui->unlock_window();
457 if(have_subwindow_lock)
458 subwindow->unlock_window();
460 mwindow->gui->mbuttons->transport->handle_transport(STOP, 1, 0, 0);
462 if(have_subwindow_lock)
463 subwindow->lock_window("EditPanel::next_edit 1");
465 mwindow->gui->lock_window("EditPanel::next_edit 2");
467 mwindow->next_edit_handle(shift_down);
469 if(!have_mwindow_lock)
470 mwindow->gui->unlock_window();
479 void EditPanel::reposition_buttons(int x, int y)
487 arrow->reposition_window(x1, y1);
488 x1 += arrow->get_w();
489 ibeam->reposition_window(x1, y1);
490 x1 += ibeam->get_w();
495 keyframe->reposition_window(x1, y1);
496 x1 += keyframe->get_w();
497 x1 += mwindow->theme->toggle_margin;
500 inpoint->reposition_window(x1, y1);
501 x1 += inpoint->get_w();
502 outpoint->reposition_window(x1, y1);
503 x1 += outpoint->get_w();
506 splice->reposition_window(x1, y1);
507 x1 += splice->get_w();
511 overwrite->reposition_window(x1, y1);
512 x1 += overwrite->get_w();
516 lift->reposition_window(x1, y1);
521 extract->reposition_window(x1, y1);
522 x1 += extract->get_w();
526 clip->reposition_window(x1, y1);
531 cut->reposition_window(x1, y1);
536 copy->reposition_window(x1, y1);
541 paste->reposition_window(x1, y1);
542 x1 += paste->get_w();
547 meters->reposition_window(x1, y1);
548 x1 += meters->get_w();
553 labelbutton->reposition_window(x1, y1);
554 x1 += labelbutton->get_w();
555 prevlabel->reposition_window(x1, y1);
556 x1 += prevlabel->get_w();
557 nextlabel->reposition_window(x1, y1);
558 x1 += nextlabel->get_w();
563 prevedit->reposition_window(x1, y1);
564 x1 += prevedit->get_w();
569 nextedit->reposition_window(x1, y1);
570 x1 += nextedit->get_w();
575 fit->reposition_window(x1, y1);
577 fit_autos->reposition_window(x1, y1);
578 x1 += fit_autos->get_w();
583 undo->reposition_window(x1, y1);
585 redo->reposition_window(x1, y1);
592 void EditPanel::create_objects()
597 int EditPanel::get_w()
603 void EditPanel::copy_selection()
608 void EditPanel::splice_selection()
612 void EditPanel::overwrite_selection()
616 void EditPanel::set_inpoint()
618 mwindow->set_inpoint(1);
621 void EditPanel::set_outpoint()
623 mwindow->set_outpoint(1);
626 void EditPanel::clear_inpoint()
628 mwindow->delete_inpoint();
631 void EditPanel::clear_outpoint()
633 mwindow->delete_outpoint();
636 void EditPanel::to_clip()
638 subwindow->unlock_window();
640 subwindow->lock_window("EditPanel::to_clip");
644 EditInPoint::EditInPoint(MWindow *mwindow, EditPanel *panel, int x, int y)
645 : BC_Button(x, y, mwindow->theme->get_image_set("inbutton"))
647 this->mwindow = mwindow;
649 set_tooltip(_("In point ( [ )"));
651 EditInPoint::~EditInPoint()
654 int EditInPoint::handle_event()
656 panel->set_inpoint();
659 int EditInPoint::keypress_event()
661 if(get_keypress() == '[')
663 panel->set_inpoint();
669 EditOutPoint::EditOutPoint(MWindow *mwindow, EditPanel *panel, int x, int y)
670 : BC_Button(x, y, mwindow->theme->get_image_set("outbutton"))
672 this->mwindow = mwindow;
674 set_tooltip(_("Out point ( ] )"));
676 EditOutPoint::~EditOutPoint()
679 int EditOutPoint::handle_event()
681 panel->set_outpoint();
684 int EditOutPoint::keypress_event()
686 if(get_keypress() == ']')
688 panel->set_outpoint();
695 EditNextLabel::EditNextLabel(MWindow *mwindow,
700 : BC_Button(x, y, mwindow->theme->get_image_set("nextlabel"))
702 this->mwindow = mwindow;
704 this->is_mwindow = is_mwindow;
705 set_tooltip(_("Next label ( ctrl -> )"));
707 EditNextLabel::~EditNextLabel()
710 int EditNextLabel::keypress_event()
712 if(get_keypress() == RIGHT && ctrl_down())
713 return handle_event();
716 int EditNextLabel::handle_event()
722 EditPrevLabel::EditPrevLabel(MWindow *mwindow,
727 : BC_Button(x, y, mwindow->theme->get_image_set("prevlabel"))
729 this->mwindow = mwindow;
731 this->is_mwindow = is_mwindow;
732 set_tooltip(_("Previous label ( ctrl <- )"));
734 EditPrevLabel::~EditPrevLabel()
737 int EditPrevLabel::keypress_event()
739 if(get_keypress() == LEFT && ctrl_down())
740 return handle_event();
743 int EditPrevLabel::handle_event()
751 EditNextEdit::EditNextEdit(MWindow *mwindow,
756 : BC_Button(x, y, mwindow->theme->get_image_set("nextedit"))
758 this->mwindow = mwindow;
760 this->is_mwindow = is_mwindow;
761 set_tooltip(_("Next edit ( alt -> )"));
763 EditNextEdit::~EditNextEdit()
766 int EditNextEdit::keypress_event()
768 if(get_keypress() == RIGHT && alt_down())
769 return handle_event();
772 int EditNextEdit::handle_event()
778 EditPrevEdit::EditPrevEdit(MWindow *mwindow,
783 : BC_Button(x, y, mwindow->theme->get_image_set("prevedit"))
785 this->mwindow = mwindow;
787 this->is_mwindow = is_mwindow;
788 set_tooltip(_("Previous edit (alt <- )"));
790 EditPrevEdit::~EditPrevEdit()
793 int EditPrevEdit::keypress_event()
795 if(get_keypress() == LEFT && alt_down())
796 return handle_event();
799 int EditPrevEdit::handle_event()
807 EditLift::EditLift(MWindow *mwindow, EditPanel *panel, int x, int y)
808 : BC_Button(x, y, mwindow->theme->lift_data)
810 this->mwindow = mwindow;
812 set_tooltip(_("Lift"));
814 EditLift::~EditLift()
817 int EditLift::handle_event()
822 EditOverwrite::EditOverwrite(MWindow *mwindow, EditPanel *panel, int x, int y)
823 : BC_Button(x, y, mwindow->theme->overwrite_data)
825 this->mwindow = mwindow;
827 set_tooltip(_("Overwrite ( b )"));
829 EditOverwrite::~EditOverwrite()
832 int EditOverwrite::handle_event()
834 panel->overwrite_selection();
837 int EditOverwrite::keypress_event()
839 if(get_keypress() == 'b')
847 EditExtract::EditExtract(MWindow *mwindow, EditPanel *panel, int x, int y)
848 : BC_Button(x, y, mwindow->theme->extract_data)
850 this->mwindow = mwindow;
852 set_tooltip(_("Extract"));
854 EditExtract::~EditExtract()
857 int EditExtract::handle_event()
859 // mwindow->extract_selection();
863 EditToClip::EditToClip(MWindow *mwindow, EditPanel *panel, int x, int y)
864 : BC_Button(x, y, mwindow->theme->get_image_set("toclip"))
866 this->mwindow = mwindow;
868 set_tooltip(_("To clip ( i )"));
870 EditToClip::~EditToClip()
873 int EditToClip::handle_event()
879 int EditToClip::keypress_event()
881 if(get_keypress() == 'i')
889 EditSplice::EditSplice(MWindow *mwindow, EditPanel *panel, int x, int y)
890 : BC_Button(x, y, mwindow->theme->splice_data)
892 this->mwindow = mwindow;
894 set_tooltip(_("Splice ( v )"));
896 EditSplice::~EditSplice()
899 int EditSplice::handle_event()
901 panel->splice_selection();
904 int EditSplice::keypress_event()
906 if(get_keypress() == 'v')
914 EditCut::EditCut(MWindow *mwindow, EditPanel *panel, int x, int y)
915 : BC_Button(x, y, mwindow->theme->get_image_set("cut"))
917 this->mwindow = mwindow;
919 set_tooltip(_("Cut ( x )"));
924 int EditCut::keypress_event()
926 if(get_keypress() == 'x')
927 return handle_event();
931 int EditCut::handle_event()
933 int have_mwindow_lock = mwindow->gui->get_window_lock();
934 if(!have_mwindow_lock)
935 mwindow->gui->lock_window("EditCut::handle_event");
939 if(!have_mwindow_lock)
940 mwindow->gui->unlock_window();
944 EditCommercial::EditCommercial(MWindow *mwindow, EditPanel *panel, int x, int y)
945 : BC_Button(x, y, mwindow->theme->get_image_set("commercial"))
947 this->mwindow = mwindow;
949 set_tooltip(_("Commercial ( shift X )"));
951 EditCommercial::~EditCommercial()
954 int EditCommercial::keypress_event()
956 if(get_keypress() == 'X')
957 return handle_event();
961 int EditCommercial::handle_event()
963 int have_mwindow_lock = mwindow->gui->get_window_lock();
964 if(have_mwindow_lock)
965 mwindow->gui->unlock_window();
966 mwindow->commit_commercial();
967 if( !mwindow->put_commercial() ) {
968 mwindow->gui->lock_window("EditCommercial::handle_event 1");
970 if(!have_mwindow_lock)
971 mwindow->gui->unlock_window();
972 mwindow->activate_commercial();
975 mwindow->undo_commercial();
976 if(have_mwindow_lock)
977 mwindow->gui->lock_window("EditCommercial::handle_event 2");
981 EditCopy::EditCopy(MWindow *mwindow, EditPanel *panel, int x, int y)
982 : BC_Button(x, y, mwindow->theme->get_image_set("copy"))
984 this->mwindow = mwindow;
986 set_tooltip(_("Copy ( c )"));
988 EditCopy::~EditCopy()
992 int EditCopy::keypress_event()
994 if(get_keypress() == 'c')
995 return handle_event();
998 int EditCopy::handle_event()
1000 panel->copy_selection();
1004 EditAppend::EditAppend(MWindow *mwindow, EditPanel *panel, int x, int y)
1005 : BC_Button(x, y, mwindow->theme->append_data)
1007 this->mwindow = mwindow;
1008 this->panel = panel;
1009 set_tooltip(_("Append to end of track"));
1011 EditAppend::~EditAppend()
1016 int EditAppend::handle_event()
1022 EditInsert::EditInsert(MWindow *mwindow, EditPanel *panel, int x, int y)
1023 : BC_Button(x, y, mwindow->theme->insert_data)
1025 this->mwindow = mwindow;
1026 this->panel = panel;
1027 set_tooltip(_("Insert before beginning of track"));
1029 EditInsert::~EditInsert()
1034 int EditInsert::handle_event()
1041 EditPaste::EditPaste(MWindow *mwindow, EditPanel *panel, int x, int y)
1042 : BC_Button(x, y, mwindow->theme->get_image_set("paste"))
1044 this->mwindow = mwindow;
1045 this->panel = panel;
1046 set_tooltip(_("Paste ( v )"));
1048 EditPaste::~EditPaste()
1052 int EditPaste::keypress_event()
1054 if(get_keypress() == 'v')
1055 return handle_event();
1058 int EditPaste::handle_event()
1060 int have_mwindow_lock = mwindow->gui->get_window_lock();
1061 if(!have_mwindow_lock)
1062 mwindow->gui->lock_window("EditPaste::handle_event");
1066 if(!have_mwindow_lock)
1067 mwindow->gui->unlock_window();
1073 EditTransition::EditTransition(MWindow *mwindow, EditPanel *panel, int x, int y)
1074 : BC_Button(x, y, mwindow->theme->transition_data)
1076 this->mwindow = mwindow;
1077 this->panel = panel;
1078 set_tooltip(_("Set transition"));
1080 EditTransition::~EditTransition()
1083 int EditTransition::handle_event()
1088 EditPresentation::EditPresentation(MWindow *mwindow, EditPanel *panel, int x, int y)
1089 : BC_Button(x, y, mwindow->theme->presentation_data)
1091 this->mwindow = mwindow;
1092 this->panel = panel;
1093 set_tooltip(_("Set presentation up to current position"));
1095 EditPresentation::~EditPresentation()
1098 int EditPresentation::handle_event()
1103 EditUndo::EditUndo(MWindow *mwindow, EditPanel *panel, int x, int y)
1104 : BC_Button(x, y, mwindow->theme->get_image_set("undo"))
1106 this->mwindow = mwindow;
1107 this->panel = panel;
1108 set_tooltip(_("Undo ( z )"));
1110 EditUndo::~EditUndo()
1113 int EditUndo::keypress_event()
1115 if(get_keypress() == 'z')
1116 return handle_event();
1119 int EditUndo::handle_event()
1121 mwindow->undo_entry(panel->subwindow);
1125 EditRedo::EditRedo(MWindow *mwindow, EditPanel *panel, int x, int y)
1126 : BC_Button(x, y, mwindow->theme->get_image_set("redo"))
1128 this->mwindow = mwindow;
1129 this->panel = panel;
1130 set_tooltip(_("Redo ( shift Z )"));
1132 EditRedo::~EditRedo()
1135 int EditRedo::keypress_event()
1137 if(get_keypress() == 'Z')
1138 return handle_event();
1141 int EditRedo::handle_event()
1143 mwindow->redo_entry(panel->subwindow);
1151 EditLabelbutton::EditLabelbutton(MWindow *mwindow, EditPanel *panel, int x, int y)
1152 : BC_Button(x, y, mwindow->theme->get_image_set("labelbutton"))
1154 this->mwindow = mwindow;
1155 this->panel = panel;
1156 set_tooltip(_("Toggle label at current position ( l )"));
1159 EditLabelbutton::~EditLabelbutton()
1162 int EditLabelbutton::keypress_event()
1164 if(get_keypress() == 'l')
1165 return handle_event();
1168 int EditLabelbutton::handle_event()
1170 panel->toggle_label();
1180 EditFit::EditFit(MWindow *mwindow, EditPanel *panel, int x, int y)
1181 : BC_Button(x, y, mwindow->theme->get_image_set("fit"))
1183 this->mwindow = mwindow;
1184 this->panel = panel;
1185 set_tooltip(_("Fit selection to display ( f )"));
1190 int EditFit::keypress_event()
1192 if(!alt_down() && get_keypress() == 'f')
1199 int EditFit::handle_event()
1201 mwindow->fit_selection();
1213 EditFitAutos::EditFitAutos(MWindow *mwindow, EditPanel *panel, int x, int y)
1214 : BC_Button(x, y, mwindow->theme->get_image_set("fitautos"))
1216 this->mwindow = mwindow;
1217 this->panel = panel;
1218 set_tooltip(_("Fit autos to display ( Alt + f )"));
1220 EditFitAutos::~EditFitAutos()
1223 int EditFitAutos::keypress_event()
1225 if(alt_down() && get_keypress() == 'f')
1232 int EditFitAutos::handle_event()
1234 mwindow->fit_autos();
1250 ArrowButton::ArrowButton(MWindow *mwindow, EditPanel *panel, int x, int y)
1253 mwindow->theme->get_image_set("arrow"),
1254 mwindow->edl->session->editing_mode == EDITING_ARROW,
1260 this->mwindow = mwindow;
1261 this->panel = panel;
1262 set_tooltip(_("Drag and drop editing mode"));
1265 int ArrowButton::handle_event()
1268 panel->ibeam->update(0);
1269 mwindow->set_editing_mode(EDITING_ARROW,
1272 // Nothing after this
1277 IBeamButton::IBeamButton(MWindow *mwindow, EditPanel *panel, int x, int y)
1280 mwindow->theme->get_image_set("ibeam"),
1281 mwindow->edl->session->editing_mode == EDITING_IBEAM,
1287 this->mwindow = mwindow;
1288 this->panel = panel;
1289 set_tooltip(_("Cut and paste editing mode"));
1292 int IBeamButton::handle_event()
1295 panel->arrow->update(0);
1296 mwindow->set_editing_mode(EDITING_IBEAM,
1299 // Nothing after this
1303 KeyFrameButton::KeyFrameButton(MWindow *mwindow, EditPanel *panel, int x, int y)
1306 mwindow->theme->get_image_set("autokeyframe"),
1307 mwindow->edl->session->auto_keyframes,
1313 this->mwindow = mwindow;
1314 this->panel = panel;
1315 set_tooltip(_("Generate keyframes while tweeking"));
1318 int KeyFrameButton::handle_event()
1320 mwindow->set_auto_keyframes(get_value(),