18 #include <QStringList> 19 #include <QMessageBox> 26 :QAbstractTableModel(parent)
37 context->UngetService( m_PythonServiceRef );
44 if (action == Qt::IgnoreAction)
48 bool returnValue =
false;
52 MITK_DEBUG(
"QmitkPythonVariableStackTableModel") <<
"dropped MITK DataNode";
58 foreach(node, dataNodeList)
61 MITK_DEBUG(
"QmitkPythonVariableStackTableModel") <<
"mitkImage is not null " << (mitkImage !=
nullptr?
"true":
"false");
64 QString varName(node->
GetName().c_str());
66 varName = varName.replace(QRegExp(
"[.\\+\\-*\\s\\/\\n\\t\\r]"),QString(
"_"));
70 if ( varName.isEmpty() )
72 if ( rx.indexIn(varName) == 0)
76 varName = QString(
"%1%2").arg(varName).arg(i);
77 MITK_DEBUG(
"QmitkPythonVariableStackTableModel") <<
"varName" << varName.toStdString();
83 int ret = QMessageBox::question(
nullptr,
"Export option",
84 "2D image detected. Export as OpenCV image to Python instead of an SimpleITK image?",
85 QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
86 exportAsCvImage = ret == QMessageBox::Yes;
93 if( !exportAsCvImage )
102 MITK_ERROR <<
"SimpleITK Python wrapping not available. Skipping export for image " << node->
GetName();
109 MITK_DEBUG(
"QmitkPythonVariableStackTableModel") <<
"found surface";
113 if (varName.isEmpty() )
115 if ( rx.indexIn(varName) == 0)
118 MITK_DEBUG(
"QmitkPythonVariableStackTableModel") <<
"varName" << varName;
126 MITK_ERROR <<
"VTK Python wrapping not available. Skipping export for surface " << node->
GetName();
141 if ( role == Qt::DisplayRole )
143 if( orientation == Qt::Horizontal )
147 headerData =
"Attribute";
148 else if(section == 1)
150 else if(section == 2)
151 headerData =
"Value";
160 Qt::ItemFlags
flags = QAbstractItemModel::flags(index);
163 return Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled | flags;
165 return Qt::ItemIsDropEnabled |
flags;
170 return m_VariableStack.size();
180 if (index.isValid() && !m_VariableStack.empty())
182 if(role == Qt::DisplayRole)
185 if(index.column() == 0)
186 return QString::fromStdString(item.
m_Name);
187 if(index.column() == 1)
188 return QString::fromStdString(item.
m_Type);
189 if(index.column() == 2)
190 return QString::fromStdString(item.
m_Value);
198 return QAbstractTableModel::mimeTypes();
200 types <<
"application/x-mitk-datanodes";
201 types <<
"application/x-qabstractitemmodeldatalist";
207 return Qt::CopyAction | Qt::MoveAction;
212 MITK_DEBUG(
"QmitkPythonVariableStackTableModel") <<
"command was executed " << pythonCommand;
214 QAbstractTableModel::beginResetModel();
215 QAbstractTableModel::endResetModel();
220 return m_VariableStack;
void CommandExecuted(const std::string &pythonCommand) override
virtual bool CopyToPythonAsSimpleItkImage(mitk::Image *image, const std::string &varName)=0
Class for storing surfaces (vtkPolyData).
virtual void AddPythonCommandObserver(PythonCommandObserver *observer)=0
adds a command observer which is informed after a command was issued with "Execute" ...
Qt::ItemFlags flags(const QModelIndex &index) const override
static const QString MITK_IMAGE_VAR_NAME
static QList< mitk::DataNode * > ToDataNodePtrList(const QByteArray &ba)
Qt::DropActions supportedDropActions() const override
virtual bool IsVtkPythonWrappingAvailable()=0
static const QString DataNodePtrs
~QmitkPythonVariableStackTableModel() override
QStringList mimeTypes() const override
bool dropMimeData(const QMimeData *, Qt::DropAction, int, int, const QModelIndex &) override
virtual bool IsOpenCvPythonWrappingAvailable()=0
virtual void RemovePythonCommandObserver(PythonCommandObserver *observer)=0
removes a specific command observer
BaseData * GetData() const
Get the data object (instance of BaseData, e.g., an Image) managed by this DataNode.
unsigned int GetDimension() const
Get dimension of the image.
QVariant headerData(int section, Qt::Orientation orientation, int role) const override
Image class for storing images.
virtual std::vector< PythonVariable > GetVariableStack() const =0
QmitkPythonVariableStackTableModel(QObject *parent=nullptr)
virtual bool IsSimpleItkPythonWrappingAvailable()=0
int columnCount(const QModelIndex &parent=QModelIndex()) const override
static const QString MITK_SURFACE_VAR_NAME
int rowCount(const QModelIndex &parent=QModelIndex()) const override
std::vector< mitk::PythonVariable > GetVariableStack() const
static ModuleContext * GetModuleContext()
Returns the module context of the calling module.
Class for nodes of the DataTree.
virtual bool CopyToPythonAsCvImage(mitk::Image *image, const std::string &varName)=0
bool GetName(std::string &nodeName, const mitk::BaseRenderer *renderer=nullptr, const char *propertyKey="name") const
Convenience access method for accessing the name of an object (instance of StringProperty with proper...
virtual bool CopyToPythonAsVtkPolyData(mitk::Surface *surface, const std::string &varName)=0
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override