Spreadsheet: Issue #2402: Don't allow duplicate aliases.
This commit is contained in:
parent
d45a95bf3a
commit
301fcc2ab7
|
@ -1130,7 +1130,14 @@ void Sheet::setComputedUnit(CellAddress address, const Base::Unit &unit)
|
|||
|
||||
void Sheet::setAlias(CellAddress address, const std::string &alias)
|
||||
{
|
||||
cells.setAlias(address, alias);
|
||||
const Cell * cell = cells.getValueFromAlias(alias);
|
||||
|
||||
if (cell != 0)
|
||||
throw Base::Exception("Alias already defined.");
|
||||
else
|
||||
cells.setAlias(address, alias);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get cell given an alias string
|
||||
* @param alias Alias for cell
|
||||
|
|
|
@ -441,14 +441,21 @@ PyObject* SheetPy::setAlias(PyObject *args)
|
|||
{
|
||||
CellAddress address;
|
||||
const char * strAddress;
|
||||
const char * value;
|
||||
PyObject * value;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "ss:setAlias", &strAddress, &value))
|
||||
if (!PyArg_ParseTuple(args, "sO:setAlias", &strAddress, &value))
|
||||
return 0;
|
||||
|
||||
try {
|
||||
address = stringToAddress(strAddress);
|
||||
getSheetPtr()->setAlias(address, value);
|
||||
|
||||
if (PyString_Check(value))
|
||||
getSheetPtr()->setAlias(address, PyString_AsString(value));
|
||||
else if (value == Py_None)
|
||||
getSheetPtr()->setAlias(address, "");
|
||||
else
|
||||
throw Base::TypeError("String or None expected");
|
||||
|
||||
Py_Return;
|
||||
}
|
||||
catch (const Base::Exception & e) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user