Skip to content

Commit 1c365ed

Browse files
allow moving path nodes with arrow keys
You can now move path nodes with the arrow keys (the same as object)
1 parent a5d9eeb commit 1c365ed

File tree

1 file changed

+33
-20
lines changed

1 file changed

+33
-20
lines changed

src/main.py

+33-20
Original file line numberDiff line numberDiff line change
@@ -1047,23 +1047,26 @@ def moveObject(self, obj : wmwpy.classes.Object | None = None, amount : tuple[fl
10471047
if (obj == None) or isinstance(obj, tk.Event):
10481048
obj = self.selectedObject
10491049

1050-
if obj == None:
1051-
return
1052-
1053-
amount = numpy.array(amount)
1054-
1055-
pos = tuple(obj.pos + amount)
1056-
1057-
obj.pos = pos
1058-
1059-
self.updateObject(obj)
1060-
1061-
if self.selectedObject == obj:
1062-
if 'pos' in self.objectProperties:
1063-
self.objectProperties['pos']['var'][0].set(pos[0])
1064-
self.objectProperties['pos']['var'][1].set(pos[1])
1050+
if self.selectedPart['type']:
1051+
self.dragPart(
1052+
obj = obj,
1053+
amount = amount,
1054+
)
1055+
else:
1056+
if obj == None:
1057+
return
1058+
1059+
amount = numpy.array(amount)
1060+
pos = tuple(obj.pos + amount)
1061+
obj.pos = pos
1062+
self.updateObject(obj)
1063+
1064+
if self.selectedObject == obj:
1065+
if 'pos' in self.objectProperties:
1066+
self.objectProperties['pos']['var'][0].set(pos[0])
1067+
self.objectProperties['pos']['var'][1].set(pos[1])
10651068

1066-
return pos
1069+
return pos
10671070

10681071
def deleteObject(self, obj : wmwpy.classes.Object = None):
10691072
if (obj == None) or isinstance(obj, tk.Event):
@@ -1893,7 +1896,12 @@ def selectPart(
18931896
# self.updateLayers()
18941897
logging.debug(f'selected part: {self.selectedPart}')
18951898

1896-
def dragPart(self, event: tk.Event = None, obj: wmwpy.classes.Object | None = None):
1899+
def dragPart(
1900+
self,
1901+
event: tk.Event = None,
1902+
obj: wmwpy.classes.Object | None = None,
1903+
amount: tuple[float, float] | None = None,
1904+
):
18971905
if obj == None:
18981906
obj = self.selectedObject
18991907
if obj == None:
@@ -1905,10 +1913,15 @@ def dragPart(self, event: tk.Event = None, obj: wmwpy.classes.Object | None = No
19051913
is_global = False
19061914
if obj.Type and obj.Type.get_property('PathIsGlobal'):
19071915
is_global = True
1908-
pos = self.windowPosToWMWPos((event.x, event.y), (0.25 * is_global) + 1)
19091916

1910-
if not is_global:
1911-
pos = numpy.array(pos) - (numpy.array(obj.pos) * 1.25)
1917+
if amount:
1918+
current = obj.Type.get_property(self.selectedPart['property'])
1919+
pos = numpy.array(current) + amount
1920+
else:
1921+
pos = self.windowPosToWMWPos((event.x, event.y), (0.25 * is_global) + 1)
1922+
1923+
if not is_global:
1924+
pos = numpy.array(pos) - (numpy.array(obj.pos) * 1.25)
19121925

19131926
logging.debug(f'new pos: {pos}')
19141927
obj.properties[self.selectedPart['property']] = ' '.join([str(x) for x in pos])

0 commit comments

Comments
 (0)