/** * Write probe configuration to file. This works even for configs not saved to the ProbeCalibConfigs.xml file. */ void UsReconstructionFileMaker::writeProbeConfiguration(QString reconstructionFolder, QString session, ProbeDefinition data, QString uid) { XmlOptionFile file = XmlOptionFile(reconstructionFolder + "/" + session + ".probedata.xml"); data.addXml(file.getElement("configuration")); file.getElement("tool").toElement().setAttribute("toolID", uid); file.save(); }
QStringList TransferFunctions3DPresets::generatePresetList(QString modality) { QStringList presetList; QDomNodeList presetNodeList = mPresetFile.getElement().elementsByTagName("Preset"); for (int i = 0; i < presetNodeList.count(); ++i) { QString presetName = presetNodeList.item(i).toElement().attribute("name"); if (presetName == "Default") continue; else { QString sourceModality = presetNodeList.item(i).toElement().attribute("modality"); if ( (modality == sourceModality) || ("UNKNOWN" == modality) || modality.isEmpty() ) presetList << presetName; } } XmlOptionFile customFile = this->getCustomFile(); presetNodeList = customFile.getElement().elementsByTagName("Preset"); for (int i = 0; i < presetNodeList.count(); ++i) { QString presetName = presetNodeList.item(i).toElement().attribute("name"); QString presetModality = presetNodeList.item(i).toElement().attribute("modality"); if ( (presetModality == modality) || ("UNKNOWN" == modality) || modality.isEmpty() ) presetList << presetName; } return presetList; }
void FilterGroup::append(FilterPtr filter) { mFilters.push_back(filter); QString uid = QString("%1_%2").arg(filter->getType()).arg(mFilters.size()); XmlOptionFile node = mOptions.descend(uid); filter->initialize(node.getElement(), uid); }
void LayoutRepository::save(XmlOptionFile file) { XmlOptionFile layoutsNode = file.descend("layouts"); layoutsNode.removeChildren(); for (LayoutDataVector::iterator iter = mLayouts.begin(); iter != mLayouts.end(); ++iter) { if (!this->isCustom(iter->getUid())) continue; // dont store default layouts - they are created automatically. QDomElement layoutNode = file.getDocument().createElement("layout"); layoutsNode.getElement().appendChild(layoutNode); iter->addXml(layoutNode); } }
void TransferFunctions3DPresets::deletePresetData(QString name, bool _2D, bool _3D) { //todo rewrite std::cout << "TODO rewrite TransferFunctions3DPresets::deletePresetData(QString name, bool _2D, bool _3D)" << std::endl; XmlOptionFile node = this->getPresetNode(name); if (_2D) node.descend("lookuptable2D").deleteNode(); if (_3D) node.descend("transferfunctions").deleteNode(); if (_2D && _3D) node.deleteNode(); emit changed(); }
void LayoutRepository::load(XmlOptionFile file) { // load custom layouts: mLayouts.clear(); this->blockSignals(true); QDomElement layouts = file.getElement("layouts"); QDomNode layout = layouts.firstChild(); for (; !layout.isNull(); layout = layout.nextSibling()) { if (layout.toElement().tagName() != "layout") continue; LayoutData data; data.parseXml(layout); this->insert(data); } std::vector<QString> custom = this->getAvailable(); this->addDefaults(); // ensure we overwrite loaded layouts this->blockSignals(false); for (unsigned i=0; i<custom.size(); ++i) emit layoutChanged(custom[i]); }
void TransferFunctions3DPresets::save3D(QString name, ImagePtr image) { //create the node to be saved XmlOptionFile file = this->getCustomFile(); file = file.descend("Preset", "name", name); QDomNode tf3DNode = file.getElement("transferfunctions"); while (tf3DNode.hasChildNodes()) tf3DNode.removeChild(tf3DNode.firstChild()); ImageTF3DPtr transferFunctions = image->getTransferFunctions3D(); // For unsigned CT: Modify transfer function values temporarily prior to save if ((0 <= image->getMin()) && ("CT" == image->getModality())) { transferFunctions->unsignedCT(false); } transferFunctions->addXml(file.getElement("transferfunctions")); image->getShading().addXml(file.getElement("shading")); // Revert the transfer function values back again if ((0 <= image->getMin()) && ("CT" == image->getModality())) { transferFunctions->unsignedCT(true); } file.getElement().setAttribute("modality", image->getModality()); file.save(); }
void ManageClippersWidget::initClipperSelector() { XmlOptionFile mOptions = profile()->getXmlSettings().descend("clippers"); QStringList range = getClippers()->getClipperNames(); mClipperSelector = StringProperty::initialize("clipperSelector", "Clipper", "Select clipper", "", range, mOptions.getElement()); connect(mClipperSelector.get(), &Property::changed, this, &ManageClippersWidget::clipperChanged); this->clippersChanged(); }
void TransferFunctions3DPresets::load2D(QString name, ImagePtr image) { if(!image) return; //Make sure transfer functions are reset in case something is missing from the preset image->resetTransferFunctions(true, false); ImageLUT2DPtr LUT2D = image->getLookupTable2D(); XmlOptionFile node = this->getPresetNode(name); LUT2D->parseXml(node.getElement().namedItem("lookuptable2D")); // Transfer functions for CT data are signed, so these have to be converted if they are to be used for unsigned CT if ((0 <= image->getMin()) && ("CT" == image->getModality()) && (name != "Transfer function preset...") ) { LUT2D->unsignedCT(true); } }
void TransferFunctions3DPresets::load3D(QString name, ImagePtr image) { //Make sure transfer functions are reset in case something is missing from the preset image->resetTransferFunctions(false, true); ImageTF3DPtr transferFunctions = image->getTransferFunctions3D(); XmlOptionFile node = this->getPresetNode(name); transferFunctions->parseXml(node.getElement().namedItem("transferfunctions")); Image::ShadingStruct shading = image->getShading(); shading.parseXml(node.getElement().namedItem("shading")); image->setShading(shading); // Transfer functions for CT data are signed, so these have to be converted if they are to be used for unsigned CT if ((0 <= image->getMin()) && ("CT" == image->getModality()) && (name != "Transfer function preset...") ) { transferFunctions->unsignedCT(true); } }
void TransferFunctions3DPresets::save2D(QString name, ImagePtr image) { XmlOptionFile file = this->getCustomFile(); file = file.descend("Preset", "name", name); QDomNode tf2DNode = file.getElement("lookuptable2D"); while (tf2DNode.hasChildNodes()) tf2DNode.removeChild(tf2DNode.firstChild()); ImageLUT2DPtr LUT2D = image->getLookupTable2D(); // For unsigned CT: Modify transfer function values temporarily prior to save if ((0 <= image->getMin()) && ("CT" == image->getModality())) { LUT2D->unsignedCT(false); } LUT2D->addXml(file.getElement("lookuptable2D")); // Revert the transfer function values back again if ((0 <= image->getMin()) && ("CT" == image->getModality())) { LUT2D->unsignedCT(true); } file.getElement().setAttribute("modality", image->getModality()); file.save(); // emit changed(); }
NetworkConnectionHandle::NetworkConnectionHandle(QString threadname, XmlOptionFile options) { mThread.reset(new QThread()); mThread->setObjectName(threadname); mClient.reset(new NetworkConnection(threadname)); connect(mClient.get(), &NetworkConnection::connectionInfoChanged, this, &NetworkConnectionHandle::onConnectionInfoChanged); mClient->moveToThread(mThread.get()); mOptions = options.descend(mClient->getUid()); mIp = this->createIpOption(); mPort = this->createPortOption(); mProtocols = this->createDialectOption(); mRole = this->createRoleOption(); this->onPropertiesChanged(); mThread->start(); }
TreeItemModel::TreeItemModel(XmlOptionFile options, VisServicesPtr services, QObject* parent) : QAbstractItemModel(parent), mServices(services), mOptions(options) { mSelectionModel = NULL; mNameIndex = 1; mColorIndex = 0; mViewGroupIndex = 2; mViewGroupCount = 3; this->createShowColumnsProperty(); this->onShowColumnsChanged(); mRepository = TreeRepository::create(options.descend("repository"), services); connect(mRepository.get(), &TreeRepository::invalidated, this, &TreeItemModel::beginResetModel); connect(mRepository.get(), &TreeRepository::loaded, this, &TreeItemModel::loaded); connect(mRepository.get(), &TreeRepository::changed, this, &TreeItemModel::onRepositoryChanged); }
void FiltersWidget::configureFilterSelector(XmlOptionFile options) { QStringList availableFilters; std::map<QString,QString> names; for (unsigned i=0; i<mFilters->size(); ++i) { availableFilters << mFilters->get(i)->getUid(); names[mFilters->get(i)->getUid()] = mFilters->get(i)->getName(); } if(availableFilters.isEmpty()) { availableFilters << "FILTER NOT FOUND"; } mFilterSelector = StringProperty::initialize("filterSelector", "Filter", "Select which filter to use.", availableFilters[0], availableFilters, options.getElement()); mFilterSelector->setDisplayNames(names); connect(mFilterSelector.get(), &StringProperty::valueWasSet, this, &FiltersWidget::filterChangedSlot); }