Can now select a region of the map and it only draws that bit and at higher sample...
[tecorrec.git] / tcMainWindow.cpp
blob32e3e33f6543a0b2fca602580a64c6ac31200eb6
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 <QStatusBar>
31 #include <QDockWidget>
32 #include <QWidget>
33 #include <QHBoxLayout>
34 #include <QComboBox>
35 #include <QRadioButton>
36 #include <QSlider>
39 * Constructors + destructor
42 /// Default constructor.
43 tcMainWindow::tcMainWindow()
44 : QMainWindow()
45 , m_viewport(new tcViewportWidget(this))
46 , m_globe(new tcGlobe(6378.1e3))
48 m_viewport->setGlobe(m_globe);
49 setCentralWidget(m_viewport);
52 // Status bar
53 QStatusBar* statusBar = new QStatusBar(this);
54 connect(m_viewport, SIGNAL(mouseGeoTextChanged(const QString&)),
55 statusBar, SLOT(showMessage(const QString&)));
56 setStatusBar(statusBar);
60 // Docker for elevation data settings
61 QDockWidget* docker = new QDockWidget(tr("Elevation Data"), this);
62 QWidget* dockerWidget = new QWidget(docker);
63 QVBoxLayout* layout = new QVBoxLayout(dockerWidget);
64 docker->setWidget(dockerWidget);
65 addDockWidget(Qt::LeftDockWidgetArea, docker);
67 // Combo box to select data set
68 QComboBox* elevDataSet = new QComboBox(dockerWidget);
69 layout->addWidget(elevDataSet);
70 QStringList elevDataSets = tcSrtmCache::dataSets();
71 foreach (QString dataSet, elevDataSets)
73 elevDataSet->addItem(dataSet);
75 connect(elevDataSet, SIGNAL(currentIndexChanged(const QString&)), m_viewport, SLOT(setElevationDataSet(const QString&)));
76 if (-1 != elevDataSet->currentIndex())
78 m_viewport->setElevationDataSet(elevDataSet->currentText());
81 // Radio buttons
82 QRadioButton* elevFlat = new QRadioButton(tr("Don't Show Elevation (Flat)"), dockerWidget);
83 layout->addWidget(elevFlat);
84 connect(elevFlat, SIGNAL(pressed()), m_viewport, SLOT(setElevationFlat()));
85 QRadioButton* elevRaw = new QRadioButton(tr("Raw SRTM Elevation Data"), dockerWidget);
86 layout->addWidget(elevRaw);
87 elevRaw->setChecked(true);
88 connect(elevRaw, SIGNAL(pressed()), m_viewport, SLOT(setElevationRaw()));
89 QRadioButton* elevCorrected = new QRadioButton(tr("Corrected SRTM Elevation Data"), dockerWidget);
90 layout->addWidget(elevCorrected);
91 connect(elevCorrected, SIGNAL(pressed()), m_viewport, SLOT(setElevationCorrected()));
92 QSlider* elevCorrectionLevel = new QSlider(Qt::Horizontal, dockerWidget);
93 layout->addWidget(elevCorrectionLevel);
94 elevCorrectionLevel->setRange(0,100);
95 connect(elevCorrectionLevel, SIGNAL(valueChanged(int)), m_viewport, SLOT(setElevationCorrection(int)));
97 // Spacer
98 layout->addStretch();
102 // Docker for processing
103 QDockWidget* docker = new QDockWidget(tr("Processing"), this);
104 QWidget* dockerWidget = new QWidget(docker);
105 QVBoxLayout* layout = new QVBoxLayout(dockerWidget);
106 docker->setWidget(dockerWidget);
107 addDockWidget(Qt::LeftDockWidgetArea, docker);
109 // Spacer
110 layout->addStretch();
114 /// Destructor.
115 tcMainWindow::~tcMainWindow()
117 delete m_globe;