Added gui options for wireframe, and colour coding
[tecorrec.git] / tcMainWindow.cpp
bloba48c0ee721be608f508e37011378d5c5ef3165c2
1 /***************************************************************************
2 * This file is part of Tecorrec. *
3 * Copyright 2008 James Hogan <james@albanarts.com> *
4 * *
5 * Tecorrec is free software: you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation, either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * Tecorrec is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with Tecorrec. If not, write to the Free Software Foundation, *
17 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
18 ***************************************************************************/
20 /**
21 * @file tcMainWindow.h
22 * @brief Main application window.
25 #include "tcMainWindow.h"
26 #include "tcViewportWidget.h"
27 #include <tcGlobe.h>
28 #include <tcSrtmCache.h>
30 #include <QMenuBar>
31 #include <QMenu>
32 #include <QStatusBar>
33 #include <QDockWidget>
34 #include <QWidget>
35 #include <QHBoxLayout>
36 #include <QComboBox>
37 #include <QRadioButton>
38 #include <QSlider>
41 * Constructors + destructor
44 /// Default constructor.
45 tcMainWindow::tcMainWindow()
46 : QMainWindow()
47 , m_viewport(new tcViewportWidget(this))
48 , m_globe(new tcGlobe(6378.1e3))
50 m_viewport->setGlobe(m_globe);
51 setCentralWidget(m_viewport);
54 // Menu bar
55 QMenuBar* menus = menuBar();
57 QMenu* menuView = menus->addMenu(tr("View", "The menu"));
59 QMenu* menuViewRender = menuView->addMenu(tr("Render Options", "The menu"));
61 QAction* menuViewRenderNormal = menuViewRender->addAction(tr("Normal", "Polygon mode"),
62 m_viewport, SLOT(setPolygonModeNormal()));
63 QAction* menuViewRenderWireframe = menuViewRender->addAction(tr("Wireframe", "Polygon mode"),
64 m_viewport, SLOT(setPolygonModeWireframe()));
65 QMenu* menuViewRenderColour = menuView->addMenu(tr("Colour Coding", "The menu"));
67 QAction* menuViewRenderColourNone = menuViewRenderColour->addAction(tr("No colour coding"),
68 m_viewport, SLOT(setColourCodingNone()));
69 QAction* menuViewRenderColourElevationSampleAlignment = menuViewRenderColour->addAction(tr("Alignment of elevation samples"),
70 m_viewport, SLOT(setColourCodingElevationSampleAlignment()));
78 // Status bar
79 QStatusBar* statusBar = new QStatusBar(this);
80 connect(m_viewport, SIGNAL(mouseGeoTextChanged(const QString&)),
81 statusBar, SLOT(showMessage(const QString&)));
82 setStatusBar(statusBar);
86 // Docker for elevation data settings
87 QDockWidget* docker = new QDockWidget(tr("Elevation Data"), this);
88 QWidget* dockerWidget = new QWidget(docker);
89 QVBoxLayout* layout = new QVBoxLayout(dockerWidget);
90 docker->setWidget(dockerWidget);
91 addDockWidget(Qt::LeftDockWidgetArea, docker);
93 // Combo box to select data set
94 QComboBox* elevDataSet = new QComboBox(dockerWidget);
95 layout->addWidget(elevDataSet);
96 QStringList elevDataSets = tcSrtmCache::dataSets();
97 foreach (QString dataSet, elevDataSets)
99 elevDataSet->addItem(dataSet);
101 connect(elevDataSet, SIGNAL(currentIndexChanged(const QString&)), m_viewport, SLOT(setElevationDataSet(const QString&)));
102 if (-1 != elevDataSet->currentIndex())
104 m_viewport->setElevationDataSet(elevDataSet->currentText());
107 // Radio buttons
108 QRadioButton* elevFlat = new QRadioButton(tr("Don't Show Elevation (Flat)"), dockerWidget);
109 layout->addWidget(elevFlat);
110 connect(elevFlat, SIGNAL(pressed()), m_viewport, SLOT(setElevationFlat()));
111 QRadioButton* elevRaw = new QRadioButton(tr("Raw SRTM Elevation Data"), dockerWidget);
112 layout->addWidget(elevRaw);
113 elevRaw->setChecked(true);
114 connect(elevRaw, SIGNAL(pressed()), m_viewport, SLOT(setElevationRaw()));
115 QRadioButton* elevCorrected = new QRadioButton(tr("Corrected SRTM Elevation Data"), dockerWidget);
116 layout->addWidget(elevCorrected);
117 connect(elevCorrected, SIGNAL(pressed()), m_viewport, SLOT(setElevationCorrected()));
118 QSlider* elevCorrectionLevel = new QSlider(Qt::Horizontal, dockerWidget);
119 layout->addWidget(elevCorrectionLevel);
120 elevCorrectionLevel->setRange(0,100);
121 connect(elevCorrectionLevel, SIGNAL(valueChanged(int)), m_viewport, SLOT(setElevationCorrection(int)));
123 // Spacer
124 layout->addStretch();
128 // Docker for satellite imagery
129 QDockWidget* docker = new QDockWidget(tr("Imagery Data"), this);
130 QWidget* dockerWidget = new QWidget(docker);
131 QVBoxLayout* layout = new QVBoxLayout(dockerWidget);
132 docker->setWidget(dockerWidget);
133 addDockWidget(Qt::LeftDockWidgetArea, docker);
135 // Spacer
136 layout->addStretch();
140 // Docker for processing
141 QDockWidget* docker = new QDockWidget(tr("Processing"), this);
142 QWidget* dockerWidget = new QWidget(docker);
143 QVBoxLayout* layout = new QVBoxLayout(dockerWidget);
144 docker->setWidget(dockerWidget);
145 addDockWidget(Qt::LeftDockWidgetArea, docker);
147 // Spacer
148 layout->addStretch();
152 /// Destructor.
153 tcMainWindow::~tcMainWindow()
155 delete m_globe;