Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

Project.h

Go to the documentation of this file.
00001 #ifndef ProjectH
00002 #define ProjectH
00003 
00004 /*******************************************************************************
00005 Copyright 2000,2001,2002 Petr Kulhanek
00006 
00007     This file is part of Core plugin.
00008 
00009     Core plugin is free software; you can redistribute it and/or modify
00010     it under the terms of the GNU General Public License as published by
00011     the Free Software Foundation; either version 2 of the License, or
00012     (at your option) any later version.
00013 
00014     Core plugin is distributed in the hope that it will be useful,
00015     but WITHOUT ANY WARRANTY; without even the implied warranty of
00016     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017     GNU General Public License for more details.
00018 
00019     You should have received a copy of the GNU General Public License
00020     along with Core plugin; if not, write to the Free Software
00021     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00022 *******************************************************************************/
00023 /*******************************************************************************
00024 ** PROJEKT:             Projekt NEMESIS
00025 ** SOUBOR:              Project
00026 ** úČEL:                bázová třída projektu
00027 ** VERZE:               2.0
00028 ** JAZYK:               CBuilder C++
00029 ** CÍLOVÝ POČÍTAČ:      IBM PC
00030 ** PROGRAMÁTOR:         Petr Kulhánek
00031 ** HISTORIE úPRAV:
00032 VERZE   DATUM       POZNÁMKA
00033 2.0     2000-05-16  třída byla vice pojata abstraktněji
00034         2001-04-15  dokončena abstrakce, zavedení obecného projektu
00035 *******************************************************************************/
00036 
00040 /* HLAVIČKOVÉ SOUBORY *********************************************************/
00041 
00042 #include "CoreMainHeader.h"
00043 #include "ExtObject.h"
00044 #include "IndexCounter.h"
00045 #include "CoreHistoryList.h"
00046 #include "Setups.h"
00047 #include "EventSystem.h"
00048 
00049 /* KONEC HLAVIČKOVÝCH SOUBORů *************************************************/
00050 
00051 class CProject;
00052 class CContainerEnumerator;
00053 class TWorkProjectEventer;
00054 
00055 //---------------------------------------------------------------------------
00056 
00058 
00061 class NEMESIS_CORE_PACKAGE CProjectsList : public CTemplList<CProject>, public CExtObject {
00062     public:
00063     __fastcall CProjectsList(void);
00064 
00065     inline CProject* __fastcall GetActiveProject(void);
00066     void __fastcall RepaintProjects(void);
00067     void __fastcall RemoveAllProjects(void);
00068 
00069     private:
00070     CIndexCounter   IndexCounter;
00071     CProject*       ActiveProject;  // aktivní projekt
00072 
00073     friend class CProject;
00074     };
00075 
00076 //---------------------------------------------------------------------------
00077 
00078 DECLARE_EVENT(ProjectsList_AddProject);
00079 DECLARE_EVENT(ProjectsList_RemoveProject);
00080 DECLARE_EVENT(ProjectsList_ActivateProject);
00081 DECLARE_EVENT(ProjectsList_DeactivateProject);
00082 
00083 extern NEMESIS_CORE_PACKAGE CProjectsList Projects;
00084 
00085 //---------------------------------------------------------------------------
00086 
00088 
00091 class NEMESIS_CORE_PACKAGE CProject : public CExtObject{
00092     public:
00093   // konstrukce a destrukce objektu
00094             __fastcall CProject(CPluginObjectInfo* objectinfo);
00095 
00096     void __fastcall CloseProject(void); // use THIS do not use delete operator
00097 
00098             __fastcall ~CProject(void);      // provede destrukci projektu a scény
00099     void __fastcall AddToProjectsList(void);  // zařadí do seznamu projektů
00100 
00101   // popis projektu  - základní infomace o jménu projektu
00102   // jeho poloze na disku a ostatní informační popisky
00103     CSmallString  __fastcall GetFullCaption(void);    // < projekt: jméno >
00104     CSmallString  __fastcall GetFullName(void);       // cesta i jméno
00105     inline const CSmallString& __fastcall GetPath(void);           // cesta k projektu
00106 
00107   // alias
00108     const CSmallString& __fastcall GetAlias(void);
00109     void __fastcall SetAlias(const CSmallString& alias);
00110 
00111         // funkci IsNameTemporary() lze použít k určení zda se projekt již někdy uložil
00112         // nebo zda byl otevřen z disku (v tomto případě vrací false)
00113         // určuje zda je jméno vygenerováno automaticky nobo uživatelem
00114     inline bool              __fastcall IsNameTemporary(void);
00115 
00116     void __fastcall SetReadOnly(bool set);
00117     void __fastcall SetChanged(void);
00118 
00119     inline bool __fastcall IsChanged(void);
00120     inline bool __fastcall IsReadOnly(void);
00121 
00122   // funkce - nabídka otevření a uložení
00123   // obecné operace pro otevření a uložení projektu, pro rozšíření se volají
00124   // virtualní funkce Save a Load z CExtObject
00125     static CProject* __fastcall NewProject(const CUUID& projectuuid);
00126     static CProject* __fastcall NewProject(const CUUID& projectuuid,const CSmallString& fullname);
00127     static CProject* __fastcall OpenProject(const CSmallString& fullname);
00128 
00129     bool __fastcall SaveProject(void);
00130     bool __fastcall SaveProjectAs(const CSmallString& fullname);
00131     bool __fastcall RenameProject(const CSmallString& newname);
00132 
00133     static bool __fastcall RenameProject(const CSmallString& oldfullname,const CSmallString& newname);
00134 
00135     virtual bool __fastcall NewData(void);
00136     virtual bool __fastcall LoadData(void);
00137     virtual bool __fastcall SaveData(void);
00138 
00139  // zjištovací funkce a aktivace a deaktivace projektu -------------------------
00140     bool __fastcall IsActive(void);  // je projekt aktivní
00141     void __fastcall Activate(void);  // nastaví aktivní parametry
00142     void __fastcall Deactivate(void);
00143 
00144     void __fastcall BringToFront(void);     // aktivuje projekt
00145     void __fastcall SetVisible(bool set);   // nastavuje viditelnost projektu
00146 
00147     virtual void      __fastcall RepaintProject(void);   // aktualizuje grafiku
00148 
00149     virtual TWorkProjectEventer*    __fastcall GetWorkProjectEventer(void);
00150     virtual TControl*               __fastcall GetDockControl(void);
00151 
00152     TForm* __fastcall GetScene(void);
00153     bool   __fastcall DockTo(TWorkProjectEventer* p_project,TWinControl* p_site,TControl* p_control);
00154     bool   __fastcall Float(void);
00155     bool   __fastcall IsDocked(void);
00156 
00157     virtual void __fastcall ActivateFormEvents(TForm* p_form);
00158 
00159  // enumerace kontejnerů projektu
00160     virtual CContainerEnumerator* __fastcall GetRootEnumerator(void);
00161 
00162  // nalezení objektu projektu
00163     virtual CExtObject* __fastcall FindObject(int index);
00164 
00165  // sekce veřejných dat --------------------------------------------------------
00166     public:
00167     CIndexCounter   IndexCounter;
00168     CHistoryList    HistoryList;
00169     CSetupsList     Setups;
00170 
00171     virtual void __fastcall HistoryListChange(EChangeMessage message);
00172     virtual void __fastcall PrepareReadOnly(void);
00173 
00174  // sekce soukromých dat -------------------------------------------------------
00175     private:
00176     bool            Changed;         // změnový status projektu
00177     bool            ReadOnly;       // pouze ke čtení
00178     CSmallString    PathOfProject;  // cesta k projektu
00179     CSmallString    Alias;          // alias
00180     EHistoryLockLevel backup;
00181     void __fastcall FceHistoryListChange(EChangeMessage message);
00182     void __fastcall Lock(void);
00183     void __fastcall Unlock(void);
00184     int             l,t,b,r;        // rozmery pro undock
00185     TWinControl*            DockSite;
00186     TControl*               ControlSite;
00187     TWorkProjectEventer*    ProjectSite;
00188     TWorkProjectEventer*    MySite;   // pouze pro destrukci
00189     };
00190 
00191 // -----------------------------------------------------------------------------
00192 
00193 DECLARE_EVENT(Project_Changed);
00194 DECLARE_EVENT(Project_ReadOnly);
00195 DECLARE_EVENT(Project_Activate);
00196 
00197 // -----------------------------------------------------------------------------
00198 
00200 
00203 class NEMESIS_CORE_PACKAGE CProjectInfo{
00204     public:
00205     CSmallString    Name;
00206     CSmallString    Path;
00207     CSmallString    FullName;
00208     CUUID           UUID;
00209     int             ImageIndex;
00210 
00211     CProject* __fastcall GetProject(void);
00212 
00213     public:
00214     bool __fastcall GetInfo(const CSmallString& fullname);
00215 
00216     private:
00217     CProject*       FProject;
00218     int             ProjectID;
00219     int             InstanceID;
00220     };
00221 
00222 // -----------------------------------------------------------------------------
00223 
00224 typedef bool __fastcall (__closure* TProjectStubEvent)(CProject* p_project);
00225 
00226 // -----------------------------------------------------------------------------
00227 
00229 
00232 class NEMESIS_CORE_PACKAGE CProjectStub{
00233     public:
00234          __fastcall CProjectStub(void);
00235     bool __fastcall QueryClose(CProject* p_project);
00236     bool __fastcall Save(CProject* p_project);
00237 
00238     public:
00239     TProjectStubEvent   QueryEvent;
00240     TProjectStubEvent   SaveEvent;
00241     };
00242 
00243 // -----------------------------------------------------------------------------
00244 
00245 extern NEMESIS_CORE_PACKAGE CProjectStub ProjectStub;
00246 
00247 // -----------------------------------------------------------------------------
00248 // #############################################################################
00249 // -----------------------------------------------------------------------------
00250 
00251 inline const CSmallString& __fastcall CProject::GetPath(void)
00252 {
00253  return(PathOfProject);
00254 }
00255 
00256 //---------------------------------------------------------------------------
00257 
00258 inline bool __fastcall CProject::IsNameTemporary(void)
00259 {
00260  return(GetStatus().Temporary);
00261 }
00262 
00263 //---------------------------------------------------------------------------
00264 
00265 inline CProject* __fastcall CProjectsList::GetActiveProject(void)
00266 {
00267  return(ActiveProject);
00268 }
00269 
00270 //---------------------------------------------------------------------------
00271 
00272 inline bool __fastcall CProject::IsChanged(void)
00273 {
00274  return(Changed);
00275 }
00276 
00277 //---------------------------------------------------------------------------
00278 
00279 inline bool __fastcall CProject::IsReadOnly(void)
00280 {
00281  return(ReadOnly);
00282 }
00283 
00284 //---------------------------------------------------------------------------
00285 
00286 #endif

Generated on Sun Feb 9 12:53:51 2003 for NemesisCore by doxygen1.3-rc2