1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
/*
* Copyright 2008-2009 Ben Boeckel <MathStuf@gmail.com>
*
* This program 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 3 of the License, or
* (at your option) 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, see <http://www.gnu.org/licenses/>.
*/
// Header include
#include "MapEditor.h"
// Sigmodr widget includes
#include "MapScene.h"
// KDE includes
#include <KAction>
#include <KIcon>
#include <KMenu>
#include <KPushButton>
// Qt includes
#include <QtCore/QFile>
#include <QtCore/QSignalMapper>
#include <QtGui/QCheckBox>
#include <QtGui/QGraphicsView>
#include <QtGui/QVBoxLayout>
#include <QtUiTools/QUiLoader>
using namespace Sigmod;
using namespace Sigmodr::Widgets;
MapEditor::MapEditor(Map* map, QWidget* parent) :
QWidget(parent),
m_map(map),
m_scene(NULL)
{
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
QFile file(":/gui/mapeditor.ui");
file.open(QFile::ReadOnly);
QWidget *formWidget = QUiLoader().load(&file, this);
file.close();
ui_view = formWidget->findChild<QGraphicsView*>("varView");
reset();
KPushButton* buttonAdd = formWidget->findChild<KPushButton*>("buttonAdd");
KPushButton* buttonRemove = formWidget->findChild<KPushButton*>("buttonRemove");
KPushButton* buttonTop = formWidget->findChild<KPushButton*>("buttonTop");
KPushButton* buttonUp = formWidget->findChild<KPushButton*>("buttonUp");
KPushButton* buttonDown = formWidget->findChild<KPushButton*>("buttonDown");
KPushButton* buttonBottom = formWidget->findChild<KPushButton*>("buttonBottom");
QCheckBox* varShowEffects = formWidget->findChild<QCheckBox*>("varShowEffects");
QCheckBox* varShowTiles = formWidget->findChild<QCheckBox*>("varShowTiles");
QCheckBox* varShowTrainers = formWidget->findChild<QCheckBox*>("varShowTrainers");
QCheckBox* varShowWarps = formWidget->findChild<QCheckBox*>("varShowWarps");
buttonAdd->setIcon(KIcon("list-add"));
buttonRemove->setIcon(KIcon("list-remove"));
buttonTop->setIcon(KIcon("arrow-up-double"));
buttonUp->setIcon(KIcon("arrow-up"));
buttonDown->setIcon(KIcon("arrow-down"));
buttonBottom->setIcon(KIcon("arrow-down-double"));
connect(buttonAdd, SIGNAL(pressed()), m_scene, SLOT(addTile()));
connect(buttonRemove, SIGNAL(pressed()), m_scene, SLOT(removeSelected()));
connect(m_scene, SIGNAL(itemsSelected(bool)), buttonRemove, SLOT(setEnabled(bool)));
connect(buttonTop, SIGNAL(pressed()), m_scene, SLOT(moveToTop()));
connect(m_scene, SIGNAL(tilesSelected(bool)), buttonTop, SLOT(setEnabled(bool)));
connect(buttonUp, SIGNAL(pressed()), m_scene, SLOT(moveUp()));
connect(m_scene, SIGNAL(tilesSelected(bool)), buttonUp, SLOT(setEnabled(bool)));
connect(buttonDown, SIGNAL(pressed()), m_scene, SLOT(moveDown()));
connect(m_scene, SIGNAL(tilesSelected(bool)), buttonDown, SLOT(setEnabled(bool)));
connect(buttonBottom, SIGNAL(pressed()), m_scene, SLOT(moveToBottom()));
connect(m_scene, SIGNAL(tilesSelected(bool)), buttonBottom, SLOT(setEnabled(bool)));
connect(varShowEffects, SIGNAL(stateChanged(int)), m_scene, SLOT(showEffects(int)));
connect(varShowTiles, SIGNAL(stateChanged(int)), m_scene, SLOT(showTiles(int)));
connect(varShowTrainers, SIGNAL(stateChanged(int)), m_scene, SLOT(showTrainers(int)));
connect(varShowWarps, SIGNAL(stateChanged(int)), m_scene, SLOT(showWarps(int)));
QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(formWidget);
setLayout(layout);
}
void MapEditor::setMap(Map* map)
{
m_map = map;
delete m_scene;
reset();
}
void MapEditor::reset()
{
m_scene = new MapScene(m_map, this);
connect(m_scene, SIGNAL(changed()), this, SIGNAL(changed()));
ui_view->setScene(m_scene);
}
|