MXS_Editor_Interface.h

Go to the documentation of this file.
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,           // Default
00045         ofNoSaveIfDirty=1,  // Suppress check for unsaved changes
00046         ofForceLoad=2,      // Reload file even if already in a buffer
00047         ofPreserveUndo=4,   // Do not delete undo history
00048         ofQuiet=8           // Avoid "Could not open file" message
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;