示例#1
0
/**
 * 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;
}
示例#3
0
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);
}
示例#4
0
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();
}
示例#6
0
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();
}
示例#13
0
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);
}
示例#14
0
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);
}