+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
+
#include "ModuleBase_ParamSpinBox.h"
#include <ModelAPI_Session.h>
#include <ModelAPI_Document.h>
+#include <ModelAPI_Feature.h>
#include <ModelAPI_ResultParameter.h>
#include <ModelAPI_AttributeDouble.h>
#include <ModelAPI_Tools.h>
#include <QToolTip>
#include <QApplication>
+#include <QStringListModel>
+#include <QCompleter>
+#include <QShortcut>
+
#include <string>
#include <iostream>
+//#define DEBUG_COMPLETE_WITH_PARAMETERS
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.
*/
void ModuleBase_ParamSpinBox::onTextChanged(const QString& text)
{
myTextValue = text;
+ emit textChanged(text);
}
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);
}
/*!
\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);
}
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)
//{
//}
/*!
- \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)
{