X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FModuleBase%2FModuleBase_ParamSpinBox.cpp;h=9916aec514e9e907f594822ea431d064321fc2ce;hb=811681738727583c29043cd55903fb71cec19038;hp=febd29badbf419cdbf187edbbcf8533742bf04e6;hpb=c80b46cd0d67df6fbb1f9dc1aa43f50f1e8ae9e9;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_ParamSpinBox.cpp b/src/ModuleBase/ModuleBase_ParamSpinBox.cpp index febd29bad..9916aec51 100644 --- a/src/ModuleBase/ModuleBase_ParamSpinBox.cpp +++ b/src/ModuleBase/ModuleBase_ParamSpinBox.cpp @@ -13,29 +13,45 @@ #include #include +#include +#include +#include + #include #include -/*! - \class ModuleBase_ParamSpinBox - */ - -/*! - \brief Constructor. - - Constructs a spin box with 0.0 as minimum value and 99.99 as maximum value, - a step value of 1.0 and a precision of 2 decimal places. - The value is initially set to 0.00. +//#define DEBUG_COMPLETE_WITH_PARAMETERS - \param parent parent object - */ ModuleBase_ParamSpinBox::ModuleBase_ParamSpinBox(QWidget* theParent, int thePrecision) : ModuleBase_DoubleSpinBox(theParent, thePrecision), myAcceptVariables(true) { +#ifdef DEBUG_COMPLETE_WITH_PARAMETERS + myCompleter = new QCompleter(this); + myCompleter->setWidget(this); + myCompleter->setCompletionMode(QCompleter::PopupCompletion); + + myCompleterModel = new QStringListModel(this); + myCompleter->setModel(myCompleterModel); + // Use sorted model to accelerate completion (QCompleter will use binary search) + myCompleter->setModelSorting(QCompleter::CaseInsensitivelySortedModel); + myCompleter->setCaseSensitivity(Qt::CaseInsensitive); + + lineEdit()->setCompleter(myCompleter); +#endif + connectSignalsAndSlots(); } +void ModuleBase_ParamSpinBox::setCompletionList(QStringList& theList) +{ +#ifdef DEBUG_COMPLETE_WITH_PARAMETERS + theList.sort(); + theList.removeDuplicates(); + myCompleterModel->setStringList(theList); +#endif +} + /*! \brief Destructor. */ @@ -69,26 +85,17 @@ void ModuleBase_ParamSpinBox::connectSignalsAndSlots() this, SLOT(onTextChanged(const QString&))); } -/*! - \brief This function is called when value is changed. - */ void ModuleBase_ParamSpinBox::onTextChanged(const QString& text) { myTextValue = text; } -/*! - \brief Interpret text entered by the user as a value. - \param text text entered by the user - \return mapped value - \sa textFromValue() - */ double ModuleBase_ParamSpinBox::valueFromText(const QString& theText) const { if (!hasVariable(theText)) return ModuleBase_DoubleSpinBox::valueFromText(theText); - // small hack: return length of the string to initiate valuesChanged signal + // small hack: return hash of the string to initiate valuesChanged signal return qHash(theText); } @@ -122,9 +129,14 @@ QValidator::State ModuleBase_ParamSpinBox::validate(QString& str, int& pos) cons /*! \brief This function is used to set a current value for this spinbox. \param value current value + + The new value is ignored if the spinbox has a variable. */ void ModuleBase_ParamSpinBox::setValue(const double value) { + if (hasVariable()) + return; + myTextValue = ModuleBase_DoubleSpinBox::textFromValue(value); ModuleBase_DoubleSpinBox::setValue(value); } @@ -231,11 +243,11 @@ bool ModuleBase_ParamSpinBox::findVariable(const QString& theName, double& outValue) const { ResultParameterPtr aParam; - return ModelAPI_Tools::findVariable(theName.toStdString(), outValue, aParam); + return ModelAPI_Tools::findVariable(FeaturePtr(), theName.toStdString(), outValue, aParam); } /*! - \brief This function is called when the spinbox recieves key press event. + \brief This function is called when the spinbox receives key press event. */ //void ModuleBase_ParamSpinBox::keyPressEvent(QKeyEvent* e) //{ @@ -247,7 +259,7 @@ bool ModuleBase_ParamSpinBox::findVariable(const QString& theName, //} /*! - \brief This function is called when the spinbox recieves show event. + \brief This function is called when the spinbox receives show event. */ void ModuleBase_ParamSpinBox::showEvent(QShowEvent* theEvent) {