00001 #ifndef VWINDOWGUI_H
00002 #define VWINDOWGUI_H
00003
00004 #include "asset.inc"
00005 #include "canvas.h"
00006 #include "editpanel.h"
00007 #include "guicast.h"
00008 #include "mainclock.inc"
00009 #include "meterpanel.h"
00010 #include "mwindow.inc"
00011 #include "playtransport.h"
00012
00013 #include "timebar.h"
00014
00015 #include "vtimebar.inc"
00016 #include "vwindow.inc"
00017 #include "zoompanel.h"
00018
00019 class VWindowSlider;
00020 class VWindowZoom;
00021 class VWindowSource;
00022 class VWindowTransport;
00023 class VWindowEditing;
00024 class VWindowCanvas;
00025 class VWindowMeters;
00026 class VWindowInPoint;
00027 class VWindowOutPoint;
00028
00029 class VWindowGUI : public BC_Window
00030 {
00031 public:
00032 VWindowGUI(MWindow *mwindow, VWindow *vwindow);
00033 ~VWindowGUI();
00034
00035 int create_objects();
00036 int resize_event(int w, int h);
00037 int translation_event();
00038 int close_event();
00039 int keypress_event();
00040
00041 void update_sources(char *title);
00042
00043 void change_source(EDL *edl, char *title);
00044 void drag_motion();
00045 int drag_stop();
00046
00047
00048
00049 MWindow *mwindow;
00050 VWindow *vwindow;
00051
00052
00053 VWindowCanvas *canvas;
00054 VWindowSlider *slider;
00055 BC_Title *fps_title;
00056 MainClock *clock;
00057 VTimeBar *timebar;
00058 VWindowZoom *zoom_panel;
00059 VWindowTransport *transport;
00060 VWindowEditing *edit_panel;
00061
00062 VWindowMeters *meters;
00063 ArrayList<BC_ListBoxItem*> sources;
00064 ArrayList<LabelGUI*> labels;
00065 VWindowInPoint *in_point;
00066 VWindowOutPoint *out_point;
00067
00068 private:
00069 void get_scrollbars(int &canvas_x, int &canvas_y, int &canvas_w, int &canvas_h);
00070 };
00071
00072
00073 class VWindowMeters : public MeterPanel
00074 {
00075 public:
00076 VWindowMeters(MWindow *mwindow, VWindowGUI *gui, int x, int y, int h);
00077 ~VWindowMeters();
00078
00079 int change_status_event();
00080
00081 MWindow *mwindow;
00082 VWindowGUI *gui;
00083 };
00084
00085
00086 class VWindowCanvas : public Canvas
00087 {
00088 public:
00089 VWindowCanvas(MWindow *mwindow, VWindowGUI *gui);
00090
00091 void zoom_resize_window(float percentage);
00092 void draw_refresh();
00093 void draw_overlays();
00094 void close_source();
00095
00096 MWindow *mwindow;
00097 VWindowGUI *gui;
00098 };
00099
00100 class VWindowEditing : public EditPanel
00101 {
00102 public:
00103 VWindowEditing(MWindow *mwindow, VWindow *vwindow);
00104 ~VWindowEditing();
00105
00106 void copy_selection();
00107 void splice_selection();
00108 void overwrite_selection();
00109 void set_inpoint();
00110 void set_outpoint();
00111 void clear_inpoint();
00112 void clear_outpoint();
00113 void to_clip();
00114 void toggle_label();
00115 void prev_label();
00116 void next_label();
00117
00118 MWindow *mwindow;
00119 VWindow *vwindow;
00120 };
00121
00122 class VWindowZoom : public ZoomPanel
00123 {
00124 public:
00125 VWindowZoom(MWindow *mwindow, VWindowGUI *gui, int x, int y);
00126 ~VWindowZoom();
00127 int handle_event();
00128 MWindow *mwindow;
00129 VWindowGUI *gui;
00130 };
00131
00132
00133 class VWindowSlider : public BC_PercentageSlider
00134 {
00135 public:
00136 VWindowSlider(MWindow *mwindow,
00137 VWindow *vwindow,
00138 VWindowGUI *gui,
00139 int x,
00140 int y,
00141 int pixels);
00142 ~VWindowSlider();
00143
00144 int handle_event();
00145 void set_position();
00146
00147 VWindowGUI *gui;
00148 MWindow *mwindow;
00149 VWindow *vwindow;
00150 };
00151
00152 class VWindowSource : public BC_PopupTextBox
00153 {
00154 public:
00155 VWindowSource(MWindow *mwindow, VWindowGUI *vwindow, int x, int y);
00156 ~VWindowSource();
00157 int handle_event();
00158 VWindowGUI *vwindow;
00159 MWindow *mwindow;
00160 };
00161
00162 class VWindowTransport : public PlayTransport
00163 {
00164 public:
00165 VWindowTransport(MWindow *mwindow,
00166 VWindowGUI *gui,
00167 int x,
00168 int y);
00169 EDL* get_edl();
00170 void goto_start();
00171 void goto_end();
00172
00173 VWindowGUI *gui;
00174 };
00175
00176 class VWindowInPoint : public InPointGUI
00177 {
00178 public:
00179 VWindowInPoint(MWindow *mwindow,
00180 TimeBar *timebar,
00181 VWindowGUI *gui,
00182 long pixel,
00183 double position);
00184 int handle_event();
00185 VWindowGUI *gui;
00186 };
00187
00188
00189 class VWindowOutPoint : public OutPointGUI
00190 {
00191 public:
00192 VWindowOutPoint(MWindow *mwindow,
00193 TimeBar *timebar,
00194 VWindowGUI *gui,
00195 long pixel,
00196 double position);
00197 int handle_event();
00198 VWindowGUI *gui;
00199 };
00200
00201 #endif