178 |
kaklik |
1 |
#include <QtGui/QMessageBox> |
|
|
2 |
#include "mandoWindow.hh" |
|
|
3 |
#include "mandoWizard.hh" |
|
|
4 |
#include <X11/extensions/XTest.h> |
|
|
5 |
|
|
|
6 |
using namespace mimas; |
|
|
7 |
using namespace std; |
|
|
8 |
|
|
|
9 |
MandoWindow::MandoWindow( QWidget *parent, Qt::WFlags f ): |
|
|
10 |
QWidget( parent, f ), mandoWizard(NULL), timer(0) |
|
|
11 |
{ |
|
|
12 |
ui.setupUi( this ); |
|
|
13 |
connect( ui.quitButton, SIGNAL(clicked()), |
|
|
14 |
this, SLOT(close()) ); |
|
|
15 |
connect( ui.aboutButton, SIGNAL(clicked()), |
|
|
16 |
this, SLOT(about()) ); |
|
|
17 |
connect( ui.configureButton, SIGNAL(clicked()), |
|
|
18 |
this, SLOT(configure()) ); |
|
|
19 |
connect( ui.activateCheckBox, SIGNAL(toggled(bool)), |
|
|
20 |
this, SLOT(activate(bool)) ); |
|
|
21 |
} |
|
|
22 |
|
|
|
23 |
void MandoWindow::about() |
|
|
24 |
{ |
|
|
25 |
QMessageBox::about |
|
|
26 |
( this, "About mando", |
|
|
27 |
"<p>Copyright © 2006. <b>mando</b> is free software; you can " |
|
|
28 |
"redistribute it and/or modify it under the terms of the <em>GNU " |
|
|
29 |
"General Public License</em> as published by the Free Software " |
|
|
30 |
"Foundation; either version 2 of the License, or (at your option) any " |
|
|
31 |
"later version.</p>" |
|
|
32 |
"<p><b>mando</b> is distributed in the hope that it will be useful, but " |
|
|
33 |
"<em>without any warranty</em>; without even the implied warranty of " |
|
|
34 |
"<em>merchantibility</em> or <em>fitness for a particular " |
|
|
35 |
"purpose</em>. See the GNU General Public License for more details.</p>" |
|
|
36 |
"<p>You should have received a copy of the GNU General Public License " |
|
|
37 |
"along with <b>mando</b>; if not, contact one of the authors of this " |
|
|
38 |
"software.</p>" |
|
|
39 |
"<ul><li>Juan Roldan <a href=\"mailto:juan.roldanREMOVETHIS@gmail.com\">juan.roldanREMOVETHIS@gmail.com</a></li>" |
|
|
40 |
"<li>Ushakiran Soutapalli <a href=\"mailto:ushakiron_sREMOVETHIS@yahoo.co.in\">ushakiron_sREMOVETHIS@yahoo.co.in</a></li>" |
|
|
41 |
"<li>Julien Faucher <a href=\"faucherjREMOVETHIS@gmail.com\">faucherjREMOVETHIS@gmail.com</a></li>" |
|
|
42 |
"<li>Jan Wedekind\n <a href=\"mailto:janREMOVETHIS@wedesoft.de\">janREMOVETHIS@wedesoft.de</a></li></ul>" ); |
|
|
43 |
} |
|
|
44 |
|
|
|
45 |
void MandoWindow::configure() |
|
|
46 |
{ |
|
|
47 |
input.reset(); |
|
|
48 |
pointerRecognition.reset(); |
|
|
49 |
ui.activateCheckBox->setEnabled( false ); |
|
|
50 |
activate(false); |
|
|
51 |
MandoWizard mandoWizard( this ); |
|
|
52 |
} |
|
|
53 |
|
|
|
54 |
void MandoWindow::activate( bool on ) |
|
|
55 |
{ |
|
|
56 |
if ( on ) { |
|
|
57 |
if ( timer == 0 ) |
|
|
58 |
timer = startTimer( 0 ); |
|
|
59 |
} else |
|
|
60 |
if ( timer != 0 ) { |
|
|
61 |
killTimer( timer ); |
|
|
62 |
timer = 0; |
|
|
63 |
}; |
|
|
64 |
} |
|
|
65 |
|
|
|
66 |
void MandoWindow::startDrag(void) |
|
|
67 |
{ |
|
|
68 |
Display *display = XOpenDisplay(NULL); |
|
|
69 |
XTestFakeButtonEvent( display, 1, True, 0 ); |
|
|
70 |
XCloseDisplay( display ); |
|
|
71 |
} |
|
|
72 |
|
|
|
73 |
void MandoWindow::stopDrag(void) |
|
|
74 |
{ |
|
|
75 |
Display *display = XOpenDisplay(NULL); |
|
|
76 |
XTestFakeButtonEvent( display, 1, False, 0 ); |
|
|
77 |
XCloseDisplay( display ); |
|
|
78 |
// ui.singleClickRadio->setChecked( true ); |
|
|
79 |
} |
|
|
80 |
|
|
|
81 |
void MandoWindow::click(void) |
|
|
82 |
{ |
|
|
83 |
Display *display = XOpenDisplay(NULL); |
|
|
84 |
XTestFakeButtonEvent( display, 1, True, 0 ); |
|
|
85 |
XTestFakeButtonEvent( display, 1, False, 250 ); |
|
|
86 |
XCloseDisplay( display ); |
|
|
87 |
} |
|
|
88 |
|
|
|
89 |
void MandoWindow::mouseMove( int x, int y ) |
|
|
90 |
{ |
|
|
91 |
Display *display = XOpenDisplay(NULL); |
|
|
92 |
int screen = DefaultScreen( display ); |
|
|
93 |
XTestFakeMotionEvent( display, screen, x, y, 0 ); |
|
|
94 |
XCloseDisplay( display ); |
|
|
95 |
} |
|
|
96 |
|
|
|
97 |
void MandoWindow::timerEvent( QTimerEvent *e ) |
|
|
98 |
{ |
|
|
99 |
if ( e->timerId() == timer ) { |
|
|
100 |
try { |
|
|
101 |
assert( pointerRecognition ); |
|
|
102 |
Vector camPos( 3 ), pos( 3 ); |
|
|
103 |
image< rgba< unsigned char > > frame( grabColourFrame() ); |
|
|
104 |
} catch ( exception & ) { |
|
|
105 |
assert( timer != 0 ); |
|
|
106 |
killTimer( timer ); |
|
|
107 |
ui.activateCheckBox->setChecked( false ); |
|
|
108 |
}; |
|
|
109 |
} else |
|
|
110 |
QWidget::timerEvent( e ); |
|
|
111 |
} |
|
|
112 |
|
|
|
113 |
image< rgba< unsigned char > > MandoWindow::grabColourFrame(void) |
|
|
114 |
throw (mimasexception) |
|
|
115 |
{ |
|
|
116 |
assert( input ); |
|
|
117 |
image< rgba< unsigned char > > retVal; |
|
|
118 |
(*input) >> retVal; |
|
|
119 |
return retVal; |
|
|
120 |
} |
|
|
121 |
|