void parseGroup(filesystem::InputStream &stream, int flags) { std::string currentLine; std::string nextLine; readLine(stream, currentLine); if(!currentLine.empty() && currentLine[0] == '}') return; while(readLine(stream, nextLine)) { if(nextLine[0] == '{') { parseSubGroup(stream, currentLine, flags); currentLine = ""; continue; } parseValue(currentLine, flags); if(nextLine[0] == '}') return; currentLine.swap(nextLine); } parseValue(currentLine, flags); }
void OutlinePalette::parseSubGroup(int level, OutlineTreeItem* object, QList<PageItem*> *subGroupList, int itemType) { QList<PageItem*> *subGroup; PageItem *pgItem; QString tmp; for (int b = 0; b < subGroupList->count(); ++b) { pgItem = subGroupList->at(b); if (!pgItem->Dirty) { if (static_cast<int>(pgItem->Groups.count()) <= level) { OutlineTreeItem *grp = new OutlineTreeItem( object, 0 ); grp->PageItemObject = pgItem; grp->type = itemType; grp->setText(0, pgItem->itemName()); setItemIcon(grp, pgItem); grp->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); pgItem->Dirty = true; } else { OutlineTreeItem *grp = new OutlineTreeItem( object, 0 ); grp->PageItemObject = pgItem; grp->type = itemType; if (pgItem->isGroupControl) grp->setText(0, pgItem->itemName()); else grp->setText(0, tr("Group ")+tmp.setNum(pgItem->Groups.at(pgItem->Groups.count()-level-1))); grp->setIcon( 0, groupIcon ); grp->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); pgItem->Dirty = true; subGroup = new QList<PageItem*>; subGroup->clear(); for (int ga = 0; ga < subGroupList->count(); ++ga) { PageItem* pgItem2 = subGroupList->at(ga); if ((static_cast<int>(pgItem2->Groups.count()) > level) && ((pgItem2->Groups.at(pgItem2->Groups.count()-level-1)) == (pgItem->Groups.at(pgItem->Groups.count()-level-1))) && (pgItem2 != pgItem)) subGroup->append(pgItem2); } parseSubGroup(level+1, grp, subGroup, itemType); delete subGroup; } } } }
void parseGroup(std::istream &stream) { std::string currentLine; std::string nextLine; readLine(stream, currentLine); while(readLine(stream, nextLine)) { if(nextLine[0] == '{') { parseSubGroup(stream, currentLine); //readLine(stream, currentLine); currentLine = ""; continue; } parseValue(currentLine); if(nextLine[0] == '}') return; currentLine.swap(nextLine); } }
/* void OutlinePalette::resizeEvent(QResizeEvent *r) { reportDisplay->resize(r->size()); } */ void OutlinePalette::BuildTree(bool storeVals) { if (!m_MainWindow || m_MainWindow->scriptIsRunning()) return; if (currDoc==NULL) return; if (selectionTriggered) return; disconnect(reportDisplay, SIGNAL(itemSelectionChanged()), this, SLOT(slotMultiSelect())); disconnect(reportDisplay, SIGNAL(itemChanged(QTreeWidgetItem*, int)), this, SLOT(slotDoRename(QTreeWidgetItem*, int))); setUpdatesEnabled(false); if (storeVals) buildReopenVals(); clearPalette(); QList<PageItem*> subGroupList; OutlineTreeItem * item = new OutlineTreeItem( reportDisplay, 0 ); rootObject = item; item->setText( 0, currDoc->DocName.section( '/', -1 ) ); item->type = -2; OutlineTreeItem * pagep = 0; freeObjects = 0; PageItem* pgItem; QString tmp; for (int b = 0; b < currDoc->MasterItems.count(); ++b) { currDoc->MasterItems.at(b)->Dirty = false; } for (int a = 0; a < static_cast<int>(currDoc->MasterPages.count()); ++a) { OutlineTreeItem *page = new OutlineTreeItem( item, pagep ); page->PageObject = currDoc->MasterPages.at(a); page->type = 0; QString pageNam = currDoc->MasterPages.at(a)->pageName(); pagep = page; for (int b = 0; b < currDoc->MasterItems.count(); ++b) { pgItem = currDoc->MasterItems.at(b); if (((pgItem->OwnPage == a) || (pgItem->OnMasterPage == pageNam)) && (!pgItem->Dirty)) { if (pgItem->Groups.count() == 0) { OutlineTreeItem *object = new OutlineTreeItem( page, 0 ); object->PageItemObject = pgItem; object->type = 1; object->setText(0, pgItem->itemName()); setItemIcon(object, pgItem); object->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); pgItem->Dirty = true; } else { OutlineTreeItem * object = new OutlineTreeItem( page, 0 ); object->PageItemObject = pgItem; object->type = 1; if (pgItem->isGroupControl) object->setText(0, pgItem->itemName()); else object->setText(0, tr("Group ")+tmp.setNum(pgItem->Groups.top())); object->setIcon( 0, groupIcon ); object->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); pgItem->Dirty = true; subGroupList.clear(); for (int ga = 0; ga < currDoc->MasterItems.count(); ++ga) { PageItem* pgItem2 = currDoc->MasterItems.at(ga); if ((pgItem2->Groups.count() != 0) && (pgItem2->Groups.top() == pgItem->Groups.top()) && (pgItem2 != pgItem)) subGroupList.append(pgItem2); } parseSubGroup(1, object, &subGroupList, 1); } } } page->setText(0, currDoc->MasterPages.at(a)->pageName()); } for (int b = 0; b < currDoc->DocItems.count(); ++b) { currDoc->DocItems.at(b)->Dirty = false; } for (int a = 0; a < static_cast<int>(currDoc->DocPages.count()); ++a) { OutlineTreeItem *page = new OutlineTreeItem( item, pagep ); page->PageObject = currDoc->DocPages.at(a); page->type = 2; pagep = page; for (int b = 0; b < currDoc->DocItems.count(); ++b) { pgItem = currDoc->DocItems.at(b); if ((pgItem->OwnPage == a) && (!pgItem->Dirty)) { if (pgItem->Groups.count() == 0) { OutlineTreeItem *object = new OutlineTreeItem( page, 0 ); object->PageItemObject = pgItem; object->type = 3; object->setText(0, pgItem->itemName()); setItemIcon(object, pgItem); object->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); pgItem->Dirty = true; } else { OutlineTreeItem *object = new OutlineTreeItem( page, 0 ); object->PageItemObject = pgItem; object->type = 3; if (pgItem->isGroupControl) object->setText(0, pgItem->itemName()); else object->setText(0, tr("Group ")+tmp.setNum(pgItem->Groups.top())); object->setIcon( 0, groupIcon ); object->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); pgItem->Dirty = true; subGroupList.clear(); for (int ga = 0; ga < currDoc->DocItems.count(); ++ga) { PageItem* pgItem2 = currDoc->DocItems.at(ga); if ((pgItem2->Groups.count() != 0) && (pgItem2->Groups.top() == pgItem->Groups.top()) && (pgItem2 != pgItem)) subGroupList.append(pgItem2); } parseSubGroup(1, object, &subGroupList, 3); } } } page->setText(0, tr("Page ")+tmp.setNum(a+1)); } bool hasfreeItems = false; for (int b = 0; b < currDoc->DocItems.count(); ++b) { if (currDoc->DocItems.at(b)->OwnPage == -1) { hasfreeItems = true; break; } } if (hasfreeItems) { OutlineTreeItem *page = new OutlineTreeItem( item, pagep ); pagep = page; freeObjects = page; page->type = -3; for (int b = 0; b < currDoc->DocItems.count(); ++b) { pgItem = currDoc->DocItems.at(b); if ((pgItem->OwnPage == -1) && (!pgItem->Dirty)) { if (pgItem->Groups.count() == 0) { OutlineTreeItem *object = new OutlineTreeItem( page, 0 ); object->PageItemObject = pgItem; object->type = 4; object->setText(0, pgItem->itemName()); setItemIcon(object, pgItem); object->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); pgItem->Dirty = true; } else { OutlineTreeItem *object = new OutlineTreeItem( page, 0 ); object->PageItemObject = pgItem; object->type = 4; if (pgItem->isGroupControl) object->setText(0, pgItem->itemName()); else object->setText(0, tr("Group ")+tmp.setNum(pgItem->Groups.top())); object->setIcon( 0, groupIcon ); object->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled); pgItem->Dirty = true; subGroupList.clear(); for (int ga = 0; ga < currDoc->DocItems.count(); ++ga) { PageItem* pgItem2 = currDoc->DocItems.at(ga); if ((pgItem2->Groups.count() != 0) && (pgItem2->Groups.top() == pgItem->Groups.top()) && (pgItem2 != pgItem)) subGroupList.append(pgItem2); } parseSubGroup(1, object, &subGroupList, 4); } } } page->setText(0, tr("Free Objects")); } if (storeVals) reopenTree(); setUpdatesEnabled(true); if (currDoc->m_Selection->count() > 0) slotShowSelect(0, -1); filterTree(); repaint(); connect(reportDisplay, SIGNAL(itemSelectionChanged()), this, SLOT(slotMultiSelect())); connect(reportDisplay, SIGNAL(itemChanged(QTreeWidgetItem*, int)), this, SLOT(slotDoRename(QTreeWidgetItem*, int))); }