Skip to content
Snippets Groups Projects
Commit 43eff4eb authored by stefan's avatar stefan
Browse files

SceneWin, added drag support for entities to support dropping on the python shell

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2363 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent 06a0b0ae
No related branches found
No related tags found
No related merge requests found
...@@ -71,10 +71,10 @@ bool GfxSceneNode::SetData(int column, const QVariant& value, int role){ ...@@ -71,10 +71,10 @@ bool GfxSceneNode::SetData(int column, const QVariant& value, int role){
Qt::ItemFlags GfxSceneNode::Flags(int column) const{ Qt::ItemFlags GfxSceneNode::Flags(int column) const{
if(column==0){ if(column==0){
return Qt::ItemIsSelectable|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled; return Qt::ItemIsSelectable|Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsDragEnabled;
} }
else if(column==1){ else if(column==1){
return Qt::ItemIsSelectable|Qt::ItemIsEnabled|Qt::ItemIsEditable; return Qt::ItemIsSelectable|Qt::ItemIsEnabled|Qt::ItemIsEditable|Qt::ItemIsDragEnabled;
} }
return Qt::NoItemFlags; return Qt::NoItemFlags;
} }
......
...@@ -59,6 +59,7 @@ SceneWin::SceneWin(QWidget* parent) : ...@@ -59,6 +59,7 @@ SceneWin::SceneWin(QWidget* parent) :
view_->setSelectionBehavior(QAbstractItemView::SelectRows); view_->setSelectionBehavior(QAbstractItemView::SelectRows);
view_->setSelectionMode(QAbstractItemView::ExtendedSelection); view_->setSelectionMode(QAbstractItemView::ExtendedSelection);
view_->setEditTriggers(QAbstractItemView::EditKeyPressed); view_->setEditTriggers(QAbstractItemView::EditKeyPressed);
view_->setDragEnabled(true);
view_->expandAll(); view_->expandAll();
layout->addWidget(view_); layout->addWidget(view_);
......
...@@ -198,6 +198,36 @@ bool SceneWinModel::setData(const QModelIndex& index, ...@@ -198,6 +198,36 @@ bool SceneWinModel::setData(const QModelIndex& index,
return false; return false;
} }
QStringList SceneWinModel::mimeTypes() const
{
QStringList types;
types << "text/plain";
return types;
}
Qt::DropActions SceneWinModel::supportedDragActions() const
{
return Qt::MoveAction;
}
QMimeData* SceneWinModel::mimeData(const QModelIndexList &indexes) const
{
QMimeData *mimeData = new QMimeData();
QByteArray encoded_data;
QDataStream stream(&encoded_data, QIODevice::WriteOnly);
foreach (QModelIndex index, indexes) {
if (index.isValid() && index.column()==1) {
QString text = "scene['"+data(index, Qt::DisplayRole).toString()+"']";
encoded_data.append(text);
}
}
mimeData->setData("text/plain", encoded_data);
return mimeData;
}
void SceneWinModel::NodeAdded(const gfx::GfxNodeP& node) void SceneWinModel::NodeAdded(const gfx::GfxNodeP& node)
{ {
gfx::EntityP e=boost::dynamic_pointer_cast<gfx::Entity>(node); gfx::EntityP e=boost::dynamic_pointer_cast<gfx::Entity>(node);
......
...@@ -23,6 +23,8 @@ ...@@ -23,6 +23,8 @@
Author: Stefan Scheuber, Marco Biasini, Ansgar Philippsen Author: Stefan Scheuber, Marco Biasini, Ansgar Philippsen
*/ */
#include <QStringList>
#include <QMimeData>
#include <QMap> #include <QMap>
#include <QAbstractItemModel> #include <QAbstractItemModel>
...@@ -88,6 +90,10 @@ public: ...@@ -88,6 +90,10 @@ public:
const QVariant& value=QVariant(), const QVariant& value=QVariant(),
int role=Qt::DisplayRole); int role=Qt::DisplayRole);
virtual QStringList mimeTypes() const;
Qt::DropActions supportedDragActions() const;
virtual QMimeData* mimeData(const QModelIndexList& indexes) const;
// scene observer interface // scene observer interface
virtual void NodeAdded(const gfx::GfxNodeP& node); virtual void NodeAdded(const gfx::GfxNodeP& node);
virtual void NodeRemoved(const gfx::GfxNodeP& node); virtual void NodeRemoved(const gfx::GfxNodeP& node);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment