test-SeaBee3MainGUI.cpp

00001 #include "Qt/SeaBee3GUICommunicator.H"
00002 #include "Qt/ui/SeaBee3GUI.h"
00003 #include "Component/ModelManager.H"
00004 #include <qapplication.h>
00005 #include <Ice/Ice.h>
00006 #include <Ice/Service.h>
00007 #include "Media/FrameSeries.H"
00008 #include "Transport/FrameIstream.H"
00009 #include "Image/Image.H"
00010 #include "Image/Pixels.H"
00011 #include "Raster/Raster.H"
00012 #include "Image/CutPaste.H"
00013 #include "Robots/SeaBeeIII/XBox360RemoteControlI.H"
00014 
00015 class SeaBee3GUIService : public Ice::Service {
00016   protected:
00017     virtual bool start(int, char* argv[]);
00018     virtual bool stop() {
00019       if (itsMgr)
00020         delete itsMgr;
00021       return true;
00022     }
00023 
00024   private:
00025     Ice::ObjectAdapterPtr itsAdapter;
00026     ModelManager *itsMgr;
00027 };
00028 
00029 bool SeaBee3GUIService::start( int argc, char ** argv )
00030 {
00031   QApplication a( argc, argv );
00032 
00033   itsMgr = new ModelManager("SeaBee3 GUI");
00034 
00035   //Create the adapter
00036 
00037   char adapterStr[255];
00038   LINFO("Creating Adapter");
00039   sprintf(adapterStr, "default -p %i", 12345);
00040   itsAdapter = communicator()->createObjectAdapterWithEndpoints("RobotBrainPort",
00041                                                                 adapterStr);
00042 
00043   LINFO("Initializing Main Form");
00044   SeaBee3MainDisplayForm *mainForm = new SeaBee3MainDisplayForm();
00045   mainForm->init(itsMgr);
00046 
00047   LINFO("Creating Communicator");
00048   nub::soft_ref<SeaBee3GUICommunicator> GUIComm(new SeaBee3GUICommunicator(*itsMgr, "SeaBee3GUICommunicator", "SeaBee3GUICommunicator"));
00049   itsMgr->addSubComponent(GUIComm);
00050 
00051   LINFO("Registering GUI With GUICommunicator");
00052   GUIComm->registerGUI(mainForm);
00053 
00054   LINFO("Registering Communicator with GUI");
00055   mainForm->registerCommunicator(GUIComm);
00056 
00057   LINFO("Starting Up GUI Comm");
00058   GUIComm->init(communicator(), itsAdapter);
00059 
00060   LINFO("Starting XBox360RemoteControl");
00061   nub::soft_ref<XBox360RemoteControlI> xbox360remote(new XBox360RemoteControlI(0,*itsMgr, "XBox360RemoteControl", "XBox360RemoteControl"));
00062 
00063   LINFO("XBox360RemoteControl Created");
00064   itsMgr->addSubComponent(xbox360remote);
00065 
00066   LINFO("XBox360RemoteControl Added As Sub Component");
00067   xbox360remote->init(communicator(), itsAdapter);
00068 
00069   LINFO("XBox360RemoteControl Inited");
00070 
00071 
00072   // Parse command-line:
00073   if (itsMgr->parseCommandLine(argc, argv, "", 0, 0) == false) return(1);
00074 
00075   itsAdapter->activate();
00076 
00077   LINFO("Starting Manager");
00078   itsMgr->start();
00079 
00080   LINFO("Showing Main Form");
00081   mainForm->show();
00082 
00083   LINFO("Waiting for Main Form to exit");
00084   a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
00085 
00086   int retval = a.exec();
00087 
00088   itsMgr->stop();
00089 
00090   return retval;
00091 
00092 }
00093 
00094 // ######################################################################
00095 int main(int argc, char** argv) {
00096 
00097   SeaBee3GUIService svc;
00098   return svc.main(argc, argv);
00099 }
00100 
Generated on Sun May 8 08:41:15 2011 for iLab Neuromorphic Vision Toolkit by  doxygen 1.6.3