Changeset 329


Ignore:
Timestamp:
03/31/2010 10:42:13 AM (11 years ago)
Author:
KDucasse
Message:
 
Location:
UH/SAMGAR/SAMGAR Gui/Trunk/SourceFiles
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • UH/SAMGAR/SAMGAR Gui/Trunk/SourceFiles/Key.cpp

    r142 r329  
    5555                        Network::connect(string(TempVar).c_str(),"/PortForModules"); 
    5656                        Network::connect("/PortForModules",string(TempVar).c_str()); 
     57                        yarp::os::Time::delay(0.25); 
     58 
    5759                        } 
    5860                        else if(myvar.indexOfWholeWord(String("/Port"))==7) 
     
    6567                        } 
    6668                } 
    67         //      MyComponent->startTimer(5000); 
     69 
    6870     } 
    6971 
     
    8587    } 
    8688 
    87     ~HelloWorldWindow()   { /* (the content component will be deleted automatically, so no need to do it here) */    } 
     89    ~HelloWorldWindow()   { /*deleteAllChildren();*//* (the content component will be deleted automatically, so no need to do it here) */    } 
    8890 
    8991    void closeButtonPressed()    
    9092        { 
    91         Network::fini(); 
    92                 JUCEApplication::quit(); 
     93                JUCEApplication::quit();    
    9394         
    9495        } // little cross top right 
     
    9798class JUCEHelloWorldApplication : public JUCEApplication 
    9899{ 
    99      
     100    Network yarp; 
    100101    HelloWorldWindow* helloWorldWindow; 
    101102 
     
    110111    { 
    111112        if (helloWorldWindow != 0) 
    112             delete helloWorldWindow; 
     113            delete helloWorldWindow; //2 
    113114    } 
    114115 
  • UH/SAMGAR/SAMGAR Gui/Trunk/SourceFiles/MainComponent.cpp

    r142 r329  
    22 
    33#include "MainComponent.h" 
     4 
    45 
    56#define definedsizeofball 50 
     
    1415using namespace std; 
    1516 
     17 
    1618#define local 1 
    1719#define global  2 
     
    2224string NameofMigrate; 
    2325 
    24 BufferedPort<Bottle> ThePortForModules; 
    25  
    26  
    27  
     26float LineThick = 1.2; 
     27 
     28// static BufferedPort<Bottle> ThePortForModules; 
     29string RememberName; 
     30 Port SendAdminCommands; 
     31 
     32 list<connections> AllConnectionsCOPY; 
     33 
     34double OriginalXsize =1200; 
     35double OriginalYsize =600; 
     36 
     37double TimeBetween = 10; 
     38double TimeOverall = 100; 
     39 
     40bool turnoff = false; 
     41 
     42         BufferedPort<Bottle> ThePortForModules; 
     43 BufferedPort<Bottle> MigrationPort; 
    2844 
    2945/*! main window constructor !*/ 
    3046MainComponent::MainComponent ():  
    31 helloWorldLabel (0), quitButton (0),  MytextEditor(0), MytextEditor2(0),        ModParent1(0),      ModChild1(0),  ModChild2(0), 
     47quitButton (0),  MytextEditor(0), MytextEditor2(0),     ModParent1(0),      ModChild1(0),  ModChild2(0), 
    3248ModParent2(0),           LossBox(0),      Connect(0),      NetworkBox(0),               ConnectionStuff(0), ClearLog(0),   RefreshConnect(0), 
    3349StopButton(0),           MigrateButton(0),StartButton(0),  OpenLogButton(0),    SaveLog(0),                     SaveMod(0),    LoadCon(0), 
    34 LoadMod(0),                      SaveCon(0),      DebugButton1(0), DebugButton2(0),     DebugButton3(0),    DebugButton4(0) 
    35 { 
    36  
    37         Network yarp; 
     50LoadMod(0),                      SaveCon(0),      DebugButton1(0), DebugButton2(0),     DebugButton3(0),    DebugButton4(0),TimeBetweenChecks(0) 
     51{ 
     52 
     53        //companion MyCompanion(); 
     54        //tooltipWindow.setColour(0x1001b00 ,Colour (0xffbdc5f7)); 
     55//      tooltipWindow.setColour(0x1001c10 ,Colour (0xff5f74f1)); 
     56 
     57        TimeBetweenChecks = new Slider ("TimeBetweenChecks"); 
     58        addAndMakeVisible(TimeBetweenChecks); 
     59        TimeBetweenChecks->setBounds(740,550,100,30); 
     60        TimeBetweenChecks->setTextBoxStyle (TimeBetweenChecks->TextBoxAbove ,false, 60, 20); 
     61        TimeBetweenChecks->setValue(5.0,true,true);       
     62        TimeBetweenChecks->setRange (0.1,10,0.01); 
     63 
    3864 
    3965        WhatShownDebug[0]=1; 
     
    4571        DebugButton1 = new TextButton (String::empty); 
    4672        addAndMakeVisible (DebugButton1); 
    47         DebugButton1->setBounds(740,20,100,30); 
     73        DebugButton1->setBounds(740,20,100,25); 
    4874        DebugButton1->setButtonText (T("debug priority 1 on")); 
    4975    DebugButton1->addButtonListener (this); 
     
    5278        DebugButton2 = new TextButton (String::empty); 
    5379        addAndMakeVisible (DebugButton2); 
    54         DebugButton2->setBounds(740,50,100,30); 
     80        DebugButton2->setBounds(740,50,100,25); 
    5581        DebugButton2->setButtonText (T("debug priority 2 on")); 
    5682    DebugButton2->addButtonListener (this); 
     
    5985        DebugButton3 = new TextButton (String::empty); 
    6086        addAndMakeVisible (DebugButton3); 
    61         DebugButton3->setBounds(740,80,100,30); 
     87        DebugButton3->setBounds(740,80,100,25); 
    6288        DebugButton3->setButtonText (T("debug priority 3 on")); 
    6389    DebugButton3->addButtonListener (this); 
     
    6692        DebugButton4 = new TextButton (String::empty); 
    6793        addAndMakeVisible (DebugButton4); 
    68         DebugButton4->setBounds(740,110,100,30); 
     94        DebugButton4->setBounds(740,110,100,25); 
    6995        DebugButton4->setButtonText (T("debug priority 4 on")); 
    7096    DebugButton4->addButtonListener (this); 
    7197        DebugButton4->setConnectedEdges(Button::ConnectedOnTop);         
    72     setSize (1200, 600); 
     98     
    7399 
    74100        SaveLog = new TextButton (String::empty); 
    75101        addAndMakeVisible (SaveLog); 
    76         SaveLog->setBounds(740,150,100,30); 
     102        SaveLog->setBounds(740,150,100,25); 
    77103        SaveLog->setButtonText (T("Save log")); 
    78104    SaveLog->addButtonListener (this); 
     
    98124        StopButton = new TextButton (String::empty); 
    99125        addAndMakeVisible (StopButton); 
    100         StopButton->setBounds(740,310,100,30); 
     126        StopButton->setBounds(740,310-5,100,30); 
    101127        StopButton->setButtonText (T("Stop Modules")); 
    102128    StopButton->addButtonListener (this); 
     
    142168        /********************************************************************/ 
    143169 
    144 //      startTimer (5000); 
     170        startTimer (5000); // was 5000 
     171        /* 
    145172        helloWorldLabel = new Label (String::empty,T("SAMGAR Network Profile")); 
    146173    addAndMakeVisible (helloWorldLabel); 
     
    152179    helloWorldLabel->setColour (TextEditor::textColourId, Colours::black); 
    153180    helloWorldLabel->setColour (TextEditor::backgroundColourId, Colour (0x0)); 
    154  
     181*/ 
    155182        addAndMakeVisible(MytextEditor = new TextEditor()); 
    156183    MytextEditor->setBounds (890, 20, 290, 300); 
     
    172199        ModParent1->setText(T("Parent 1")); 
    173200 
     201 
    174202        addAndMakeVisible(ModParent2 = new ComboBox("N/A")); 
    175203    ModParent2->setBounds (1040,480, 140, 22); 
    176204        ModParent2->setText(T("Parent 2")); 
     205//////  ModParent2->addListener(comboBoxChanged); 
    177206 
    178207        addAndMakeVisible(ModChild1 = new ComboBox("N/A")); 
     
    231260 
    232261        GetCurrentServerName(); 
    233         RegisterMigrationPort(); 
    234  
    235         ThePortForModules.open("/PortForModules"); 
    236         ThePortForModules.setStrict(true); 
    237  
    238 MySizeX=getWidth(); 
    239 MySizeY=getHeight(); 
     262//      RegisterMigrationPort(); 
     263 
     264        static bool opened2 = ThePortForModules.open("/PortForModules"); 
     265 
     266 
     267        ChangeServer(local); 
     268 
    240269PropSizeChangeX=0; 
    241270PropSizeChangeY=0; 
    242  
    243  
    244 } 
     271setSize (1200, 600); 
     272 
     273//RegisterMigrationPort(); 
     274/* 
     275 
     276TESTER 
     277 
     278*/ 
     279/* 
     280AddModule("ModTest1"); 
     281AddPort("ModTest1","PorTest1"); 
     282AddModule("ModTest2"); 
     283AddPort("ModTest2","PorTest2"); 
     284AddPort("ModTest2","PorTest21"); 
     285AddPort("ModTest2","PorTest22"); 
     286AddModule("ModTest3"); 
     287AddPort("ModTest3","PorTest3"); 
     288AddModule("ModTest4"); 
     289AddPort("ModTest4","PorTest4"); 
     290AddModule("ModTest5"); 
     291AddPort("ModTest5","PorTest5"); 
     292AddModule("ModTest6"); 
     293AddPort("ModTest6","PorTest6"); 
     294AddModule("ModTest7"); 
     295AddPort("ModTest7","PorTest7"); 
     296AddModule("ModTest8"); 
     297AddPort("ModTest8","PorTest8"); 
     298AddModule("ModTest9"); 
     299AddPort("ModTest9","PorTest9"); 
     300AddModule("ModTest10"); 
     301AddPort("ModTest10","PorTest10"); 
     302AddModule("ModTest11"); 
     303AddPort("ModTest11","PorTest11"); 
     304AddModule("ModTest12"); 
     305AddPort("ModTest12","PorTest12"); 
     306*/ 
     307 
     308//AddConnection("000000","000000","000000","000000","000000","000000"); // dont like a empty list 
     309/* 
     310AddConnection("ModTest5","PorTest5","ModTest4","PorTest4","lossy","network"); 
     311AddConnection("ModTest12","PorTest12","ModTest2","PorTest2","lossy","network"); 
     312AddConnection("ModTest2","PorTest21","ModTest11","PorTest11","lossy","network"); 
     313AddConnection("ModTest1","PorTest1","ModTest10","PorTest10","lossy","network"); 
     314 
     315AddConnection("ModTest2","PorTest2","ModTest3","PorTest3","lossy","network"); 
     316AddConnection("ModTest2","PorTest21","ModTest4","PorTest4","lossy","network"); 
     317AddConnection("ModTest2","PorTest22","ModTest5","PorTest5","lossy","network"); 
     318*/ 
     319compare_Buttons(); 
     320} 
     321 
    245322 
    246323/*! main window de-structor !*/ 
    247324MainComponent::~MainComponent() 
    248325{ 
     326        /* 
    249327        // save the mod log; 
    250 //      stopTimer(); 
    251 //      MyTime.getCurrentTime(); 
    252 //      String datePlus = MyTime.toString(true,true,true,true); 
    253 //      datePlus = datePlus + ".SamModLog"; 
    254 //      myFileforModReport = datePlus; 
    255 //      myFileforModReport.create (); 
    256 //      myFileforModReport.appendText (MytextEditor2->getText ()); // get from the mod log editor 
    257  
    258  
    259 //      Network::fini(); 
    260  
    261 //      AllConnections.clear(); 
     328        turnoff = true; 
     329         
     330 
     331        MyTime.~Time(); 
     332        stopTimer(); 
     333 
     334//       TempModuleButton->~TextButton(); // deleate before the thing 
     335 
     336//      myFileforLog.close(); 
     337//      File myFileforModReport; 
     338//      File myFileforMod; 
     339//      File myFileforCon; 
     340         
     341 
     342 
     343        internalPath1.~Path(); 
     344        internalPath2.~Path(); 
     345        internalPath3.~Path(); 
     346        internalPath4.~Path(); 
     347        internalPath5.~Path(); 
     348        TempPath.~Path(); 
     349        mynewpath.~Path(); 
     350         
     351        TempPath2.~DrawablePath(); 
     352 
     353 
     354 
     355        myFileforLog.~File(); 
     356        myFileforModReport.~File(); 
     357        myFileforMod.~File(); 
     358        myFileforCon.~File(); 
     359 
    262360 
    263361        MigrationPort.close(); 
    264362        ThePortForModules.close(); 
    265363 
    266  
    267  
    268     deleteAndZero (helloWorldLabel); 
     364        AllConnections.clear(); 
     365        ListOfKnownModules.clear(); 
     366//      SeenModules.clear(); 
     367//      SeenPorts.clear(); 
     368//      SeenLines.clear(); 
     369//      MigrationPlatformsAvail.clear(); 
     370 
     371        AllConnections.~list(); 
     372        ListOfKnownModules.~list(); 
     373//      SeenModules.~list(); 
     374//      SeenPorts.~list(); 
     375//      SeenLines.~list(); 
     376        MigrationPlatformsAvail.~list(); 
     377*/ 
     378 
     379         
     380 
     381//      Network::fini(); 
     382        MigrationPort.close(); 
     383        ThePortForModules.close(); 
     384         
     385//      yarp::os::Time::delay(2); 
     386//      Network::fini(); 
     387//      MigrationPort.~BufferedPort(); 
     388//      ThePortForModules.~BufferedPort(); 
     389 
     390 
     391        AllConnections.clear(); 
     392        ListOfKnownModules.clear(); 
     393        SeenModules.clear(); 
     394        SeenPorts.clear(); 
     395        SeenLines.clear(); 
     396        MigrationPlatformsAvail.clear(); 
     397 
     398//      tooltipWindow.~ToolTipWindow(); 
     399//      deleteAndZero (tooltipWindow); 
    269400    deleteAndZero (quitButton); 
    270401        deleteAndZero (MytextEditor); 
     
    293424    deleteAndZero (DebugButton3); 
    294425        deleteAndZero (DebugButton4); 
    295  
    296         //myFileforLog; 
    297         //File myFileforModReport; 
    298         //File myFileforMod; 
    299         //File myFileforCon; 
     426    deleteAndZero (TimeBetweenChecks); 
     427 
     428//       deleteAllChildren(); 
     429          
    300430} 
    301431 
     
    309439void MainComponent::RegisterMigrationPort (void) 
    310440{ 
    311         IgnoreTimer=true; 
     441//      IgnoreTimer=true; 
     442static bool opened = false; 
     443 
    312444        ChangeServer(global); 
     445 
     446//      Contact CV; 
     447//      Bottle out,in; 
     448//      out.addString("NAME_SERVER query /global"); 
     449//      CV.bySocket("mcast","224.2.1.1",10001); 
     450 
     451//      Network::write(CV,out,in,false); 
     452 
     453//      if(in.size()>0) 
     454//      { 
     455//              String CVB = out.toString().c_str(); 
     456//              AddToLog(CVB + " \n",2); 
     457//      } 
     458 
    313459        NameofMigrate = NameOfServer + "_Migration"; 
    314         static bool opened = MigrationPort.open(NameofMigrate.c_str()); 
    315  
    316         ChangeServer(local); 
    317         IgnoreTimer=false; 
     460        if(opened==false) 
     461        { 
     462                 
     463         opened = MigrationPort.open(NameofMigrate.c_str()); 
     464         
     465        }        
     466         
     467 ChangeServer(local); 
    318468 
    319469        if(opened==true){AddToLog("Addid myself to global server :\n",1);} 
    320         else                    { 
    321                                         AddToLog("could not Add myself to global server :\n",1); 
    322                                         AddToLog("This program will take a long while to shut down :\n",1); 
    323                                         MigrationPort.close(); 
    324                                         } 
    325         AddToLog(NameofMigrate.c_str(),1); 
    326         AddToLog("\n",1); 
    327 } 
     470        else                    {AddToLog("could not Add myself to global server :\n",1);} 
     471 
     472 
     473} 
     474 
    328475 
    329476/*! Migrate function!*/ 
    330 bool MainComponent::Migrate (string nameofwhere) 
     477bool MainComponent::Migrate (string nameofwhere,Bottle Data) 
    331478{ 
    332479        AddToLog(" Attempting to Migrate  \n",1); 
    333480        IgnoreTimer=true; 
     481 
     482 
    334483        ChangeServer(global); 
    335484 
     
    338487        Bottle& MyBottle =MigrationPort.prepare(); 
    339488        MyBottle.clear(); 
    340  
    341         nameofwhere = "/" + nameofwhere + "_Migration"; 
     489        MyBottle.copy(Data,0,Data.size()); 
     490 
     491        //nameofwhere = "/" + nameofwhere + "_Migration"; 
    342492 
    343493        AddToLog(nameofwhere.c_str(),1);AddToLog(" to ",1);AddToLog(MigrationPort.getName().c_str(),1);AddToLog("\n",1); 
    344494 
    345 bool true1= MigrationPort.addOutput(nameofwhere.c_str());   
    346  
    347  
    348 if(true1==false){AddToLog("Could not connect to migrate, operation aborted \n",1);} 
    349  
    350  
    351 if(true1==false){ChangeServer(local);IgnoreTimer=false; return false;} 
    352  
    353   string line; 
    354   ifstream myfile ("Personality.txt"); 
     495        bool true1= MigrationPort.addOutput(nameofwhere.c_str());   
     496 
     497        if(true1==false){AddToLog("Could not connect to migrate, operation aborted \n",1);ChangeServer(local);IgnoreTimer=false; return false;} 
    355498   
    356   if (myfile.is_open()) 
     499         MigrationPort.write(); 
     500        AddToLog(" Migration Sucsessfull \n",1); 
     501 
     502        Network::disconnect(MigrationPort.getName(),nameofwhere.c_str()); 
     503        Network::disconnect(nameofwhere.c_str(),MigrationPort.getName()); 
     504 
     505 
     506        ChangeServer(local); 
     507        return true ;// if its sucsessfull 
     508} 
     509 
     510 
     511 
     512 
     513 
     514/*! update a list of available platforms we can migrate to !*/ 
     515Bottle MainComponent::UpdateMigrationProto(void) 
     516{ 
     517        ChangeServer(global); 
     518         
     519        Bottle msg, reply,msg2,reply2,Bplatforms; 
     520 
     521    msg.addString("bot"); 
     522    msg.addString("list"); 
     523    AddToLog(T("Requesting list of ports from name server\n"),2); 
     524    Network::write("/global",msg,reply); 
     525 
     526        Bplatforms.addInt(50); 
     527 
     528  for (int i=1; i<reply.size(); i++)  
    357529  { 
    358         //  AddToLog(" opened file  \n",1); 
    359     while (! myfile.eof() ) 
    360     { 
    361      getline (myfile,line); 
    362           MyBottle.addString(line.c_str()); 
    363     } 
    364     myfile.close(); 
    365 //      AddToLog("   \n",1); 
    366  } 
    367   else 
    368   { 
    369           AddToLog(" could not open file \n",1); 
     530          ConstString port = reply.get(i).asList()->check("name",Value("")).asString(); 
     531  
     532          if (port!="" && port!="fallback" && port!="/global" && port!=NameofMigrate.c_str())  
     533                        { 
     534                                if(Network::connect(NameofMigrate.c_str(),port)) 
     535                                        { 
     536                                        AddToLog(port.c_str(),2); 
     537                                        AddToLog(" \n",2); 
     538                                        Bplatforms.addString(port); 
     539                                        } 
     540                                else 
     541                                { 
     542                                        Network::unregisterName(port); 
     543                                } 
     544                        } 
     545          } 
    370546          ChangeServer(local); 
    371           IgnoreTimer=false; 
    372           return false; 
    373   } 
    374  
    375  MigrationPort.write(); 
    376  AddToLog(" Migration Sucsessfull \n",1); 
    377  
    378  Network::disconnect(MigrationPort.getName(),nameofwhere.c_str()); 
    379  Network::disconnect(nameofwhere.c_str(),MigrationPort.getName()); 
    380  
    381  
    382  ChangeServer(local); 
    383 IgnoreTimer=false; 
    384 return true ;// if its sucsessfull 
    385 } 
    386  
    387  
    388  
    389  
    390  
    391 /*! update a list of available platforms we can migrate to !*/ 
    392 void MainComponent::UpdateMigrationProto(void) 
    393 { 
    394 IgnoreTimer=true; 
    395 FILE *inpipe; 
    396 char inbuf[200]; 
    397 String hello; 
    398 int lineno = 0; 
    399 //int start,fin; 
    400  
    401 ChangeServer(global); 
    402 RegisterMigrationPort(); // registers istelf, doesn't matter cos it cleans the server anyways 
    403 // if its windows 
    404 #ifdef  Rectangle 
    405         inpipe = _popen("yarp clean","r"); 
    406         inpipe = _popen("yarp name list","r"); 
    407 #else 
    408         inpipe =  popen("yarp clean","r"); 
    409     inpipe =  popen("yarp name list", "r"); 
    410 #endif 
    411  
    412         MigrationPlatformsAvail.clear(); 
    413     if (!inpipe){AddToLog("Cannot access needid function to find other platforms\n",1);   } 
    414     else  
    415         { 
    416                 AddToLog(" List of possible migration platforms :\n",1); 
    417  
    418          while (fgets(inbuf, sizeof(inbuf), inpipe))  
    419                  { 
    420  
    421                     String mystring = inbuf; 
    422                         mystring=mystring +"\n"; 
    423                         if(mystring.containsChar('/')==true && mystring.contains(String("Migration"))==true) 
    424                          { 
    425                                  int start = mystring.indexOf(String("/")); 
    426                                  int fin   = mystring.indexOf(start,String(" ")); 
    427  
    428                                  mystring=mystring.substring(start,fin); 
    429                                  MigrationPlatformsAvail.push_front(string(mystring)); 
    430                                  mystring = "--->"+mystring+   "\n"; 
    431                  AddToLog(mystring,1); 
    432  
    433                                  /// need to add it to the list here as well 
    434                          } 
    435                 } 
    436     } 
    437  ChangeServer(local); 
    438  
    439  IgnoreTimer=false; 
     547 
     548          return Bplatforms; 
    440549} 
    441550 
     
    446555void MainComponent::ConnectionAutoUpdate(void) 
    447556{ 
     557 
     558/* 
     559         so this goes through all connections, if the daddy button is red then skip else reconnect all the ports. 
     560*/ 
    448561 
    449562                list<connections>::iterator it2; 
     
    451564                TextButton* TempModuleButton55; 
    452565 
     566//AddToLog("about to go into all connections \n",2); 
     567 
     568 
     569 
     570 
    453571 
    454572        for ( it2=AllConnections.begin() ; it2 != AllConnections.end(); it2++ ) 
    455573                { 
     574                //      AddToLog("in for loop \n",2); 
    456575                        connections mytempconnect; 
    457576                        mytempconnect = *it2; 
     
    469588                        skip = false; 
    470589 
    471  
     590                //      AddToLog("Checking for false connections \n",2); 
    472591                        for ( itTextButton55=SeenModules.begin() ; itTextButton55 != SeenModules.end(); itTextButton55++ ) 
    473592                        { 
     
    480599 
    481600 
     601 
     602                        // ok this is where it messes up if its not on the same system. I think the skip isn't working 
     603                        // doesn't seem to slow down the system much, skipping works 
     604 
    482605                        if(skip==false) 
    483                         { 
    484  
     606                        {        
     607                //              AddToLog("not skipping connections \n",2); 
    485608                                true1=Network::isConnected(firststring.c_str(),secoundstring.c_str(),true); 
    486609                                true2=Network::isConnected(secoundstring.c_str(),firststring.c_str(),true); 
     
    504627                        else 
    505628                        { 
     629                        //      AddToLog("skipping connections \n",2); 
    506630                                mytempconnect.IsConnected=false; 
    507631                        } 
     632                         
    508633                        *it2=mytempconnect; 
    509634                        RefreashConnections(); 
     
    511636 
    512637} 
    513 /*! checks the main port for each module can be connected to so its up and running!*/ 
     638 
     639 
     640/*! LEGACY CODE: checks the main port for each module can be connected to so its up and running!*/ 
    514641void MainComponent::CheckConnectionRight() 
    515642{ 
     643 
     644        /* so in this i only check the maim module port, if its not running i assume all other ports are dead */ 
    516645                list<TextButton*>::iterator itTextButton66; 
    517646                TextButton* TempModuleButton66; 
     647                Contact MyCont; 
    518648 
    519649        for ( itTextButton66=SeenModules.begin() ; itTextButton66 != SeenModules.end(); itTextButton66++ ) 
    520650                { 
    521651                        TempModuleButton66 = *itTextButton66; 
     652                        //if (TempModuleButton66-> 
    522653                        if(Colours::red!=TempModuleButton66->findColour(0x1000102,false)) 
    523654                        { 
    524655                                string mystring = TempModuleButton66->getButtonText(); 
    525656                                mystring = "/Main_" + mystring; 
     657                                MyCont=Network::queryName(mystring.c_str()); 
     658 
     659                                if(MyCont.isValid()==false){break;} 
     660                                 
     661                                if(ThePortForModules.isClosed()==true){ThePortForModules.open("/PortForModules");AddToLog("Attempting to recover local port \n",2);} 
    526662 
    527663                                //ought to be check for connection and if not connected then reconnect; 
     664                        //      if(ThePortForModules.is 
    528665                                if(Network::isConnected(mystring.c_str(),"/PortForModules",true)==false || Network::isConnected("/PortForModules",mystring.c_str(),true)==false) 
    529666                                { 
     667//                              Network: 
    530668                                        if(Network::connect(mystring.c_str(),"/PortForModules","tcp",true)==false || Network::connect("/PortForModules",mystring.c_str(),"tcp",true)==false) 
    531669                                        { 
    532670                                                TempModuleButton66->setColour(0x1000102 ,Colours::red); 
    533671                                                AddToLog("The module Main_"+TempModuleButton66->getButtonText()+ " is in error \n",2); 
     672                                                RememberName=TempModuleButton66->getButtonText(); 
     673                                                ListOfKnownModules.remove_if(DelFromList); 
     674                                                SendOffModuleList(); // if a modules removed send off the new list 
    534675                                        } 
    535676                                } 
     
    539680} 
    540681 
     682//bool single_digit (const int& value) { return (value<10); } 
     683bool DelFromList (ModuleStruct& value) 
     684{ 
     685        return  !value.name.compare(RememberName); 
     686} 
     687 
     688 
     689// the idea here is that everytime a new module is found or lost it will send off the new list to  
     690// all the other modules 
     691void MainComponent::SendOffModuleList() 
     692{ 
     693 
     694        Bottle& RR = ThePortForModules.prepare(); 
     695        RR.clear(); 
     696        RR.addInt(105); 
     697for ( modulestructIT=ListOfKnownModules.begin() ; modulestructIT != ListOfKnownModules.end(); modulestructIT++ ) 
     698                { 
     699                RR.addString(modulestructIT->name.c_str()); 
     700                RR.addString(modulestructIT->catagory.c_str()); 
     701                RR.addString(modulestructIT->subcatagory.c_str()); 
     702                } 
     703ThePortForModules.write(); 
     704} 
    541705/*! 
    542706Time callback checks modules and connections , also checks the keytomodules port which recives data from ports ie stop commands etc 
     
    546710void MainComponent::timerCallback() 
    547711{ 
    548         if(IgnoreTimer==false) 
     712 
     713                stopTimer(); 
     714                CheckConnect();                         //checks modules 
     715                ConnectionAutoUpdate();         // checks ports to port 
     716                if(AllConnections.size()>0){RefreashConnections();} 
     717        //      GetModuleCommands(); 
     718        //      if(turnoff==true){ 
     719                        startTimer (TimeBetweenChecks->getValue()*1000); 
     720        //      } 
     721 
     722} 
     723 
     724void MainComponent::CheckConnect(void) 
     725{ 
     726// go through all the main ports to see if modules are ok 
     727// else set there name to red 
     728 
     729 
     730string mystring; 
     731 
     732        for ( itTextButton2=SeenModules.begin() ; itTextButton2 != SeenModules.end(); itTextButton2++ ) 
     733                { 
     734                        TempModuleButton = *itTextButton2; 
     735                        mystring="/Main_"+TempModuleButton->getButtonText(); 
     736 
     737                        if(Colours::red!=TempModuleButton->findColour(0x1000102,false)) 
     738                        { 
     739                                if(Network::isConnected(mystring.c_str(),"/PortForModules",true)==false)  
     740                                        { 
     741                                                // shouldnt need this really, when the server says its there it should connect 
     742                                        //      if(Network::connect(mystring.c_str(),"/PortForModules","tcp",true)==false || Network::connect("/PortForModules",mystring.c_str(),"tcp",true)==false) 
     743                                        //      { 
     744                                                        TempModuleButton->setColour(0x1000102 ,Colours::red); 
     745                                                        // just paint it so it gets refreshed real quick so the next method can see it!! 
     746                                                        repaint(); 
     747                                        //      } 
     748                                        } 
     749                                else if(Network::isConnected("/PortForModules",mystring.c_str(),true)==false) 
     750                                { 
     751                                                        TempModuleButton->setColour(0x1000102 ,Colours::red); 
     752                                                        // just paint it so it gets refreshed real quick so the next method can see it!! 
     753                                                        repaint(); 
     754 
     755                                } 
     756                        } 
     757                } 
     758 
     759                // balls it, just check if one of the daddys isn't online then disconnect. 
     760} 
     761 
     762void MainComponent::GetModuleCommands(void) 
     763{ 
     764        static list<string>::iterator it; 
     765        Bottle *b,*b2; 
     766 
     767        if(MigrationPort.getPendingReads()>0) 
    549768        { 
    550                 ChangeServer(local); 
    551                 Network yarp; 
    552                  
    553                         CheckConnectionRight(); // looks like the problem is in here 
    554                  
    555                         ConnectionAutoUpdate();  
    556                  
    557                         GetModuleCommands();  
    558                  
    559         } 
    560 } 
    561  
    562  
    563 void MainComponent::GetModuleCommands(void) 
    564 { 
    565         static list<string>::iterator it; 
    566         Bottle *b; 
     769                        b2 = ThePortForModules.read(true); 
     770                        if(b2!=NULL && b2->isNull()==false) // if theres data on the port 
     771                        { 
     772                                AddToLog("Recived migration data \n",2); 
     773                                 Bottle& cc = ThePortForModules.prepare(); 
     774                                 cc.clear(); 
     775                                 cc.addInt(3003); 
     776                                 cc.append(*b2); 
     777                        } 
     778        } 
     779 
    567780                while(ThePortForModules.getPendingReads()>0) 
    568781                { 
     782 
     783                        AddToLog("Recived Data \n",2); 
    569784                    b = ThePortForModules.read(true); 
    570785                        if(b!=NULL && b->isNull()==false) // if theres data on the port 
    571786                        { 
    572787                                 Bottle& cc = ThePortForModules.prepare(); 
     788                                 cc.clear(); 
    573789                                /// if its a report on how well its done then add to a log else 
    574790                                if(b->get(0).asInt()==20) 
     
    578794                                        MyNewString = MyNewString + " achived score " + String(ModScore) + " \n";  
    579795                                        MytextEditor2->insertTextAtCursor(MyNewString); 
     796                                } 
     797 
     798                                // migrate 
     799                                else if(b->get(0).asInt()==36) 
     800                                { 
     801                                        Bottle MigrationData; 
     802                                        MigrationData.copy(*b,2,b->size()-1); 
     803                                        bool SucMigrate = Migrate (b->get(1).asString().c_str(),MigrationData); 
     804                                        cc.addInt(1001); 
     805                                        if(SucMigrate==true){cc.addInt(1);} 
     806                                        else                            {cc.addInt(0);} 
     807                                        ThePortForModules.write(); 
     808                                } 
     809                                // register migration 
     810                                else if(b->get(0).asInt()==4004) 
     811                                { 
     812                                AddToLog("Registering migration port \n",2); 
     813                                RegisterMigrationPort(); 
    580814                                } 
    581815                                // add to log 
     
    587821                                        AddToLog(MyNewString,b->get(3).asInt()); 
    588822                                } 
    589                                 else if(b->get(0).asInt()==40) 
     823                                // get migration info 
     824                                else if(b->get(0).asInt()==40)  
    590825                                { 
    591                                         UpdateMigrationProto(); 
    592                                         cc.addInt(50); // code for platforms 
    593                                         for ( it=MigrationPlatformsAvail.begin() ; it != MigrationPlatformsAvail.end(); it++ ) 
    594                                         { 
    595                                                 string temppy = *it; 
    596                                                 cc.addString(temppy.c_str()); 
    597                                         } 
     826 
     827 
     828                                        cc=UpdateMigrationProto(); 
    598829                                        ThePortForModules.write(); 
    599830 
    600831                                } 
     832///// reply back with new data once a new module has been created 
    601833                                // just send on  
     834                                // when new data is got from the module giving it new data send off the module list 
    602835                                else if(b->get(0).asInt()==10) 
    603836                                { 
    604                                         cc.addInt(10); 
    605                                         cc.addString(b->get(1).asString()); 
    606                                         cc.addString(b->get(2).asString()); 
    607                                         cc.addString(b->get(3).asString()); 
    608                                         ThePortForModules.write(); 
     837                                ModuleStruct TempStruct; 
     838 
     839                                TempStruct.name        =b->get(1).asString().c_str(); 
     840                                TempStruct.catagory    =b->get(2).asString().c_str(); 
     841                                TempStruct.subcatagory =b->get(3).asString().c_str(); 
     842 
     843                                ListOfKnownModules.push_front(TempStruct); 
     844                 
     845                        //      AddToLog("GotCatagoryData \n",1); 
     846                                SendOffModuleList(); 
    609847                                } 
    610848 
     
    612850                                else if(b->get(0).asInt()>=0 && b->get(0).asInt()<=2) 
    613851                                { 
    614                                         AddToLog("recived command to stop all modules \n",1); 
     852                        //              AddToLog("recived global module command \n",1); 
    615853                                        cc.addInt(b->get(0).asInt()); 
    616854                                        ThePortForModules.write(); 
     
    619857                                else if(b->get(0).asInt()>=3 && b->get(0).asInt()<=5) 
    620858                                { 
    621                                 AddToLog("recived command to stop a module \n",1); 
     859                        //      AddToLog("recived Personal module command \n",1); 
    622860                                        cc.addInt   (b->get(0).asInt()); 
    623861                                        cc.addString(b->get(1).asString()); 
     
    629867 
    630868 
    631                 if(MigrationPort.Ivebeenused==1) 
    632                 { 
    633                         AddToLog("Someone has tryed to acess my migration port \n",1); 
    634                         MigrationPort.Ivebeenused=0; 
    635                 } 
    636  
    637  
    638  
    639  
    640  
     869//              if(MigrationPort.Ivebeenused==1) 
     870//              { 
     871//                      AddToLog("Someone has tryed to acess my migration port \n",1); 
     872//                      MigrationPort.Ivebeenused=0; 
     873//              } 
     874} 
     875 
     876 
     877bool ListDeleatingFunction(ModuleStruct x,ModuleStruct y) 
     878{ 
     879        if(x.name==y.name){return true;} 
     880        return false; 
     881} 
     882 
     883/*! Sorts the varibles in the known module list!*/ 
     884bool ListSortingFunction(ModuleStruct x,ModuleStruct y) 
     885{ 
     886        if(x.name>y.name){return true;} 
     887        return false; 
    641888} 
    642889 
     
    656903        // need to put a bit in here to add to the port list and give it its id 
    657904 
     905        String realname = "/Main_"+name; 
     906        Network::connect(realname,"/PortForModules","tcp",true); 
     907        Network::connect("/PortForModules",realname,"tcp",true); 
     908 
     909 
    658910for ( itTextButton2=SeenModules.begin() ; itTextButton2 != SeenModules.end(); itTextButton2++ ) 
    659911                { 
     
    663915                        TempModuleButton->setColour(0x1000102 ,Colours::black); 
    664916                        IsItOnList=true; 
    665                         } 
    666                 } 
     917                } 
     918} 
    667919 
    668920 
     
    671923        AddToLog("New Module called " + name +" has been found \n",1); 
    672924        TotalModules++; 
    673         SeenModules.push_front (new TextButton (String::empty)); 
    674         SeenModules.front()->setButtonText (name); 
     925        SeenModules.push_front (new TextButton (name,name)); 
    675926        SeenModules.front()->setRadioGroupId(TotalModules); 
    676927        MainComponent::Updatemodules(); 
     
    682933        { 
    683934        AddToLog("Module called " + name +" has been reconnected \n",2); 
    684          
    685935        } 
    686936} 
     
    713963                        if(IsItOnList==false) 
    714964                        { 
    715                         SeenPorts.push_front (new TextButton (String::empty)); 
    716                         SeenPorts.front()->setButtonText (name); 
     965                        SeenPorts.push_front (new TextButton (name,name)); 
     966                        //SeenPorts.front()->setButtonText (name); 
    717967                        AddToLog("Found port " + name + " child of " + Parent + " \n",1); 
    718968                        SeenPorts.front()->setRadioGroupId(TempModuleButton->getRadioGroupId()); 
    719                         ModChild1->addItem(name,menucount2); 
    720                         ModChild2->addItem(name,menucount2); 
     969                        //ModChild1->addItem(name,menucount2); 
     970                        //ModChild2->addItem(name,menucount2); 
    721971                        menucount2++; 
    722972                        } 
     
    731981 
    732982} 
     983 
     984 
     985 
    733986/*! 
    734987 
     
    8071060*/ 
    8081061 
     1062 
     1063void MainComponent::compare_Buttons () 
     1064{ 
     1065list<connections>::iterator it2; 
     1066int var[100]; 
     1067 
     1068int numberofmyconnections =0; 
     1069int placeinlist=0; 
     1070bool Alphaon = true; 
     1071// first lets assign colors to each button dependent on connections 
     1072for ( itTextButton2=SeenModules.begin() ; itTextButton2 != SeenModules.end(); itTextButton2++ ) // secound daddy 
     1073                { 
     1074                placeinlist++; 
     1075                numberofmyconnections =0; 
     1076                TempModuleButton2 = *itTextButton2; 
     1077                Alphaon = true; 
     1078                for ( it2=AllConnections.begin() ; it2 != AllConnections.end(); it2++ ) 
     1079                        { 
     1080                        connections mytempconect = *it2; 
     1081                        if(mytempconect.Daddyfirstport == TempModuleButton2->getButtonText() || mytempconect.Daddysecoundport==TempModuleButton2->getButtonText()) 
     1082                                { 
     1083                                        numberofmyconnections ++; 
     1084                                        if(mytempconect.IsConnected==false){Alphaon=false;} 
     1085                                } 
     1086                        } 
     1087                //                                         red,green,blue 
     1088                uint8 green,blue,red; 
     1089 
     1090                 
     1091                //; 
     1092        //      Colour MyColor(float(0.5),float(0.5),float(0.5),float(0.5)); 
     1093        //      Colour MyNewColor = MyColor.withRotatedHue(float((1/360)*(80*(numberofmyconnections+placeinlist)))); 
     1094        //      Colour::Colour          ( const float    hue,   const float  saturation,        const float  brightness,        const float  alpha      )        
     1095 
     1096 
     1097                red   = (placeinlist*70)+(numberofmyconnections*85); 
     1098                green = (placeinlist*100)+(numberofmyconnections*45); 
     1099                blue  = (placeinlist*50)+(numberofmyconnections*65); 
     1100                 
     1101                while(green>255){green=green-255;} 
     1102                while(blue>255){blue=blue-255;} 
     1103                while(red>255){red=red-255;} 
     1104 
     1105 
     1106                var[placeinlist]=numberofmyconnections; 
     1107                TempModuleButton2->setColour(0x1000100,Colour (red, green, blue,float(1))); 
     1108                } 
     1109 
     1110 
     1111// sort them compared to number of outputs 
     1112for(int cvb=0;cvb<SeenModules.size()*2;cvb++) 
     1113{ 
     1114placeinlist=0; 
     1115itTextButton2=SeenModules.begin(); 
     1116itTextButton3=SeenModules.begin(); 
     1117itTextButton3++; 
     1118for ( itTextButton=itTextButton3 ; itTextButton != SeenModules.end(); itTextButton++ ) // first daddy 
     1119        { 
     1120                placeinlist++; 
     1121                TempModuleButton  = *itTextButton; 
     1122                TempModuleButton2 = *itTextButton2; 
     1123                if(var[placeinlist]>var[placeinlist+1]) 
     1124                { 
     1125                        *itTextButton2=TempModuleButton; 
     1126                        *itTextButton=TempModuleButton2; 
     1127                        int tempyr = var[placeinlist]; 
     1128                        var[placeinlist]=var[placeinlist+1]; 
     1129                        var[placeinlist+1]=tempyr; 
     1130                } 
     1131                if(placeinlist+1>SeenModules.size())// wrap around for the list 
     1132                { 
     1133                if(var[placeinlist]>var[0]) 
     1134                { 
     1135                        *itTextButton2=TempModuleButton; 
     1136                        *itTextButton=TempModuleButton2; 
     1137                        int tempyr = var[placeinlist]; 
     1138                        var[placeinlist]=var[placeinlist+1]; 
     1139                        var[0]=tempyr; 
     1140                } 
     1141 
     1142                } 
     1143 
     1144 
     1145                itTextButton2++; 
     1146        } 
     1147} 
     1148 
     1149        /// then swap them 
     1150 
     1151for ( itTextButton=SeenModules.begin() ; itTextButton != SeenModules.end(); itTextButton++ ) // first daddy 
     1152        { 
     1153        for ( itTextButton2=SeenModules.begin() ; itTextButton2 != SeenModules.end(); itTextButton2++ ) // secound daddy 
     1154                { 
     1155                        TempModuleButton = *itTextButton; 
     1156                        TempModuleButton2 = *itTextButton2; 
     1157 
     1158                for ( it2=AllConnections.begin() ; it2 != AllConnections.end(); it2++ ) 
     1159                        { 
     1160                                connections mytempconect = *it2; 
     1161                                if(mytempconect.Daddyfirstport == TempModuleButton2->getButtonText() && mytempconect.Daddysecoundport==TempModuleButton->getButtonText()) 
     1162                                { 
     1163                                        *itTextButton2=TempModuleButton; 
     1164                                        *itTextButton=TempModuleButton2; 
     1165                                } 
     1166                        } 
     1167        } 
     1168} 
     1169 
     1170 
     1171} 
     1172 
     1173 
     1174 
     1175 
     1176/* New method : does the arrangement of buttons etc. */ 
    8091177void MainComponent::RefreashConnections(void) 
    8101178{ 
    811         static int HaveIDoneThisBefore=0; 
     1179static int HaveIDoneThisBefore22=0; 
    8121180    list<connections>::iterator it2; 
    813  
     1181static int HowManyConp[50]; 
    8141182 
    8151183int mylittlecount=0; 
    816 /// puts everything top left to begin with 
     1184 
     1185float Yspace            =       (590-20)+(getHeight()-OriginalYsize) ; // how much screen room 
     1186float Xspace            =       (700-10)+(getWidth()-OriginalXsize) ; 
     1187float Ytab                      =       Yspace/SeenModules.size(); 
     1188float ButtonSizeY       =       (Ytab/100)*60; 
     1189 
     1190compare_Buttons(); 
     1191 
    8171192for ( itTextButton=SeenModules.begin() ; itTextButton != SeenModules.end(); itTextButton++ ) 
    8181193        { 
    8191194                TempModuleButton = *itTextButton; 
    820                 TempModuleButton->setTopLeftPosition(20,20);   
    821         } 
    822 /// puts the modules across and down, if a child is found then it goes right and down, else it just goes down and 
    823 /// if it hits anouther module it pushes that one down 
    824 for(int ii=0;ii<10;ii++) 
    825 { 
    826 for ( itTextButton=SeenModules.begin() ; itTextButton != SeenModules.end(); itTextButton++ ) 
     1195                TempModuleButton->setSize(50,ButtonSizeY); 
     1196                TempModuleButton->setTopLeftPosition(20,17+(Ytab*mylittlecount));   
     1197                mylittlecount++; 
     1198        } 
     1199 
     1200MainComponent::SortPorts(); // puts the ports next to the main modules 
     1201 
     1202// draw the lines 
     1203for(int nnm=0;nnm<50;nnm++) 
     1204{ 
     1205HowManyConp[nnm]=5; 
     1206} 
     1207 
     1208 
     1209int ColorLineCount=0; 
     1210int ColorLineShiftDown=0; 
     1211ColorLineCount=0; 
     1212 for ( itTextButton=SeenPorts.begin() ; itTextButton != SeenPorts.end(); itTextButton++ ) // first daddy 
    8271213        { 
    828         for ( itTextButton2=SeenModules.begin() ; itTextButton2 != SeenModules.end(); itTextButton2++ ) 
    829                 { 
    830                         TempModuleButton = *itTextButton; 
     1214                TempModuleButton = *itTextButton; 
     1215                HowManyConp[TempModuleButton->getRadioGroupId()]=0; 
     1216        for ( itTextButton2=SeenPorts.begin() ; itTextButton2 != SeenPorts.end(); itTextButton2++ ) // secound daddy 
     1217                { 
     1218                         
    8311219                        TempModuleButton2 = *itTextButton2; 
     1220                         
    8321221 
    8331222                for ( it2=AllConnections.begin() ; it2 != AllConnections.end(); it2++ ) 
    8341223                        { 
    8351224                        connections mytempconect = *it2; 
    836                         /// if there connected move it down and right 
    837                         if(mytempconect.Daddyfirstport == TempModuleButton->getButtonText() && mytempconect.Daddysecoundport==TempModuleButton2->getButtonText()) 
     1225                        if(mytempconect.firstport == TempModuleButton->getButtonText() && mytempconect.secoundport==TempModuleButton2->getButtonText()) 
    8381226                                { 
    839                                 TempModuleButton2->setTopLeftPosition(TempModuleButton->getX()+30,TempModuleButton->getY()+60);//woz 60 
     1227                                        ColorLineCount++; 
     1228                                        ColorLineShiftDown++; 
     1229                                        // 
     1230                                        mytempconect.MyColor=TempModuleButton2->findColour(0x1000100,false); 
     1231                                        float Xstart=0; 
     1232                                        float Ystart=0; 
     1233                                        float Xfin=0; 
     1234                                        float Yfin=0; 
     1235                                        float numberofspacesawaytop = 0; 
     1236                                        float numberofspacesawaybot = 0; 
     1237                                        float StartDown   = 0; 
     1238                                        float StartRight  = 0; 
     1239                                        float SecoundDown =0; 
     1240 
     1241                                        if(TempModuleButton->getY()<TempModuleButton2->getY()) 
     1242                                        { 
     1243                                         Xstart =TempModuleButton->getX()+(TempModuleButton->getWidth()/2); 
     1244                                         Ystart =TempModuleButton->getY()+ TempModuleButton->getHeight(); 
     1245                                         Xfin   =TempModuleButton2->getX()+(TempModuleButton2->getWidth()/2); 
     1246                                         Yfin   =TempModuleButton2->getY(); 
     1247 
     1248                                         numberofspacesawaytop = ((TempModuleButton->getX()-(20+TempModuleButton->getWidth()))/TempModuleButton->getWidth())+1; 
     1249                                         numberofspacesawaybot = ((TempModuleButton2->getX()-(20+TempModuleButton2->getWidth()))/TempModuleButton2->getWidth())+1; 
     1250 
     1251                                         StartDown   = Ystart + ((Ytab-ButtonSizeY)/2)-((LineThick*2)*numberofspacesawaytop);//-(LineThick*numberofspacesaway)); 
     1252                                          
     1253                                         StartRight  = Xspace - (7*((Ystart/Ytab))); 
     1254                                         SecoundDown =  Yfin  - ((Ytab-ButtonSizeY)/2)+((LineThick*2)*numberofspacesawaybot);//-(LineThick*numberofspacesaway));//- ((Ytab-ButtonSizeY)/2) - TempModuleButton2->getHeight(); 
     1255                                         
     1256                                        } 
     1257                                        else 
     1258                                        { 
     1259                                         Xstart =TempModuleButton2->getX()+(TempModuleButton2->getWidth()/2); 
     1260                                         Ystart =TempModuleButton2->getY()+ TempModuleButton2->getHeight(); 
     1261                                         Xfin   =TempModuleButton->getX()+(TempModuleButton->getWidth()/2); 
     1262                                         Yfin   =TempModuleButton->getY(); 
     1263 
     1264                                         numberofspacesawaytop = ((TempModuleButton2->getX()-(20+TempModuleButton2->getWidth()))/TempModuleButton2->getWidth())+1; 
     1265                                         numberofspacesawaybot = ((TempModuleButton->getX()-(20+TempModuleButton->getWidth()))/TempModuleButton->getWidth())+1; 
     1266 
     1267                                         StartDown   = Ystart + ((Ytab-ButtonSizeY)/2)-((LineThick*2)*numberofspacesawaytop);//-(LineThick*numberofspacesaway)); 
     1268                                         StartRight  = Xspace - (7*(Ystart/Ytab)); 
     1269                                         SecoundDown =  Yfin  - ((Ytab-ButtonSizeY)/2)+((LineThick*2)*numberofspacesawaybot);//-(LineThick*numberofspacesaway));//- ((Ytab-ButtonSizeY)/2) - TempModuleButton2->getHeight(); 
     1270                                        }                
     1271                                         
     1272                         
     1273 
     1274                                        mytempconect.MyPath.clear(); 
     1275                                        mytempconect.MyPath.startNewSubPath (Xstart,Ystart);//startpoint 
     1276                                        // go a little down 
     1277                                        mytempconect.MyPath.lineTo                      (Xstart,StartDown); 
     1278                                        // go right 
     1279                                        mytempconect.MyPath.lineTo                      (StartRight,StartDown); 
     1280                                        // go down 
     1281                                        mytempconect.MyPath.lineTo                      (StartRight,SecoundDown); 
     1282                                        // go left 
     1283                                        mytempconect.MyPath.lineTo                      (Xfin,SecoundDown); 
     1284                                        //  go down to finnish 
     1285                                        mytempconect.MyPath.lineTo                      (Xfin,Yfin); 
     1286                                        // go up  
     1287                                        mytempconect.MyPath.lineTo                      (Xfin,SecoundDown); 
     1288                                        // go right 
     1289                                        mytempconect.MyPath.lineTo                      (StartRight,SecoundDown); 
     1290                                        // go up 
     1291                                        mytempconect.MyPath.lineTo                      (StartRight,StartDown); 
     1292                                        // go left 
     1293                                        mytempconect.MyPath.lineTo                      (Xstart,StartDown); 
     1294 
     1295                                        mytempconect.MyPath.lineTo                      (Xstart,Ystart); 
     1296 
     1297                                        mytempconect.MyPath.closeSubPath(); 
     1298 
     1299                                //      if 
     1300                                        *it2 = mytempconect; 
    8401301                                } 
    8411302                        }  
    842                         // if not connected just move it down 
    843                 for ( itTextButton3=SeenModules.begin() ; itTextButton3 != SeenModules.end(); itTextButton3++ ) 
    844                         { 
    845                         TempModuleButton3 = *itTextButton3; 
    846                         if(TempModuleButton3->getY()==TempModuleButton2->getY()&&TempModuleButton2!=TempModuleButton3) 
    847                                 { 
    848                                 TempModuleButton3->setTopLeftPosition(TempModuleButton3->getX(),TempModuleButton3->getY()+60);//woz 60 
    849                                 } 
    850                         } 
    851                 } 
    852         } 
    853 // puts the ports next to the modules 
    854 MainComponent::SortPorts();  
    855 } 
    856  
    857 /// this bit just puts in the line in from port to port 
    858 for ( itTextButton=SeenPorts.begin() ; itTextButton != SeenPorts.end(); itTextButton++ ) 
    859         { 
    860         for ( itTextButton2=SeenPorts.begin() ; itTextButton2 != SeenPorts.end(); itTextButton2++ ) 
    861                 { 
    862                         TempModuleButton = *itTextButton; 
    863                         TempModuleButton2 = *itTextButton2; 
    864                  
    865                 for ( it2=AllConnections.begin() ; it2 != AllConnections.end(); it2++ ) 
    866                         { 
    867                 connections mytempconect = *it2; 
    868  
    869                         if(mytempconect.firstport == TempModuleButton->getButtonText() && mytempconect.secoundport==TempModuleButton2->getButtonText()) 
    870                                 { 
    871                                  
    872                         //      if(TempModuleButton->getY()>TempModuleButton2->getY()) 
    873                         //              { 
    874                                         mytempconect.MyPath.clear(); 
    875                                         mytempconect.MyPath.startNewSubPath (float(TempModuleButton->getX()+(sizeofball*0.425)),float(TempModuleButton->getY()-2+(sizeofball*0.85)));// top left 
    876                                         mytempconect.MyPath.lineTo (float(TempModuleButton2->getX()+(sizeofball*0.425)), float(TempModuleButton2->getY()+2));// bottem left 
    877                                         mytempconect.MyPath.closeSubPath(); 
    878                                         *it2 = mytempconect; 
    879                         //              } 
    880                         //      else 
    881                         //              { 
    882                         //              AddToLog("adding path 2 \n",1); 
    883                         //              mytempconect.MyPath.clear(); 
    884                         //              mytempconect.MyPath.startNewSubPath (float(TempModuleButton->getX()+(sizeofball*0.425)),float(TempModuleButton->getY()-2+(sizeofball*0.85)));// top left 
    885                         //              mytempconect.MyPath.lineTo (float(TempModuleButton2->getX()+(sizeofball*0.425)), float(TempModuleButton2->getY()+2));// bottem left 
    886                         //              mytempconect.MyPath.closeSubPath(); 
    887                         //              } 
    888                                 } 
    889                         } 
    890                 } 
    891         } 
    892 // bug in the system that unless the windows forced to redraw everything then not all lines are seen 
    893 // changed this by everytime changing the main window size a little. 
    894 if(HaveIDoneThisBefore==0)      {centreWithSize (getWidth()+1, getHeight());HaveIDoneThisBefore=1;} 
    895 else                                            {centreWithSize (getWidth()-1, getHeight());HaveIDoneThisBefore=0;} 
     1303        } 
     1304} 
     1305repaint(); 
     1306 
     1307//if(HaveIDoneThisBefore22==0)  {centreWithSize (getWidth()+1, getHeight());HaveIDoneThisBefore22=1;} 
     1308//else                                                  {centreWithSize (getWidth()-1, getHeight());HaveIDoneThisBefore22=0;} 
    8961309} 
    8971310/*! 
     
    9001313void MainComponent::SortPorts(void) 
    9011314{ 
     1315 
     1316// adds children to the modules on the gui 
    9021317int counter=0; 
    9031318for ( itTextButton=SeenModules.begin() ; itTextButton != SeenModules.end(); itTextButton++ ) 
     
    9111326                TempPortButton   = *itTextButton2; 
    9121327                TempPortButton->setConnectedEdges(Button::ConnectedOnRight|Button::ConnectedOnLeft); 
     1328 
    9131329                if(TempModuleButton->getRadioGroupId()==TempPortButton->getRadioGroupId()) 
    9141330                        { 
    915                         TempPortButton->setTopLeftPosition(TempModuleButton->getX()+((sizeofball*0.85)*counter)+sizeofball,TempModuleButton->getY()); 
    9161331                        counter++; 
     1332                        TempPortButton->setSize(TempModuleButton->getWidth(),TempModuleButton->getHeight()); 
     1333                        TempPortButton->setColour(0x1000100,TempModuleButton->findColour(0x1000100,false)); 
     1334                        TempPortButton->setTopLeftPosition(TempModuleButton->getX()+(counter*TempPortButton->getWidth()),TempModuleButton->getY()); 
    9171335                        } 
    9181336                }        
    9191337        } 
     1338/* 
     1339for ( itTextButton=SeenPorts.begin() ; itTextButton != SeenPorts.end(); itTextButton++ ) 
     1340        { 
     1341        for ( itTextButton2=SeenPorts.begin() ; itTextButton2 != SeenPorts.end(); itTextButton2++ ) 
     1342                { 
     1343                        TempModuleButton = *itTextButton; 
     1344                        TempPortButton   = *itTextButton2; 
     1345 
     1346                //if(TempPortButton->getRadioGroupId()!=TempModuleButton->getRadioGroupId()) 
     1347                //{ 
     1348                if(TempPortButton->getY()>TempModuleButton->getY()) 
     1349                        { 
     1350                         *itTextButton = TempPortButton; 
     1351                         *itTextButton2 =  TempModuleButton; 
     1352                        } 
     1353        //      } 
     1354                } 
     1355        } 
     1356*/ 
    9201357} 
    9211358 
     
    9701407    g.strokePath (internalPath5, PathStrokeType (5.2000f)); 
    9711408 
     1409        float AddonX = getWidth()-OriginalXsize; 
     1410        g.setColour (Colours::black); 
     1411        g.drawSingleLineText (T("NC Timer Control"),730+AddonX+8+4,550-20-5+30+35-50-20); 
     1412 
    9721413 
    9731414//Path internalPath5; 
     
    9801421        { 
    9811422    temmp=*it2; 
    982         if(temmp.IsConnected==true)     {g.setColour (Colours::blue);} 
     1423         
     1424        if(temmp.IsConnected==true)     {g.setColour (temmp.MyColor);} 
    9831425        else                                            {g.setColour (Colours::grey);} 
    984         g.strokePath (temmp.MyPath, PathStrokeType (5.2000f)); 
     1426        g.strokePath (temmp.MyPath, PathStrokeType (LineThick)); 
    9851427        } 
    9861428 
     
    10031445        PropSizeChangeY=1;//MySizeY/getHeight(); 
    10041446 
    1005 //      PropSizeChangeX=getWidth()/MySizeX; 
    1006 //      PropSizeChangeY=getHeight()/MySizeY; 
    1007  
    1008  
    1009         // little connection box on right 
     1447        float AddonX = getWidth()-OriginalXsize; 
     1448        float AddonY = getHeight()-OriginalYsize; 
     1449 
     1450        char mychars[30]; 
     1451 
     1452        TimeBetweenChecks->setBounds(730+AddonX+8,550-55-20-5+30+30,120,30); 
     1453//      TimeForChecks->setBounds(730+AddonX+8,550-55-20-5+30+35,120,30); 
     1454 
     1455 
     1456        if(AllConnections.size()>0){RefreashConnections();} 
     1457 
     1458        DebugButton1->setBounds(740+AddonX,20 -5,100,25); 
     1459        DebugButton2->setBounds(740+AddonX,50 -10,100,25); 
     1460        DebugButton3->setBounds(740+AddonX,80 -15,100,25); 
     1461        DebugButton4->setBounds(740+AddonX,110-20,100,25); 
     1462 
     1463 
     1464        SaveLog->setBounds                      (740+AddonX,150-5-20-5,100,25); 
     1465        ClearLog->setBounds                     (740+AddonX,190-10-20-5,100,25); 
     1466        OpenLogButton->setBounds        (740+AddonX,230-15-20-5,100,25); // 390 
     1467        StartButton->setBounds          (740+AddonX,270-20-20-5,100,25); 
     1468        StopButton->setBounds           (740+AddonX,310-25-20-5,100,25); 
     1469        MigrateButton->setBounds        (740+AddonX,350-30-20-5,100,25); 
     1470        RefreshConnect->setBounds       (740+AddonX,390-35-20-5,100,25); // 230 
     1471        SaveMod->setBounds                      (740+AddonX,430-40-20-5,100,25); 
     1472        LoadMod->setBounds                      (740+AddonX,470-45-20-5,100,25); 
     1473        SaveCon->setBounds                      (740+AddonX,510-50-20-5,100,25); 
     1474        LoadCon->setBounds                      (740+AddonX,550-55-20-5,100,25); 
     1475 
     1476    MytextEditor->setBounds   (890+AddonX, 20, 290, 300+AddonY); 
     1477    MytextEditor2->setBounds  (890+AddonX, 340+AddonY, 290, 100); 
     1478    ModParent1->setBounds     (890+AddonX, 480+AddonY, 140, 22); 
     1479    ModParent2->setBounds    (1040+AddonX, 480+AddonY, 140, 22); 
     1480    ModChild1->setBounds      (890+AddonX, 505+AddonY, 140, 22); 
     1481    ModChild2->setBounds     (1040+AddonX, 505+AddonY, 140, 22); 
     1482 
     1483 
     1484    LossBox->setBounds (890+AddonX,530+AddonY, 140, 22); 
     1485    Connect->setBounds (890+AddonX,555+AddonY, 140, 22); 
     1486    NetworkBox->setBounds (1040+AddonX,530+AddonY, 140, 22); 
     1487        ConnectionStuff->setBounds (1040+AddonX,555+AddonY, 140, 22); 
     1488 
     1489        // box for connections 
    10101490    internalPath4.clear(); 
    1011     internalPath4.startNewSubPath (880.0f  *PropSizeChangeX,  470.0f *PropSizeChangeY); 
    1012     internalPath4.lineTo                  (1190.0f *PropSizeChangeX , 470.0f *PropSizeChangeY); 
    1013         internalPath4.lineTo              (1190.0f *PropSizeChangeX , 590.0f *PropSizeChangeY ); 
    1014         internalPath4.lineTo              (880.0f  *PropSizeChangeX , 590.0f *PropSizeChangeY); 
    1015         internalPath4.lineTo              (880.0f  *PropSizeChangeX , 470.0f *PropSizeChangeY); 
     1491    internalPath4.startNewSubPath (880.0f  +AddonX,  470.0f +AddonY ); 
     1492    internalPath4.lineTo                  (1190.0f +AddonX , 470.0f +AddonY); 
     1493        internalPath4.lineTo              (1190.0f  +AddonX, 590.0f +AddonY); 
     1494        internalPath4.lineTo              (880.0f  +AddonX, 590.0f +AddonY); 
     1495        internalPath4.lineTo              (880.0f  +AddonX, 470.0f +AddonY); 
    10161496        internalPath4.closeSubPath(); 
     1497 
    10171498 
    10181499        // main box on left      
    10191500    internalPath1.clear(); 
    10201501    internalPath1.startNewSubPath (10.0f, 10.0f); 
    1021     internalPath1.lineTo (700.0f, 10.0f); 
    1022     internalPath1.lineTo (700.0f, 590.0f); 
    1023         internalPath1.lineTo (10.0f, 590.0f); 
    1024     internalPath1.lineTo (10.0f, 10.0f); 
     1502    internalPath1.lineTo (700.0f+AddonX, 10.0f); 
     1503    internalPath1.lineTo (700.0f+AddonX,  590.0f +AddonY); 
     1504        internalPath1.lineTo (10.0f,              590.0f +AddonY); 
     1505    internalPath1.lineTo (10.0f,                  10.0f); 
    10251506    internalPath1.closeSubPath(); 
    10261507 
    10271508        // this shuold be box for buttons 
    10281509        internalPath2.clear(); 
    1029     internalPath2.startNewSubPath (720.0f, 10.0f);// top left 
    1030     internalPath2.lineTo (860.0f, 10.0f);// top right 
    1031     internalPath2.lineTo (860.0f, 590.0f); // bottem right 
    1032         internalPath2.lineTo (720.0f, 590.0f); // 
    1033     internalPath2.lineTo (720.0f, 10.0f); 
     1510    internalPath2.startNewSubPath (720.0f+AddonX, 10.0f);// top left 
     1511    internalPath2.lineTo (860.0f+AddonX, 10.0f);// top right 
     1512    internalPath2.lineTo (860.0f+AddonX, 590.0f+AddonY); // bottem right 
     1513        internalPath2.lineTo (720.0f+AddonX, 590.0f+AddonY); // 
     1514    internalPath2.lineTo (720.0f+AddonX, 10.0f); 
    10341515    internalPath2.closeSubPath(); 
    10351516 
     
    10371518        // to surround the text boxes 
    10381519        internalPath5.clear(); 
    1039     internalPath5.startNewSubPath (880.0f,    10.0f);// top left 
    1040     internalPath5.lineTo                  (880.0f+310, 10.0f);// top right 
    1041     internalPath5.lineTo                  (880.0f+310, 450.0f); // bottem right 
    1042         internalPath5.lineTo              (880.0f,        450.0f); // 
    1043     internalPath5.lineTo                  (880.0f,    10.0f); 
     1520    internalPath5.startNewSubPath (880.0f+AddonX,     10.0f);// top left 
     1521    internalPath5.lineTo                  (1190.0f+AddonX,    10.0f);// top right 
     1522    internalPath5.lineTo                  (1190.0f+AddonX,    450.0f+AddonY); // bottem right 
     1523        internalPath5.lineTo              (880.0f+AddonX,         450.0f+AddonY); // 
     1524    internalPath5.lineTo                  (880.0f+AddonX,     10.0f); 
    10441525    internalPath5.closeSubPath(); 
     1526 
     1527} 
     1528 
     1529 
     1530 
     1531 
     1532///// putting in some stuff so when the parent box is clicked the child box changes 
     1533/* 
     1534 
     1535*/ 
     1536void MainComponent::comboBoxChanged(ComboBox* comboBoxThatHasChanged) 
     1537{ 
     1538 if(comboBoxThatHasChanged == ModChild1) 
     1539  { 
     1540        MainComponent::AddToLog("child has been selected \n", 1); 
     1541 
     1542 } 
     1543 
    10451544 
    10461545} 
     
    10491548Interupt when any button is clicked 
    10501549!*/ 
    1051  
    10521550void MainComponent::buttonClicked (Button* buttonThatWasClicked) 
    10531551{ 
     1552        static int presentchoice        =0; 
     1553        static int oldpresentchoice =0; 
    10541554String tempnames[10]; 
    10551555  Bottle& cc = ThePortForModules.prepare(); 
    10561556  cc.clear(); 
     1557 
     1558        // mehod to allow direct connections from the gui 
     1559///// doesn't work at the moment but i'll mess around with it later, so you can choose ports by clicking directly 
     1560  for ( itTextButton2=SeenPorts.begin() ; itTextButton2 != SeenPorts.end(); itTextButton2++ ) 
     1561                { 
     1562                        TempModuleButton = *itTextButton2; 
     1563                        if (buttonThatWasClicked == TempModuleButton) 
     1564                        { 
     1565                                if(presentchoice==0&&oldpresentchoice!=presentchoice) 
     1566                                { 
     1567                                        ModChild1->clear(); 
     1568                                        ModChild1->addItem(TempPortButton->getButtonText(),1); 
     1569                                        oldpresentchoice=presentchoice; 
     1570                                        presentchoice++; 
     1571                                } 
     1572                                TempModuleButton->setToggleState(true,false);            
     1573                        } 
     1574                } 
     1575 
     1576   
     1577 
     1578 
     1579 
    10571580 
    10581581  if (buttonThatWasClicked == StopButton) 
     
    10701593  if (buttonThatWasClicked == MigrateButton) 
    10711594  { 
    1072         if(NameOfServer == "/Red"){Migrate("Blue");} 
    1073         if(NameOfServer == "/Blue"){Migrate("Red");} 
     1595        //  RegisterMigrationPort(); 
     1596        //  UpdateMigrationProto(); 
    10741597  } 
     1598 
    10751599 
    10761600 
     
    11551679if (buttonThatWasClicked == LoadCon) 
    11561680    { 
     1681//              int trysbeforebreak=0; 
    11571682                connections mytempconnect; 
    11581683        FileChooser chooser6 ("Please select log you wish to load...",File::getSpecialLocation (File::userHomeDirectory),"*.SamCon"); 
     
    11661691                while(Tempy.length()>0) 
    11671692                { 
    1168                 Tempy=hello->readNextLine(); 
    1169                 mytempconnect.Daddyfirstport = Tempy; 
    1170                 mytempconnect.firstport=hello->readNextLine(); 
    1171                 mytempconnect.Daddysecoundport=hello->readNextLine(); 
    1172                 mytempconnect.secoundport=hello->readNextLine(); 
    1173                 mytempconnect.Lossy=hello->readNextLine(); 
    1174                 mytempconnect.Network=hello->readNextLine(); 
    1175                 AllConnections.push_front(mytempconnect); 
    1176                 } 
    1177                 } 
     1693                        Tempy=hello->readNextLine(); 
     1694                String Dad1 = Tempy; 
     1695                String Port1 = hello->readNextLine(); 
     1696                String Dad2 = hello->readNextLine(); 
     1697                String Port2 = hello->readNextLine(); 
     1698                String Loss = hello->readNextLine(); 
     1699                String Net = hello->readNextLine(); 
     1700                AddConnection(Dad1,Port1,Dad2,Port2,Loss,Net); 
     1701                 
     1702                } 
     1703                } 
     1704        //chooser6.~FileChooser(); 
     1705        RefreashConnections(); 
     1706        RefreashConnections(); 
    11781707        } 
    11791708 
    11801709if (buttonThatWasClicked == SaveCon) 
    11811710    { 
     1711                String nameofFile; 
    11821712                list<connections>::iterator itter; 
    11831713                connections mytempconnect; 
    11841714 
    11851715    FileChooser chooser5 ("Please select the save name...",File::getSpecialLocation (File::userHomeDirectory),"*.SamCon"); 
    1186         if (chooser5.browseForFileToSave (true)) 
     1716        if (chooser5.browseForFileToSave (false)) 
    11871717                { 
    11881718                myFileforCon = chooser5.getResult (); 
     1719                nameofFile = myFileforCon.getFileName(); 
     1720                 
    11891721                if (myFileforCon.existsAsFile ()){myFileforCon.deleteFile ();} 
    11901722 
    11911723                        myFileforCon.create (); 
     1724                         
     1725                        for ( itter=AllConnections.begin() ; itter != AllConnections.end(); itter++ ) 
     1726                        { 
     1727                        mytempconnect = *itter; 
     1728                        if(mytempconnect.Daddyfirstport.length()==0) 
     1729                                { 
     1730                                 itter = AllConnections.erase (itter); 
     1731                                } 
     1732                        } 
    11921733 
    11931734                for ( itter=AllConnections.begin() ; itter != AllConnections.end(); itter++ ) 
     
    12021743                        } 
    12031744                } 
     1745//chooser5.~FileChooser(); 
    12041746        } 
    12051747 
     
    12201762                        } 
    12211763                } 
     1764//      chooser3.~FileChooser(); 
    12221765        } 
    12231766if (buttonThatWasClicked == LoadMod) 
     
    12371780                } 
    12381781                } 
     1782//      chooser4.~FileChooser(); 
    12391783        } 
    12401784 
     
    12501794                        myFileforLog.appendText (MytextEditor->getText ()); 
    12511795                } 
     1796//      chooser2.~FileChooser(); 
    12521797        } 
    12531798if (buttonThatWasClicked == OpenLogButton) 
     
    12591804                MytextEditor->setText (myFileforLog.loadFileAsString()); 
    12601805                } 
    1261         } 
    1262  
    1263  
     1806//      chooser.~FileChooser(); 
     1807        } 
     1808 
     1809// this works now 
    12641810if (buttonThatWasClicked == ConnectionStuff) 
    12651811    { 
    12661812                int abort = 0; 
    1267                 if( ModParent1->getText() == String("Parent 1"))                 {abort = 1;} 
    1268                 if( ModParent2->getText() == String("Parent 2"))                 {abort = 1;} 
    1269                 if( ModChild1->getText()  == String("Child 1"))                  {abort = 1;} 
    1270                 if( ModChild2->getText()  == String("Child 2"))                  {abort = 1;} 
    1271                 if( Connect->getText()    == String("Connect/Disconnect"))       {abort = 1;} 
    1272                 if( NetworkBox->getText() == String("Network Type"))     {abort = 1;} 
    1273  
    1274                 if(abort==1){AddToLog("not all choices have been selected for connection", 1);} 
     1813                int abort2=0; 
     1814                if( ModParent1->getText() == String("Parent 1"))                         {abort = 1;} 
     1815                if( ModParent2->getText() == String("Parent 2"))                         {abort = 1;} 
     1816                if( ModChild1->getText()  == String("Child 1"))                          {abort2 = 1;} 
     1817                if( ModChild2->getText()  == String("Child 2"))                          {abort2 = 1;} 
     1818                if( Connect->getText()    == String("Connect/Disconnect"))       {abort2 = 1;} 
     1819                if( NetworkBox->getText() == String("Network Type"))             {abort2 = 1;} 
     1820 
     1821                int myverylittlecount1; 
     1822                int myverylittlecount2; 
     1823 
     1824 
     1825                if              (abort==1) {AddToLog(" choices have not been selected for connection", 1);} // if the parents haven't be done 
     1826                else if (abort2==1) 
     1827                        { 
     1828                                ModChild1->clear(); 
     1829                                ModChild2->clear(); 
     1830                                myverylittlecount1=0; 
     1831                                myverylittlecount2=0; 
     1832                        for ( itTextButton=SeenModules.begin() ; itTextButton != SeenModules.end(); itTextButton++ ) // get modules 
     1833                                { 
     1834                                TempModuleButton = *itTextButton; 
     1835                                for ( itTextButton2=SeenPorts.begin() ; itTextButton2 != SeenPorts.end(); itTextButton2++ ) // get ports 
     1836                                        { 
     1837                                        TempPortButton   = *itTextButton2; 
     1838                                        if(TempModuleButton->getRadioGroupId()==TempPortButton->getRadioGroupId()) // if port belongs to module 
     1839                                                { 
     1840                                                        if(TempModuleButton->getButtonText()==ModParent1->getText())    // if module name is in the choice 
     1841                                                        { 
     1842                                                                myverylittlecount1++; 
     1843                                                                ModChild1->addItem(TempPortButton->getButtonText(),myverylittlecount1); // add the port to the list 
     1844                                                        } 
     1845                                                        if(TempModuleButton->getButtonText()==ModParent2->getText()) 
     1846                                                        { 
     1847                                                                myverylittlecount2++; 
     1848                                                                ModChild2->addItem(TempPortButton->getButtonText(),myverylittlecount2); 
     1849                                                        } 
     1850                                                } 
     1851                                        }        
     1852                                } 
     1853                } 
    12751854                else 
    12761855                { 
     
    13101889temp.Network=Network; 
    13111890AllConnections.push_front(temp); 
     1891 
     1892 
     1893child1=child1.substring(1); 
     1894child2=child2.substring(1); 
     1895 
     1896String Port1 = "/Port_"+parent1+"_"+child1; 
     1897String Port2 = "/Port_"+parent2+"_"+child2; 
     1898String conntype; 
     1899 
     1900if(Lossyornot==T("Lossy")){conntype="udp";} 
     1901else                               {conntype="tcp";} 
     1902 
     1903Network::connect(Port1,Port2,conntype,true); 
     1904Network::connect(Port2,Port1,conntype,true); 
     1905//AddToLog(Port1,2); 
     1906//AddToLog(Port2,2); 
     1907 
     1908// connect it here 
    13121909} 
    13131910 
     
    13261923        for ( it2=AllConnections.begin() ; it2 != AllConnections.end(); it2++ ) 
    13271924        { 
    1328         mytempconnect = *it2; 
    1329         x=0; 
    1330  
    1331         string tempstring10 = mytempconnect.firstport; 
    1332         string tempstring20 = mytempconnect.secoundport; 
    1333         tempstring10=tempstring10.substr(1,tempstring10.length()-1); 
    1334         tempstring20=tempstring20.substr(1,tempstring20.length()-1); 
    1335  
    1336         if(mytempconnect.Daddyfirstport == parent1){x++;} 
    1337         if(mytempconnect.Daddysecoundport == parent2){x++;} 
    1338         if(mytempconnect.firstport == child1){x++;} 
    1339         if(mytempconnect.secoundport == child2){x++;} 
    1340         if(x>=4) 
    1341         {  
    1342                 SavedIt = it2; 
    1343                 killcon = true; 
    1344         //      it2 = AllConnections.erase (it2);   AddToLog("erased connection \n",1); } 
    1345         } 
     1925                killcon = false; 
     1926                mytempconnect = *it2; 
     1927                x=0; 
     1928 
     1929        if((mytempconnect.Daddyfirstport == parent1) && (mytempconnect.Daddysecoundport == parent2) && (mytempconnect.firstport == child1) && (mytempconnect.secoundport == child2)) 
     1930                {  
     1931                AddToLog(T("found something to del \n"),2); 
     1932                        SavedIt = it2; 
     1933                        killcon = true; 
     1934                } 
     1935                else if(mytempconnect.Daddyfirstport == parent2 && mytempconnect.Daddysecoundport == parent1 && mytempconnect.firstport == child2 && mytempconnect.secoundport == child1) 
     1936                {  
     1937                        SavedIt = it2; 
     1938                        killcon = true; 
     1939                } 
     1940                 
    13461941        } 
    13471942        if(killcon == true) 
    1348         { 
    1349         SavedIt = AllConnections.erase (SavedIt);  
    1350  
    1351                 string tempstring10 = mytempconnect.firstport; 
    1352                 string tempstring20 = mytempconnect.secoundport; 
    1353                 tempstring10=tempstring10.substr(1,tempstring10.length()-1); 
    1354                 tempstring20=tempstring20.substr(1,tempstring20.length()-1); 
    1355  
    1356                 string firststring = "/Port_"   + mytempconnect.Daddyfirstport + "_"  + tempstring10.c_str(); 
    1357                 string secoundstring = "/Port_" + mytempconnect.Daddysecoundport + "_" + tempstring20.c_str(); 
    1358  
    1359          Network::disconnect(firststring.c_str(),secoundstring.c_str()); 
    1360          Network::disconnect(secoundstring.c_str(),firststring.c_str()); 
    1361 RefreashConnections(); 
    1362  
    1363         AddToLog("erased connection \n",1); 
    1364         } 
    1365 } 
    1366  
    1367  
     1943                { 
     1944                        if(AllConnections.size()<=1){AllConnections.clear();} 
     1945                        else                                            {SavedIt = AllConnections.erase (SavedIt);}  
     1946 
     1947                        String child1=mytempconnect.firstport.substring(1); 
     1948                        String child2=mytempconnect.secoundport.substring(1); 
     1949 
     1950                        String Port1 = "/Port_"+parent1+"_"+child1; 
     1951                        String Port2 = "/Port_"+parent2+"_"+child2; 
     1952 
     1953                                Network::disconnect(Port1,Port2); 
     1954 
     1955                                Network::disconnect(Port2,Port1); 
     1956 
     1957                RefreashConnections(); 
     1958 
     1959                AddToLog("erased connection \n",1); 
     1960                } 
     1961         
     1962} 
     1963 
     1964 
  • UH/SAMGAR/SAMGAR Gui/Trunk/SourceFiles/MainComponent.h

    r142 r329  
    66#include <string> 
    77 
     8/* 
     9#ifndef __wtypes_h__ 
     10#include <wtypes.h> 
     11#endif 
     12 
     13#ifndef __WINDEF_ 
     14#include <windef.h> 
     15#endif 
     16 
     17#ifndef _WINUSER_ 
     18#include <winuser.h> 
     19#endif 
     20 
     21#ifndef __RPC_H__ 
     22#include <rpc.h> 
     23#endif 
     24*/ 
     25 
     26 
    827#include <yarp/sig/all.h> 
    928#include <yarp/os/all.h> 
     29//#include <yarp/os/impl/Companion.h> 
     30//#include <yarp/impl/all.h> 
    1031//#include <ace/OS.h> 
    1132 
     
    1536using namespace std; 
    1637using namespace yarp::os; 
    17 using namespace yarp::sig;// image stuff 
     38using namespace yarp::sig; 
     39using namespace yarp::os::impl; 
     40 
     41//yarp::os::impl::Companion-> 
     42//using namespace yarp::os:: 
     43 
     44//yarp::os::impl::Companion compy; 
    1845 
    1946 
     
    2148#define __JUCER_HEADER_MAINCOMPONENT_MAINCOMPONENT_D0F6CD31__ 
    2249 
     50struct ModuleStruct 
     51{ 
     52string name; 
     53string catagory; 
     54string subcatagory; 
     55}; 
    2356 
    2457struct connections 
     
    3063String Lossy; 
    3164String Network; 
     65Colour MyColor; 
    3266bool IsConnected; 
    3367Path MyPath; 
    3468}; 
    35  
     69/* 
    3670 class MigrationPortClass : public BufferedPort<Bottle>  
    3771{ 
     
    4276        MigrationPortClass() 
    4377        { 
     78        //Network::connect(Network::getNameServerName(),"/KeyToLocalServer","tcp"); 
    4479    useCallback(); 
    4580        } 
     
    4782         { 
    4883                 Ivebeenused = 1; 
     84                  
    4985                int length = b.size(); 
    5086                ofstream myfile; 
     
    5894     } 
    5995}; 
     96*/ 
    6097 
    6198 
     
    70107void GetCurrentServerName(void); 
    71108string GetServerName(void); 
     109bool ListDeleatingFunction(ModuleStruct x,ModuleStruct y); 
     110bool DelFromList (ModuleStruct& value); 
     111 
     112/*! Sorts the varibles in the known module list!*/ 
     113bool ListSortingFunction(ModuleStruct x,ModuleStruct y); 
     114 
     115 
     116 
     117 
     118 
    72119 
    73120 
     
    80127 
    81128        //   
    82     MigrationPortClass MigrationPort; 
     129   //  MigrationPortClass MigrationPort; 
     130//       BufferedPort<Bottle> ThePortForModules; 
     131// BufferedPort<Bottle> MigrationPort; 
     132        // ConnectionPortClass ThePortForModules; 
    83133    MainComponent (); 
    84134    ~MainComponent(); 
     
    86136    void resized(); 
    87137    void buttonClicked (Button* buttonThatWasClicked); 
     138        void MainComponent::comboBoxChanged(ComboBox* comboBoxThatHasChanged); 
    88139        void AddToLog(const String,int); 
    89140        void AddModule(String name); 
     
    96147    juce_UseDebuggingNewOperator 
    97148        void timerCallback(); 
    98         void UpdateMigrationProto(void); 
     149        Bottle UpdateMigrationProto(void); 
    99150        void RegisterMigrationPort (void); 
    100         bool Migrate (string nameofwhere); 
     151        bool Migrate (string nameofwhere,Bottle Data); 
    101152        void DelConnection(String parent1,String child1,String parent2, String child2,String Lossyornot,String Network); 
    102153        void ConnectionAutoUpdate(void); 
    103154        void CheckConnectionRight(void); 
    104155        void GetModuleCommands(void); 
     156        void SendOffModuleList(void); 
     157        void compare_Buttons (void); 
     158        void CheckConnect(void); 
     159        int CleanGlobalServer(void); 
     160 
    105161 
    106162private: 
     163 
     164        TooltipWindow tooltipWindow; 
     165         
     166        list<ModuleStruct> ListOfKnownModules; 
     167        list<ModuleStruct>::iterator modulestructIT; 
    107168        int MySizeX,MySizeY; 
    108169        int MyCurrentSizeX,MyCurrentSizeY; 
     
    125186        ComboBox* NetworkBox; 
    126187        ComboBox* Connect; 
    127     Label* helloWorldLabel; 
     188 //   Label* helloWorldLabel; 
    128189        TextButton* SaveMod; 
    129190    TextButton* LoadMod; 
    130191        TextButton* SaveCon; 
    131192    TextButton* LoadCon; 
     193 
     194        Slider*         TimeBetweenChecks; 
    132195 
    133196        TextButton* ConnectionStuff; 
     
    160223        list<Path>::iterator itPath; 
    161224        list<String*>::iterator itString; 
     225         
    162226        TextButton* TempModuleButton; 
    163227        TextButton* TempModuleButton2; 
    164228        TextButton* TempModuleButton3; 
    165229        TextButton* TempPortButton; 
    166         TextButton* Blackboard; 
    167         TextButton* IonInterface; 
    168230        TextButton* RefreshConnect; 
    169         TextButton* BigButton; 
    170231        list<TextButton*> SeenModules; 
    171232        list<TextButton*> SeenPorts; 
Note: See TracChangeset for help on using the changeset viewer.