// -*- C++ -*- /* * Gnome Crystal * document.h * * Copyright (C) 2000-2007 Jean Bréfort * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA */ #ifndef GCRYSTAL_DOCUMENT_H #define GCRYSTAL_DOCUMENT_H #include #include #include #include #include "atom.h" #include "line.h" #include "cleavage.h" using namespace gcu; class gcView; class gcApplication; class gcDocument: public CrystalDoc { //Constructor and destructor public: gcDocument (gcApplication *App); ~gcDocument(); //Interface public: void Define(unsigned nPage = 0); CrystalAtomList* GetAtomList() {return &AtomDef;} CrystalLineList* GetLineList() {return &LineDef;} CrystalCleavageList* GetCleavageList() {return &Cleavages;} void Update(); void UpdateAllViews(); void SetWidget(GtkWidget* widget){m_widget = widget;} void GetSize(gdouble* xmin, gdouble* xmax, gdouble* ymin, gdouble* ymax, gdouble* zmin, gdouble* zmax); void SetSize(gdouble xmin, gdouble xmax, gdouble ymin, gdouble ymax, gdouble zmin, gdouble zmax); void GetCell(gcLattices *lattice, gdouble *a, gdouble *b, gdouble *c, gdouble *alpha, gdouble *beta, gdouble *gamma); void SetCell(gcLattices lattice, gdouble a, gdouble b, gdouble c, gdouble alpha, gdouble beta, gdouble gamma); const gchar* GetFileName() {return m_filename;} void SetFileName(const string &filename); gchar* GetTitle() {return m_title;} void SetTitle(const gchar* title); void Save (); bool Load (const string &filename); void ParseXMLTree(xmlNode* xml); void OnNewDocument(); void OnExportVRML (const string &FileName); gcView* GetNewView(); void AddView(gcView* pView); bool RemoveView(gcView* pView); void RemoveAllViews (); bool VerifySaved(); bool GetFixedSize() {return m_bFixedSize;} void SetFixedSize(bool FixedSize) {m_bFixedSize = FixedSize;} virtual CrystalView* CreateNewView(); virtual CrystalAtom* CreateNewAtom(); virtual CrystalLine* CreateNewLine(); virtual CrystalCleavage* CreateNewCleavage(); virtual const char* GetProgramId(); void SetActiveView (gcView *pView) {m_pActiveView = pView;} void SaveAsImage (const string &filename, char const *type, map& options); gcView *GetActiveView () {return m_pActiveView;} virtual bool LoadNewView (xmlNodePtr node); list *GetViews () {return &m_Views;} void RenameViews (); private: void Error(int num); //Implementation private: gchar *m_filename, *m_title; bool m_bClosing; GtkWidget* m_widget; std::list m_Dialogs; gcView *m_pActiveView; GCU_RO_PROP (bool, ReadOnly); }; #endif //GCRYSTAL_DOCUMENT_H