summaryrefslogtreecommitdiff
path: root/src/mainwindow.cc
blob: f4417833a0339feaf7e1d86c5a8ea46bff6f46c9 (plain)
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

#include "mainwindow.h"
#include "solverwindow.h"

MainWindow::MainWindow()
{
	setWindowTitle(tr("Sudoku"));
	
	mainwindow_solverwindow = new SolverWindow();	
	setCentralWidget(mainwindow_solverwindow);
	
	initActions();
	
	initMenus();
}


void MainWindow::initActions()
{
	// Game -> New
	action_new = new QAction(tr("&New"), this);
	action_new->setShortcuts(QKeySequence::New);
	action_new->setStatusTip(tr("Start a new game"));
	connect(action_new, SIGNAL(triggered()), mainwindow_solverwindow, SLOT(clear()));
	
	// Game -> Load
	action_load = new QAction(tr("&Load..."), this);
	action_load->setShortcuts(QKeySequence::Open);
	action_load->setStatusTip(tr("Load a previously saved game"));
	connect(action_load, SIGNAL(triggered()), mainwindow_solverwindow, SLOT(load()));
	
	action_save = new QAction(tr("&Save"), this);
	action_load->setStatusTip(tr("Save the current game"));

	action_saveas = new QAction(tr("Save &As..."), this);
	action_load->setStatusTip(tr("Save the current game to a new file"));
	connect(action_saveas, SIGNAL(triggered()), mainwindow_solverwindow, SLOT(saveas()));
	
	// Game -> Quit
	action_quit = new QAction(tr("&Quit"), this);
	action_quit->setShortcuts(QKeySequence::Quit);
	action_quit->setStatusTip(tr("Exit the application"));
	connect(action_quit, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));
	
	// Move -> Hint
	action_hint = new QAction(tr("Hint"), this);
	action_hint->setStatusTip(tr("Give a hint"));
	// TODO
	
	// Move -> Step
	action_step = new QAction(tr("Step"), this);
	action_step->setStatusTip(tr("Solve a single cell"));
	connect(action_step, SIGNAL(triggered()), mainwindow_solverwindow, SLOT(step()));
	
	// Move -> Solve
	action_solve = new QAction(tr("Solve"), this);
	action_solve->setStatusTip(tr("Try to solve this game"));
	connect(action_solve, SIGNAL(triggered()), mainwindow_solverwindow, SLOT(solve()));
}

void MainWindow::initMenus()
{
	mainwindow_gamemenu = menuBar()->addMenu(tr("&Game"));
	mainwindow_gamemenu->addAction(action_new);
	mainwindow_gamemenu->addAction(action_load);
	mainwindow_gamemenu->addSeparator();
	mainwindow_gamemenu->addAction(action_save);
	mainwindow_gamemenu->addAction(action_saveas);
	mainwindow_gamemenu->addAction(action_quit);
	
	mainwindow_movemenu = menuBar()->addMenu(tr("&Move"));
	mainwindow_movemenu->addAction(action_hint);
	mainwindow_movemenu->addAction(action_step);
	mainwindow_movemenu->addAction(action_solve);
}