#include #include "GWt_elementLigneFaisceau.h" #include "GWt_abstractElementFactory.h" #include "nomdElements.h" #include "GWt_console.h" #include "abstractElement.h" #include #include #include #include #include #include #include #include #define PSPA_DEBUG 1 GWt_elementLigneFaisceau::GWt_elementLigneFaisceau(dataManager* data,GWt_ligneFaisceau* ligne, abstractElement* abstractElem,std::string bgcolor) : WContainerWidget(), firstTimeInsertMessage_(NULL), dropZoneLeft_(NULL), dropZoneRight_(NULL), GWt_abstractElement_deprecated_(NULL), elementLabel_(NULL), dataManager_(data) { // set the css name setObjectName("elementLigneFaisceau"); initialize_ligneFaisceau(ligne,abstractElem,bgcolor); } void GWt_elementLigneFaisceau::initialize_ligneFaisceau(GWt_ligneFaisceau* ligne, abstractElement* abstractElem,std::string bgcolor) { // set layout // +----------+--------+---------+ // | (--->) | ELEM | (-----) | // +----------+--------+---------+ WGridLayout *gridLayout = new WGridLayout(); gridLayout->setContentsMargins(0,0,0,0); gridLayout->setHorizontalSpacing(0); gridLayout->setVerticalSpacing(0); // add first line : initialize arrow and link images dropZoneLeft_ = new GWt_dropZoneLigneFaisceau(dataManager_,ligne); dropZoneRight_ = new GWt_dropZoneLigneFaisceau(dataManager_,ligne); // change object name in order to manage css : dropZoneLeft_->resize(10,30); dropZoneRight_->resize(10,30); gridLayout->addWidget (dropZoneLeft_,0,0); gridLayout->addWidget (dropZoneRight_,0,2); // add first line : initialize arrow and link images dropZoneLeft_ = new GWt_dropZoneLigneFaisceau(dataManager_,ligne); dropZoneRight_ = new GWt_dropZoneLigneFaisceau(dataManager_,ligne); // change object name in order to manage css : dropZoneLeft_->resize(10,30); dropZoneRight_->resize(10,30); gridLayout->addWidget (dropZoneLeft_,0,0); gridLayout->addWidget (dropZoneRight_,0,2); // add the image if present nomdElements::typedElement eType = abstractElem->getNomdElement().getElementType(); switch ( eType ) { case nomdElements::RFgun : GWt_abstractElement_deprecated_ = new GWt_elementRfgun(this,abstractElem); break; case nomdElements::drift : GWt_abstractElement_deprecated_ = new GWt_elementDrift(this,abstractElem); break; case nomdElements::cell : GWt_abstractElement_deprecated_ = new GWt_elementCell(this,abstractElem); break; case nomdElements::bend : GWt_abstractElement_deprecated_ = new GWt_elementBend(this,abstractElem); break; case nomdElements::soleno : GWt_abstractElement_deprecated_ = new GWt_elementSoleno(this,abstractElem); break; case nomdElements::beam : GWt_abstractElement_deprecated_ = new GWt_elementBeam(this,abstractElem); break; case nomdElements::fit : GWt_abstractElement_deprecated_ = new GWt_elementFit(this,abstractElem); break; case nomdElements::mpole : GWt_abstractElement_deprecated_ = new GWt_elementMpole(this,abstractElem); break; case nomdElements::snapshot : { int incr = dataManager_->getPspaApplication()->getExtensionFile(); incr++; dataManager_->getPspaApplication()->setExtensionFile(incr); GWt_abstractElement_deprecated_ = new GWt_elementSnapshot(this,abstractElem,incr); break; } case nomdElements::inconnu : GWt_abstractElement_deprecated_ = NULL; } elementContainer_ = new WContainerWidget(); WVBoxLayout* vLayoutElementContainer = new WVBoxLayout(); vLayoutElementContainer->setContentsMargins(0,0,0,0); elementContainer_->setPadding (4); elementContainer_->setStyleClass("beamLineIcon"); elementContainer_->setLayout(vLayoutElementContainer); if (GWt_abstractElement_deprecated_ != NULL) { vLayoutElementContainer->addWidget(GWt_abstractElement_deprecated_); GWt_abstractElement_deprecated_->setMaximumSize(64,40); GWt_abstractElement_deprecated_->setMinimumSize(64,40); } if (GWt_abstractElement_deprecated_ == NULL) { elementLabel_ = new WText(); } else { elementLabel_ = new WText(GWt_abstractElement_deprecated_->getAbstractElement()->getLabel()); } vLayoutElementContainer->addWidget(elementLabel_,Wt::AlignCenter |Wt::AlignMiddle); // gridLayout->addWidget(elementLabel_,1,0,1,3,Wt::AlignCenter |Wt::AlignMiddle); // Add Actions WContainerWidget* actions = new WContainerWidget(); WHBoxLayout* hLayoutActions = new WHBoxLayout(); actions->setStyleClass("beamLineElementActions"); actions->setPositionScheme(Wt::Static); actions->setLayout(hLayoutActions); hLayoutActions->setContentsMargins(0,0,0,0); actionParameters_ = new WText(" "); actionTrash_ = new WText(" "); // set tooltips actionParameters_->setToolTip("change parameters"); actionTrash_->setToolTip("delete"); // Set class for actions elements actionParameters_->setStyleClass("Button WhiteButton HiddenButton parameters"); actionParameters_->setMaximumSize(32,32); actionParameters_->setMinimumSize(32,32); actionTrash_->setStyleClass("Button WhiteButton HiddenButton trash"); actionTrash_->setMaximumSize(32,32); actionTrash_->setMinimumSize(32,32); // Set the global action class actions->setOffsets(0); hLayoutActions->addWidget(actionParameters_); hLayoutActions->addWidget(actionTrash_); vLayoutElementContainer->addWidget(actions); // add software name softwareName_ = new WText(""); softwareName_->setStyleClass("softwareElementLigneFaisceauName"); vLayoutElementContainer->addWidget(softwareName_); gridLayout->addWidget (elementContainer_,0,1); gridLayout->setColumnStretch (0,1); gridLayout->setColumnStretch (2,1); // Change background color setBGColor(WColor(bgcolor)); // set layout setLayout(gridLayout); // enable signals elementContainer_->mouseWentOut().connect(this,&GWt_elementLigneFaisceau::mouseWentOut); elementContainer_->mouseWentOver().connect(this,&GWt_elementLigneFaisceau::mouseWentOver); actionParameters_->clicked().connect(GWt_abstractElement_deprecated_,&GWt_abstractElement::showParameters); actionTrash_->clicked().connect(GWt_abstractElement_deprecated_,&GWt_abstractElement::deleteElement); } GWt_elementLigneFaisceau::~GWt_elementLigneFaisceau() {} void GWt_elementLigneFaisceau::setBGColor(const WColor c) { elementContainer_->decorationStyle().setBackgroundColor (c); } void GWt_elementLigneFaisceau::removeDone(GWt_abstractElement* gw) { if (messageDropZone_->result() == WDialog::Accepted) { // FIXME // removeDropZone(); } } std::string GWt_elementLigneFaisceau::getElementNumberInBeamLine(nomdElements elem) { string str = ""; if (static_cast (parent())) { WContainerWidget* wc = static_cast (parent()); for (int a=0; acount(); a++) { if (static_cast (wc->widget (a))) { // GWt_abstractElement* ab = static_cast (wc->widget (a)); /* printf("1--->%d\n",ab->getElement()); printf("2--->%d\n",ab->getElement()->getLenghtOfElement()); printf("3--->%d\n",ab->getElement()->getName().getElementType()); printf("4--->%d\n",elem.getElementType()); if (static_cast (wc->widget (a))->getElement()->getName().getElementType() == elem.getElementType()) { pspa_->addConsoleMessage("type trouvÈ"); } else { pspa_->addConsoleMessage("type trouvÈ NOT "); } */ } } int n = 999999; std::stringstream stream; stream << n ; std::string number(stream.str()); if(n < 10) { str= elem.getGenericLabel()+"0"+number; } else { str= elem.getGenericLabel()+number; } } return str; } void GWt_elementLigneFaisceau::setElementLabel(std::string label) { if (elementLabel_) { elementLabel_->setText(label.substr(0,10)); elementLabel_->setToolTip(label); } } void GWt_elementLigneFaisceau::mouseWentOut() { actionParameters_->setStyleClass("Button WhiteButton HiddenButton parameters"); actionTrash_->setStyleClass("Button WhiteButton HiddenButton trash"); } void GWt_elementLigneFaisceau::mouseWentOver() { actionParameters_->setStyleClass("Button WhiteButton ContrastButton parameters"); actionTrash_->setStyleClass("Button WhiteButton ContrastButton trash"); }