// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/> // Copyright (C) 2010 Winch Gate Property Limited // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 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 Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. // --------------------------------------------------------------------------- // MainFrm.h : interface of the CMainFrame class // --------------------------------------------------------------------------- #if !defined(AFX_MAINFRM_H__D9ABC57D_9514_49B1_A65F_1CC64C6D6BB6__INCLUDED_) #define AFX_MAINFRM_H__D9ABC57D_9514_49B1_A65F_1CC64C6D6BB6__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // --------------------------------------------------------------------------- #include "nel/misc/stream.h" #include "nel/misc/file.h" #include "MasterTree.h" #include <string> #include "../export/export.h" #include "../../3d/ligo/worldeditor/worldeditor_interface.h" // MasterCB #include "easy_cfg.h" // --------------------------------------------------------------------------- // Interface to the tools // --------------------------------------------------------------------------- class IWorldEditor; class IGeorges; class ILogicEditor; class CMainFrame; class CExportCBDlg; // --------------------------------------------------------------------------- // Do not parse following directories #define MAX_SYS_DIR 7 extern char *gSysDir[MAX_SYS_DIR]; // Do not display files with those extensions #define MAX_INVALID_EXT 1 extern char *gInvalidExt[MAX_INVALID_EXT]; // --------------------------------------------------------------------------- struct SEnvironnement : public IEasyCFG { // Master params sint32 MasterX, MasterY; sint32 MasterTreeX, MasterTreeY; sint32 MasterTreeCX, MasterTreeCY; bool MasterTreeLocked; std::string ContinentsDir; std::string DefaultDFNDir; std::string DefaultGameElemDir; // WorldEditor params bool WorldEdOpened; sint32 WorldEdX, WorldEdY, WorldEdCX, WorldEdCY; // Georges params bool GeorgesOpened; sint32 GeorgesX, GeorgesY, GeorgesCX, GeorgesCY; // LogicEditor params bool LogicEditorOpened; sint32 LogicEditorX, LogicEditorY, LogicEditorCX, LogicEditorCY; // Export params SExportOptions ExportOptions; SEnvironnement (); bool load (const std::string &filename); bool save (const std::string &filename); }; // --------------------------------------------------------------------------- class CMasterCB : public IMasterCB { CMainFrame *_MainFrame; std::vector<std::string> _PrimZoneList; std::string _Text; std::vector<std::string> _GroupPrimList; public: CMasterCB (); void setMainFrame (CMainFrame*pMF); // Link to master // Accessors std::vector<std::string> &getAllPrimZoneNames (); // Overridables // setAllPrimZoneNames : called when the list of patatoid changes virtual void setAllPrimZoneNames (std::vector<std::string> &primZoneList); // transfert : called when WE want to transfert text to georges virtual void multiTransfert (const std::vector<std::string> &vText, bool append); virtual void transfert (const std::string &sText); // Selection line up and down virtual void lineUp (); virtual void lineDown (); }; // --------------------------------------------------------------------------- class CMainFrame : public CFrameWnd { SEnvironnement _Environnement; IWorldEditor *_WorldEditor; HMODULE _WorldEditorModule; IGeorges *_Georges; HMODULE _GeorgesModule; ILogicEditor *_LogicEditor; HMODULE _LogicEditorModule; CMasterTreeDlg *_Tree; std::string _ActivePath; CMasterCB _MasterCB; std::string _MasterExeDir; CExport *_Export; CExportCBDlg *_ExportCBDlg; public: CMainFrame (); virtual ~CMainFrame (); void getAllInterfaces (); // Load all dlls and get tools interfaces void releaseAllInterfaces (); void openFile (const std::string &fname); void openDir (const std::string &fname); void openDirParse (const std::string &sBaseName, const std::string &sRelativeName); void openContinentCfgFile (const std::string &filename); // *********** // WORLDEDITOR // *********** void openWorldEditor (); void openWorldEditorFile (const std::string &fileName); void closeWorldEditor (); // ******* // GEORGES // ******* void openGeorges (); void openGeorgesFile (const std::string &fileName); void closeGeorges (); void georgesSetPathesFromActive (); // Set Path from _ActiveContinent/_ActiveWorld/etc... void georgesPutGroupText (const std::vector<std::string> &vText, bool append); void georgesPutText (const std::string &sText); void georgesLineUp (); void georgesLineDown (); void georgesCreatePlantName (); // *********** // LOGICEDITOR // *********** void openLogicEditor (); void openLogicEditorFile (const std::string &fileName); void closeLogicEditor (); // ***** // TOOLS // ***** // Tree and directories manipulation bool createDirIfNotExist (const std::string& dirName, const std::string& errorMsg); void deltree (const std::string &dirName); void copytree (const std::string &srcDir, const std::string &dstDir); void displayLastErrorDialog (); void updateTree (); // Continent methods // ----------------- void continentNew (); void continentOpen (const std::string &contName); void continentProperties (const std::string &contName); void continentNewRegion (const std::string &contName); void continentDelete (const std::string &contName); // Active path void setActivePath (const std::string &contName); std::string getActivePath () { return _ActivePath; } // Region methods // -------------- void regionOpen (const std::string &path); void regionRename (const std::string &path); void regionNewPrim (const std::string &path); void regionNewGeorges (const std::string &path); void regionNewSubRegion (const std::string &path); void regionDelete (const std::string &path); // File methods // ------------ void fileOpen (const std::string &sFileFullName); void fileRename (const std::string &sFileFullName); void fileDelete (const std::string &sFileFullName); void copy (const std::string &sPathSrc, const std::string &sPathDst); #ifdef _DEBUG virtual void AssertValid () const; virtual void Dump (CDumpContext& dc) const; #endif virtual BOOL PreCreateWindow (CREATESTRUCT& cs); virtual BOOL PreTranslateMessage (MSG*pMsg); protected: afx_msg void OnSize (UINT nType, int cx, int cy); afx_msg void OnMove (int x, int y); afx_msg int OnCreate (LPCREATESTRUCT lpCreateStruct); afx_msg BOOL OnEraseBkgnd (CDC* pDC); protected: // Menu methods afx_msg void onContinentSave (); afx_msg void onContinentExport (); afx_msg void OnContinentDelete (); afx_msg void onOptionsTreeLock (); afx_msg void onOptionsSetContinentsDir (); afx_msg void onOptionsSetDefaultDFNDir (); afx_msg void onOptionsSetDefaultGameElemDir (); afx_msg void onWindowsWorldEditor (); afx_msg void onWindowsGeorges (); afx_msg void onWindowsLogicEditor (); afx_msg void onWindowsReset (); afx_msg void OnClose (); // NOTE - the ClassWizard will add and remove member functions here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_MAINFRM_H__D9ABC57D_9514_49B1_A65F_1CC64C6D6BB6__INCLUDED_)