itom 2.0.0
D:/git-itom/sources/itom/Qitom/widgets/workspaceWidget.h
00001 /* ********************************************************************
00002     itom software
00003     URL: http://www.uni-stuttgart.de/ito
00004     Copyright (C) 2013, Institut fuer Technische Optik (ITO),
00005     Universitaet Stuttgart, Germany
00006 
00007     This file is part of itom.
00008   
00009     itom is free software; you can redistribute it and/or modify it
00010     under the terms of the GNU Library General Public Licence as published by
00011     the Free Software Foundation; either version 2 of the Licence, or (at
00012     your option) any later version.
00013 
00014     itom is distributed in the hope that it will be useful, but
00015     WITHOUT ANY WARRANTY; without even the implied warranty of
00016     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library
00017     General Public Licence for more details.
00018 
00019     You should have received a copy of the GNU Library General Public License
00020     along with itom. If not, see <http://www.gnu.org/licenses/>.
00021 *********************************************************************** */
00022 
00023 #ifndef WORKSPACEWIDGET_H
00024 #define WORKSPACEWIDGET_H
00025 
00026 #ifndef Q_MOC_RUN
00027     //python
00028     // see http://vtk.org/gitweb?p=VTK.git;a=commitdiff;h=7f3f750596a105d48ea84ebfe1b1c4ca03e0bab3
00029     #if (defined _DEBUG) && (defined WIN32)
00030         #undef _DEBUG
00031         #include "Python.h"
00032         #define _DEBUG
00033     #else
00034         #include "Python.h"
00035     #endif
00036 #endif
00037 
00038 #include "../global.h"
00039 #include "../common/sharedStructures.h"
00040 #include "../common/sharedStructuresQt.h"
00041 
00042 #include "../python/pythonWorkspace.h"
00043 
00044 #include <qtreewidget.h>
00045 #include <qmimedata.h>
00046 #include <qpixmap.h>
00047 #include <qhash.h>
00048 #include <qset.h>
00049 
00050 namespace ito
00051 {
00052 
00053 class WorkspaceWidget : public QTreeWidget
00054 {
00055     Q_OBJECT
00056 public:
00057     WorkspaceWidget(bool globalNotLocal, QWidget* parent = NULL);
00058     ~WorkspaceWidget();
00059 
00060     inline int numberOfSelectedItems() const { return selectedItems().count(); }
00061     int numberOfSelectedMainItems() const;
00062     inline ito::PyWorkspaceContainer* getWorkspaceContainer() { return m_workspaceContainer; }
00063 
00064 protected:
00065     QStringList mimeTypes() const;
00066     QMimeData * mimeData(const QList<QTreeWidgetItem *> items) const;
00067     void startDrag(Qt::DropActions supportedActions);
00068 
00069 private:
00070     void updateView(QHash<QString,ito::PyWorkspaceItem*> items, QString baseName, QTreeWidgetItem *parent = NULL);
00071     void recursivelyDeleteHash(QTreeWidgetItem *item);
00072     void recursivelyDeleteHash(const QString &fullBaseName);
00073 
00074     bool m_globalNotLocal;                              
00075     QHash<QString,QTreeWidgetItem*> m_itemHash;
00076     ito::PyWorkspaceContainer *m_workspaceContainer;
00077 
00078     QString m_delimiter;
00079     QPixmap m_dragPixmap;
00080 #if QT_VERSION >= 0x050000
00081     Qt::DropActions supportedDragActions() const;
00082 #endif
00083 
00084 signals:
00085 
00086 public slots:
00087     void workspaceContainerUpdated(PyWorkspaceItem *rootItem, QString fullNameRoot, QStringList recentlyDeletedFullNames);
00088 
00089 private slots:
00090     void itemDoubleClicked(QTreeWidgetItem* item, int column);  
00091     void itemExpanded(QTreeWidgetItem* item);
00092     void itemCollapsed(QTreeWidgetItem* item);
00093 };
00094 
00095 } //end namespace ito
00096 
00097 #endif
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends