mask tweaks, focus follows centroid, gradient/colorpicker rework, no hard edges in...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / mainmenu.h
index b87e8088833b2b1e1f16586366d48d08ed3b7b26..a883383688fce4ea5fc769f742d9749b57d6daf8 100644 (file)
 #ifndef MAINMENU_H
 #define MAINMENU_H
 
-class AEffectMenu;
-class LabelsFollowEdits;
-class PluginsFollowEdits;
-class KeyframesFollowEdits;
-class CursorOnFrames;
-class TypelessKeyframes;
-class SetBRenderActive;
-class LoopPlayback;
-
-class Redo;
-class ShowVWindow;
-class ShowAWindow;
-class ShowGWindow;
-class ShowCWindow;
-class ShowLWindow;
-class Undo;
-class KeyframeCurveType;
-class KeyframeCurveTypeMenu;
-class KeyframeCurveTypeItem;
-class SplitX;
-class SplitY;
-class MixerViewer;
-class LoadLayoutItem;
-class LoadLayout;
-
-
 #include "arraylist.h"
 #include "guicast.h"
 #include "bchash.inc"
 #include "loadfile.inc"
+#include "mainmenu.inc"
 #include "mwindow.inc"
 #include "mwindowgui.inc"
 #include "maxchannels.h"
@@ -115,6 +90,8 @@ public:
        MenuAEffectItem *aeffect[TOTAL_EFFECTS];
        MenuVEffectItem *veffect[TOTAL_EFFECTS];
        Quit *quit_program;              // affected by save
+       MainDumpsMenu *dump_menu;
+       EditClearMenu *clear_menu;
        Undo *undo;
        Redo *redo;
        int total_aeffects;
@@ -152,7 +129,7 @@ public:
        ShowLWindow *show_lwindow;
        SplitX *split_x;
        SplitY *split_y;
-       MixerViewer *mixer_viewer;
+       MixerItems *mixer_items;
        LoadLayout *load_layout;
        LoadLayout *save_layout;
 };
@@ -168,7 +145,25 @@ public:
        MWindow *mwindow;
 };
 
+class MainDumpsSubMenu : public BC_SubMenu
+{
+public:
+       MainDumpsSubMenu(BC_MenuItem *menu_item);
+       ~MainDumpsSubMenu();
+
+       BC_MenuItem *menu_item;
+};
+
+class MainDumpsMenu : public BC_MenuItem
+{
+public:
+       MainDumpsMenu(MWindow *mwindow);
+       ~MainDumpsMenu();
+       void create_objects();
 
+       MWindow *mwindow;
+       MainDumpsSubMenu *dumps_menu;
+};
 
 class DumpCICache : public BC_MenuItem
 {
@@ -202,6 +197,14 @@ public:
        MWindow *mwindow;
 };
 
+class DumpUndo : public BC_MenuItem
+{
+public:
+       DumpUndo(MWindow *mwindow);
+       int handle_event();
+       MWindow *mwindow;
+};
+
 class Redo : public BC_MenuItem
 {
 public:
@@ -235,6 +238,26 @@ public:
        MWindow *mwindow;
 };
 
+class EditClearSubMenu : public BC_SubMenu
+{
+public:
+       EditClearSubMenu(BC_MenuItem *menu_item);
+       ~EditClearSubMenu();
+
+       BC_MenuItem *menu_item;
+};
+
+class EditClearMenu : public BC_MenuItem
+{
+public:
+       EditClearMenu(MWindow *mwindow);
+       ~EditClearMenu();
+       void create_objects();
+
+       MWindow *mwindow;
+       EditClearSubMenu *clear_sub_menu;
+};
+
 class Clear : public BC_MenuItem
 {
 public:
@@ -375,6 +398,14 @@ public:
        MWindow *mwindow;
 };
 
+class ClearHardEdges : public BC_MenuItem
+{
+public:
+       ClearHardEdges(MWindow *mwindow);
+       int handle_event();
+       MWindow *mwindow;
+};
+
 class ClearLabels : public BC_MenuItem
 {
 public:
@@ -383,6 +414,14 @@ public:
        MWindow *mwindow;
 };
 
