Set reference for relative position

This commit is contained in:
Ian Jauslin 2021-12-20 23:23:11 +01:00
parent fc50782116
commit b4fbc7c7e2
2 changed files with 15 additions and 1 deletions

View File

@ -29,6 +29,9 @@ class Painter(Widget):
# relative position of mouse when moving
self.offset=Point(0,0)
# reference particle from which positions should be computed
self.reference=None
# app is used to share information between widgets
self.app=app
@ -130,6 +133,14 @@ class Painter(Widget):
# reset
self.set_zoom(1)
# set reference
elif text=="r":
if len(self.selected)>0:
self.reference=self.selected[0]
else:
self.reference=None
self.app.status_bar.draw()
def on_key_up(self, keyboard, keycode):
if keycode[1]=="shift":
if 's' in self.modifiers:

View File

@ -44,7 +44,10 @@ class Status_bar(Label):
# number of spaces to align right (use 13 characters to print position)
spaces=int(self.width/self.char_width)-len(self.raw_text)-13
if spaces>0:
self.raw_text+=" "*spaces+"({:05.2f},{:05.2f})\n".format(self.app.painter.selected[0].squares[0].pos.x,self.app.painter.selected[0].squares[0].pos.y)
if self.app.painter.reference==None:
self.raw_text+=" "*spaces+"({:05.2f},{:05.2f})\n".format(self.app.painter.selected[0].squares[0].pos.x,self.app.painter.selected[0].squares[0].pos.y)
else:
self.raw_text+=" "*spaces+"({:05.2f},{:05.2f})\n".format(self.app.painter.selected[0].squares[0].pos.x-self.app.painter.reference.squares[0].pos.x,self.app.painter.selected[0].squares[0].pos.y-self.app.painter.reference.squares[0].pos.y)
# do not wrap
self.text=self.raw_text[:min(len(self.raw_text),int(self.width/self.char_width))]