diff --git a/src/controller.py b/src/controller.py index 03f5fb0..7eaad98 100644 --- a/src/controller.py +++ b/src/controller.py @@ -117,6 +117,15 @@ class Controller: self.text = " "+self.text+" " #add spaces left and right for marquee to enter and leave the full frame print("changed text to ", self.text) self.mqtt.publish(self.topic + "/" + __TOPIC_TEXT_PAN__, self.text, 1 ) + + if message.topic.endswith(__TOPIC_TEXT_SCROLL__ + "/set"): + self.mode = Mode.SCROLL + self.poscount = 0 #start at beginning of new text + self.text = msg + for i in range(NUMDIGITS): + self.text = " "+self.text+" " #add spaces left and right for marquee to enter and leave the full frame + print("changed text to ", self.text) + self.mqtt.publish(self.topic + "/" + __TOPIC_TEXT_SCROLL__, self.text, 1 ) def on_connect(self, client, userdata, flags, rc): @@ -199,14 +208,21 @@ class Controller: if self.text != self.text_last: #time to update animation self.displayTextOffset(self.text, 0) - if self.mode == Mode.MARQUEE: + if self.mode == Mode.MARQUEE or self.mode == Mode.SCROLL: if time.time() > self.last_scrollupdate+self.scroll_interval or self.text != self.text_last: #time to update animation self.displayTextOffset(self.text, self.poscount) self.poscount += 1 - self.poscount %= max(1,int(self.seglen(self.text)-NUMDIGITS+1)) + if self.mode == Mode.MARQUEE: + self.poscount %= max(1,int(self.seglen(self.text)-NUMDIGITS+1)) + elif self.mode == Mode.SCROLL: + if self.poscount >= max(1,int(self.seglen(self.text)-NUMDIGITS+1)): #reached end for scroll once + self.mode == Mode.STATIC + self.text=" ".ljust(NUMDIGITS) #empty + self.last_scrollupdate = time.time() + if self.mode == Mode.PAN: if time.time() > self.last_scrollupdate+self.scroll_interval or self.text != self.text_last: #time to update animation print("pos=", self.poscount)