-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
-
-// File: CollectionPlugin_WidgetField.h
-// Created: 16 Nov 2016
-// Author: Vitaly SMETANNIKOV
-
+// Copyright (C) 2014-2017 CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or
+// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+//
#ifndef CollectionPlugin_WidgetField_H
#define CollectionPlugin_WidgetField_H
#include <QList>
#include <QStringList>
+#include <QStyledItemDelegate>
class QWidget;
class QTableWidgetItem;
class QLineEdit;
+
+class DataTableItemDelegate : public QStyledItemDelegate
+{
+ Q_OBJECT
+public:
+ DataTableItemDelegate(ModelAPI_AttributeTables::ValueType theType);
+
+ virtual QWidget* createEditor(QWidget* theParent,
+ const QStyleOptionViewItem & theOption,
+ const QModelIndex& theIndex) const;
+
+ ModelAPI_AttributeTables::ValueType dataType() const { return myType; }
+
+ void setDataType(ModelAPI_AttributeTables::ValueType theType) { myType = theType; }
+
+private slots:
+ void onEditItem(const QString& theText);
+
+private:
+ ModelAPI_AttributeTables::ValueType myType;
+};
+
+
+
/*!
* \ingroup GUI
* Represent a content of the property panel to show/modify parameters of a Field feature.
{
Q_OBJECT
public:
- CollectionPlugin_WidgetField(QWidget* theParent,
- ModuleBase_IWorkshop* theWorkshop,
+ CollectionPlugin_WidgetField(QWidget* theParent,
+ ModuleBase_IWorkshop* theWorkshop,
const Config_WidgetAPI* theData);
virtual ~CollectionPlugin_WidgetField() {}
/// Checks the widget validity. By default, it returns true.
/// \param thePrs a selected presentation in the view
/// \return a boolean value
- virtual bool isValidSelection(const std::shared_ptr<ModuleBase_ViewerPrs>& theValue);
+ virtual bool isValidSelectionCustom(const std::shared_ptr<ModuleBase_ViewerPrs>& theValue);
/// Returns true if the event is processed.
virtual bool processEnter();
/// The methiod called when widget is deactivated
virtual void deactivate();
+ /// Set the given wrapped value to the current widget
+ /// This value should be processed in the widget according to the needs
+ /// \param theValues the wrapped selection values
+ /// \param theToValidate a validation of the values flag
+ virtual bool setSelection(QList<std::shared_ptr<ModuleBase_ViewerPrs>>& theValues,
+ const bool theToValidate);
+
protected:
/// Saves the internal parameters to the given feature
/// \return True in success
/// \param theEvent an event
virtual bool eventFilter(QObject* theObject, QEvent* theEvent);
+ //virtual void showEvent(QShowEvent* theEvent);
-protected slots:
- /// Slot which is called on selection event
- virtual void onSelectionChanged();
+ /// Return the attribute values wrapped in a list of viewer presentations
+ /// \return a list of viewer presentations, which contains an attribute result and
+ /// a shape. If the attribute do not uses the shape, it is empty
+ virtual QList<std::shared_ptr<ModuleBase_ViewerPrs>> getAttributeSelection() const;
private slots:
/// Slot called on number of component changed
/// \param theMax a maximal value
void onRangeChanged(int theMin, int theMax);
+ void onColumnResize(int theIndex, int theOld, int theNew);
+
private:
/// Clear existing tables
void clearData();
/// \param theVal a value for the item
QTableWidgetItem* createValueItem(ModelAPI_AttributeTables::Value& theVal) const;
+ QString getValueText(ModelAPI_AttributeTables::Value& theVal) const;
+
/// Return a value from the string
/// \param theStrVal a string
ModelAPI_AttributeTables::Value getValue(QString theStrVal) const;
int myEditIndex;
/// Stae of a table editing
- bool myIsEditing;
+ bool myIsTabEdit;
bool myActivation;
+
+ DataTableItemDelegate* myDelegate;
};
#endif
\ No newline at end of file