#include <QtGui/QMessageBox>#include "mandoWindow.hh"#include "mandoWizard.hh"#include <X11/extensions/XTest.h>using namespace mimas;using namespace std;MandoWindow::MandoWindow( QWidget *parent, Qt::WFlags f ):QWidget( parent, f ), mandoWizard(NULL), timer(0){ui.setupUi( this );connect( ui.quitButton, SIGNAL(clicked()),this, SLOT(close()) );connect( ui.aboutButton, SIGNAL(clicked()),this, SLOT(about()) );connect( ui.configureButton, SIGNAL(clicked()),this, SLOT(configure()) );connect( ui.activateCheckBox, SIGNAL(toggled(bool)),this, SLOT(activate(bool)) );}void MandoWindow::about(){QMessageBox::about( this, "About mando","<p>Copyright © 2006. <b>mando</b> is free software; you can ""redistribute it and/or modify it under the terms of the <em>GNU ""General Public License</em> as published by the Free Software ""Foundation; either version 2 of the License, or (at your option) any ""later version.</p>""<p><b>mando</b> is distributed in the hope that it will be useful, but ""<em>without any warranty</em>; without even the implied warranty of ""<em>merchantibility</em> or <em>fitness for a particular ""purpose</em>. See the GNU General Public License for more details.</p>""<p>You should have received a copy of the GNU General Public License ""along with <b>mando</b>; if not, contact one of the authors of this ""software.</p>""<ul><li>Juan Roldan <a href=\"mailto:juan.roldanREMOVETHIS@gmail.com\">juan.roldanREMOVETHIS@gmail.com</a></li>""<li>Ushakiran Soutapalli <a href=\"mailto:ushakiron_sREMOVETHIS@yahoo.co.in\">ushakiron_sREMOVETHIS@yahoo.co.in</a></li>""<li>Julien Faucher <a href=\"faucherjREMOVETHIS@gmail.com\">faucherjREMOVETHIS@gmail.com</a></li>""<li>Jan Wedekind\n <a href=\"mailto:janREMOVETHIS@wedesoft.de\">janREMOVETHIS@wedesoft.de</a></li></ul>" );}void MandoWindow::configure(){input.reset();pointerRecognition.reset();ui.activateCheckBox->setEnabled( false );activate(false);MandoWizard mandoWizard( this );}void MandoWindow::activate( bool on ){if ( on ) {if ( timer == 0 )timer = startTimer( 0 );} elseif ( timer != 0 ) {killTimer( timer );timer = 0;};}void MandoWindow::startDrag(void){Display *display = XOpenDisplay(NULL);XTestFakeButtonEvent( display, 1, True, 0 );XCloseDisplay( display );}void MandoWindow::stopDrag(void){Display *display = XOpenDisplay(NULL);XTestFakeButtonEvent( display, 1, False, 0 );XCloseDisplay( display );// ui.singleClickRadio->setChecked( true );}void MandoWindow::click(void){Display *display = XOpenDisplay(NULL);XTestFakeButtonEvent( display, 1, True, 0 );XTestFakeButtonEvent( display, 1, False, 250 );XCloseDisplay( display );}void MandoWindow::mouseMove( int x, int y ){Display *display = XOpenDisplay(NULL);int screen = DefaultScreen( display );XTestFakeMotionEvent( display, screen, x, y, 0 );XCloseDisplay( display );}void MandoWindow::timerEvent( QTimerEvent *e ){if ( e->timerId() == timer ) {try {assert( pointerRecognition );Vector camPos( 3 ), pos( 3 );image< rgba< unsigned char > > frame( grabColourFrame() );} catch ( exception & ) {assert( timer != 0 );killTimer( timer );ui.activateCheckBox->setChecked( false );};} elseQWidget::timerEvent( e );}image< rgba< unsigned char > > MandoWindow::grabColourFrame(void)throw (mimasexception){assert( input );image< rgba< unsigned char > > retVal;(*input) >> retVal;return retVal;}