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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
/* toplevel.cpp
Copyright (C) 1998 Andreas W�st ([email protected])
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 2 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, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <qgroupbox.h>
#include <qlayout.h>
#include <kglobal.h>
#include <klocale.h>
#include <ksimpleconfig.h>
#include <kstandarddirs.h>
#include <kapplication.h>
#include "gamewidget.h"
#include "toplevel.h"
#include "settings.h"
#include "configbox.h"
#include <kaction.h>
#include <kstdaction.h>
#include <kstdgameaction.h>
#include <kdebug.h>
extern Options settings;
void AtomTopLevel::createMenu()
{
KAction *act = KStdGameAction::highscores(main, SLOT(showHighscores()), actionCollection());
act->setText(i18n("Show &Highscores"));
KStdGameAction::quit(this, SLOT(close()), actionCollection());
KStdGameAction::restart(main, SLOT(restartLevel()), actionCollection());
KStdAction::preferences(this, SLOT(configopts()), actionCollection());
undoAction = KStdGameAction::undo (main, SLOT(doUndo()), actionCollection());
redoAction = KStdGameAction::redo (main, SLOT(doRedo()), actionCollection());
undoAction->setEnabled(false);
redoAction->setEnabled(false);
connect (main, SIGNAL (enableRedo(bool)), SLOT(enableRedo(bool)));
connect (main, SIGNAL (enableUndo(bool)), SLOT(enableUndo(bool)));
new KAction(i18n("Atom Up"), Key_Up, main, SLOT(moveUp()), actionCollection(), "atom_up");
new KAction(i18n("Atom Down"), Key_Down, main, SLOT(moveDown()), actionCollection(), "atom_down");
new KAction(i18n("Atom Left"), Key_Left, main, SLOT(moveLeft()), actionCollection(), "atom_left");
new KAction(i18n("Atom Right"), Key_Right, main, SLOT(moveRight()), actionCollection(), "atom_right");
new KAction(i18n("Next Atom"), Key_Tab, main, SLOT(nextAtom()), actionCollection(), "next_atom");
new KAction(i18n("Previous Atom"), SHIFT+Key_Tab, main, SLOT(previousAtom()), actionCollection(), "prev_atom");
}
void AtomTopLevel::configopts()
{
(new ConfigBox(this, "Options"))->show();
}
void AtomTopLevel::initConfig()
{
config = KGlobal::config();
}
void AtomTopLevel::saveConfig()
{
config = KGlobal::config();
if (settings.changed) {
config->setGroup("Options");
config->writeEntry("Animation Speed", settings.anim_speed);
config->setGroup("Colors");
}
config->sync();
}
AtomTopLevel::AtomTopLevel()
{
main = new GameWidget(this, "gamewidget");
createMenu();
initConfig();
setCentralWidget(main);
setupGUI( KMainWindow::Save | Keys | Create );
}
AtomTopLevel::~AtomTopLevel()
{
}
bool AtomTopLevel::queryExit()
{
saveConfig();
return true;
}
void AtomTopLevel::enableRedo(bool enable)
{
redoAction->setEnabled(enable);
}
void AtomTopLevel::enableUndo(bool enable)
{
undoAction->setEnabled(enable);
}
#include "toplevel.moc"
|