]> SALOME platform Git repositories - modules/shaper.git/blob - src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp
Salome HOME
Merge branch 'master' of newgeom:newgeom.git
[modules/shaper.git] / src / ModuleBase / ModuleBase_WidgetMultiSelector.cpp
1 /*
2  * ModuleBase_WidgetMultiSelector.cpp
3  *
4  *  Created on: Aug 28, 2014
5  *      Author: sbh
6  */
7
8 #include <ModuleBase_WidgetMultiSelector.h>
9 #include <ModuleBase_Tools.h>
10
11 #include <ModelAPI_AttributeString.h>
12 #include <ModelAPI_Data.h>
13 #include <ModelAPI_Object.h>
14 #include <ModelAPI_Validator.h>
15
16 #include <Config_WidgetAPI.h>
17
18 #include <QVBoxLayout>
19 #include <QLabel>
20 #include <QTextEdit>
21 #include <QObject>
22 #include <QString>
23
24 #include <boost/smart_ptr/shared_ptr.hpp>
25 #include <string>
26
27 ModuleBase_WidgetMultiSelector::ModuleBase_WidgetMultiSelector(QWidget* theParent,
28                                                      const Config_WidgetAPI* theData,
29                                                      const std::string& theParentId)
30     : ModuleBase_ModelWidget(theParent, theData, theParentId)
31 {
32   myMainWidget = new QWidget(theParent);
33   QVBoxLayout* aMainLay = new QVBoxLayout(myMainWidget);
34   ModuleBase_Tools::adjustMargins(aMainLay);
35   QString aTitle = QString::fromStdString(theData->widgetLabel());
36   QLabel* aTitleLabel = new QLabel(aTitle, myMainWidget);
37   aMainLay->addWidget(aTitleLabel);
38   myListControl = new QTextEdit(myMainWidget);
39   myListControl->setReadOnly(true);
40   aMainLay->addWidget(myListControl);
41   myListControl->setMinimumHeight(20);
42   myMainWidget->setLayout(aMainLay);
43
44   connect(myListControl, SIGNAL(textChanged(const QString&)), this, SLOT(onTextChanged()));
45 }
46
47 ModuleBase_WidgetMultiSelector::~ModuleBase_WidgetMultiSelector()
48 {
49 }
50
51 bool ModuleBase_WidgetMultiSelector::storeValue() const
52 {
53   // A rare case when plugin was not loaded. 
54   if(!myFeature)
55     return false;
56   DataPtr aData = myFeature->data();
57   AttributeStringPtr aStringAttr = aData->string(attributeID());
58   QString aWidgetValue = myListControl->toPlainText();
59   aStringAttr->setValue(aWidgetValue.toStdString());
60   updateObject(myFeature);
61   return true;
62 }
63
64 bool ModuleBase_WidgetMultiSelector::restoreValue()
65 {
66   // A rare case when plugin was not loaded. 
67   if(!myFeature)
68     return false;
69   DataPtr aData = myFeature->data();
70   AttributeStringPtr aStringAttr = aData->string(attributeID());
71
72   bool isBlocked = myListControl->blockSignals(true);
73   myListControl->setText(QString::fromStdString(aStringAttr->value()));
74   myListControl->blockSignals(isBlocked);
75
76   return true;
77 }
78
79 QWidget* ModuleBase_WidgetMultiSelector::getControl() const
80 {
81   return myMainWidget;
82 }
83
84 QList<QWidget*> ModuleBase_WidgetMultiSelector::getControls() const
85 {
86   QList<QWidget*> result;
87   result << myListControl;
88   return result;
89 }