1 /***************************************************************************
2 * This file is part of Tecorrec. *
3 * Copyright 2008 James Hogan <james@albanarts.com> *
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. *
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. *
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 ***************************************************************************/
21 * @file tcMainWindow.h
22 * @brief Main application window.
25 #include "tcMainWindow.h"
26 #include "tcViewportWidget.h"
28 #include <tcSrtmCache.h>
31 #include <QDockWidget>
33 #include <QHBoxLayout>
35 #include <QRadioButton>
39 * Constructors + destructor
42 /// Default constructor.
43 tcMainWindow::tcMainWindow()
45 , m_viewport(new tcViewportWidget(this))
46 , m_globe(new tcGlobe(6378.1e3
))
48 m_viewport
->setGlobe(m_globe
);
49 setCentralWidget(m_viewport
);
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());
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)));
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
);
110 layout
->addStretch();
115 tcMainWindow::~tcMainWindow()