summaryrefslogtreecommitdiff
path: root/fluid/ExternalCodeEditor_UNIX.h
diff options
context:
space:
mode:
authorGreg Ercolano <erco@seriss.com>2016-07-18 21:12:25 +0000
committerGreg Ercolano <erco@seriss.com>2016-07-18 21:12:25 +0000
commit8850c5c822ce0878b4d808c46b25463136a69231 (patch)
tree07a74f064beca50b2e7ac8f48a22e244eb4a0437 /fluid/ExternalCodeEditor_UNIX.h
parentbcb75b518f47583a1265edfcd1984f6a675cbb60 (diff)
Adds external editor capability to fluid for all platforms.
Solves STR#3213. [CORRECTED] git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11818 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'fluid/ExternalCodeEditor_UNIX.h')
-rw-r--r--fluid/ExternalCodeEditor_UNIX.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/fluid/ExternalCodeEditor_UNIX.h b/fluid/ExternalCodeEditor_UNIX.h
new file mode 100644
index 000000000..07d8e3762
--- /dev/null
+++ b/fluid/ExternalCodeEditor_UNIX.h
@@ -0,0 +1,51 @@
+//
+// "$Id: ExternalCodeEditor_UNIX.h 10800 2016-07-10 00:00:00Z greg.ercolano $".
+//
+// External code editor management class for Unix
+//
+// Handles starting and keeping track of an external text editor,
+// including process start, temp file creation/removal, bookkeeping, killing..
+//
+#ifndef _EXTCODEEDITOR_H
+#define _EXTCODEEDITOR_H
+
+#include <errno.h> /* errno */
+#include <string.h> /* strerror() */
+
+#include <sys/types.h> /* stat().. */
+#include <sys/stat.h>
+#include <unistd.h>
+
+class ExternalCodeEditor {
+ int pid_;
+ time_t file_mtime_; // last modify time of the file (used to determine if file changed)
+ size_t file_size_; // last file size (used to determine if changed)
+ const char *filename_;
+protected:
+ void kill_editor();
+ const char *create_tmpdir();
+ const char *tmp_filename();
+ int start_editor(const char *cmd, const char *filename);
+ void set_filename(const char *val);
+public:
+ ExternalCodeEditor();
+ ~ExternalCodeEditor();
+ int is_editing();
+ pid_t reap_editor();
+ const char *filename() { return filename_; }
+ int open_editor(const char *editor_cmd, const char *code);
+ int handle_changes(const char **code, int force=0);
+ int remove_tmpfile();
+ // Public static methods
+ static void start_update_timer();
+ static void stop_update_timer();
+ static const char* tmpdir_name();
+ static void tmpdir_clear();
+ static int editors_open();
+ static void set_update_timer_callback(Fl_Timeout_Handler);
+};
+
+#endif /*_EXTCODEEDITOR_H */
+//
+// End of "$Id: ExternalCodeEditor_UNIX.h 10800 2016-07-10 00:00:00Z greg.ercolano $".
+//