Credit Andrew - fix vorbis audio which was scratchy and ensure aging plugin does...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / editpanel.h
index a8104612ba1b37a8aff4f835390ae42750e10e93..cf430e56f7064c0e60c783729e8f9a2a59748650 100644 (file)
@@ -2,6 +2,7 @@
 /*
  * CINELERRA
  * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
+ * Copyright (C) 2003-2016 Cinelerra CV contributors
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -25,6 +26,7 @@
 #include "bcdialog.h"
 #include "guicast.h"
 #include "editpanel.inc"
+#include "localsession.inc"
 #include "meterpanel.inc"
 #include "mwindow.inc"
 #include "manualgoto.inc"
@@ -382,6 +384,7 @@ public:
 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();
@@ -403,6 +406,71 @@ public:
        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
 {
@@ -427,7 +495,8 @@ public:
                int use_goto,
                int use_clk2play,
                int use_scope,
-               int use_gang_tracks);
+               int use_gang_tracks,
+               int use_timecode);
        ~EditPanel();
 
        void set_meters(MeterPanel *meter_panel);
@@ -492,6 +561,7 @@ public:
        int use_clk2play;
        int use_scope;
        int use_gang_tracks;
+       int use_timecode;
 
        EditFit *fit;
        EditFitAutos *fit_autos;
@@ -507,6 +577,7 @@ public:
        EditManualGoto *mangoto;
        EditClick2Play *click2play;
        EditPanelScope *scope;
+       EditPanelTimecode *timecode;
        EditPanelScopeDialog *scope_dialog;
        EditCopy *copy;
        EditPaste *paste;