itom 1.3.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 linux)
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 
00046 #include <qhash.h>
00047 #include <qset.h>
00048 
00049 namespace ito
00050 {
00051 
00052 class WorkspaceWidget : public QTreeWidget
00053 {
00054     Q_OBJECT
00055 public:
00056     WorkspaceWidget(bool globalNotLocal, QWidget* parent = NULL);
00057     ~WorkspaceWidget();
00058 
00059     inline int numberOfSelectedItems() const { return selectedItems().count(); }
00060     int numberOfSelectedMainItems() const;
00061     inline ito::PyWorkspaceContainer* getWorkspaceContainer() { return m_workspaceContainer; }
00062 
00063 protected:
00064 
00065 private:
00066     void updateView(QHash<QString,ito::PyWorkspaceItem*> items, QString baseName, QTreeWidgetItem *parent = NULL);
00067     void recursivelyDeleteHash(QTreeWidgetItem *item);
00068     void recursivelyDeleteHash(const QString &fullBaseName);
00069 
00070     bool m_globalNotLocal;                              
00071     QHash<QString,QTreeWidgetItem*> m_itemHash;
00072     ito::PyWorkspaceContainer *m_workspaceContainer;
00073 
00074     QString m_delimiter;
00075 
00076 signals:
00077 
00078 public slots:
00079     void workspaceContainerUpdated(PyWorkspaceItem *rootItem, QString fullNameRoot, QStringList recentlyDeletedFullNames);
00080 
00081 private slots:
00082     void itemDoubleClicked(QTreeWidgetItem* item, int column);  
00083     void itemExpanded(QTreeWidgetItem* item);
00084     void itemCollapsed(QTreeWidgetItem* item);
00085 };
00086 
00087 } //end namespace ito
00088 
00089 #endif
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends