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