cave-story-solaris/external/fltk/fluid/ExternalCodeEditor_WIN32.h
Clownacy ac465d29b4 Mean CMake dependency overhaul
I'm taking a page from Dolphin's book, and including copies of each
dependency's source code. This combines the ease of use of including
pre-built libraries instead of needing to navigate a package manager
 - as is (or was) the case for MSVC - with the portability of using
packages. Granted, this method's more of a jack of all trades,
master of none, since it's *less* user-friendly than prebuilt
packages (compilation times), and you don't get the per-distro
compatibility fixes you'd get from a package manager.

You can still use system libs if you want. In fact, it's still the
default behaviour: compiling the libs manually is just a fallback.
I'll add an option to force-enable this soon, however, since it's a
nicer way to produce static MSYS2 builds than the hackish nightmare
that I was using before. Not to mention, having my own copy of the
sources means I can provide my own fixes and tweaks your package
manager may not. For example, I can combine MSYS2's FreeType
subpixel rendering with vcpkg's fix for SDL2 exporting its symbols
in static builds.
2019-04-26 01:52:02 +01:00

64 lines
2 KiB
C++

//
// "$Id$".
//
// External code editor management class for Windows
//
// 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
/* We require at least Windows 2000 (WINVER == 0x0500) for GetFileSizeEx(). */
/* This must be defined before #include <windows.h> - MinGW doesn't do that. */
#if !defined(WINVER) || (WINVER < 0x0500)
# ifdef WINVER
# undef WINVER
# endif
# define WINVER 0x0500
#endif
#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0500)
# ifdef _WIN32_WINNT
# undef _WIN32_WINNT
# endif
# define _WIN32_WINNT 0x0500
#endif
#include <windows.h> /* CreateFile().. */
#include <string.h> /* sprintf().. */
class ExternalCodeEditor {
PROCESS_INFORMATION pinfo_; // CreateProcess() handle to running process
FILETIME file_mtime_; // last modify time of the file (used to determine if file changed)
LARGE_INTEGER file_size_; // last file size (used to determine if changed)
const char * filename_; // tmpfilename editor uses
protected:
void kill_editor();
void reap_cleanup();
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();
DWORD reap_editor();
void close_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$".
//