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>
33 #include <QDockWidget>
35 #include <QHBoxLayout>
37 #include <QRadioButton>
41 * Constructors + destructor
44 /// Default constructor.
45 tcMainWindow::tcMainWindow()
47 , m_viewport(new tcViewportWidget(this))
48 , m_globe(new tcGlobe(6378.1e3
))
50 m_viewport
->setGlobe(m_globe
);
51 setCentralWidget(m_viewport
);
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()));
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());
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)));
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
);
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
);
148 layout
->addStretch();
153 tcMainWindow::~tcMainWindow()