source: PSPA/Interface_Web/trunk/pspaWT/sources/userInterface/src/GWt_abstractElement.cc @ 299

Last change on this file since 299 was 299, checked in by garnier, 11 years ago

delete element sur double click

File size: 4.5 KB
Line 
1
2#include <iostream>
3#include <string>
4
5#include "GWt_abstractElement.h"
6#include "GWt_elementLigneFaisceau.h"
7#include "GWt_rfgun.h"
8#include "GWt_drift.h"
9#include "GWt_cell.h"
10#include "GWt_bend.h"
11#include "GWt_soleno.h"
12#include "GWt_beam.h"
13#include "GWt_fit.h"
14#include "GWt_draggableImage.h"
15#include "GWt_LigneFaisceau.h"
16
17#include "mixedTools.h"
18#include "nomdElements.h"
19
20#include <Wt/WText>
21#include <Wt/WLineEdit>
22#include <Wt/WBreak>
23#include <Wt/WApplication>
24
25GWt_abstractElement::GWt_abstractElement(abstractElement* elem)
26: WContainerWidget()
27{
28    abstractElement_ = elem;
29    setStyleClass("beamLineIcon");
30
31}
32
33
34void GWt_abstractElement::initialize()
35{
36    // make image
37    image_ = new WImage(getBigImageURL(),this);
38   
39    // activate slots
40    image_->doubleClicked().connect(this,&GWt_abstractElement::doubleClicked);
41    image_->clicked().connect(this,&GWt_abstractElement::clicked);
42    addWidget(image_);
43}
44
45
46string* GWt_abstractElement::beginDialog()
47{
48    string* param = abstractElement_-> getParametersString();
49   
50    if ( param == NULL )
51    {
52        if ( static_cast<GWt_console*> (wApp->findWidget ("console"))) {
53            GWt_console* console = static_cast<GWt_console*> (wApp->findWidget ("console"));
54            console->addConsoleMessage(" GWt_abstractElement::beginDialog : empty parameter set for element " + abstractElement_->getNomdElement().getElementName());
55        }
56    }
57    //   int compteur = -1;
58   
59    //  int nbparam = atoi(param[++compteur].c_str());
60    int nbparam = atoi(param->c_str());
61    if ( nbparam != abstractElement_->getNbParams())
62    {
63        if ( static_cast<GWt_console*> (wApp->findWidget ("console"))) {
64            GWt_console* console = static_cast<GWt_console*> (wApp->findWidget ("console"));
65            console->addConsoleMessage(" element seems not to be a " + abstractElement_->getNomdElement().getElementName());
66        }
67    }
68   
69    dialog_ = new WDialog("element " + abstractElement_->getNomdElement().getElementName());
70    new WText(" label of the element : ",dialog_->contents());
71    //  labelEdit_ = new WLineEdit(param[++compteur].c_str(), dialog_->contents());
72   
73    labelEdit_ = new WLineEdit( (++param)->c_str(), dialog_->contents());
74    new WBreak(dialog_->contents());
75    return ++param;
76}
77
78void GWt_abstractElement::updateLabelWidget()
79{
80   elementLigneFaiseauContainer_->setElementName(abstractElement_->getLabel());
81   
82    /*  string str = abstractElement_->getLabel();
83     wc_item_->setText(str);
84     */
85}
86
87void GWt_abstractElement::setLabelWidget()
88{
89    /*
90     string str = abstractElement_->getLabel();
91     wc_item_ = new WText(str);
92     wc_item_->setObjectName("aText");
93     wc_->addWidget(wc_item_);
94     */
95}
96
97void GWt_abstractElement::clicked()
98{
99    dialog_->show();
100}
101
102
103void GWt_abstractElement::doubleClicked()
104{
105    GWt_dialog warningDialog("PSPA : Delete element",WString("Delete '")+WString(getElement()->getLabel())+"' ?", GWt_dialog::Warning,true,true);
106    warningDialog.exec();
107
108    // get LigneFaiseau widget and add new elementLigneFaiseau
109    GWt_LigneFaisceau* ligneFaisceau = NULL;
110    if ( static_cast<GWt_LigneFaisceau*> (wApp->findWidget ("ligneFaisceau"))) {
111        ligneFaisceau = static_cast<GWt_LigneFaisceau*> (wApp->findWidget ("ligneFaisceau"));
112    } else {
113        return;
114    }
115   
116    ligneFaisceau->removeElement(this);
117}
118
119
120WContainerWidget* GWt_abstractElement::getWidget() {
121    return wc_;
122}
123
124abstractElement* GWt_abstractElement::getElement() {
125    return abstractElement_;
126}
127
128GWt_abstractElement* GWt_abstractElement::ajoute(abstractElement* ptr)
129{
130    /*
131     typedElement eType = ptr->getNomdElement().getElementType();
132     
133     switch (  eType ) {
134     case RFgun : return new GWt_rfgun(ptr);
135     case drift : return new GWt_drift(ptr);
136     case cell  : return new GWt_cell(ptr);
137     case bend  : return new GWt_bend(ptr);
138     case soleno  : return new GWt_soleno(ptr);
139     case beam  : return new GWt_beam(ptr);
140     case fit  : return new GWt_fit(ptr);
141     case inconnu : return NULL;
142     default : return NULL;
143     }
144     */
145    return NULL;
146}
147
148
149void GWt_abstractElement::createDragImage(WContainerWidget* w){
150
151    GWt_draggableImage *result = new GWt_draggableImage(getBigImageURL(),w);
152
153    /*
154     * Set the image to be draggable, showing the other image (dragImage)
155     * to be used as the widget that is visually dragged.
156     */
157    result->setDraggable(getMimeType(),new WImage(getSmallImageURL(),w),true);
158}
159
160WImage* GWt_abstractElement::getImage() {
161    return image_;
162}
Note: See TracBrowser for help on using the repository browser.