diff --git a/README.md b/README.md index 329c271..74808c6 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,6 @@ sudo apt-get install python3 wget ffmpegthumbnailer steamcmd # TODO diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/Controller.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/Controller.py index 402138c..dd0f5d8 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/Controller.py +++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/Controller.py @@ -45,7 +45,6 @@ class Controller(WidgetFileActionMixin, PaneMixin, WindowMixin, ShowHideMixin, \ def tear_down(self, widget=None, eve=None): - event_system.monitor_events = False event_system.send_ipc_message("close server") self.window_controller.save_state() time.sleep(event_sleep_time) diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetFileActionMixin.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetFileActionMixin.py index f38a8f8..87babef 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetFileActionMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WidgetFileActionMixin.py @@ -12,6 +12,14 @@ from gi.repository import Gtk, GObject, Gio class WidgetFileActionMixin: + def sizeof_fmt(self, num, suffix="B"): + for unit in ["", "K", "M", "G", "T", "Pi", "Ei", "Zi"]: + if abs(num) < 1024.0: + return f"{num:3.1f} {unit}{suffix}" + num /= 1024.0 + return f"{num:.1f} Yi{suffix}" + + def set_file_watcher(self, view): if view.get_dir_watcher(): watcher = view.get_dir_watcher() @@ -21,12 +29,12 @@ class WidgetFileActionMixin: cur_dir = view.get_current_directory() # Temp updating too much with current events we are checking for. - # Causes invalid iter errors in WidbetMixin > update_store + # Seems to cause invalid iter errors in WidbetMixin > update_store if cur_dir == "/tmp": watcher = None return - dir_watcher = Gio.File.new_for_path(cur_dir) \ + dir_watcher = Gio.File.new_for_path(cur_dir) .monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, Gio.Cancellable()) wid = view.get_wid() diff --git a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WindowMixin.py b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WindowMixin.py index dc88ace..02369f4 100644 --- a/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WindowMixin.py +++ b/src/versions/solarfm-0.0.1/SolarFM/new/solarfm/signal_classes/mixins/WindowMixin.py @@ -6,7 +6,7 @@ from os.path import isdir, isfile # Lib imports import gi gi.require_version('Gdk', '3.0') -from gi.repository import Gdk +from gi.repository import Gdk, Gio # Application imports from . import TabMixin, WidgetMixin @@ -79,7 +79,35 @@ class WindowMixin(TabMixin): def set_bottom_labels(self, view): - self.bottom_size_label.set_label("TBD") + _wid, _tid, _view, iconview, store = self.get_current_state() + selected_files = iconview.get_selected_items() + path_file = Gio.File.new_for_path( view.get_current_directory()) + mount_file = path_file.query_filesystem_info(attributes="filesystem::*", cancellable=None) + formatted_mount_free = self.sizeof_fmt( int(mount_file.get_attribute_as_string("filesystem::free")) ) + formatted_mount_size = self.sizeof_fmt( int(mount_file.get_attribute_as_string("filesystem::size")) ) + + # If something selected + self.bottom_size_label.set_label(f"{formatted_mount_free} free / {formatted_mount_size}") + self.bottom_path_label.set_label(view.get_current_directory()) + if len(selected_files) > 0: + uris = self.format_to_uris(store, _wid, _tid, selected_files) + combined_size = 0 + for uri in uris: + file = Gio.File.new_for_uri(uri).query_info(attributes="standard::size", + flags=Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, + cancellable=None) + file_size = file.get_size() + combined_size += file_size + + formatted_size = self.sizeof_fmt(combined_size) + if view.hide_hidden: + self.bottom_path_label.set_label(f" {len(uris)} / {view.get_files_count()} ({formatted_size})") + else: + self.bottom_path_label.set_label(f" {len(uris)} / {view.get_not_hidden_count()} ({formatted_size})") + + return + + # If nothing selected if view.hide_hidden: if view.get_hidden_count() > 0: self.bottom_file_count_label.set_label(f"{view.get_not_hidden_count()} visible ({view.get_hidden_count()} hidden)") @@ -87,7 +115,7 @@ class WindowMixin(TabMixin): self.bottom_file_count_label.set_label(f"{view.get_files_count()} items") else: self.bottom_file_count_label.set_label(f"{view.get_files_count()} items") - self.bottom_path_label.set_label(view.get_current_directory()) + def set_window_title(self):