st-ten-1/src/ui/test_instructions_reminder/test_instructions_reminder.py

79 lines
2.2 KiB
Python
Raw Normal View History

2023-07-18 14:47:06 +00:00
import os.path
import sys
import weakref
from PyQt5 import QtSvg
from PyQt5.QtCore import Qt
from lib.helpers import timing
from PyQt5.QtCore import QTimer
from PyQt5.QtGui import QKeySequence, QPixmap
from PyQt5.QtWidgets import QShortcut, QApplication, QVBoxLayout
from lxml import etree
from ui import Widget
class Test_Instructions_Reminder(Widget):
def __init__(self, recipe=None, bench_name="generic"):
super().__init__()
self.bench_name = bench_name
self.recipe=recipe
self.svgWidget=None
self.svg_root=None
self.flag=False
self.inputs={}
self.svg_widget=QtSvg.QSvgWidget()
self.layout = QVBoxLayout()
self.layout.addWidget(self.svg_widget)
self.svg_w.setLayout(self.layout)
self.svg_path=os.path.join("config","instruction_images",self.bench_name,"")
self.timer = QTimer()
self.timer.timeout.connect(self.toggle_icons)
self.start()
def start(self, recipe=None, step=None, pieces=None):
svg_path=f"{self.svg_path}{self.recipe}.svg"
if not os.path.exists(svg_path):
svg_path=f"{self.svg_path}DEFAULT.svg"
self.svg_root = etree.parse(svg_path)
self.svg_str = etree.tostring(self.svg_root)
self.svg_str=etree.tostring(self.svg_root)
self.monitored_ids=self.svg_root.xpath(f'''.//*[starts-with(@id, 'sensor_')]''')
self.tape_ids=self.svg_root.xpath(f'''.//*[starts-with(@id, 'tape_')]''')
self.timer.start(1000)
def toggle_icons(self):
self.flag = not self.flag
for elem in self.tape_ids:
if self.flag:
self.show_tape(elem)
else:
self.hide_tape(elem)
self.show_svg()
def show_icon(self,id):
id.set("display", "inline")
def hide_icon(self,id):
id.set("display", "none")
def show_tape(self,id):
id.attrib["{http://www.w3.org/1999/xlink}href"]= f"{self.svg_path}img/tape_black.png"
id.set("display", "inline")
def hide_tape(self,id):
id.set("display", "none")
def show_svg(self):
self.svg_str = etree.tostring(self.svg_root)
self.svg_widget.load(self.svg_str)
QApplication.processEvents()