Abstract tree item class. More...
#include <treeitemabstract.h>
Public Member Functions | |
| void | setSelect (bool selected) |
| void | unSelect (Q_ListView *tree) |
| QString | path () |
| TreeItemAbstract (const QString &itemName, TreeData *_data, Q_ListView *parent, Q_ListViewItem *after=NULL) | |
| TreeItemAbstract (const QString &itemName, TreeData *_data, Q_ListViewItem *parent, Q_ListViewItem *after=NULL) | |
| QString | name () |
| void | setName (const QString &newNameId) |
| virtual | ~TreeItemAbstract () |
| void | reload (bool reloadThis=true, bool forceReload=false) |
| virtual void | deleteChild (const QString &name) |
| virtual void | deleteChild (Q_ListViewItem *target) |
| void | eraseItems () |
| void | moveAllChildsFrom (TreeItemAbstract *src) |
| Q_ListViewItem * | child (const QString &name) |
| virtual QSCObject * | getQSObject (BaseCore *_base) |
| virtual void | setOpen (bool open) |
| virtual bool | deepReload (const QString &childName, Q_ListViewItem *oldItem) |
| virtual QString | itemHint () |
| virtual bool | validChild (const QString &name, Q_ListViewItem *oldChild)=0 |
| virtual QSCObject * | getQSObject ()=0 |
| virtual TreeItemAbstract * | createChild (const QString &name, ChildType typ, Q_ListViewItem *after=NULL)=0 |
| virtual QStringList | getChildNames ()=0 |
| virtual void | reloadSelf ()=0 |
| virtual void | remove ()=0 |
| virtual ChildType | getChildType (const QString &name)=0 |
| virtual bool | haveChild ()=0 |
Protected Attributes | |
| QString | nameId |
| Q_Dict< Q_ListViewItem > | items |
| QMap< QString, ChildType > | types |
| TreeData * | data |
Private Member Functions | |
| void | initAbs () |
Private Attributes | |
| bool | parsed |
| TreeWindow * | rootWindow |
Abstract tree item class.
Common ancestor of all tree Items, with functions to support automatic loading and reloading of tree, or its parts (subtrees)
| gui::TreeItemAbstract::TreeItemAbstract | ( | const QString & | itemName, | |
| TreeData * | _data, | |||
| Q_ListView * | parent, | |||
| Q_ListViewItem * | after = NULL | |||
| ) |
constructor of TreeItemAbstract - create root item
| itemName | Name of this item | |
| _data | TreeData containing necessary information about tree in which this item will be inserted | |
| parent | Q_ListView in which to put item | |
| after | Item after which this one will be inserted |
| gui::TreeItemAbstract::TreeItemAbstract | ( | const QString & | itemName, | |
| TreeData * | _data, | |||
| Q_ListViewItem * | parent, | |||
| Q_ListViewItem * | after = NULL | |||
| ) |
constructor of TreeItemAbstract - create child item
| itemName | Name of this item | |
| _data | TreeData containing necessary information about tree in which this item will be inserted | |
| parent | Q_ListViewItem which is parent of this object | |
| after | Item after which this one will be inserted |
| gui::TreeItemAbstract::~TreeItemAbstract | ( | ) | [virtual] |
default destructor
References data, gui::TreeWindow::deleteNotify(), gui::TreeData::multi(), gui::MultiTreeWindow::notifyDelete(), rootWindow, and gui::TreeData::tree().
| Q_ListViewItem * gui::TreeItemAbstract::child | ( | const QString & | name | ) |
Look for child with given name and return it. Return NULL if child not found
| name | Name of child to look for |
References items, parsed, and reload().
Referenced by gui::QSTreeItem::child().
| virtual TreeItemAbstract* gui::TreeItemAbstract::createChild | ( | const QString & | name, | |
| ChildType | typ, | |||
| Q_ListViewItem * | after = NULL | |||
| ) | [pure virtual] |
Create one subchild
| name | Name of child (the same as in list returned from getChildNames) | |
| typ | Type of TreeItemAbstract's child. (see ChildType) | |
| after | Q_ListViewItem after which will be this item added. If unspecified (or NULL), it is added before any other items |
Implemented in gui::TreeItemAnnotation, gui::TreeItemAnnotationContainer, gui::TreeItemArray, gui::TreeItemContentStream, gui::TreeItemCStream, gui::TreeItemDict, gui::TreeItemOperatorContainer, gui::TreeItemPage, gui::TreeItemPdf, gui::TreeItemPdfOperator, gui::TreeItemRef, and gui::TreeItemSimple.
Referenced by reload().
| bool gui::TreeItemAbstract::deepReload | ( | const QString & | childName, | |
| Q_ListViewItem * | oldItem | |||
| ) | [virtual] |
Attempt to "deep reload", i.e. exchange the item inside the tree for an actual (different) one, without destroying the object (destroying have unfortunate effect of losing information about which child were opened ...) oldChild should be modified to refrlect the new object If deep reload is supported and was sucessful, return true, otherwise false.
Note: oldItem should not check or reload its children in this method (at it might lead to multiple reloading of same part of tree) Also, it is guaranteed that reloadSelf will be called on that item, so explicitly reloading the item might be unnecessary too
| childName | name of (old and new) treeitem | |
| oldItem | reference to old child tree item |
Reimplemented in gui::TreeItemDict, gui::TreeItemPage, gui::TreeItemPdf, and gui::TreeItemRef.
Referenced by reload().
| void gui::TreeItemAbstract::deleteChild | ( | Q_ListViewItem * | target | ) | [virtual] |
Delete subitem, given by its pointer
| target | Pointer to subitem to delete |
| void gui::TreeItemAbstract::deleteChild | ( | const QString & | name | ) | [virtual] |
Delete subitem, given by its name
| name | Name of subitem to delete |
References debug::DBG_WARN, guiPrintDbg, items, Q_ListViewItem, Q_OUT, and types.
Referenced by eraseItems(), and reload().
| void gui::TreeItemAbstract::eraseItems | ( | ) |
Erase all items in current item dictionary. After returning, the item dictionary is empty
References deleteChild(), items, and types.
Referenced by moveAllChildsFrom(), reload(), and gui::TreeItemRef::reloadSelf().
| virtual QStringList gui::TreeItemAbstract::getChildNames | ( | ) | [pure virtual] |
Get list of all item's childs names
Implemented in gui::TreeItemAnnotation, gui::TreeItemAnnotationContainer, gui::TreeItemArray, gui::TreeItemContentStream, gui::TreeItemCStream, gui::TreeItemDict, gui::TreeItemOperatorContainer, gui::TreeItemPage, gui::TreeItemPdf, gui::TreeItemPdfOperator, gui::TreeItemRef, and gui::TreeItemSimple.
Referenced by gui::QSTreeItem::getChildNames(), and reload().
| virtual ChildType gui::TreeItemAbstract::getChildType | ( | const QString & | name | ) | [pure virtual] |
Get type of this items child, given its name.
| name | Name of child item |
Implemented in gui::TreeItemAnnotation, gui::TreeItemAnnotationContainer, gui::TreeItemArray, gui::TreeItemContentStream, gui::TreeItemCStream, gui::TreeItemDict, gui::TreeItemOperatorContainer, gui::TreeItemPage, gui::TreeItemPdf, gui::TreeItemPdfOperator, gui::TreeItemRef, and gui::TreeItemSimple.
Referenced by reload().
| virtual QSCObject* gui::TreeItemAbstract::getQSObject | ( | ) | [pure virtual] |
Create and return object for scripting representing this tree item
Implemented in gui::TreeItem, gui::TreeItemAnnotation, gui::TreeItemAnnotationContainer, gui::TreeItemArray, gui::TreeItemContentStream, gui::TreeItemCStream, gui::TreeItemDict, gui::TreeItemOperatorContainer, gui::TreeItemPage, gui::TreeItemPdf, and gui::TreeItemPdfOperator.
Create and return object for scripting representing this tree item, relocated in different base If the object cannot be copied into new base, return NULL
| _base | BaseCore for the new object. |
Reimplemented in gui::TreeItem, gui::TreeItemArray, gui::TreeItemCStream, gui::TreeItemDict, and gui::TreeItemPage.
Referenced by gui::TreeWindow::getSelected(), gui::QSTreeItem::item(), gui::QSTreeItem::itemref(), gui::QSTreeItem::itemtype(), and gui::TreeWindow::nextSelected().
| virtual bool gui::TreeItemAbstract::haveChild | ( | ) | [pure virtual] |
Return true, if the item have at least one child
Implemented in gui::TreeItemAnnotation, gui::TreeItemAnnotationContainer, gui::TreeItemArray, gui::TreeItemContentStream, gui::TreeItemCStream, gui::TreeItemDict, gui::TreeItemOperatorContainer, gui::TreeItemPage, gui::TreeItemPdf, gui::TreeItemPdfOperator, gui::TreeItemRef, and gui::TreeItemSimple.
Referenced by reload().
| void gui::TreeItemAbstract::initAbs | ( | ) | [private] |
Initialize the class - set root window, check data ...
References data, parsed, Q_ListView, and rootWindow.
Referenced by TreeItemAbstract().
| QString gui::TreeItemAbstract::itemHint | ( | ) | [virtual] |
Return hint (description) of this item
Reimplemented in gui::TreeItemPdfOperator.
References path().
Referenced by gui::TreeWindow::moveOnItem().
| void gui::TreeItemAbstract::moveAllChildsFrom | ( | TreeItemAbstract * | src | ) |
Move all child items from other item to this item. If current item does have any childs, they will be deleted
| src | TreeItemAbstract containing childs I want to move to this item |
References debug::DBG_DBG, eraseItems(), guiPrintDbg, items, Q_ListViewItem, and types.
Referenced by gui::TreeItemRef::setOpen().
| QString gui::TreeItemAbstract::name | ( | ) |
Return name (id) of this item. Name is unique only for each item's children. Children of different tree items can (and often will) have same name
References nameId.
Referenced by gui::QSTreeItem::id(), and path().
| QString gui::TreeItemAbstract::path | ( | ) |
Return path of this item (sequence of names from root to this item, separated by slash "/").
References name().
Referenced by gui::TreeItemPdfOperator::itemHint(), itemHint(), and gui::QSTreeItem::path().
| void gui::TreeItemAbstract::reload | ( | bool | reloadThis = true, |
|
| bool | forceReload = false | |||
| ) |
Reload contents of this item's subtree recursively by calling reloadSelf, createChild, getChildNames and deleteChild
| reloadThis | reload also itself, or only child? Default reload also itself | |
| forceReload | force reload? Just delete all childs and re-create them, effectively bypassing any optimizations |
References createChild(), deepReload(), deleteChild(), eraseItems(), getChildNames(), getChildType(), haveChild(), items, parsed, Q_ListViewItem, reload(), reloadSelf(), types, and validChild().
Referenced by child(), gui::TreeItemPage::init(), gui::TreeItemGenericObserver< pdfobjects::CPage >::notify(), gui::TreeWindow::reload(), reload(), gui::QSTreeItem::reload(), gui::QSTreeItem::reload_force(), gui::TreeWindow::reloadFrom(), gui::TreeItemPdfOperator::remove(), gui::TreeItemRef::setOpen(), setOpen(), gui::TreeItemArray::TreeItemArray(), gui::TreeItemCStream::TreeItemCStream(), gui::TreeItemDict::TreeItemDict(), gui::TreeItemOutline::TreeItemOutline(), gui::TreeItemPdfOperator::TreeItemPdfOperator(), gui::TreeItemRef::TreeItemRef(), and gui::TreeItemSimple::TreeItemSimple().
| virtual void gui::TreeItemAbstract::reloadSelf | ( | ) | [pure virtual] |
Reload contents of itself and only itself (excluding any children)
Implemented in gui::TreeItem, gui::TreeItemAnnotation, gui::TreeItemAnnotationContainer, gui::TreeItemContentStream, gui::TreeItemOperatorContainer, gui::TreeItemOutline, gui::TreeItemPage, gui::TreeItemPdf, gui::TreeItemPdfOperator, and gui::TreeItemRef.
Referenced by reload().
| virtual void gui::TreeItemAbstract::remove | ( | ) | [pure virtual] |
Remove itself from document (including any children) Do not remove the treeitem itself in this method -> this may lead to crash! If desired, you may call reload() on parent to get rid of the item correctly
Implemented in gui::TreeItem, gui::TreeItemAnnotation, gui::TreeItemAnnotationContainer, gui::TreeItemContentStream, gui::TreeItemOperatorContainer, gui::TreeItemPage, gui::TreeItemPdf, and gui::TreeItemPdfOperator.
Referenced by gui::QSTreeItem::remove().
| void gui::TreeItemAbstract::setName | ( | const QString & | newNameId | ) |
Set name (id) of this item. Name is unique only for each item's children. Children of different tree items can (and often will) have same name Can be used if changing array elements (moving, etc ...)
| newNameId | New name for this element |
References nameId.
Referenced by gui::TreeItemArray::remove().
| void gui::TreeItemAbstract::setOpen | ( | bool | open | ) | [virtual] |
Slot that will be called when item is opened/closed
| open | True if item is being opened, false if closed |
Reimplemented in gui::TreeItemContentStream, and gui::TreeItemRef.
References parsed, and reload().
Referenced by gui::TreeWindow::init(), and gui::QSTreeItem::setOpen().
| void gui::TreeItemAbstract::setSelect | ( | bool | selected | ) |
Set this item as selected/unselected and repaint the tree
| selected | true to select, false to unselect |
References Q_ListView.
Referenced by gui::QSTreeItem::setSelected().
| void gui::TreeItemAbstract::unSelect | ( | Q_ListView * | tree | ) |
Move selection away from this item to nearest sensible item
If this item is not selected, task is done, does nothing
If it is selected, firt attempt is to move selection on next sibling, then on item above, then on item below.
| tree | Q_ListView in which this item resides |
References debug::DBG_INFO, guiPrintDbg, and Q_ListViewItem.
Referenced by gui::TreeItemDict::remove(), gui::TreeItemCStream::remove(), and gui::TreeItemArray::remove().
| virtual bool gui::TreeItemAbstract::validChild | ( | const QString & | name, | |
| Q_ListViewItem * | oldChild | |||
| ) | [pure virtual] |
Validate child, given its name and reference to old child Usually it is valid, since item with same name refer to same subitem (key-based items), but for value-based items (array) same keys can correspond to different values after reloading. In such cases, false should be returned. Also, similar problems can happen when switching revisions (with almost all types)
Note: false negative it not a problem (only unnecessary reloading), while false positive mean the tree is invalid/outdated
| name | name of (old and new) treeitem | |
| oldChild | reference to old child tree item |
Implemented in gui::TreeItemAnnotation, gui::TreeItemAnnotationContainer, gui::TreeItemArray, gui::TreeItemContentStream, gui::TreeItemCStream, gui::TreeItemDict, gui::TreeItemOperatorContainer, gui::TreeItemPage, gui::TreeItemPdf, gui::TreeItemPdfOperator, gui::TreeItemRef, and gui::TreeItemSimple.
Referenced by reload().
TreeData* gui::TreeItemAbstract::data [protected] |
Data from treewindow containing reference to it and other needed data
Referenced by gui::DragListView::contentsDropEvent(), gui::TreeItemRef::createChild(), gui::TreeItemPdfOperator::createChild(), gui::TreeItemPage::createChild(), gui::TreeItemDict::createChild(), gui::TreeItemCStream::createChild(), gui::TreeItemArray::createChild(), gui::TreeItemPdfOperator::getChildNames(), gui::TreeItemPage::getChildNames(), gui::TreeItemDict::getChildNames(), gui::TreeItemCStream::getChildNames(), gui::TreeItemArray::getChildNames(), gui::TreeItemPdfOperator::getQSObject(), gui::TreeItemPage::getQSObject(), gui::TreeItemDict::getQSObject(), gui::TreeItemCStream::getQSObject(), gui::TreeItemArray::getQSObject(), gui::TreeItem::getQSObject(), gui::TreeItemPage::haveChild(), gui::TreeItemAnnotation::haveChild(), initAbs(), gui::TreeItemRef::reloadSelf(), gui::TreeItemDict::remove(), gui::TreeItemCStream::remove(), gui::TreeItemArray::remove(), gui::TreeItem::remove(), gui::TreeItemRef::setOpen(), TreeItemAbstract(), gui::TreeItemArray::TreeItemArray(), gui::TreeItemCStream::TreeItemCStream(), gui::TreeItemDict::TreeItemDict(), gui::TreeItemOutline::TreeItemOutline(), gui::TreeItemPdfOperator::TreeItemPdfOperator(), gui::TreeItemSimple::TreeItemSimple(), gui::TreeItemRef::unOpen(), ~TreeItemAbstract(), and gui::TreeItemRef::~TreeItemRef().
Q_Dict<Q_ListViewItem> gui::TreeItemAbstract::items [protected] |
Mapping of all child names to child items for this tree item
Referenced by child(), deleteChild(), eraseItems(), moveAllChildsFrom(), reload(), gui::TreeItemDict::remove(), gui::TreeItemCStream::remove(), and gui::TreeItemArray::remove().
QString gui::TreeItemAbstract::nameId [protected] |
Name of this item
Referenced by name(), setName(), and TreeItemAbstract().
bool gui::TreeItemAbstract::parsed [private] |
TreeWindow* gui::TreeItemAbstract::rootWindow [private] |
root window (for delete notification)
Referenced by initAbs(), and ~TreeItemAbstract().
QMap<QString,ChildType> gui::TreeItemAbstract::types [protected] |
Mapping of all child names to types of child items for this tree item
Referenced by deleteChild(), eraseItems(), moveAllChildsFrom(), and reload().