C:/Projets/hexamonkey/gui/tree/treeobjectitem.h
Go to the documentation of this file.
00001 //This file is part of the HexaMonkey project, a multimedia analyser
00002 //Copyright (C) 2013  Sevan Drapeau-Martin, Nicolas Fleury
00003 
00004 //This program is free software; you can redistribute it and/or
00005 //modify it under the terms of the GNU General Public License
00006 //as published by the Free Software Foundation; either version 2
00007 //of the License, or (at your option) any later version.
00008 
00009 //This program is distributed in the hope that it will be useful,
00010 //but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012 //GNU General Public License for more details.
00013 
00014 //You should have received a copy of the GNU General Public License
00015 //along with this program; if not, write to the Free Software
00016 //Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
00017 
00018 #ifndef TREEOBJECTITEM_H
00019 #define TREEOBJECTITEM_H
00020 
00021 #include <QList>
00022 #include <QVariant>
00023 
00024 #include <iostream>
00025 #include <fstream>
00026 #include <iomanip>
00027 #include <cmath>
00028 #include <set>
00029 
00030 #include "core/object.h"
00031 #include "core/interpreter/filter.h"
00032 #include "gui/tree/treeitem.h"
00033 
00043 class TreeObjectItem : public TreeItem
00044 {
00045     Q_OBJECT
00046 public:
00047     TreeObjectItem(Object& object, const ProgramLoader& programLoader, TreeItem *parent);
00048     Object& object() const;
00049     Object::iterator nextChild();
00050     Object::iterator end();
00051     virtual bool synchronised();
00052 
00053     void advanceLastChild();
00054     void setLastChildIndex(int64_t l);
00055     bool filterObject(Object &object);
00056     bool updateFilter(const std::string& expression);
00057     const std::string& filterExpression();
00058     virtual bool hasStream() const override;
00059     virtual QVariant clipboardValue() const override;
00060     virtual bool hasLinkTo() const override;
00061     virtual qint64 linkTo() const override;
00062 
00063 protected:
00064     TreeObjectItem(const ProgramLoader& programLoader, TreeItem *parent);
00065     virtual void onChildrenRemoved() override;
00066     void setObject(Object& object);
00067 
00068 private:
00069    void doLoad() const override;
00070    Object* _object;
00071    int64_t _index;
00072    Filter filter;
00073    bool _synchronised;
00074 };
00075 
00076 #endif // DATATREEITEM_H