00001 #ifndef IGUANA_STUDIO_IG_DOCUMENT_H 00002 # define IGUANA_STUDIO_IG_DOCUMENT_H 00003 00004 //<<<<<< INCLUDES >>>>>> 00005 00006 # include "Iguana/Studio/interface/config.h" 00007 # include <string> 00008 # include <list> 00009 00010 //<<<<<< PUBLIC DEFINES >>>>>> 00011 //<<<<<< PUBLIC CONSTANTS >>>>>> 00012 //<<<<<< PUBLIC TYPES >>>>>> 00013 00014 class IgStudioDriver; 00015 class IgDocumentData; 00016 class IgState; 00017 class IgQtSite; 00018 class IgPage; 00019 00020 //<<<<<< PUBLIC VARIABLES >>>>>> 00021 //<<<<<< PUBLIC FUNCTIONS >>>>>> 00022 //<<<<<< CLASS DECLARATIONS >>>>>> 00023 00024 class IGUANA_STUDIO_API IgDocument 00025 { 00026 public: 00027 IgDocument (IgStudioDriver *parent); 00028 virtual ~IgDocument (void); 00029 // implicit copy constructor 00030 // implicit assignment operator 00031 // implicit destructor 00032 00033 virtual IgStudioDriver * owner (void) const; 00034 virtual IgState * state (void) const; 00035 virtual IgDocumentData * data (void) const; 00036 00037 // FIXME: Windows, sites? 00038 virtual IgQtSite * window (void) const; 00039 00040 // FIXME: file name? document file handling 00041 virtual void setName (const std::string &name); 00042 virtual void addContentProxy (const std::string &name); 00043 virtual void load (const std::string &name, 00044 bool prefix = false); 00045 void addPage (IgPage *page); 00046 IgPage *currentPage (void); 00047 private: 00048 IgStudioDriver *m_owner; 00049 IgState *m_state; 00050 IgQtSite *m_window; 00051 IgDocumentData *m_data; 00052 00053 typedef std::list <IgPage *> PageList; 00054 PageList m_pageMap; 00055 IgPage *m_currentPage; 00056 00057 // undefined, no semantics 00058 IgDocument (const IgDocument &); 00059 IgDocument &operator= (const IgDocument &); 00060 }; 00061 00062 //<<<<<< INLINE PUBLIC FUNCTIONS >>>>>> 00063 //<<<<<< INLINE MEMBER FUNCTIONS >>>>>> 00064 00065 #endif // IGUANA_STUDIO_IG_DOCUMENT_H