mapnik/demo/viewer/mainwindow.hpp
2022-01-27 00:12:13 +01:00

117 lines
2.8 KiB
C++

/* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2021 Artem Pavlenko
*
* Mapnik is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef MAINWINDOW_HPP
#define MAINWINDOW_HPP
#include <QMainWindow>
#include <QList>
#include <QActionGroup>
#include <QStatusBar>
#include <QAbstractItemModel>
#include <QDoubleSpinBox>
#include "mapwidget.hpp"
// using namespace mapnik;
class LayerTab;
class StyleTab;
class QSlider;
class QComboBox;
class QDoubleSpinBox;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
virtual ~MainWindow();
void set_default_extent(double x0, double y0, double x1, double y1);
void set_scaling_factor(double scaling_factor);
public:
std::shared_ptr<mapnik::Map> get_map();
protected:
void closeEvent(QCloseEvent* event);
public slots:
void zoom_all();
void zoom_to_box();
void pan();
void info();
void export_as();
void open(QString const& path = QString());
void reload();
void save();
void print();
void about();
void pan_left();
void pan_right();
void pan_up();
void pan_down();
private:
void createActions();
void createMenus();
void createToolBars();
void createContextMenu();
void load_map_file(QString const& filename);
QString currentPath;
QString filename_;
QAbstractItemModel* model;
LayerTab* layerTab_;
StyleTab* styleTab_;
MapWidget* mapWidget_;
// actions
QList<QAction*> exportAsActs;
QActionGroup* toolsGroup;
QAction* zoomAllAct;
QAction* zoomBoxAct;
QAction* panAct;
QAction* infoAct;
QAction* openAct;
QAction* saveAct;
QAction* printAct;
QAction* exitAct;
QAction* aboutAct;
QAction* panLeftAct;
QAction* panRightAct;
QAction* panUpAct;
QAction* panDownAct;
QAction* reloadAct;
QAction* layerInfo;
// toolbars
QToolBar* fileToolBar;
QToolBar* editToolBar;
// menus
QMenu* exportMenu;
QMenu* fileMenu;
QMenu* helpMenu;
// status bar
QStatusBar* status;
QSlider* slider_;
QComboBox* renderer_selector_;
QDoubleSpinBox* scale_factor_;
mapnik::box2d<double> default_extent_;
};
#endif // MAINWINDOW_HPP