bool TableModelVariables::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
{
	if (_dragActions == Qt::CopyAction && _dropActions == Qt::MoveAction && action == Qt::MoveAction) // if delete
		return true;

	if ( ! canDropMimeData(data, action, row, column, parent))
		return false;

	if (action == Qt::IgnoreAction)
		return true;

	if (data->hasFormat(_mimeType))
	{
		QByteArray encodedData = data->data(_mimeType);

		Terms variables;
		variables.set(encodedData);

		beginResetModel();
		_variables.add(variables);
		endResetModel();

		return true;
	}

	return false;
}
void TableModelVariablesAvailable::setVariables(const Terms &variables)
{	
	beginResetModel();

	Terms suggested;
	Terms allowed;
	Terms forbidden;

	foreach (const Term &term, variables)
	{
		if ( ! isAllowed(term))
			forbidden.add(term);
		else if (isSuggested(term))
			suggested.add(term);
		else
			allowed.add(term);
	}

	Terms ordered; // present them in a nice order

	ordered.add(suggested);
	ordered.add(allowed);
	ordered.add(forbidden);

	_allVariables.set(ordered);
	_variables.set(ordered);

	_variables.setSortParent(_allVariables);

	endResetModel();

	emit variablesChanged();
}
void TableModelVariablesAssigned::unassign(const Terms &variables)
{
	Terms variablesToKeep;
	variablesToKeep.set(_variables);
	variablesToKeep.remove(variables);
	setAssigned(variablesToKeep);

	emit unassigned(variables);
}
void ReliabilityAnalysisForm::variablesChanged()
{
	Terms variablesAvailable;

	variablesAvailable.add(_variableListModel->assigned());

	ui->reverseScaledItems->setVariables(variablesAvailable);

	if (_options != NULL)
		_options->blockSignals(false);

}
Ejemplo n.º 5
0
void AnovaForm::factorsChanged()
{
	Terms factorsAvailable;

	factorsAvailable.add(_fixedFactorsListModel->assigned());
	factorsAvailable.add(_randomFactorsListModel->assigned());

	_anovaModel->setVariables(factorsAvailable);
	_contrastsModel->setVariables(factorsAvailable);

	ui->postHocTests_variables->setVariables(factorsAvailable);
}
bool TableModelAnovaWithinSubjectCells::canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const
{
	Q_UNUSED(row);

	int colNo = (column == -1 ? parent.column() : column);
	int rowNo = (row    == -1 ? parent.row()    : row);

	if (_boundTo == NULL)
		return false;

	if (action == Qt::IgnoreAction)
		return true;

	if ( ! data->hasFormat("application/vnd.list.variable"))
		return false;

	if (action != Qt::MoveAction)
		return false;

	if (colNo != 0)
		return false;

	QByteArray encodedData = data->data("application/vnd.list.variable");

	Terms dropped;
	dropped.set(encodedData);

	foreach (const Term &term, dropped)
	{
		if ( ! isAllowed(term))
			return false;
	}

	if (rowNo == -1)
	{
		int available = 0;

		for (int i = 0; i < _variables.size(); i++)
		{
			if (_variables.at(i) == "")
				available++;
		}

		return dropped.size() <= available;
	}
	else
	{
		return dropped.size() <= _variables.size() - rowNo;
	}

	return true;
}
void AnovaRepeatedMeasuresBayesianForm::bindTo(Options *options, DataSet *dataSet)
{
	AnalysisForm::bindTo(options, dataSet);

	Terms factorsAvailable;

	foreach (const Factor &factor, _designTableModel->design())
		factorsAvailable.add(factor.first);

	factorsAvailable.add(_betweenSubjectsFactorsListModel->assigned());

	_anovaModel->setVariables(factorsAvailable);
}
void AnovaRepeatedMeasuresForm::termsChanged()
{
	Terms terms;

	terms.add(string("~OVERALL"));

	foreach (const Factor &factor, _designTableModel->design())
		terms.add(factor.first);

	terms.add(_withinSubjectsTermsModel->terms());

	ui->marginalMeansTerms->setVariables(terms);
}
void TableModelVariablesAssigned::mimeDataMoved(const QModelIndexList &indices)
{
	emit assignmentsChanging();

	Terms variablesToRemove;

	foreach (const QModelIndex &index, indices)
		variablesToRemove.add(_variables.at(index.row()));

	unassign(variablesToRemove);

	emit assignmentsChanged();
}
void TableModelAnovaModel::setVariables(const Terms &fixedFactors, const Terms &randomFactors, const Terms &covariates)
{
	_fixedFactors = fixedFactors;
	_randomFactors = randomFactors;
	_covariates = covariates;

	Terms all;
	all.add(fixedFactors);
	all.add(randomFactors);
	all.add(covariates);

	_variables.set(all);

	emit variablesAvailableChanged();
}
void AnovaRepeatedMeasuresForm::bindTo(Options *options, DataSet *dataSet)
{
	AnalysisForm::bindTo(options, dataSet);

	Terms factors;

	foreach (const Factor &factor, _designTableModel->design())
		factors.add(factor.first);

	_withinSubjectsTermsModel->setVariables(factors);

	if (_withinSubjectsTermsModel->terms().size() == 0)
		_withinSubjectsTermsModel->addFixedFactors(factors);

	_betweenSubjectsTermsModel->setVariables(_betweenSubjectsFactorsListModel->assigned());
}
void TableModelVariablesAssigned::sourceVariablesChanged()
{
	emit assignmentsChanging();

	const Terms &variables = _source->allVariables();
	Terms variablesToKeep;
	bool variableRemoved = false;

	variablesToKeep.set(_variables);
	variableRemoved = variablesToKeep.discardWhatDoesntContainTheseComponents(variables);

	if (variableRemoved)
		setAssigned(variablesToKeep);

	emit assignmentsChanged();
}
bool TableModelVariables::canDropMimeData(const QMimeData *data, Qt::DropAction action, int, int, const QModelIndex &) const
{
	if (_dragActions == Qt::CopyAction && _dropActions == Qt::MoveAction && action == Qt::MoveAction) // if delete
		return true;

	if (data->hasFormat(_mimeType))
	{
		QByteArray encodedData = data->data(_mimeType);

		Terms variables;
		variables.set(encodedData);

		foreach (const Term &variable, variables)
		{
			if ( ! isAllowed(variable))
				return false;
		}

		return true;
	}
void TableModelVariablesAssigned::assign(const Terms &variables)
{
	if (_boundTo == NULL)
		return;

	Terms v;

	if (_boundTo->onlyOneTerm())
	{
		if (variables.size() > 0)
			v.add(variables.at(0));

		if (_variables.size() > 0)
		{
			_toSendBack.set(_variables);
			_variables.clear();
			QTimer::singleShot(0, this, SLOT(sendBack()));
		}
	}
	else
	{
		v.set(_variables);
		v.add(variables);
	}

	setAssigned(v);

	emit assignedTo(variables);
}
bool TableModelVariablesAssigned::canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const
{
	if (_boundTo == NULL)
		return false;

	if (isDroppingToSelf(data))
		return false;

	if ( ! TableModelVariables::canDropMimeData(data, action, row, column, parent))
		return false;

	if (_boundTo->onlyOneTerm())
	{
		QByteArray encodedData = data->data(_mimeType);

		Terms variables;
		variables.set(encodedData);

		if (variables.size() != 1)
			return false;
	}

	return true;
}
Ejemplo n.º 16
0
void AnovaBayesianForm::factorsChanged()
{
	Terms factorsAvailable;

	factorsAvailable.add(_fixedFactorsListModel->assigned());
	factorsAvailable.add(_randomFactorsListModel->assigned());

	_plotFactorsAvailableTableModel->setVariables(factorsAvailable);

	Terms plotVariablesAssigned;
	plotVariablesAssigned.add(_horizontalAxisTableModel->assigned());
	plotVariablesAssigned.add(_seperateLinesTableModel->assigned());
	plotVariablesAssigned.add(_seperatePlotsTableModel->assigned());
	_plotFactorsAvailableTableModel->notifyAlreadyAssigned(plotVariablesAssigned);
	
	ui->postHocTestsVariables->setVariables(factorsAvailable);
	
	if (_options != NULL)
		_options->blockSignals(false);
}
void AnovaRepeatedMeasuresForm::factorsChanged()
{
	Terms factorsAvailable;

	foreach (const Factor &factor, _designTableModel->design())
		factorsAvailable.add(factor.first);

	factorsAvailable.add(_betweenSubjectsFactorsListModel->assigned());

	_contrastsModel->setVariables(factorsAvailable);
	_plotFactorsAvailableTableModel->setVariables(factorsAvailable);

	Terms plotVariablesAssigned;
	plotVariablesAssigned.add(_horizontalAxisTableModel->assigned());
	plotVariablesAssigned.add(_seperateLinesTableModel->assigned());
	plotVariablesAssigned.add(_seperatePlotsTableModel->assigned());
	_plotFactorsAvailableTableModel->notifyAlreadyAssigned(plotVariablesAssigned);

	ui->postHocTestsVariables->setVariables(factorsAvailable);

	if (_options != NULL)
		_options->blockSignals(false);
}
Ejemplo n.º 18
0
void AnovaForm::termsChanged()
{
	Terms terms = _anovaModel->terms();
	terms.insert(0, string("~OVERALL"));
	ui->marginalMeans_terms->setVariables(terms);
}
bool TableModelAnovaWithinSubjectCells::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
{
	Q_UNUSED(column);

	if (action == Qt::IgnoreAction)
		return true;

	if ( ! canDropMimeData(data, action, row, column, parent))
		return false;

	//int colNo = (column == -1 ? parent.column() : column);
	int rowNo = (row    == -1 ? parent.row()    : row);

	QByteArray encodedData = data->data("application/vnd.list.variable");

	Terms dropped;
	dropped.set(encodedData);

	vector<string> droppedItems = dropped.asVector();

	beginResetModel();

	if (rowNo == -1)
	{
		int pos = 0;

		for (int i = 0; i < _variables.size(); i++)
		{
			if (_variables.at(i) == "")
				_variables[i] = droppedItems.at(pos++);

			if (pos >= droppedItems.size())
				break;
		}
	}
	else
	{
		int pos = 0;

		for (int i = rowNo; i < _variables.size(); i++)
		{
			string existingVariable = _variables.at(i);
			if (existingVariable != "")
				_toSendBack.add(existingVariable);

			_variables[i] = droppedItems[pos++];

			if (pos >= droppedItems.size())
				break;
		}

		if (_toSendBack.size() > 0)
			QTimer::singleShot(0, this, SLOT(sendBack()));
	}

	_boundTo->setValue(_variables);

	endResetModel();

	return true;
}