Changeset 168 in PSPA for Interface_Web/trunk/pspaWT/src


Ignore:
Timestamp:
Dec 11, 2012, 3:03:21 PM (12 years ago)
Author:
touze
Message:

use WSignalMapper class

Location:
Interface_Web/trunk/pspaWT/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Interface_Web/trunk/pspaWT/src/GWt_LigneFaisceau.cc

    r167 r168  
    2222  beamLayout_ = new WHBoxLayout();
    2323  decorationStyle().setBackgroundColor (WColor("orange"));
    24   //box_= new WBoxLayout(Wt::WBoxLayout::LeftToRight);
    25   //setLayout(box_);
    2624  setLayout(beamLayout_);
    2725
     
    3533  // add a strech element at the end
    3634  beamLayout_->addStretch(1);
    37 
    38   // ajouter cette image ???
    39   // acceptDrops("icons/final.jpg");
    40 
    4135}
    4236 
     
    5751  typedElement eType = e.getElementType();
    5852  int cnts= pspa_->getDataManager()->beamLineSize();
    59   cout<<"GWt_LigneFaisceau::dropEvent "<<e.getElementName()<<" ("<< cnts <<")"<< endl;
     53
     54  cout<<"GWt_LigneFaisceau::dropEvent "<<e.getElementName()<<" ("<< cnts <<")"<< endl; 
    6055 
    61   //cout << "GWt_LigneFaisceau::dropEvent " << evt.mimeType() << " " << eType << endl;
    6256  if(eType == inconnu) {
    6357    cout << "GWt_LigneFaisceau::element type " << eType << " inconnu " << endl;
     
    6862  abstractElement* ptr = pspa_->getDataManager()->addElement(eType);
    6963  ptr->setLabel(createLabel(e,nObjets_[eType].incr()));
     64
    7065  cout << " je vais ajouter l'element  " << ptr->getName().getElementName() << " de type " << ptr->getName().getElementType() << endl;
    71   //  GWt_abstractElement* gw = GWt_abstractElement::ajoute(pspa_,ptr,evt.mimeType());
    7266  GWt_abstractElement* gw = GWt_abstractElement::ajoute(pspa_,ptr);
    73 
    74   WSignalMapper<WContainerWidget *> *MyMap = new Wt::WSignalMapper<Wt::WContainerWidget *>(this);
    75    // connect mapped() to our target slot
    76    MyMap->mapped().connect(this, &GWt_LigneFaisceau::clickEvent);
    77 
    78    // connect and map every source signal to the mapper
    79    MyMap->mapConnect(gw->getWidget()->clicked(),gw);
    80 
    81   cout << "GWt_LigneFaisceau::dropEvent" <<gw<< endl;
    82 
    83 
    84 
    85 
    86 
    8767  if(gw == NULL) return;
    88 
    8968  gw->updateLabelWidget();
    9069
    9170  //////////////////////////////////////////////////////////////////
    92   ////////////////////// ORIGINE ///////////////////////////////////
     71  // pourVoir
    9372
    94   //beamLayout_->addWidget(gw->getWidget());
    95   //pspa_->updateSelections();
     73  cout<<"container: "<<gw->getWidget()->id()<<endl;
     74  cout << "number of widgets in this container= " << gw->getWidget()->count() << ": ";
     75  for(int k = 0; k < gw->getWidget()->count(); k++) {
     76    WWidget *w= gw->getWidget()->widget(k);
     77    cout << w->id() << ", ";
     78  }
     79  cout << endl;
    9680
    97   ////////////////////// ESSAI ////////////////////////////////////////////
    98  
    99   //box_->addWidget(gw->getWidget(),0,Wt::AlignJustify);
     81  //////////////////////////////////////////////////////////////////
     82
     83  WSignalMapper<GWt_abstractElement *> *mapper= new WSignalMapper<GWt_abstractElement *>(this);
     84  mapper->mapped().connect(this,&GWt_LigneFaisceau::onClick);
     85  mapper->mapConnect(gw->getButton()->doubleClicked(),gw);
     86
     87  //////////////////////////////////////////////////////////////////
     88
    10089  beamLayout_->insertWidget(cnts,gw->getWidget());
    10190  gw->getWidget()->decorationStyle().setBackgroundColor (WColor("blue"));
    102 
    10391  pspa_->updateSelections();
    10492
    105   cout << "number of items in the layout=  " << beamLayout_->count() << endl;
     93  //////////////////////////////////////////////////////////////////
     94  // pourVoir
     95
     96  cout << "number of items in the layout=  " << beamLayout_->count() << ": ";
    10697  for(int k = 0; k < beamLayout_->count(); k++)
    10798    {
    10899      WLayoutItem *wi= beamLayout_->itemAt(k);
    109100      WWidget *w= wi->widget();
    110       cout << w->objectName() << ", " << w->id() << endl;
     101      cout << w->id() << ", ";
    111102    }
     103  cout << endl;
     104
    112105  //////////////////////////////////////////////////////////////////
     106  // pourVoir
    113107
    114   // pourVoir
    115108  int nElts= pspa_->getDataManager()->beamLineSize();
    116109  cout << "GWt_LigneFaisceau:: nElts= " << nElts << endl;
     
    122115  }
    123116 
     117}
     118
     119void GWt_LigneFaisceau::onClick(GWt_abstractElement* gw)
     120{
     121  cout << "mouse key was double clicked on this widget " << gw->getWidget()->id()<< endl;
     122
     123  message_= new GWt_dialog("Question","Are you sure you want to delete the selected item?",GWt_dialog::Warning,true,true);
     124  message_->setClosable(true);
     125
     126  WSignalMapper<GWt_abstractElement *> *MyMap = new WSignalMapper<GWt_abstractElement *>(this);
     127  MyMap->mapped().connect(this, &GWt_LigneFaisceau::removeDone);
     128  MyMap->mapConnect(message_->finished(),gw);
     129  message_->exec();
     130}
     131
     132void GWt_LigneFaisceau::removeDone(GWt_abstractElement* gw)
     133{
     134  if (message_->result() == WDialog::Accepted) {
     135
     136    cout <<"GWt_LigneFaisceau:: removeDone "<< gw->getWidget()->id() << endl;
     137   
     138    gw->getWidget()->clear();
     139    beamLayout_->removeWidget(gw->getWidget());
     140   
     141    string label= gw->getElement()->getLabel();
     142    cout << "GWt_LigneFaisceau:: " << label << " a été supprimé" << endl;
     143    pspa_->getDataManager()->getCollection()->eraseElement(label);
     144    pspa_->updateSelections();
     145  }
    124146}
    125147   
     
    152174}
    153175
    154 void GWt_LigneFaisceau::clickEvent(WContainerWidget* elem)
    155 {
    156   cout << "mouse key was double clicked on this widget" <<elem<< endl;
    157176
    158   message_= new GWt_dialog("Question","Are you sure you want to delete the selected item?",GWt_dialog::Warning,true,true);
    159   message_->setClosable(true);
    160   //  message_->finished().connect(this,messageDone(elem));
    161 
    162 
    163   WSignalMapper<WContainerWidget *> *MyMap = new Wt::WSignalMapper<Wt::WContainerWidget *>(this);
    164    // connect mapped() to our target slot
    165   MyMap->mapped().connect(this, &GWt_LigneFaisceau::messageDone);
    166 
    167    // connect and map every source signal to the mapper
    168   MyMap->mapConnect(message_->finished(), elem);
    169 
    170   message_->exec();
    171 }
    172 
    173 void GWt_LigneFaisceau::messageDone(WContainerWidget* elem)
    174 {
    175   if (message_->result() == WDialog::Accepted) {
    176     cout <<"GWt_LigneFaisceau:: delete "<<elem<<endl;
    177 
    178 //     cout <<"GWt_abstractElement:: number of widgets= "<<wc_->count()<<endl;
    179 //     cout << wc_->objectName() << ", " << wc_->id() << endl;
    180    
    181 
    182 
    183     //    wc_->clear();
    184     layout()->removeWidget (elem);
    185 
    186 //     string label= element_->getLabel();
    187 //     cout << "GWt_abstractElement:: " << label << " a été supprimé" << endl;
    188 //    pspa_->getDataManager()->getCollection()->eraseElement(label);
    189     pspa_->updateSelections();
    190   }
    191   //delete message_;
    192 }
  • Interface_Web/trunk/pspaWT/src/GWt_abstractElement.cc

    r167 r168  
     1
     2#include <iostream>
     3#include <string>
    14
    25#include "GWt_abstractElement.h"
    3 #include "GWt_LigneFaisceau.h"
    46#include "GWt_rfgun.h"
    57#include "GWt_drift.h"
     
    1214
    1315#include <Wt/WText>
    14 #include <Wt/WSignalMapper>
    1516
    16 //GWt_abstractElement::GWt_abstractElement(PspaApplication* ps,abstractElement* elem,string image)
    1717GWt_abstractElement::GWt_abstractElement(PspaApplication* ps,abstractElement* elem)
    1818{
     
    2121
    2222  dropped_ = new WPushButton();
     23  dropped_->setObjectName("aPushButton");
    2324  dropped_->setIcon(element_->getName().getElementImage());
    2425  dropped_->setMaximumSize(50,50);
    25   //  dropped_->clicked().connect(this,&GWt_abstractElement::clicked);
     26  dropped_->clicked().connect(this,&GWt_abstractElement::clicked);
    2627
     28  wc_ = new WContainerWidget();
     29  wc_->setObjectName("aContainer");
     30  wc_->addWidget(dropped_);
    2731
    28 
    29    //  dropped_->doubleClicked().connect(this,&GWt_GWt_LigneFaisceau::doubleClicked(WContainerWidget*));
    30  
    31   wc_ = new WContainerWidget();
    32   wc_->addWidget(dropped_);
    33   wc_->addWidget(new WBreak());
     32  WBreak *bk= new WBreak();
     33  bk->setObjectName("aBreak");
     34  wc_->addWidget(bk);
     35  //wc_->addWidget(new WBreak());
    3436}
    3537
     
    3840  string str = element_->getLabel();
    3941  WText *item = new WText(str);
     42  item->setObjectName("aText");
    4043  wc_->addWidget(item);
    4144}
     
    4750}
    4851
    49 
    5052WPushButton* GWt_abstractElement::getButton() {
    5153  return dropped_;
     
    5456WContainerWidget* GWt_abstractElement::getWidget() {
    5557  return wc_;
     58}
     59
     60abstractElement* GWt_abstractElement::getElement() {
     61  return element_;
    5662}
    5763
Note: See TracChangeset for help on using the changeset viewer.