Credit Andrew for noexecstack, and Stefan for shuttle mouse
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / shbtnprefs.h
index 3005d78c5e62144761ae651f0bbae6adf5a04810..6ad7834364f66cdf2ee506ff6f5df4636e9d9551 100644 (file)
@@ -1,6 +1,27 @@
+/*
+ * CINELERRA
+ * Copyright (C) 2016-2020 William Morrow
+ *
+ * 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 the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ */
+
 #ifndef __SHBTNPREFS_H__
 #define __SHBTNPREFS_H__
 
+#include "arraylist.h"
 #include "bcwindowbase.h"
 #include "bcbutton.h"
 #include "bcdialog.h"
@@ -18,8 +39,11 @@ public:
        int warn;
        char name[BCSTRLEN];
        char commands[BCTEXTLEN];
+       ArrayList<char *> argv;
+       void add_arg(const char *v);
 
-       ShBtnRun(const char *name, const char *cmds, int warn=0);
+       ShBtnRun(const char *name, const char *cmds, int warn);
+       ~ShBtnRun();
        void run();
 };
 
@@ -28,10 +52,11 @@ class ShBtnPref
 public:
        char name[BCSTRLEN];
        char commands[BCTEXTLEN];
-       int warn;
+       int warn, run_script;
        void execute();
+       void execute(ArrayList<Indexable*> &args);
 
-       ShBtnPref(const char *nm, const char *cmds, int warn);
+       ShBtnPref(const char *nm, const char *cmds, int warn=0, int run_script=0);
        ~ShBtnPref();
 };
 
@@ -102,12 +127,35 @@ public:
        ~ShBtnTextOK();
 };
 
-class ShBtnErrWarn : public BC_CheckBox
+class ShBtnErrWarnItem : public BC_MenuItem
+{
+public:
+       ShBtnErrWarnItem(ShBtnErrWarn *popup, const char *text, int warn);
+       ShBtnErrWarnItem();
+       int handle_event();
+
+       ShBtnErrWarn *popup;
+       int warn;
+};
+
+class ShBtnErrWarn : public BC_PopupMenu
 {
 public:
        ShBtnErrWarn(ShBtnTextWindow *st_window, int x, int y);
        ~ShBtnErrWarn();
 
+       void create_objects();
+       int handle_event();
+
+       ShBtnTextWindow *st_window;
+};
+
+class ShBtnRunScript : public BC_CheckBox
+{
+public:
+       ShBtnRunScript(ShBtnTextWindow *st_window, int x, int y);
+       ~ShBtnRunScript();
+
        ShBtnTextWindow *st_window;
 };
 
@@ -118,7 +166,9 @@ public:
        BC_ScrollTextBox *cmd_text;
        ShBtnEditWindow *sb_window;
        ShBtnErrWarn *st_err_warn;
+       ShBtnRunScript *st_run_script;
        int warn;
+       int run_script;
 
        void create_objects();