mapnik/demo/viewer/mainwindow.hpp
2014-11-20 15:25:50 +01:00

116 lines
2.8 KiB
C++

/* This file is part of Mapnik (c++ mapping toolkit)
*
* Copyright (C) 2014 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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