Add keyboard emulator.
[bertos.git] / emul / emulwin.cpp
1 /**
2  * \file
3  * <!--
4  * Copyright 2006 Develer S.r.l. (http://www.develer.com/)
5  * Copyright 2000, 2001 Bernardo Innocenti <bernie@codewiz.org>
6  * This file is part of DevLib - See README.devlib for information.
7  * -->
8  *
9  * \version $Id$
10  *
11  * \author Bernardo Innocenti <bernie@develer.com>
12  *
13  * \brief Main Qt window for embedded applications emulator (implementation)
14  */
15
16 /*#*
17  *#* $Log$
18  *#* Revision 1.3  2006/02/15 09:11:17  bernie
19  *#* Add keyboard emulator.
20  *#*
21  *#* Revision 1.2  2006/01/16 03:51:51  bernie
22  *#* Fix boilerplate.
23  *#*
24  *#* Revision 1.1  2006/01/16 03:37:12  bernie
25  *#* Add emulator skeleton.
26  *#*
27  *#*/
28
29 #include "emulwin.h"
30
31 #include <drv/lcd_gfx_qt.h>
32 #include <emul/emul.h>
33 #include <emul/emulkbd.h>
34
35 #include <cassert>
36 #include <qlayout.h>
37 #include <qlabel.h>
38 #include <qslider.h>
39 #include <qcheckbox.h>
40 #include <qpopupmenu.h>
41 #include <qmenubar.h>
42 #include <qmessagebox.h>
43 #include <qdatetime.h>
44 #include <qtimer.h>
45 #include <qapplication.h>
46
47 EmulWin::EmulWin(Emulator *e) : QMainWindow(0, "DevLibEmul", WDestructiveClose)
48 {
49         // "File" menu
50         QPopupMenu * file = new QPopupMenu(this);
51         file->insertItem("&Quit", static_cast<QObject *>(e->emulApp), SLOT(closeAllWindows()), CTRL+Key_Q);
52
53         // "Help" menu
54         QPopupMenu * help = new QPopupMenu(this);
55         help->insertItem("&About", this, SLOT(about()), Key_F1);
56
57         // Menu bar
58         QMenuBar * menu = new QMenuBar(this);
59         menu->insertItem("&File", file);
60         menu->insertSeparator();
61         menu->insertItem("&Help", help);
62
63         // Make a central widget to contain the other widgets
64         QWidget *central = new QWidget(this);
65         setCentralWidget(central);
66
67         // Create a layout to position the widgets
68         QHBoxLayout *box_main = new QHBoxLayout(central, 4);
69
70         // Main layout
71         QVBoxLayout *box_right = new QVBoxLayout(box_main, 4);
72
73                 // LCD
74                 QHBoxLayout *lay_lcd = new QHBoxLayout(box_right, 4);
75                 lay_lcd->addWidget(e->emulLCD = new EmulLCD(central));
76
77                 // Keyboard
78                 QHBoxLayout *lay_kbd = new QHBoxLayout(box_right, 4);
79                         lay_kbd->addWidget(e->emulKbd = new EmulKbd(central));
80
81         // Setup keyboard: Label   Keycode     Row Col MRow MCol
82         e->emulKbd->addKey("^",    Key_Up,     0,  0,  0,   0);
83         e->emulKbd->addKey("v",    Key_Down,   1,  0,  0,   1);
84         e->emulKbd->addKey("OK",   Key_Return, 0,  1,  0,   2);
85         e->emulKbd->addKey("ESC",  Key_Escape, 1,  1,  0,   3);
86 }
87
88
89 EmulWin::~EmulWin()
90 {
91         emul->quit();
92 }
93
94
95 void EmulWin::closeEvent(QCloseEvent *ce)
96 {
97         ce->accept();
98 }
99
100
101 void EmulWin::about()
102 {
103     QMessageBox::about(this,
104                 "Embedded Application Emulator",
105                 "Version 0.1\n"
106                 "Copyright 2006 Develer S.r.l. (http://www.develer.com/)\n"
107                 "Copyright 2001, 2002, 2003, 2005 Bernardo Innocenti <bernie@codewiz.org>\n"
108                 "All rights reserved."
109         );
110 }
111
112 #include "emulwin_moc.cpp"