Fixing a few bugs related to dependency and text.

This commit is contained in:
Ad5001 2022-10-18 22:17:10 +02:00
parent 6116ffe4e7
commit fcf5ef9539
Signed by: Ad5001
GPG key ID: 7251B1AF90B960F9
4 changed files with 20 additions and 8 deletions

View file

@ -110,6 +110,7 @@ Item {
MouseArea { MouseArea {
anchors.fill: parent anchors.fill: parent
onClicked: { onClicked: {
console.log(obj.type)
objEditor.obj = Objects.currentObjects[obj.type][index] objEditor.obj = Objects.currentObjects[obj.type][index]
objEditor.objType = obj.type objEditor.objType = obj.type
objEditor.objIndex = index objEditor.objIndex = index
@ -169,10 +170,7 @@ Item {
ToolTip.text: qsTr("Delete %1 %2").arg(obj.constructor.displayType()).arg(obj.name) ToolTip.text: qsTr("Delete %1 %2").arg(obj.constructor.displayType()).arg(obj.name)
onClicked: { onClicked: {
history.addToHistory(new HistoryLib.DeleteObject( deleteRecursively(obj)
obj.name, obj.type, obj.export()
))
Objects.deleteObject(obj.name)
changed() changed()
} }
} }
@ -207,4 +205,18 @@ Item {
changed() changed()
} }
} }
/*!
\qmlmethod void ObjectRow::deleteRecursively(var object)
Deletes an object and it's dependencies recursively.
*/
function deleteRecursively(object) {
console.log(object.name, object.requiredBy.length)
for(let toRemove of object.requiredBy)
deleteRecursively(toRemove)
history.addToHistory(new HistoryLib.DeleteObject(
object.name, object.type, object.export()
))
Objects.deleteObject(object.name)
}
} }

View file

@ -46,8 +46,8 @@ function deleteObject(objName) {
* @param {string} objName - Current name of the object. * @param {string} objName - Current name of the object.
*/ */
let obj = currentObjectsByName[objName] let obj = currentObjectsByName[objName]
delete currentObjectsByName[objName]
currentObjects[obj.type].splice(currentObjects[obj.type].indexOf(obj),1) currentObjects[obj.type].splice(currentObjects[obj.type].indexOf(obj),1)
delete currentObjectsByName[objName]
obj.delete() obj.delete()
} }

View file

@ -200,7 +200,7 @@ class DrawableObject {
if(properties[property] == 'Expression' && this[property] != null) { if(properties[property] == 'Expression' && this[property] != null) {
// Expressions with dependencies // Expressions with dependencies
for(let objName of this[property].requiredObjects()) { for(let objName of this[property].requiredObjects()) {
if(objName in C.currentObjectsByName) { if(objName in C.currentObjectsByName && !this.requires.includes(objName)) {
this.requires.push(C.currentObjectsByName[objName]) this.requires.push(C.currentObjectsByName[objName])
C.currentObjectsByName[objName].requiredBy.push(this) C.currentObjectsByName[objName].requiredBy.push(this)
} }
@ -224,7 +224,7 @@ class DrawableObject {
* Callback method when the object is about to get deleted. * Callback method when the object is about to get deleted.
*/ */
delete() { delete() {
for(let toRemove of this.requiredBy) { for(let toRemove of this.requiredBy) { // Normally, there should be none here, but better leave nothing just in case.
Objects.deleteObject(toRemove.name) Objects.deleteObject(toRemove.name)
} }
} }

View file

@ -45,7 +45,7 @@ class Text extends Common.DrawableObject {
x = 1, y = 0, labelPosition = 'center', text = 'New text', disableLatex = false) { x = 1, y = 0, labelPosition = 'center', text = 'New text', disableLatex = false) {
if(name == null) name = Common.getNewName('t') if(name == null) name = Common.getNewName('t')
super(name, visible, color, labelContent) super(name, visible, color, labelContent)
this.type = 'Point' this.type = 'Text'
if(typeof x == 'number' || typeof x == 'string') x = new MathLib.Expression(x.toString()) if(typeof x == 'number' || typeof x == 'string') x = new MathLib.Expression(x.toString())
this.x = x this.x = x
if(typeof y == 'number' || typeof y == 'string') y = new MathLib.Expression(y.toString()) if(typeof y == 'number' || typeof y == 'string') y = new MathLib.Expression(y.toString())