1 // -*- C++ -*- 2 3 /* 4 * Gnome Crystal 5 * atomsdlg.h 6 * 7 * Copyright (C) 2002-2012 Jean Bréfort <jean.brefort@normalesup.org> 8 * 9 * This program is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU General Public License as 11 * published by the Free Software Foundation; either version 3 of the 12 * License, or (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program; if not, write to the Free Software 21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 22 * USA 23 */ 24 25 #ifndef GCR_ATOMSDLG_H 26 #define GCR_ATOMSDLG_H 27 28 #include <gcugtk/dialog.h> 29 #include <gcugtk/gcuperiodic.h> 30 #include "grid.h" 31 #include <vector> 32 33 /*!\file*/ 34 using namespace std; 35 36 namespace gcr { 37 class Document; 38 class Application; 39 40 /*!\class AtomsDlg gcr/atomsdlg.h 41 \brief GCrystal atoms dialog class. 42 43 This class wraps the dialog used to define atoms inside a crystal. 44 */ 45 class AtomsDlg: public gcugtk::Dialog 46 { 47 friend class AtomsDlgPrivate; 48 public: 49 /*! 50 @param App the application running the dialog. 51 @param pDoc the document. 52 53 Creates the dialog. 54 */ 55 AtomsDlg (Application *App, Document* pDoc); 56 /*! 57 The destructor. 58 */ 59 virtual ~AtomsDlg (); 60 61 /*! 62 Reloads the atoms list from the document. The list might have changed after 63 simplification following symmetry detection. 64 */ 65 void ReloadData (); 66 67 private: 68 void Closed (); 69 void PopulateRadiiMenu (); 70 71 private: 72 Document *m_pDoc; 73 GcrGrid *m_Grid; 74 GcuPeriodic* periodic; 75 GtkToggleButton* CustomColor; 76 GtkColorButton *AtomColor; 77 GtkEntry *AtomR; 78 unsigned short m_nElt; 79 std::vector < Atom * > m_Atoms; 80 int m_AtomSelected; 81 GtkWidget *DeleteBtn, *DeleteAllBtn, *SelectEltBtn; 82 GtkComboBoxText *RadiusTypeMenu, *RadiusMenu; 83 GtkSpinButton *ChargeBtn, *ScaleBtn; 84 const GcuAtomicRadius **m_Radii; 85 GcuAtomicRadius m_Radius; 86 int m_RadiusType, m_Charge; 87 vector<int> m_RadiiIndex; 88 unsigned long m_RadiiSignalID, m_EntryFocusOutSignalID, m_ColorSignalID, 89 m_RadiusTypeSignalID, m_ChargeSignalID, m_ScaleSignalID; 90 bool m_Closing; 91 double m_Ratio; 92 GdkRGBA m_RGBA; 93 }; 94 95 } // namespace gcr 96 97 #endif //GCR_ATOMSDLG_H 98