00001 #pragma once
00002
00003 #include "..\..\WindowsDefines.h"
00004 #include "..\ScripterExport.h"
00005
00006 class Editor_Interface;
00007 class MXSEditor_Interface;
00008 class Editor;
00009 class MXSEditor;
00010 class MXS_Editor_Interface;
00011
00012 struct EditFileResult
00013 {
00014 bool fileNotFound;
00015 bool fileAlreadyOpen;
00016 bool fileNewOpen;
00017 HWND edit_hwnd;
00018
00019 EditFileResult() : fileNotFound(false), fileAlreadyOpen(false), fileNewOpen(false), edit_hwnd(NULL) {}
00020 };
00021
00022 class EditorStyleDef {
00023 public:
00024 char font[200];
00025 int size;
00026 long fore;
00027 long back;
00028 bool bold;
00029 bool italics;
00030 bool eolfilled;
00031 bool underlined;
00032 enum flags { sdNone = 0, sdFont = 0x1, sdSize = 0x2,
00033 sdFore = 0x4, sdBack = 0x8, sdBold = 0x10, sdItalics = 0x20,
00034 sdEOLFilled = 0x40, sdUnderlined = 0x80} specified;
00035 EditorStyleDef() { memset(this, 0, sizeof(EditorStyleDef)); }
00036 };
00037
00038
00039 class Editor_Interface {
00040 public:
00041 Editor *Editor_Instance;
00042
00043 enum OpenFlags {
00044 ofNone=0,
00045 ofNoSaveIfDirty=1,
00046 ofForceLoad=2,
00047 ofPreserveUndo=4,
00048 ofQuiet=8
00049 };
00050
00051 Editor_Interface(Editor *instance) : Editor_Instance(instance) {}
00052 virtual ~Editor_Interface() {}
00053 virtual void DeleteThis();
00054
00055 virtual void SetTabWidth(int tabWidth);
00056
00057 virtual HWND GetMainHWND();
00058 virtual HWND GetEditHWND();
00059 virtual bool Run(HWND parentHWND);
00060 virtual bool EditFile(const char* filename = NULL, bool useOpenfilenameDialogIfFilenameNull = false, const char* initialPath = NULL,
00061 int openToPos = -1, Editor_Interface::OpenFlags of = Editor_Interface::ofNone, bool unhide = true,
00062 bool setFocus = true);
00063 virtual int NumberDocuments();
00064 virtual const char* GetDocumentFilename(int i);
00065 virtual void SetDocumentFilename(int i, const char* file_name);
00066 virtual const char* GetDocumentFilename();
00067 virtual void SetDocumentFilename(const char* file_name);
00068
00069 virtual bool IsEditorMessage(MSG &msg);
00070 virtual bool CloseEditor();
00071 virtual void DeleteEditor();
00072 virtual void Show(bool show, bool setFocus = false);
00073 virtual void SetTitle(const char* title);
00074 virtual void SetProperty(const char* prop_name, const char* prop_value);
00075 virtual const char* GetProperty(const char* prop_name);
00076 virtual int GetIntProperty(const char* prop_name, int defaultValue = 0);
00077 virtual void SetCodePageAndCharacterSet(int code_page, int character_set);
00078 virtual void GetCodePageAndCharacterSet(int &code_page, int &character_set);
00079 virtual EditorStyleDef GetEditorStyleDef(const char* lang, int style);
00080 };
00081
00082 class MXSEditor_Interface {
00083 public:
00084 MXSEditor_Interface() {}
00085 virtual ~MXSEditor_Interface() {}
00086 virtual void DeleteThis();
00087
00088 virtual void DisableAccelerators();
00089 virtual void EnableAccelerators();
00090 virtual void EditorShowStateChanged(bool open);
00091 virtual void ShowListener();
00092 virtual void PositionListenerAtEOF();
00093 virtual void ExecuteString(const wchar_t *executeString, const char *file_name, unsigned int file_offset, unsigned int file_linenum);
00094 virtual void DoLoadProperties();
00095 virtual const char* GetLocalUserDataDirectory();
00096 virtual int DisplayHelp(const char* word);
00097
00098 virtual void NewRollout(HWND mainHWND, HWND editHWND);
00099 virtual void EditRollout(HWND mainHWND, HWND editHWND);
00100 };
00101
00102 class MXS_Editor_Interface {
00103 public:
00104 Editor_Interface *Editor_Interface_Instance;
00105 MXSEditor_Interface *MXSEditor_Interface_Instance;
00106
00107 MXS_Editor_Interface() : Editor_Interface_Instance(NULL), MXSEditor_Interface_Instance(NULL) {}
00108 ~MXS_Editor_Interface()
00109 {
00110 if (Editor_Interface_Instance)
00111 Editor_Interface_Instance->DeleteThis();
00112 if (MXSEditor_Interface_Instance)
00113 MXSEditor_Interface_Instance->DeleteThis();
00114 }
00115
00116 HWND Editor_GetMainHWND() { return Editor_Interface_Instance->GetMainHWND(); }
00117 HWND Editor_GetEditHWND() { return Editor_Interface_Instance->GetEditHWND(); }
00118 bool Editor_Run(HWND parentHWND) { return Editor_Interface_Instance->Run(parentHWND); }
00119 bool Editor_EditFile(const char* filename = NULL, bool useOpenfilenameDialogIfFilenameNull = false, const char* initialPath = NULL,
00120 int openToPos = -1, Editor_Interface::OpenFlags of = Editor_Interface::ofNone, bool unhide = true,
00121 bool setFocus = true)
00122 { return Editor_Interface_Instance->EditFile(filename, useOpenfilenameDialogIfFilenameNull, initialPath, openToPos, of, unhide, setFocus); }
00123
00124 int Editor_NumberDocuments() { return Editor_Interface_Instance->NumberDocuments(); }
00125 const char* Editor_GetDocumentFilename(int i) { return Editor_Interface_Instance->GetDocumentFilename(i); }
00126 void Editor_SetDocumentFilename(int i, const char* file_name) { Editor_Interface_Instance->SetDocumentFilename(i, file_name); }
00127 const char* Editor_GetDocumentFilename() { return Editor_Interface_Instance->GetDocumentFilename(); }
00128 void Editor_SetDocumentFilename(const char* file_name) { Editor_Interface_Instance->SetDocumentFilename(file_name); }
00129 bool Editor_IsEditorMessage(MSG &msg) { return Editor_Interface_Instance->IsEditorMessage(msg); }
00130 void Editor_SetTabWidth(int tabWidth) { Editor_Interface_Instance->SetTabWidth(tabWidth); }
00131 bool Editor_CloseEditor() { return Editor_Interface_Instance->CloseEditor(); }
00132 void Editor_DeleteEditor() { Editor_Interface_Instance->DeleteEditor(); }
00133
00134 void Editor_Show(bool show, bool setFocus=false)
00135 { Editor_Interface_Instance->Show(show, setFocus); }
00136 void Editor_SetTitle(const char* title)
00137 { Editor_Interface_Instance->SetTitle(title); }
00138 void Editor_SetProperty(const char* prop_name, const char* prop_value)
00139 { Editor_Interface_Instance->SetProperty(prop_name, prop_value); }
00140 const char* Editor_GetProperty(const char* prop_name)
00141 { return Editor_Interface_Instance->GetProperty(prop_name); }
00142 int Editor_GetIntProperty(const char* prop_name, int defaultValue = 0)
00143 { return Editor_Interface_Instance->GetIntProperty(prop_name, defaultValue); }
00144 void Editor_SetCodePageAndCharacterSet(int code_page, int character_set)
00145 { Editor_Interface_Instance->SetCodePageAndCharacterSet(code_page, character_set); }
00146 void Editor_GetCodePageAndCharacterSet(int &code_page, int &character_set)
00147 { Editor_Interface_Instance->GetCodePageAndCharacterSet(code_page, character_set); }
00148 EditorStyleDef Editor_GetEditorStyleDef(const char* lang, int style)
00149 { return Editor_Interface_Instance->GetEditorStyleDef(lang, style); }
00150
00151 void MXS_DisableAccelerators()
00152 { MXSEditor_Interface_Instance->DisableAccelerators(); }
00153 void MXS_EnableAccelerators()
00154 { MXSEditor_Interface_Instance->EnableAccelerators(); }
00155 void MXS_EditorShowStateChanged(bool open)
00156 { MXSEditor_Interface_Instance->EditorShowStateChanged(open); }
00157 void MXS_ShowListener()
00158 { MXSEditor_Interface_Instance->ShowListener(); }
00159 void MXS_PositionListenerAtEOF()
00160 { MXSEditor_Interface_Instance->PositionListenerAtEOF(); }
00161 void MXS_ExecuteString(const wchar_t *executeString, const char *file_name, unsigned int file_offset, unsigned int file_linenum)
00162 { MXSEditor_Interface_Instance->ExecuteString(executeString, file_name, file_offset, file_linenum); }
00163 void MXS_DoLoadProperties()
00164 { MXSEditor_Interface_Instance->DoLoadProperties(); }
00165 const char* MXS_GetLocalUserDataDirectory()
00166 { return MXSEditor_Interface_Instance->GetLocalUserDataDirectory(); }
00167 void MXS_DisplayHelp(const char* word)
00168 { MXSEditor_Interface_Instance->DisplayHelp(word); }
00169
00170 void MXS_NewRollout(HWND mainHWND, HWND editHWND)
00171 { MXSEditor_Interface_Instance->NewRollout(mainHWND, editHWND); }
00172 void MXS_EditRollout(HWND mainHWND, HWND editHWND)
00173 { MXSEditor_Interface_Instance->EditRollout(mainHWND, editHWND); }
00174 };
00175
00176 extern ScripterExport MXS_Editor_Interface *the_MXS_Editor_Interface;