WStandardItem *VanetAreaPropertyForm::treeNode(std::list< Node >& nodes) { WStandardItem *result = new WStandardItem(tr("mappropertyeditor.group.general")); result->setData(VanetArea); Node xNode = Node("dimx"); xNode.value(boost::lexical_cast<std::string>(dimx_->value())); nodes.push_back(xNode); result->appendRow(propertyRow(std::string("dimx"), tr("mappropertyeditor.group.general.dimx").toUTF8(), boost::lexical_cast<std::string>(dimx_->value()))); Node yNode = Node("dimy"); yNode.value(boost::lexical_cast<std::string>(dimy_->value())); nodes.push_back(yNode); result->appendRow(propertyRow(std::string("dimy"), tr("mappropertyeditor.group.general.dimy").toUTF8(), boost::lexical_cast<std::string>(dimy_->value()))); return result; }
Wt::WStandardItem* VanetSpModelDump::treeNode(list< Node >& nodes) { WStandardItem* result = new WStandardItem(tr("mappropertyeditor.group.spmodeldump")); result->setData(VanetSpatialModelDump); Node extNode("extension"); Attribute classAttr("class", "de.uni_stuttgart.informatik.canu.spatialmodel.extensions.DumpSpatialModel"); extNode.addAttribute(classAttr); Attribute outAttr("output", output_->valueText().toUTF8()); extNode.addAttribute(outAttr); result->appendRow(propertyRow(string("output="), tr("mappropertyeditor.group.spmodeldump.output").toUTF8(), output_->valueText().toUTF8())); nodes.push_back(extNode); return result; }
WStandardItem* VanetRoutingProtocolPropertyForm::treeNode(list< Node >& nodes) { WStandardItem* result = new WStandardItem(tr("mappropertyeditor.group.glomosim")); result->setData(VanetGlomoSimProperties); Node routing("routingprotocol"); routing.value(routingCombo_->currentText().toUTF8()); result->appendRow(propertyRow(string("routingprotocol"), tr("mappropertyeditor.group.glomosim.routingprotocol").toUTF8(), routingCombo_->currentText().toUTF8())); // Node count("number_of_nodes"); // count.value(nodesCount_->valueText().toUTF8()); // result->appendRow(propertyRow(string("number_of_nodes"), tr("mappropertyeditor.group.glomosim.nodesnumber").toUTF8(), nodesCount_->valueText().toUTF8())); nodes.push_back(routing); // nodes.push_back(count); return result; }
Wt::WStandardItem* VanetNodeForm::treeNode(std::list< Node >& nodes) { WStandardItem* result = new WStandardItem(tr("mappropertyeditor.group.node").arg(id_->valueText())); result->setData(VanetNode); Node n("node"); Attribute idAttr("id", id_->valueText().toUTF8()); n.addAttribute(idAttr); Node posNode("position"); Attribute rndAttr("random", "true"); posNode.addAttribute(rndAttr); n.addChild(posNode); result->appendRow(propertyRow(string("id="), tr("mappropertyeditor.group.node.id").toUTF8(), id_->valueText().toUTF8()));; //result->appendRow(form_->treeNode(nodes)); // Here we place the mobility model on the same level as everything else. Just a quick fix so we can properly persist the model in the PersistenceManager. form_->appendPropertyRows(result, nodes); Node extNode = nodes.back(); nodes.pop_back(); n.addChild(extNode); nodes.push_back(n); return result; }
/// // Add an entry to the browser // bool FileBrowser::addEntry(bool rootDir, int entryDepth, const std::string &baseDir, const std::string &baseName, int index) { // // The code below adds an entry into the tree such as follows: // // + tract_meta.bash // + dicom_seriesCollect.bash // + tract_meta-stage-2-dcm2trk.bash // | // + stage-1-mri_convert // | // + diff_unpack // // ... // // The relatively convoluted logic below is responsible for // adding a new item to this tree structure. // If it's not a root directory, add the unique folder names as // root folder entries if (!rootDir) { bool addEntry = true; int modelRow; // Iterate over all the rows in the root for (modelRow = 0; modelRow < mModel->rowCount(); modelRow++) { WStandardItem *item = mModel->item(modelRow); bool match = true; // For the depth of the folder, attempt to match as many folders // as possible. for (int depth = 0; depth <= entryDepth && item != NULL; depth++) { path dirPath = path(baseDir); for (int d = 0; d < (entryDepth - depth); d++) { dirPath = dirPath.branch_path(); } std::string folderLeafName = path(dirPath).leaf().string(); boost::any displayData = item->data(DisplayRole); if (!displayData.empty()) { WString folderName = boost::any_cast<WString>(displayData); // Folder did not match, this means we need to add it // to the tree if (folderName.toUTF8() != folderLeafName) { match = false; break; } } } // All folders matched, we do not need a new folder if (match) { addEntry = false; } } // Add all of the necessary folder entries to the tree if (addEntry) { WStandardItem *lastItem = mModel->invisibleRootItem(); for (int depth = 0; depth <= entryDepth; depth++) { path dirPath = path(baseDir); for (int d = 0; d < (entryDepth - depth); d++) { dirPath = dirPath.branch_path(); } std::string folderLeafName = path(dirPath).leaf().string(); bool addFolder = true; for (int row = 0; row < lastItem->rowCount(); row++) { WStandardItem *item = lastItem->child(row); std::string folderLeafName = path(dirPath).leaf().string(); boost::any displayData = item->data(DisplayRole); if (!displayData.empty()) { WString folderName = boost::any_cast<WString>(displayData); if (folderName.toUTF8() == folderLeafName) { addFolder = false; lastItem = item; break; } } } if (addFolder) { WStandardItem *newItem = new WStandardItem(folderLeafName); newItem->setFlags(newItem->flags().clear(ItemIsSelectable)); newItem->setIcon("icons/folder.gif"); lastItem->appendRow(newItem); lastItem = newItem; } } } } // For root entries, add the file logs else { mModel->appendRow(createEntry(baseName, index)); } // Now add the items under the folders if (!rootDir) { WStandardItem *lastItem = mModel->invisibleRootItem(); for (int depth = 0; depth <= entryDepth; depth++) { path dirPath = path(baseDir); for (int d = 0; d < (entryDepth - depth); d++) { dirPath = dirPath.branch_path(); } std::string folderLeafName = path(dirPath).leaf().string(); for (int row = 0; row < lastItem->rowCount(); row++) { WStandardItem *item = lastItem->child(row); std::string folderLeafName = path(dirPath).leaf().string(); boost::any displayData = item->data(DisplayRole); if (!displayData.empty()) { WString folderName = boost::any_cast<WString>(displayData); if (folderName.toUTF8() == folderLeafName) { lastItem = item; break; } } } } if (lastItem != NULL) { lastItem->appendRow(createEntry(baseName, index)); } } // Add the directory to the watch list addWatchPath(baseDir); return true; }