#ifndef EDITPANEL_H
#define EDITPANEL_H
+#include "bcdialog.h"
#include "guicast.h"
#include "editpanel.inc"
+#include "localsession.inc"
#include "meterpanel.inc"
#include "mwindow.inc"
#include "manualgoto.inc"
+#include "scopewindow.h"
+
+
class EditPanel;
EditPanel *panel;
};
-class EditLift : public BC_Button
-{
-public:
- EditLift(MWindow *mwindow, EditPanel *panel, int x, int y);
- ~EditLift();
- int handle_event();
- MWindow *mwindow;
- EditPanel *panel;
-};
-
-class EditExtract : public BC_Button
-{
-public:
- EditExtract(MWindow *mwindow, EditPanel *panel, int x, int y);
- ~EditExtract();
- int handle_event();
- MWindow *mwindow;
- EditPanel *panel;
-};
-
class EditToClip : public BC_Button
{
public:
EditPanel *panel;
};
-class EditAppend : public BC_Button
-{
-public:
- EditAppend(MWindow *mwindow, EditPanel *panel, int x, int y);
- ~EditAppend();
-
- int handle_event();
-
- MWindow *mwindow;
- EditPanel *panel;
-};
-
-class EditInsert : public BC_Button
-{
-public:
- EditInsert(MWindow *mwindow, EditPanel *panel, int x, int y);
- ~EditInsert();
-
- int handle_event();
-
- MWindow *mwindow;
- EditPanel *panel;
-};
-
class EditPaste : public BC_Button
{
public:
EditPanel *panel;
};
-class EditTransition : public BC_Button
-{
-public:
- EditTransition(MWindow *mwindow, EditPanel *panel, int x, int y);
- ~EditTransition();
- int handle_event();
- MWindow *mwindow;
- EditPanel *panel;
-};
-
-class EditPresentation : public BC_Button
-{
-public:
- EditPresentation(MWindow *mwindow, EditPanel *panel, int x, int y);
- ~EditPresentation();
- int handle_event();
- MWindow *mwindow;
- EditPanel *panel;
-};
-
class EditUndo : public BC_Button
{
public:
EditPanel *panel;
};
+class SpanKeyFrameButton : public BC_Toggle
+{
+public:
+ SpanKeyFrameButton(MWindow *mwindow, EditPanel *panel, int x, int y);
+ int handle_event();
+ MWindow *mwindow;
+ EditPanel *panel;
+};
+
class LockLabelsButton : public BC_Toggle
{
public:
- LockLabelsButton(MWindow *mwindow, int x, int y);
+ LockLabelsButton(MWindow *mwindow, EditPanel *panel, int x, int y);
int handle_event();
MWindow *mwindow;
+ EditPanel *panel;
};
+class EditPanelScopeGUI : public ScopeGUI
+{
+public:
+ EditPanelScopeGUI(MWindow *mwindow, EditPanelScopeDialog *dialog);
+ ~EditPanelScopeGUI();
+
+ void create_objects();
+ void toggle_event();
+ int translation_event();
+ int resize_event(int w, int h);
+ void update_scope();
+
+ MWindow *mwindow;
+ EditPanelScopeDialog *dialog;
+};
+
+class EditPanelScopeDialog : public BC_DialogThread
+{
+public:
+ EditPanelScopeDialog(MWindow *mwindow, EditPanel *panel);
+ ~EditPanelScopeDialog();
+
+ void handle_close_event(int result);
+ void handle_done_event(int result);
+ BC_Window* new_gui();
+ void process(VFrame *output_frame);
+
+ MWindow *mwindow;
+ EditPanel *panel;
+ EditPanelScopeGUI *scope_gui;
+ Mutex *gui_lock;
+ VFrame *output_frame;
+};
+
+class EditPanelGangTracks : public BC_Button
+{
+ static VFrame **gang_images[TOTAL_GANGS];
+ static const char *gang_tips[TOTAL_GANGS];
+public:
+ EditPanelGangTracks(MWindow *mwindow, EditPanel *panel, int x, int y);
+ ~EditPanelGangTracks();
+ VFrame **get_images(MWindow *mwindow);
+ void update(int gang);
+ int handle_event();
+ EditPanel *panel;
+ MWindow *mwindow;
+};
+
+
+class EditPanelScope : public BC_Toggle
+{
+public:
+ EditPanelScope(MWindow *mwindow, EditPanel *panel, int x, int y);
+ ~EditPanelScope();
+ int handle_event();
+ EditPanel *panel;
+ MWindow *mwindow;
+};
+
+class EditPanelTimecode : public BC_Button
+{
+public:
+ EditPanelTimecode(MWindow *mwindow, EditPanel *panel, int x, int y);
+ ~EditPanelTimecode();
+ int handle_event();
+ MWindow *mwindow;
+ EditPanel *panel;
+ EditPanelTcDialog *tc_dialog;
+};
+
+class EditPanelTcDialog : public BC_DialogThread
+{
+public:
+ EditPanelTcDialog(MWindow *mwindow, EditPanel *panel);
+ ~EditPanelTcDialog();
+ BC_Window *new_gui();
+ void start_dialog(int px, int py);
+ void handle_done_event(int result);
+
+ MWindow *mwindow;
+ EditPanel *panel;
+ EditPanelTcWindow *tc_gui;
+ int px, py;
+};
+
+class EditPanelTcWindow : public BC_Window
+{
+public:
+ EditPanelTcWindow(EditPanelTcDialog *tc_dialog, int x, int y);
+ ~EditPanelTcWindow();
+ void create_objects();
+ double get_timecode();
+ void update(double timecode);
+
+ EditPanelTcDialog *tc_dialog;
+ EditPanelTcInt *hours;
+ EditPanelTcInt *minutes;
+ EditPanelTcInt *seconds;
+ EditPanelTcInt *frames;
+};
+
+class EditPanelTcInt : public BC_TextBox
+{
+public:
+ EditPanelTcInt(EditPanelTcWindow *window, int x, int y, int w,
+ int max, const char *format);
+ ~EditPanelTcInt();
+ int handle_event();
+ int keypress_event();
+ void update(int v);
+
+ EditPanelTcWindow *window;
+ int max, digits;
+ const char *format;
+};
+
+class EditPanelTcReset : public BC_Button
+{
+public:
+ EditPanelTcReset(EditPanelTcWindow *window, int x, int y);
+ int handle_event();
+
+ EditPanelTcWindow *window;
+};
+
class EditPanel
{
public:
int use_keyframe,
int use_splice, // Extra buttons
int use_overwrite,
- int use_lift,
- int use_extract,
int use_copy, // Use copy when in EDITING_ARROW
int use_paste,
int use_undo,
int use_cut,
int use_commerical,
int use_goto,
- int use_clk2play);
+ int use_clk2play,
+ int use_scope,
+ int use_gang_tracks,
+ int use_timecode);
~EditPanel();
void set_meters(MeterPanel *meter_panel);
void reposition_buttons(int x, int y);
void create_objects();
int get_w();
- virtual void copy_selection();
- virtual void splice_selection();
- virtual void overwrite_selection();
- virtual void set_inpoint();
- virtual void set_outpoint();
- virtual void unset_inoutpoint();
- virtual void to_clip() = 0;
- virtual void toggle_label();
- virtual void prev_label(int cut);
- virtual void next_label(int cut);
- virtual void prev_edit(int cut);
- virtual void next_edit(int cut);
- virtual double get_position();
- virtual void set_position(double position);
+
+ virtual double get_position() = 0;
+ virtual void set_position(double position) = 0;
+ virtual void set_click_to_play(int v) = 0;
+
+ virtual void panel_stop_transport() = 0;
+ virtual void panel_toggle_label() = 0;
+ virtual void panel_next_label(int cut) = 0;
+ virtual void panel_prev_label(int cut) = 0;
+ virtual void panel_prev_edit(int cut) = 0;
+ virtual void panel_next_edit(int cut) = 0;
+ virtual void panel_copy_selection() = 0;
+ virtual void panel_overwrite_selection() = 0;
+ virtual void panel_splice_selection() = 0;
+ virtual void panel_set_inpoint() = 0;
+ virtual void panel_set_outpoint() = 0;
+ virtual void panel_unset_inoutpoint() = 0;
+ virtual void panel_to_clip() = 0;
+ virtual void panel_cut() = 0;
+ virtual void panel_paste() = 0;
+ virtual void panel_fit_selection() = 0;
+ virtual void panel_fit_autos(int all) = 0;
+ virtual void panel_set_editing_mode(int mode) = 0;
+ virtual void panel_set_auto_keyframes(int v) = 0;
+ virtual void panel_set_span_keyframes(int v) = 0;
+ virtual void panel_set_labels_follow_edits(int v) = 0;
+ virtual void panel_set_gang_tracks(int mode) = 0;
MWindow *mwindow;
BC_WindowBase *subwindow;
int use_keyframe;
int use_splice;
int use_overwrite;
- int use_lift;
- int use_extract;
int use_paste;
int use_undo;
int use_fit;
int use_commercial;
int use_goto;
int use_clk2play;
+ int use_scope;
+ int use_gang_tracks;
+ int use_timecode;
EditFit *fit;
EditFitAutos *fit_autos;
// EditDelOutPoint *deloutpoint;
EditSplice *splice;
EditOverwrite *overwrite;
- EditLift *lift;
- EditExtract *extract;
EditToClip *clip;
EditCut *cut;
EditCommercial *commercial;
EditManualGoto *mangoto;
EditClick2Play *click2play;
+ EditPanelScope *scope;
+ EditPanelTimecode *timecode;
+ EditPanelScopeDialog *scope_dialog;
EditCopy *copy;
EditPaste *paste;
EditLabelbutton *labelbutton;
EditNextLabel *nextlabel;
EditPrevEdit *prevedit;
EditNextEdit *nextedit;
+ EditPanelGangTracks *gang_tracks;
EditUndo *undo;
EditRedo *redo;
MeterShow *meters;
ArrowButton *arrow;
IBeamButton *ibeam;
KeyFrameButton *keyframe;
+ SpanKeyFrameButton *span_keyframe;
LockLabelsButton *locklabels;
int is_mwindow() { return window_id == MWINDOW_ID; }