job_status: Refactored layout in panel

This commit is contained in:
Jordan Ruthe
2020-12-08 23:32:27 -05:00
parent 36c9b42970
commit f343f03b96
10 changed files with 444 additions and 84 deletions

View File

@@ -14,15 +14,16 @@ class KlippyFiles:
callbacks = []
filelist = []
files = {}
timeout = None
metadata_timeout = {}
timeout = None
thumbnail_dir = "/tmp/.KS-thumbnails"
def __init__(self, screen):
self._screen = screen
self.add_timeout()
if not os.path.exists('/tmp/.KS-thumbnails'):
os.makedirs('/tmp/.KS-thumbnails')
if not os.path.exists(self.thumbnail_dir):
os.makedirs(self.thumbnail_dir)
GLib.idle_add(self.ret_files, False)
@@ -71,7 +72,7 @@ class KlippyFiles:
self.files[params['filename']]['thumbnails'].sort(key=lambda x: x['size'], reverse=True)
for thumbnail in self.files[params['filename']]['thumbnails']:
f = open("/tmp/.KS-thumbnails/%s-%s" % (params['filename'], thumbnail['size']), "wb")
f = open("%s/%s-%s" % (self.thumbnail_dir, params['filename'], thumbnail['size']), "wb")
f.write(base64.b64decode(thumbnail['data']))
f.close()
for cb in self.callbacks:
@@ -84,11 +85,33 @@ class KlippyFiles:
if self.timeout == None:
self.timeout = GLib.timeout_add(4000, self.ret_files)
def file_exists(self, filename):
return True if filename in self.filelist else False
def file_metadata_exists(self, filename):
if not self.file_exists(filename):
return False
if "slicer" in self.files[filename]:
return True
return False
def get_thumbnail_location(self, filename):
if not self.has_thumbnail(filename):
return None
return "%s/%s-%s" % (self.thumbnail_dir, filename, self.files[filename]['thumbnails'][0]['size'])
def has_thumbnail(self, filename):
if filename not in self.files:
return False
return "thumbnails" in self.files[filename] and len(self.files[filename]) > 0
def remove_timeout(self):
if self.timeout != None:
self.timeout = None
def request_metadata(self, filename):
if filename not in self.filelist:
return False
if filename in self.metadata_timeout:
GLib.source_remove(self.metadata_timeout[filename])
self.metadata_timeout[filename] = GLib.timeout_add(

View File

@@ -15,6 +15,7 @@ class ScreenPanel:
def __init__(self, screen, title, back=True):
self._screen = screen
self._config = screen._config
self._files = screen.files
self.lang = self._screen.lang
self._printer = screen.printer
self.labels = {}
@@ -62,6 +63,11 @@ class ScreenPanel:
def get(self):
return self.layout
def get_file_image(self, filename, width=1.6, height=1.6):
if not self._files.has_thumbnail(filename):
return None
return self._gtk.PixbufFromFile(self._files.get_thumbnail_location(filename), None, width, height)
def home(self, widget):
self._screen._ws.klippy.gcode_script(KlippyGcodes.HOME)
@@ -83,6 +89,9 @@ class ScreenPanel:
def set_title(self, title):
self.title.set_label(title)
def show_all(self):
self._screen.show_all()
def update_image_text(self, label, text):
if label in self.labels and 'l' in self.labels[label]:
self.labels[label]['l'].set_text(text)