QTfrontend/ui/page/pagedrawmap.cpp
author Wuzzy <Wuzzy2@mail.ru>
Wed, 25 Oct 2017 23:09:41 +0200
changeset 12768 ad67a3804981
parent 11046 47a8c19ecb60
child 13210 c681492df36d
permissions -rw-r--r--
Fix sometimes ammo schemes not being saved after changing before an ammo scheme got deleted in session This was because the bool isDeleting is not initialized, so its initial value is unpredictable. Which means there's chance it starts with true, confusing the frontend.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     1
/*
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     2
 * Hedgewars, a free turn based strategy game
11046
47a8c19ecb60 more copyright fixes
sheepluva
parents: 10700
diff changeset
     3
 * Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com>
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     4
 *
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     8
 *
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    12
 * GNU General Public License for more details.
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    13
 *
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
10108
c68cf030eded update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright - but I ain't gonna touch their copyright headers
sheepluva
parents: 9998
diff changeset
    16
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    17
 */
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    18
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    19
#include <QGridLayout>
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    20
#include <QPushButton>
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    21
#include <QFileDialog>
6873
30840365af0a Eraser tool
unc0rr
parents: 6781
diff changeset
    22
#include <QCheckBox>
9551
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    23
#include <QRadioButton>
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    24
5204
e1a5f4d5d86a split pages.h into several header files
koda
parents: 5078
diff changeset
    25
#include "pagedrawmap.h"
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    26
#include "drawmapwidget.h"
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    27
6042
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6009
diff changeset
    28
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6009
diff changeset
    29
QLayout * PageDrawMap::bodyLayoutDefinition()
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    30
{
6042
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6009
diff changeset
    31
    QGridLayout * pageLayout = new QGridLayout();
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    32
6873
30840365af0a Eraser tool
unc0rr
parents: 6781
diff changeset
    33
    cbEraser = new QCheckBox(tr("Eraser"), this);
30840365af0a Eraser tool
unc0rr
parents: 6781
diff changeset
    34
    pageLayout->addWidget(cbEraser, 0, 0);
30840365af0a Eraser tool
unc0rr
parents: 6781
diff changeset
    35
    pbUndo = addButton(tr("Undo"), pageLayout, 1, 0);
9551
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    36
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    37
    rbPolyline = new QRadioButton(tr("Polyline"), this);
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    38
    pageLayout->addWidget(rbPolyline, 2, 0);
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    39
    rbRectangle = new QRadioButton(tr("Rectangle"), this);
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    40
    pageLayout->addWidget(rbRectangle, 3, 0);
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    41
    rbEllipse = new QRadioButton(tr("Ellipse"), this);
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    42
    pageLayout->addWidget(rbEllipse, 4, 0);
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    43
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    44
    rbPolyline->setChecked(true);
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    45
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    46
    pbClear = addButton(tr("Clear"), pageLayout, 5, 0);
10235
bafca1686867 Drawn maps optimizer - first steps:
unc0rr
parents: 10108
diff changeset
    47
    pbOptimize = addButton(tr("Optimize"), pageLayout, 6, 0);
10700
a979c857d8c5 Hide "optimize" button
unc0rr
parents: 10235
diff changeset
    48
    pbOptimize->setVisible(false);
10235
bafca1686867 Drawn maps optimizer - first steps:
unc0rr
parents: 10108
diff changeset
    49
    pbLoad = addButton(tr("Load"), pageLayout, 7, 0);
bafca1686867 Drawn maps optimizer - first steps:
unc0rr
parents: 10108
diff changeset
    50
    pbSave = addButton(tr("Save"), pageLayout, 8, 0);
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    51
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    52
    drawMapWidget = new DrawMapWidget(this);
10235
bafca1686867 Drawn maps optimizer - first steps:
unc0rr
parents: 10108
diff changeset
    53
    pageLayout->addWidget(drawMapWidget, 0, 1, 10, 1);
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    54
6042
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6009
diff changeset
    55
    return pageLayout;
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6009
diff changeset
    56
}
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6009
diff changeset
    57
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6009
diff changeset
    58
