summaryrefslogtreecommitdiffstats
path: root/kalzium/src/elementdataviewer.h
blob: 76fea4b1a8a73ed622c62d10e95c9e6561b16164 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#ifndef ELEMENTDATAVIEWER_H
#define ELEMENTDATAVIEWER_H
/***************************************************************************
    copyright            : (C) 2004, 2005 by Carsten Niehaus
    email                : cniehaus@kde.org
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

#include <kdialogbase.h>

typedef TQValueList<double> DoubleList;

class Element;
class KalziumDataObject;
class PlotSetupWidget;
class PlotWidget;
class KActionCollection;

/**
 * @short the values of the y-Axis
 * @author Carsten Niehaus
 */
class AxisData
{
	friend class ElementDataViewer;
	
	public:
		AxisData();
		
		/**
		 * sets the dataList to @p list
		 */
		void setDataList( DoubleList list ){ 
			dataList = list; 
		}
		
		/**
		 * @return the value of the selected dataset of element @p element
		 */
		double value( int element ){
			return *dataList.at( element-1 );
		}

		/**
		 * This represents the possible datasets.
		 * @li MASS: the mass of the element
		 * @li MELTINGPOINT: the meanmass of the element
		 */
		enum PAXISDATA{
			MASS=0,
			MEANWEIGHT,
			DENSITY,
			EN,
			MELTINGPOINT,
			BOILINGPOINT,
			ATOMICRADIUS,
			COVALENTRADIUS
		};

		/**
		 * @return the currently selected data type
		 * @see AxisData::PAXISDATA
		 */
		int currentDataType(){
		       return m_currentDataType;
		}

		int numberOfElements() const{
			return dataList.count();
		}

	private:
		/**
		 * the dataList contains the values off all elements
		 * but only of the currently selected data type. This
		 * means that it eg contains all boiling points
		 */
		DoubleList dataList;

		int m_currentDataType;
};

/**
 * @short This widget shows the plot and the widget
 * where you can setup the plot
 * @author Carsten Niehaus
 */
class ElementDataViewer : public KDialogBase
{
	Q_OBJECT

	public:
		ElementDataViewer( TQWidget *parent=0 , const char *name =0 );

		/**
		 * the AxixData for the y-Axis
		 */
		AxisData *yData;

	public slots:
		void slotZoomIn();
		void slotZoomOut();

		/**
		 * draws the plot
		 */
		void drawPlot();

		void slotUser1();

	protected:
		virtual void paintEvent(TQPaintEvent*);
		virtual void keyPressEvent(TQKeyEvent *e);
		
	protected slots:
		/**
		 * invoke the help of the correct chapter
		 */
		virtual void slotHelp();

	private: 
		PlotWidget         *m_pPlotWidget;
		PlotSetupWidget    *m_pPlotSetupWidget;

		KalziumDataObject  *d;

		TQStringList         names;

		KActionCollection* m_actionCollection;

		void initData();
		void setupAxisData();
		
		void setLimits(int, int);

};

#endif // ELEMENTDATAVIEWER_H