0
0
mirror of https://github.com/fralx/LimeReport.git synced 2025-10-02 11:54:59 +03:00

Define code style and format all source file using clang-format-14

except those placed in 3rdparty directories.
This commit is contained in:
Андрей Лухнов
2024-09-04 17:31:16 +03:00
parent c5b9ac265d
commit 0fca7169d3
285 changed files with 19120 additions and 17875 deletions

View File

@@ -28,202 +28,200 @@
* GNU General Public License for more details. *
****************************************************************************/
#include "lrobjectbrowser.h"
#include "lritemdesignintf.h"
#include "lrbanddesignintf.h"
#include "lritemdesignintf.h"
#include <QVBoxLayout>
namespace LimeReport{
namespace LimeReport {
ObjectBrowser::ObjectBrowser(QWidget *parent)
:QWidget(parent), m_designerWidget(NULL), m_mainWindow(NULL),
m_changingItemSelection(false), m_movingItem(false)
ObjectBrowser::ObjectBrowser(QWidget* parent):
QWidget(parent),
m_designerWidget(NULL),
m_mainWindow(NULL),
m_changingItemSelection(false),
m_movingItem(false)
{
QVBoxLayout *layout = new QVBoxLayout(this);
QVBoxLayout* layout = new QVBoxLayout(this);
setLayout(layout);
int margin = Const::DOCKWIDGET_MARGINS;
layout->setContentsMargins(margin, margin, margin, margin);
m_treeView = new QTreeWidget(this);
layout->addWidget(m_treeView);
m_treeView->headerItem()->setText(0,tr("Objects"));
m_treeView->headerItem()->setText(0, tr("Objects"));
m_treeView->setSelectionMode(QAbstractItemView::ExtendedSelection);
}
void ObjectBrowser::setReportEditor(ReportDesignWidget *designerWidget)
void ObjectBrowser::setReportEditor(ReportDesignWidget* designerWidget)
{
m_designerWidget=designerWidget;
connect(m_designerWidget,SIGNAL(cleared()),this,SLOT(slotClear()));
m_designerWidget = designerWidget;
connect(m_designerWidget, SIGNAL(cleared()), this, SLOT(slotClear()));
connect(m_designerWidget, SIGNAL(loadFinished()), this, SLOT(slotReportLoaded()));
connect(m_designerWidget, SIGNAL(activePageChanged()), this, SLOT(slotActivePageChanged()));
connect(m_designerWidget,SIGNAL(itemAdded(LimeReport::PageDesignIntf*,LimeReport::BaseDesignIntf*)),
this, SLOT(slotItemAdded(LimeReport::PageDesignIntf*,LimeReport::BaseDesignIntf*)));
connect(m_designerWidget, SIGNAL(itemDeleted(LimeReport::PageDesignIntf*,LimeReport::BaseDesignIntf*)),
this, SLOT(slotItemDeleted(LimeReport::PageDesignIntf*,LimeReport::BaseDesignIntf*)));
connect(m_designerWidget, SIGNAL(bandAdded(LimeReport::PageDesignIntf*,LimeReport::BandDesignIntf*)),
this, SLOT(slotBandAdded(LimeReport::PageDesignIntf*,LimeReport::BandDesignIntf*)));
connect(m_designerWidget, SIGNAL(bandDeleted(LimeReport::PageDesignIntf*,LimeReport::BandDesignIntf*)),
this, SLOT(slotBandDeleted(LimeReport::PageDesignIntf*,LimeReport::BandDesignIntf*)));
connect(m_treeView, SIGNAL(itemSelectionChanged()),
this, SLOT(slotObjectTreeItemSelectionChanged()) );
connect(m_designerWidget, SIGNAL(itemSelected(LimeReport::BaseDesignIntf*)),
this, SLOT(slotItemSelected(LimeReport::BaseDesignIntf*)));
connect(m_designerWidget, SIGNAL(multiItemSelected()),
this, SLOT(slotMultiItemSelected()) );
connect(m_designerWidget, SIGNAL(activePageUpdated(LimeReport::PageDesignIntf*)),
this, SLOT(slotActivePageUpdated(LimeReport::PageDesignIntf*)));
connect(m_treeView, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),
this, SLOT(slotItemDoubleClicked(QTreeWidgetItem*,int)));
connect(m_designerWidget,
SIGNAL(itemAdded(LimeReport::PageDesignIntf*, LimeReport::BaseDesignIntf*)), this,
SLOT(slotItemAdded(LimeReport::PageDesignIntf*, LimeReport::BaseDesignIntf*)));
connect(m_designerWidget,
SIGNAL(itemDeleted(LimeReport::PageDesignIntf*, LimeReport::BaseDesignIntf*)), this,
SLOT(slotItemDeleted(LimeReport::PageDesignIntf*, LimeReport::BaseDesignIntf*)));
connect(m_designerWidget,
SIGNAL(bandAdded(LimeReport::PageDesignIntf*, LimeReport::BandDesignIntf*)), this,
SLOT(slotBandAdded(LimeReport::PageDesignIntf*, LimeReport::BandDesignIntf*)));
connect(m_designerWidget,
SIGNAL(bandDeleted(LimeReport::PageDesignIntf*, LimeReport::BandDesignIntf*)), this,
SLOT(slotBandDeleted(LimeReport::PageDesignIntf*, LimeReport::BandDesignIntf*)));
connect(m_treeView, SIGNAL(itemSelectionChanged()), this,
SLOT(slotObjectTreeItemSelectionChanged()));
connect(m_designerWidget, SIGNAL(itemSelected(LimeReport::BaseDesignIntf*)), this,
SLOT(slotItemSelected(LimeReport::BaseDesignIntf*)));
connect(m_designerWidget, SIGNAL(multiItemSelected()), this, SLOT(slotMultiItemSelected()));
connect(m_designerWidget, SIGNAL(activePageUpdated(LimeReport::PageDesignIntf*)), this,
SLOT(slotActivePageUpdated(LimeReport::PageDesignIntf*)));
connect(m_treeView, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), this,
SLOT(slotItemDoubleClicked(QTreeWidgetItem*, int)));
buildTree();
}
void ObjectBrowser::setMainWindow(QMainWindow *mainWindow)
void ObjectBrowser::setMainWindow(QMainWindow* mainWindow) { m_mainWindow = mainWindow; }
void ObjectBrowser::slotClear() { }
void ObjectBrowser::fillNode(QTreeWidgetItem* parentNode, BaseDesignIntf* reportItem,
BaseDesignIntf* ignoredItem)
{
m_mainWindow=mainWindow;
}
void ObjectBrowser::slotClear()
{
}
void ObjectBrowser::fillNode(QTreeWidgetItem* parentNode, BaseDesignIntf* reportItem, BaseDesignIntf *ignoredItem){
foreach (BaseDesignIntf* item, reportItem->childBaseItems()) {
if (item != ignoredItem){
if (item != ignoredItem) {
ObjectBrowserNode* treeItem = new ObjectBrowserNode(/*parentNode*/);
treeItem->setText(0,item->objectName());
treeItem->setText(0, item->objectName());
treeItem->setObject(item);
treeItem->setIcon(0,QIcon(":/items/"+extractClassName(item->metaObject()->className())));
connect(item, SIGNAL(propertyObjectNameChanged(QString,QString)),
this, SLOT(slotPropertyObjectNameChanged(QString,QString)), Qt::UniqueConnection);
treeItem->setIcon(
0, QIcon(":/items/" + extractClassName(item->metaObject()->className())));
connect(item, SIGNAL(propertyObjectNameChanged(QString, QString)), this,
SLOT(slotPropertyObjectNameChanged(QString, QString)), Qt::UniqueConnection);
ItemDesignIntf* i = dynamic_cast<ItemDesignIntf*>(item);
if (i){
connect(i, SIGNAL(itemLocationChanged(BaseDesignIntf*,BaseDesignIntf*)),
this, SLOT(slotItemParentChanged(BaseDesignIntf*,BaseDesignIntf*)), Qt::UniqueConnection);
if (i) {
connect(i, SIGNAL(itemLocationChanged(BaseDesignIntf*, BaseDesignIntf*)), this,
SLOT(slotItemParentChanged(BaseDesignIntf*, BaseDesignIntf*)),
Qt::UniqueConnection);
}
m_itemsMap.insert(item,treeItem);
m_itemsMap.insert(item, treeItem);
BandDesignIntf* band = dynamic_cast<BandDesignIntf*>(item);
QSet<BandDesignIntf::BandsType> subBands;
subBands << BandDesignIntf::SubDetailBand <<
BandDesignIntf::SubDetailHeader <<
BandDesignIntf::SubDetailFooter;
subBands << BandDesignIntf::SubDetailBand << BandDesignIntf::SubDetailHeader
<< BandDesignIntf::SubDetailFooter;
if (band && subBands.contains(band->bandType())){
if (band && subBands.contains(band->bandType())) {
ObjectBrowserNode* parentBandNode = 0;
if (band->bandType() == BandDesignIntf::SubDetailBand){
if (band->bandType() == BandDesignIntf::SubDetailBand) {
parentBandNode = m_itemsMap.value(band->parentBand());
} else {
parentBandNode = m_itemsMap.value(band->parentBand()->parentBand());
}
if(parentBandNode)
if (parentBandNode)
parentBandNode->addChild(treeItem);
} else {
parentNode->addChild(treeItem);
}
if (!item->childBaseItems().isEmpty())
fillNode(treeItem,item, ignoredItem);
fillNode(treeItem, item, ignoredItem);
}
}
}
void ObjectBrowser::buildTree(BaseDesignIntf* ignoredItem){
void ObjectBrowser::buildTree(BaseDesignIntf* ignoredItem)
{
m_treeView->clear();
m_itemsMap.clear();
if (!m_designerWidget->activePage()) return;
if (!m_designerWidget->activePage())
return;
ObjectBrowserNode *topLevelItem=new ObjectBrowserNode(m_treeView);
topLevelItem->setText(0,m_designerWidget->activePage()->objectName());
ObjectBrowserNode* topLevelItem = new ObjectBrowserNode(m_treeView);
topLevelItem->setText(0, m_designerWidget->activePage()->objectName());
topLevelItem->setObject(m_designerWidget->activePage());
m_itemsMap.insert(m_designerWidget->activePage(),topLevelItem);
m_itemsMap.insert(m_designerWidget->activePage(), topLevelItem);
m_treeView->addTopLevelItem(topLevelItem);
QList<QGraphicsItem*> itemsList = m_designerWidget->activePage()->items();
foreach (QGraphicsItem* item, itemsList) {
if (item != ignoredItem){
if (item != ignoredItem) {
BaseDesignIntf* reportItem = dynamic_cast<BaseDesignIntf*>(item);
if (reportItem && reportItem->parentItem()==0){
if (reportItem && reportItem->parentItem() == 0) {
ObjectBrowserNode* tItem = new ObjectBrowserNode(topLevelItem);
tItem->setText(0,reportItem->objectName());
tItem->setText(0, reportItem->objectName());
tItem->setObject(reportItem);
tItem->setIcon(0,QIcon(":/items/"+extractClassName(reportItem->metaObject()->className())));
connect(reportItem, SIGNAL(propertyObjectNameChanged(QString,QString)),
this, SLOT(slotPropertyObjectNameChanged(QString,QString)));
m_itemsMap.insert(reportItem,tItem);
fillNode(tItem,reportItem, ignoredItem);
tItem->setIcon(
0, QIcon(":/items/" + extractClassName(reportItem->metaObject()->className())));
connect(reportItem, SIGNAL(propertyObjectNameChanged(QString, QString)), this,
SLOT(slotPropertyObjectNameChanged(QString, QString)));
m_itemsMap.insert(reportItem, tItem);
fillNode(tItem, reportItem, ignoredItem);
topLevelItem->addChild(tItem);
}
}
}
m_treeView->sortItems(0,Qt::AscendingOrder);
m_treeView->sortItems(0, Qt::AscendingOrder);
m_treeView->expandAll();
}
void ObjectBrowser::findAndRemove(QTreeWidgetItem* node, BaseDesignIntf* item){
void ObjectBrowser::findAndRemove(QTreeWidgetItem* node, BaseDesignIntf* item)
{
for (int i=0;i<node->childCount();i++){
for (int i = 0; i < node->childCount(); i++) {
QTreeWidgetItem* treeItem = node->child(i);
if (treeItem->text(0)==item->objectName()){
if (treeItem->text(0) == item->objectName()) {
node->removeChild(treeItem);
break;
} else {
if (treeItem->childCount()>0) findAndRemove(treeItem, item);
if (treeItem->childCount() > 0)
findAndRemove(treeItem, item);
}
}
}
void ObjectBrowser::slotPropertyObjectNameChanged(const QString &oldName, const QString &newName)
void ObjectBrowser::slotPropertyObjectNameChanged(const QString& oldName, const QString& newName)
{
Q_UNUSED(oldName)
if (m_itemsMap.contains(sender())){
m_itemsMap.value(sender())->setText(0,newName);
if (m_itemsMap.contains(sender())) {
m_itemsMap.value(sender())->setText(0, newName);
}
}
//void ObjectBrowser::slotObjectNameChanged(const QString &objectName)
// void ObjectBrowser::slotObjectNameChanged(const QString &objectName)
//{
// if (m_itemsMap.contains(sender())){
// m_itemsMap.value(sender())->setText(0,objectName);
// }
//}
void ObjectBrowser::removeItem(BaseDesignIntf *item)
void ObjectBrowser::removeItem(BaseDesignIntf* item)
{
findAndRemove(m_treeView->topLevelItem(0),item);
findAndRemove(m_treeView->topLevelItem(0), item);
}
void ObjectBrowser::slotReportLoaded()
void ObjectBrowser::slotReportLoaded() { buildTree(); }
void ObjectBrowser::slotActivePageChanged() { buildTree(); }
void ObjectBrowser::slotBandAdded(LimeReport::PageDesignIntf*, BandDesignIntf*) { buildTree(); }
void ObjectBrowser::slotBandDeleted(PageDesignIntf*, BandDesignIntf* item) { buildTree(item); }
void ObjectBrowser::slotItemAdded(PageDesignIntf* page, BaseDesignIntf*)
{
buildTree();
if (!page->isUpdating())
buildTree();
}
void ObjectBrowser::slotActivePageChanged()
void ObjectBrowser::slotItemDeleted(PageDesignIntf*, BaseDesignIntf* item)
{
buildTree();
}
void ObjectBrowser::slotBandAdded(LimeReport::PageDesignIntf *, BandDesignIntf *)
{
buildTree();
}
void ObjectBrowser::slotBandDeleted(PageDesignIntf *, BandDesignIntf * item)
{
buildTree(item);
}
void ObjectBrowser::slotItemAdded(PageDesignIntf *page, BaseDesignIntf *)
{
if (!page->isUpdating()) buildTree();
}
void ObjectBrowser::slotItemDeleted(PageDesignIntf *, BaseDesignIntf *item)
{
if (dynamic_cast<LayoutDesignIntf*>(item)){
if (dynamic_cast<LayoutDesignIntf*>(item)) {
buildTree(item);
} else {
removeItem(item);
@@ -232,12 +230,12 @@ void ObjectBrowser::slotItemDeleted(PageDesignIntf *, BaseDesignIntf *item)
void ObjectBrowser::slotObjectTreeItemSelectionChanged()
{
if (!m_changingItemSelection && m_designerWidget->activePage()){
if (!m_changingItemSelection && m_designerWidget->activePage()) {
m_changingItemSelection = true;
m_designerWidget->activePage()->clearSelection();
foreach(QTreeWidgetItem* item, m_treeView->selectedItems()){
foreach (QTreeWidgetItem* item, m_treeView->selectedItems()) {
ObjectBrowserNode* tn = dynamic_cast<ObjectBrowserNode*>(item);
if (tn){
if (tn) {
BaseDesignIntf* si = dynamic_cast<BaseDesignIntf*>(tn->object());
if (si) {
m_designerWidget->activePage()->animateItem(si);
@@ -253,14 +251,14 @@ void ObjectBrowser::slotObjectTreeItemSelectionChanged()
}
}
void ObjectBrowser::slotItemSelected(LimeReport::BaseDesignIntf *item)
void ObjectBrowser::slotItemSelected(LimeReport::BaseDesignIntf* item)
{
if (!m_changingItemSelection){
if (!m_changingItemSelection) {
m_changingItemSelection = true;
m_treeView->selectionModel()->clear();
BaseDesignIntf* bg = dynamic_cast<BaseDesignIntf*>(item);
if (bg){
if (bg) {
if (m_itemsMap.value(bg))
m_itemsMap.value(bg)->setSelected(true);
}
@@ -271,17 +269,17 @@ void ObjectBrowser::slotItemSelected(LimeReport::BaseDesignIntf *item)
void ObjectBrowser::slotMultiItemSelected()
{
if (!m_changingItemSelection){
if (!m_changingItemSelection) {
m_changingItemSelection = true;
m_treeView->selectionModel()->clear();
foreach(QGraphicsItem* item, m_designerWidget->activePage()->selectedItems()){
foreach (QGraphicsItem* item, m_designerWidget->activePage()->selectedItems()) {
BaseDesignIntf* bg = dynamic_cast<BaseDesignIntf*>(item);
if (bg){
if (bg) {
ObjectBrowserNode* node = m_itemsMap.value(bg);
if (node)
node->setSelected(true);
node->setSelected(true);
}
}
@@ -289,10 +287,10 @@ void ObjectBrowser::slotMultiItemSelected()
}
}
void ObjectBrowser::slotItemDoubleClicked(QTreeWidgetItem *item, int)
void ObjectBrowser::slotItemDoubleClicked(QTreeWidgetItem* item, int)
{
ObjectBrowserNode* node = dynamic_cast<ObjectBrowserNode*>(item);
if (node){
if (node) {
BaseDesignIntf* baseItem = dynamic_cast<BaseDesignIntf*>(node->object());
if (baseItem) {
baseItem->showEditorDialog();
@@ -300,16 +298,11 @@ void ObjectBrowser::slotItemDoubleClicked(QTreeWidgetItem *item, int)
}
}
void ObjectBrowser::slotActivePageUpdated(LimeReport::PageDesignIntf *)
{
buildTree();
}
void ObjectBrowser::slotActivePageUpdated(LimeReport::PageDesignIntf*) { buildTree(); }
void ObjectBrowser::moveItemNode(BaseDesignIntf* item, BaseDesignIntf* parent)
{
if (m_itemsMap.contains(item) && m_itemsMap.contains(parent)){
if (m_itemsMap.contains(item) && m_itemsMap.contains(parent)) {
m_itemsMap.value(item)->parent()->removeChild(m_itemsMap.value(item));
m_itemsMap.value(parent)->addChild(m_itemsMap.value(item));
m_changingItemSelection = true;
@@ -321,11 +314,11 @@ void ObjectBrowser::moveItemNode(BaseDesignIntf* item, BaseDesignIntf* parent)
void ObjectBrowser::slotItemParentChanged(BaseDesignIntf* item, BaseDesignIntf* parent)
{
if (!m_movingItem){
if (!m_movingItem) {
m_movingItem = true;
moveItemNode(item, parent);
m_movingItem = false;
foreach(QObject* di, m_defferedItems){
foreach (QObject* di, m_defferedItems) {
BaseDesignIntf* b = dynamic_cast<BaseDesignIntf*>(di);
if (b)
moveItemNode(b, parent);
@@ -337,28 +330,24 @@ void ObjectBrowser::slotItemParentChanged(BaseDesignIntf* item, BaseDesignIntf*
}
}
void ObjectBrowserNode::setObject(QObject *value)
void ObjectBrowserNode::setObject(QObject* value) { m_object = value; }
QObject* ObjectBrowserNode::object() const { return m_object; }
ObjectBrowserNode::ObjectBrowserNode(QTreeWidget* view): QTreeWidgetItem(view), m_object(0) { }
ObjectBrowserNode::ObjectBrowserNode(QTreeWidgetItem* parent): QTreeWidgetItem(parent), m_object(0)
{
m_object = value;
}
QObject *ObjectBrowserNode::object() const
{
return m_object;
}
ObjectBrowserNode::ObjectBrowserNode(QTreeWidget *view)
:QTreeWidgetItem(view), m_object(0){}
ObjectBrowserNode::ObjectBrowserNode(QTreeWidgetItem *parent)
:QTreeWidgetItem(parent), m_object(0){}
bool ObjectBrowserNode::operator <(const QTreeWidgetItem &other) const
bool ObjectBrowserNode::operator<(const QTreeWidgetItem& other) const
{
BandDesignIntf* band1 = dynamic_cast<BandDesignIntf*>(m_object);
BandDesignIntf* band2 = dynamic_cast<BandDesignIntf*>(dynamic_cast<const ObjectBrowserNode&>(other).object());
if (band1 && band2) return band1->bandIndex()<band2->bandIndex();
BandDesignIntf* band2
= dynamic_cast<BandDesignIntf*>(dynamic_cast<const ObjectBrowserNode&>(other).object());
if (band1 && band2)
return band1->bandIndex() < band2->bandIndex();
return false;
}
} //namespace LimeReport
} // namespace LimeReport

View File

@@ -30,62 +30,66 @@
#ifndef LROBJECTBROWSER_H
#define LROBJECTBROWSER_H
#include <QWidget>
#include <QTreeWidget>
#include "lrreportdesignwidget.h"
#include "lrbasedesignintf.h"
#include "lrreportdesignwidget.h"
namespace LimeReport{
#include <QTreeWidget>
#include <QWidget>
class ObjectBrowserNode :public QTreeWidgetItem{
namespace LimeReport {
class ObjectBrowserNode: public QTreeWidgetItem {
public:
void setObject(QObject* value);
QObject* object() const;
explicit ObjectBrowserNode(QTreeWidget *view);
explicit ObjectBrowserNode(QTreeWidgetItem *parent = 0);
bool operator <(const QTreeWidgetItem& other) const;
explicit ObjectBrowserNode(QTreeWidget* view);
explicit ObjectBrowserNode(QTreeWidgetItem* parent = 0);
bool operator<(const QTreeWidgetItem& other) const;
private:
QObject* m_object;
};
class ObjectBrowser :public QWidget
{
class ObjectBrowser: public QWidget {
Q_OBJECT
public:
ObjectBrowser(QWidget *parent=0);
ObjectBrowser(QWidget* parent = 0);
void setReportEditor(LimeReport::ReportDesignWidget* designerWidget);
void setMainWindow(QMainWindow* mainWindow);
protected:
void fillNode(QTreeWidgetItem *parentNode, BaseDesignIntf *reportItem, BaseDesignIntf* ignoredItem = 0);
void buildTree(BaseDesignIntf *ignoredItem = 0);
void fillNode(QTreeWidgetItem* parentNode, BaseDesignIntf* reportItem,
BaseDesignIntf* ignoredItem = 0);
void buildTree(BaseDesignIntf* ignoredItem = 0);
void removeItem(BaseDesignIntf* item);
void findAndRemove(QTreeWidgetItem *node, BaseDesignIntf *item);
void findAndRemove(QTreeWidgetItem* node, BaseDesignIntf* item);
void moveItemNode(BaseDesignIntf* item, BaseDesignIntf* parent);
private slots:
// void slotObjectNameChanged(const QString& objectName);
// void slotObjectNameChanged(const QString& objectName);
void slotPropertyObjectNameChanged(const QString& oldName, const QString& newName);
void slotClear();
void slotReportLoaded();
void slotActivePageChanged();
void slotBandAdded(LimeReport::PageDesignIntf*, LimeReport::BandDesignIntf*);
void slotBandDeleted(LimeReport::PageDesignIntf*, LimeReport::BandDesignIntf*item);
void slotItemAdded(LimeReport::PageDesignIntf*page, LimeReport::BaseDesignIntf*);
void slotItemDeleted(LimeReport::PageDesignIntf*, LimeReport::BaseDesignIntf*item);
void slotBandDeleted(LimeReport::PageDesignIntf*, LimeReport::BandDesignIntf* item);
void slotItemAdded(LimeReport::PageDesignIntf* page, LimeReport::BaseDesignIntf*);
void slotItemDeleted(LimeReport::PageDesignIntf*, LimeReport::BaseDesignIntf* item);
void slotObjectTreeItemSelectionChanged();
void slotItemSelected(LimeReport::BaseDesignIntf* item);
void slotMultiItemSelected();
void slotItemDoubleClicked(QTreeWidgetItem* item,int);
void slotItemDoubleClicked(QTreeWidgetItem* item, int);
void slotActivePageUpdated(LimeReport::PageDesignIntf*);
void slotItemParentChanged(BaseDesignIntf* item, BaseDesignIntf* parent);
private:
ReportDesignWidget* m_designerWidget;
QMainWindow* m_mainWindow;
QTreeWidget* m_treeView;
QMainWindow* m_mainWindow;
QTreeWidget* m_treeView;
QMap<QObject*, ObjectBrowserNode*> m_itemsMap;
bool m_changingItemSelection;
bool m_movingItem;
QList<QObject*> m_defferedItems;
};
} //namespace LimeReport
} // namespace LimeReport
#endif // LROBJECTBROWSER_H