void PageDrawMap::connectSignals()
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6009
diff changeset
    59
{
6873
30840365af0a Eraser tool
unc0rr
parents: 6781
diff changeset
    60
    connect(cbEraser, SIGNAL(toggled(bool)), drawMapWidget, SLOT(setErasing(bool)));
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    61
    connect(pbUndo, SIGNAL(clicked()), drawMapWidget, SLOT(undo()));
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    62
    connect(pbClear, SIGNAL(clicked()), drawMapWidget, SLOT(clear()));
10235
bafca1686867 Drawn maps optimizer - first steps:
unc0rr
parents: 10108
diff changeset
    63
    connect(pbOptimize, SIGNAL(clicked()), drawMapWidget, SLOT(optimize()));
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    64
    connect(pbLoad, SIGNAL(clicked()), this, SLOT(load()));
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    65
    connect(pbSave, SIGNAL(clicked()), this, SLOT(save()));
9551
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    66
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    67
    connect(rbPolyline, SIGNAL(toggled(bool)), this, SLOT(pathTypeSwitched(bool)));
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    68
    connect(rbRectangle, SIGNAL(toggled(bool)), this, SLOT(pathTypeSwitched(bool)));
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    69
    connect(rbEllipse, SIGNAL(toggled(bool)), this, SLOT(pathTypeSwitched(bool)));
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    70
}
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    71
6042
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6009
diff changeset
    72
PageDrawMap::PageDrawMap(QWidget* parent) : AbstractPage(parent)
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6009
diff changeset
    73
{
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6009
diff changeset
    74
    initPage();
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6009
diff changeset
    75
}
8b5345758f62 some more cleanups/refactoring/blahblah, some button positions may are a bit off atm. also I added a new picture for one of the buttons
sheepluva
parents: 6009
diff changeset
    76
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    77
void PageDrawMap::load()
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    78
{
5907
64ccc6be0ec5 team edit: restore default hedgehog name if name is empty- since empty names are not supported and will lead to errors; also lupdate
sheepluva
parents: 5853
diff changeset
    79
    QString fileName = QFileDialog::getOpenFileName(NULL, tr("Load drawn map"), ".", tr("Drawn Maps") + " (*.hwmap);;" + tr("All files") + " (*)");
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    80
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    81
    if(!fileName.isEmpty())
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    82
        drawMapWidget->load(fileName);
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    83
}
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    84
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    85
void PageDrawMap::save()
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    86
{
6781
23f627ba8ee9 Variable pen width
unc0rr
parents: 6700
diff changeset
    87
    QString fileName = QFileDialog::getSaveFileName(NULL, tr("Save drawn map"), "./map.hwmap", tr("Drawn Maps") + " (*.hwmap);;" + tr("All files") + " (*)");
5078
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    88
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    89
    if(!fileName.isEmpty())
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    90
        drawMapWidget->save(fileName);
3527f0e7bb21 Removing pages.cpp and splitting it up into various files.
Zorg <zorgiepoo@gmail.com>
parents:
diff changeset
    91
}
9551
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    92
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    93
void PageDrawMap::pathTypeSwitched(bool b)
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    94
{
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    95
    if(b)
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    96
    {
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    97
        if(rbPolyline->isChecked()) drawMapWidget->setPathType(DrawMapScene::Polyline);
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    98
        else if(rbRectangle->isChecked()) drawMapWidget->setPathType(DrawMapScene::Rectangle);
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
    99
        else if(rbEllipse->isChecked()) drawMapWidget->setPathType(DrawMapScene::Ellipse);
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
   100
    }
61f160dfd0f1 Draw rectangles and ellipses!
unc0rr
parents: 9080
diff changeset
   101
}