+class ClearSelect : public BC_MenuItem
+{
+public:
+       ClearSelect(MWindow *mwindow);
+       int handle_event();
+       MWindow *mwindow;
+};
+
 class CutCommercials : public BC_MenuItem
 {
 public:
@@ -415,6 +454,22 @@ public:
        MWindow *mwindow;
 };
 
+class MixerItems : public BC_MenuItem
+{
+public:
+       MixerItems(MWindow *mwindow);
+       void create_objects();
+       MWindow *mwindow;
+};
+
+class MixerViewer : public BC_MenuItem
+{
+public:
+       MixerViewer(MWindow *mwindow);
+       int handle_event();
+       MWindow *mwindow;
+};
+
 class TileMixers : public BC_MenuItem
 {
 public:
@@ -423,6 +478,14 @@ public:
        MWindow *mwindow;
 };
 
+class AlignMixers : public BC_MenuItem
+{
+public:
+       AlignMixers(MWindow *mwindow);
+       int handle_event();
+       MWindow *mwindow;
+};
+
 // ======================================== audio
 
 class AddAudioTrack : public BC_MenuItem
@@ -556,10 +619,18 @@ public:
        MWindow *mwindow;
 };
 
-class DeleteTrack : public BC_MenuItem
+class DeleteFirstTrack : public BC_MenuItem
+{
+public:
+       DeleteFirstTrack(MWindow *mwindow);
+       int handle_event();
+       MWindow *mwindow;
+};
+
+class DeleteLastTrack : public BC_MenuItem
 {
 public:
-       DeleteTrack(MWindow *mwindow);
+       DeleteLastTrack(MWindow *mwindow);
        int handle_event();
        MWindow *mwindow;
 };
@@ -704,14 +775,6 @@ public:
        MWindow *mwindow;
 };
 
-class MixerViewer : public BC_MenuItem
-{
-public:
-       MixerViewer(MWindow *mwindow);
-       int handle_event();
-       MWindow *mwindow;
-};
-
 
 class LoadLayoutItem : public BC_MenuItem
 {
@@ -719,7 +782,9 @@ public:
        LoadLayoutItem(LoadLayout *load_layout, const char *text, int no, int hotkey);
        int handle_event();
 
-       int no;
+       int idx;
+       char layout_text[BCSTRLEN];
+       char layout_file[BCSTRLEN];
        LoadLayout *load_layout;
 };
 
@@ -727,10 +792,53 @@ class LoadLayout : public BC_MenuItem
 {
 public:
        LoadLayout(MWindow *mwindow, const char *text, int action);
+       ~LoadLayout();
        void create_objects();
+       void update();
+       int activate_submenu();
 
        MWindow *mwindow; 
+       LoadLayoutDialog *layout_dialog;
        int action;
 };
 
+class LoadLayoutDialog : public BC_DialogThread
+{
+public:
+       LoadLayoutDialog(LoadLayout *load_layout);
+       ~LoadLayoutDialog();
+
+       void start_confirm_dialog(int wx, int wy, int idx);
+       void handle_done_event(int result);
+       void handle_close_event(int result);
+       BC_Window* new_gui();
+
+       LoadLayout *load_layout;
+       LoadLayoutConfirm *lgui;
+       int wx, wy, idx;
+};
+
+class LoadLayoutNameText : public BC_TextBox
+{
+public:
+       LoadLayoutNameText(LoadLayoutConfirm *confirm,
+               int x, int y, int w, const char *text);
+       ~LoadLayoutNameText();
+
+       int handle_event();
+
+       LoadLayoutConfirm *confirm;
+};
+
+class LoadLayoutConfirm : public BC_Window
+{
+public:
+       LoadLayoutConfirm(LoadLayoutDialog *load_dialog, int x, int y);
+       ~LoadLayoutConfirm();
+       void create_objects();
+
+       LoadLayoutDialog *layout_dialog;
+       LoadLayoutNameText *name_text;
+};
+
 #endif