Added status bar with full file path and graph zoom
[hypercube:hypercube.git] / GUI / graphtab.h
1 #ifndef GRAPHTAB_H_
2 #define GRAPHTAB_H_
3
4 #include "graphview.h"
5 #include "CORE/graph.h"
6 #include "CORE/sa.h"
7 #include "IO/io.h"
8
9
10 class GraphTab : public QWidget
11 {
12         Q_OBJECT
13
14 public:
15         GraphTab();
16         virtual ~GraphTab();
17
18         bool enabled() {return _enabled;}
19         void setEnabled(bool state);
20
21         IO::Error readGraph(const QString &fileName);
22         IO::Error readGraph();
23         IO::Error writeGraph(const QString &fileName, OutputProvider *provider);
24         IO::Error writeGraph();
25         void transformGraph();
26         void project(Graph *graph);
27
28         Graph *graph();
29         GraphView *view() {return _view;}
30
31         QPoint dimensions() const {return _dimensions;}
32         void setDimensions(const QPoint &dimensions);
33         QColor vertexColor() const {return _vertexColor;}
34         void setVertexColor(const QColor &color);
35         QColor edgeColor() const {return _edgeColor;}
36         void setEdgeColor(const QColor &color);
37         int vertexSize() {return _vertexSize;}
38         void setVertexSize(int size);
39         int edgeSize() {return _edgeSize;}
40         void setEdgeSize(int size);
41         int vertexFontSize() {return _vertexFontSize;}
42         int edgeFontSize() {return _edgeFontSize;}
43         void setVertexFontSize(int size);
44         void setEdgeFontSize(int size);
45         bool vertexIDs() {return _showVertexIDs;}
46         bool edgeValues() {return _showEdgeValues;}
47         void showVertexIDs(bool show);
48         void showEdgeValues(bool show);
49         void setEdgeZValue(int value);
50
51         float nodeDistribution() {return _sa->nodeDistribution();}
52         void setNodeDistribution(float value) {_sa->setNodeDistribution(value);}
53         float edgeLength() {return _sa->edgeLength();}
54         void setEdgeLength(float value) {_sa->setEdgeLength(value);}
55         float edgeCrossings() {return _sa->edgeCrossings();}
56         void setEdgeCrossings(float value) {_sa->setEdgeCrossings(value);}
57         float initTemp() {return _sa->initTemp();}
58         void setInitTemp(float value) {_sa->setInitTemp(value);}
59         float finalTemp() {return _sa->finalTemp();}
60         void setFinalTemp(float value) {_sa->setFinalTemp(value);}
61         float coolFactor() {return _sa->coolFactor();}
62         void setCoolFactor(float value) {_sa->setCoolFactor(value);}
63         int numSteps() {return _sa->numSteps();}
64         void setNumSteps(int value) {_sa->setNumSteps(value);}
65         bool logInfo() {return _sa->logInfo();}
66         void setLogInfo(bool value) {_sa->setLogInfo(value);}
67
68         QString& fileName() {return _inputFileName;}
69
70 private:
71         void loadGraph();
72         void storeGraph();
73         void setGraphProperties();
74
75         bool _enabled;
76
77         Graph *_graph;
78         GraphView *_view;
79         SA *_sa;
80
81         QString _inputFileName;
82         QString _outputFileName;
83         InputProvider *_inputProvider;
84         OutputProvider *_outputProvider;
85
86         QPoint _dimensions;
87         QColor _vertexColor;
88         QColor _edgeColor;
89         int _vertexSize;
90         int _edgeSize;
91         int _vertexFontSize;
92         int _edgeFontSize;
93         bool _showVertexIDs;
94         bool _showEdgeValues;
95 };
96
97 #endif /* GRAPHTAB_H_ */