From 56149e4148d79dbfbe0ecc65f812c93fe3bcbef6 Mon Sep 17 00:00:00 2001 From: alfrix Date: Sun, 27 Nov 2022 23:31:46 -0300 Subject: [PATCH] print_list: refactor --- panels/print.py | 110 ++++++++++++++++-------------------------------- styles/base.css | 6 +-- 2 files changed, 38 insertions(+), 78 deletions(-) diff --git a/panels/print.py b/panels/print.py index d416a539..6f2dd782 100644 --- a/panels/print.py +++ b/panels/print.py @@ -84,7 +84,7 @@ class PrintPanel(ScreenPanel): self.filelist[parent_dir]['directories'].append(directory) if directory not in self.labels['directories']: - self._create_frame(directory) + self._create_row(directory) reverse = self.sort_current[1] != 0 dirs = sorted( self.filelist[parent_dir]['directories'], @@ -99,16 +99,14 @@ class PrintPanel(ScreenPanel): self.dir_panels[parent_dir].show_all() def add_file(self, filepath, show=True): - fileinfo = self._screen.files.get_file_info(filepath) if fileinfo is None: return - - d = f"gcodes/{filepath}".split('/')[:-1] - directory = '/'.join(d) - filename = filepath.split('/')[-1] + filename = os.path.split(filepath)[-1] if filename.startswith("."): return + directory = os.path.dirname(os.path.join("gcodes", filepath)) + d = directory.split('/') for i in range(1, len(d)): curdir = "/".join(d[:i]) newdir = "/".join(d[:i + 1]) @@ -130,7 +128,7 @@ class PrintPanel(ScreenPanel): self.filelist[directory]['files'].append(filename) if filepath not in self.files: - self._create_frame_file(filename, filepath) + self._create_row(filepath, filename) reverse = self.sort_current[1] != 0 files = sorted( self.filelist[directory]['files'], @@ -146,16 +144,16 @@ class PrintPanel(ScreenPanel): if show is True: self.dir_panels[directory].show_all() - def _create_frame(self, directory): - frame = Gtk.Frame() - frame.get_style_context().add_class("frame-item") - + def _create_row(self, fullpath, filename=None): name = Gtk.Label() - name.set_markup(f"{directory.split('/')[-1]}") + if filename: + name.set_markup(f'{os.path.splitext(filename)[0].replace("_", " ")}') + else: + name.set_markup(f"{os.path.split(fullpath)[-1]}") name.set_hexpand(True) name.set_halign(Gtk.Align.START) name.set_line_wrap(True) - name.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR) + name.set_line_wrap_mode(Pango.WrapMode.CHAR) info = Gtk.Label() info.set_halign(Gtk.Align.START) @@ -168,76 +166,42 @@ class PrintPanel(ScreenPanel): labels.set_halign(Gtk.Align.START) actions = self._gtk.Button("load", style="color3") - actions.connect("clicked", self.change_dir, directory) actions.set_hexpand(False) actions.set_halign(Gtk.Align.END) + if filename: + info.set_markup(self.get_file_info_str(fullpath)) + actions.connect("clicked", self.confirm_print, fullpath) + icon = Gtk.Button() + GLib.idle_add(self.image_load, fullpath) + else: + actions.connect("clicked", self.change_dir, fullpath) + icon = self._gtk.Button("folder") + icon.set_hexpand(False) + icon.connect("clicked", self.confirm_delete_file, f"gcodes/{fullpath}") file = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5) + file.get_style_context().add_class("frame-item") file.set_hexpand(True) file.set_vexpand(False) - - icon = self._gtk.Image("folder") - file.add(icon) file.add(labels) - file.add(actions) - frame.add(file) - - self.directories[directory] = frame - - self.labels['directories'][directory] = { - "info": info, - "name": name - } - - self.dir_panels[directory] = Gtk.Grid() - - def _create_frame_file(self, filename, filepath): - frame = Gtk.Frame() - frame.get_style_context().add_class("frame-item") - - name = Gtk.Label() - name.set_markup(f'{os.path.splitext(filename)[0].replace("_", " ")}') - name.set_hexpand(True) - name.set_halign(Gtk.Align.START) - name.set_line_wrap(True) - name.set_line_wrap_mode(Pango.WrapMode.CHAR) - - info = Gtk.Label() - info.set_halign(Gtk.Align.START) - info.set_markup(self.get_file_info_str(filepath)) - labels = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) - labels.add(name) - labels.add(info) - labels.set_vexpand(True) - labels.set_valign(Gtk.Align.CENTER) - labels.set_halign(Gtk.Align.START) - - actions = self._gtk.Button("print", style="color3") - actions.connect("clicked", self.confirm_print, filepath) - actions.set_hexpand(False) - actions.set_halign(Gtk.Align.END) - - file = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5) - file.set_hexpand(True) - file.set_vexpand(False) - - icon = Gtk.Button() - GLib.idle_add(self.image_load, filepath) - icon.connect("clicked", self.confirm_delete_file, f"gcodes/{filepath}") - - file.add(icon) - file.add(labels) - if os.path.splitext(filename)[1] in [".gcode", ".g", ".gco"]: + if not filename or (filename and os.path.splitext(filename)[1] in [".gcode", ".g", ".gco"]): file.add(actions) - frame.add(file) - self.files[filepath] = frame - self.labels['files'][filepath] = { - "icon": icon, - "info": info, - "name": name - } + if filename is not None: + self.files[fullpath] = file + self.labels['files'][fullpath] = { + "icon": icon, + "info": info, + "name": name + } + else: + self.directories[fullpath] = file + self.labels['directories'][fullpath] = { + "info": info, + "name": name + } + self.dir_panels[fullpath] = Gtk.Grid() def image_load(self, filepath): pixbuf = self.get_file_image(filepath, small=True) diff --git a/styles/base.css b/styles/base.css index 177d22ab..90ceed26 100644 --- a/styles/base.css +++ b/styles/base.css @@ -106,11 +106,6 @@ entry { padding: .25em; } -frame { - color: white; - border-bottom: 1px solid #444; -} - label { color: white; } @@ -256,6 +251,7 @@ trough { .frame-item { min-height: 4.5em; padding: .2em .3em; + border-bottom: 1px solid #1c1c1c } .heatergraph {