Changing to pythonic imports, restructured mixins layout

This commit is contained in:
2022-11-28 22:34:13 -06:00
parent 9bd5697677
commit f2090a7d46
40 changed files with 190 additions and 113 deletions

View File

@@ -1,7 +1,9 @@
#!/usr/bin/python3
# Python imports
import argparse, faulthandler, traceback
import argparse
import faulthandler
import traceback
from setproctitle import setproctitle
import tracemalloc

View File

@@ -1,5 +1,6 @@
# Python imports
import os, inspect
import os
import inspect
# Lib imports

View File

@@ -7,24 +7,22 @@ gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GLib
# Application imports
from widgets.context_menu_widget import ContextMenuWidget
from .mixins.exception_hook_mixin import ExceptionHookMixin
from .mixins.ui_mixin import UIMixin
from .signals.ipc_signals_mixin import IPCSignalsMixin
from .signals.keyboard_signals_mixin import KeyboardSignalsMixin
from .controller_data import Controller_Data
from .mixins.signals_mixins import SignalsMixins
from .ui import UI
from widgets.context_menu_widget import ContextMenuWidget
class Controller(UIMixin, KeyboardSignalsMixin, IPCSignalsMixin, ExceptionHookMixin, Controller_Data):
class Controller(UI, SignalsMixins, Controller_Data):
""" Controller coordinates the mixins and is somewhat the root hub of it all. """
def __init__(self, args, unknownargs):
self._subscribe_to_events()
self.setup_controller_data()
self.generate_windows(self.fm_controller_data)
cm = ContextMenuWidget()
cm.build_context_menu()
ContextMenuWidget().build_context_menu()
if args.no_plugins == "false":
self.plugins.launch_plugins()

View File

@@ -1,3 +1,3 @@
"""
Mixins module
Mixins module
"""

View File

@@ -1,10 +1,12 @@
# Python imports
import traceback, time
import traceback
import time
# Lib imports
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GLib
from gi.repository import Gtk
from gi.repository import GLib
# Application imports

View File

@@ -4,7 +4,8 @@
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
from gi.repository import Gtk, Gdk
from gi.repository import Gtk
from gi.repository import Gdk
# Application imports

View File

@@ -0,0 +1,3 @@
"""
Signals module
"""

View File

@@ -1,19 +1,24 @@
# Python imports
import os, time, shlex
import os
import time
import shlex
# Lib imports
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GObject, GLib, Gio
from gi.repository import Gtk
from gi.repository import GObject
from gi.repository import GLib
from gi.repository import Gio
# Application imports
from widgets.io_widget import IOWidget
class WidgetFileActionMixin:
"""docstring for WidgetFileActionMixin"""
class FileActionSignalsMixin:
"""docstring for FileActionSignalsMixin"""
def sizeof_fmt(self, num, suffix="B"):
for unit in ["", "K", "M", "G", "T", "Pi", "Ei", "Zi"]:

View File

@@ -5,11 +5,12 @@
# Application imports
class IPCSignalsMixin:
""" IPCSignalsMixin handle messages from another starting solarfm process. """
def print_to_console(self, message=None):
print(self)
print(message)
def handle_file_from_ipc(self, path):

View File

@@ -5,7 +5,8 @@ import re
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
from gi.repository import Gtk, Gdk
from gi.repository import Gtk
from gi.repository import Gdk
# Application imports
@@ -13,6 +14,8 @@ from gi.repository import Gtk, Gdk
valid_keyvalue_pat = re.compile(r"[a-z0-9A-Z-_\[\]\(\)\| ]")
class KeyboardSignalsMixin:
""" KeyboardSignalsMixin keyboard hooks controller. """

View File

@@ -0,0 +1,15 @@
# Python imports
# Lib imports
from .exception_hook_mixin import ExceptionHookMixin
from .signals.file_action_signals_mixin import FileActionSignalsMixin
from .signals.ipc_signals_mixin import IPCSignalsMixin
from .signals.keyboard_signals_mixin import KeyboardSignalsMixin
# Application imports
class SignalsMixins(FileActionSignalsMixin, KeyboardSignalsMixin, IPCSignalsMixin, ExceptionHookMixin):
...

View File

@@ -1,3 +1,3 @@
"""
UI module
UI module
"""

View File

@@ -6,45 +6,18 @@ import gi
gi.require_version("Gtk", "3.0")
gi.require_version('Gdk', '3.0')
from gi.repository import Gtk, Gdk, GLib, Gio, GdkPixbuf
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import GLib
from gi.repository import Gio
from gi.repository import GdkPixbuf
# Application imports
from widgets.tab_header import TabHeader
from widgets.tab_header_widget import TabHeaderWidget
from widgets.icon_grid_widget import IconGridWidget
from widgets.icon_tree_widget import IconTreeWidget
# NOTE: Consider trying to use Gtk.TreeView with css that turns it into a grid...
# Can possibly use this to dynamicly load icons instead...
class Icon(Gtk.HBox):
def __init__(self, tab, dir, file):
super(Icon, self).__init__()
self.load_icon(tab, dir, file)
@threaded
def load_icon(self, tab, dir, file):
icon = tab.create_icon(dir, file)
if not icon:
path = f"{dir}/{file}"
icon = self.get_system_thumbnail(path, tab.sys_icon_wh[0])
if not icon:
icon = GdkPixbuf.Pixbuf.new_from_file(tab.DEFAULT_ICON)
self.add(Gtk.Image.new_from_pixbuf(icon))
self.show_all()
def get_system_thumbnail(self, file, size):
try:
gio_file = Gio.File.new_for_path(file)
info = gio_file.query_info('standard::icon' , 0, None)
icon = info.get_icon().get_names()[0]
icon_path = self.icon_theme.lookup_icon(icon , size , 0).get_filename()
return GdkPixbuf.Pixbuf.new_from_file(icon_path)
except Exception as e:
return None
class GridMixin:
@@ -96,7 +69,7 @@ class GridMixin:
def create_tab_widget(self, tab):
return TabHeader(tab, self.close_tab)
return TabHeaderWidget(tab, self.close_tab)
def create_scroll_and_store(self, tab, wid, use_tree_view=False):
scroll = Gtk.ScrolledWindow()

View File

@@ -6,7 +6,8 @@ from os.path import isdir
# Lib imports
import gi
gi.require_version('Gdk', '3.0')
from gi.repository import Gdk, Gio
from gi.repository import Gdk
from gi.repository import Gio
# Application imports
from .tab_mixin import TabMixin

View File

@@ -1,14 +0,0 @@
# Python imports
# Gtk imports
# Application imports
from .show_hide_mixin import ShowHideMixin
from .ui.widget_file_action_mixin import WidgetFileActionMixin
from .ui.pane_mixin import PaneMixin
from .ui.window_mixin import WindowMixin
from .show_hide_mixin import ShowHideMixin
class UIMixin(WidgetFileActionMixin, PaneMixin, WindowMixin, ShowHideMixin):
...

View File

@@ -1,3 +0,0 @@
"""
Signals module
"""

View File

@@ -0,0 +1,12 @@
# Python imports
# Gtk imports
# Application imports
from .mixins.show_hide_mixin import ShowHideMixin
from .mixins.ui.pane_mixin import PaneMixin
from .mixins.ui.window_mixin import WindowMixin
class UI(PaneMixin, WindowMixin, ShowHideMixin):
...

View File

@@ -1,5 +1,6 @@
# Python imports
import os, json
import os
import json
from os.path import join
# Lib imports

View File

@@ -1,5 +1,6 @@
# Python imports
import os, time
import os
import time
# Lib imports

View File

@@ -1,14 +1,20 @@
# Python imports
import os, sys, importlib, traceback
from os.path import join, isdir
import os
import sys
import importlib
import traceback
from os.path import join
from os.path import isdir
# Lib imports
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gio
from gi.repository import Gtk
from gi.repository import Gio
# Application imports
from .manifest import PluginInfo, ManifestProcessor
from .manifest import PluginInfo
from .manifest import ManifestProcessor

View File

@@ -1,6 +1,7 @@
# Python imports
import os, threading, time
from multiprocessing.connection import Listener, Client
from multiprocessing.connection import Client
from multiprocessing.connection import Listener
# Lib imports

View File

@@ -1,5 +1,6 @@
# Python imports
import os, logging
import os
import logging
# Application imports

View File

@@ -1,16 +1,15 @@
# Python imports
import os, json
import os
import json
from os import path
# Gtk imports
import gi, cairo
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
from gi.repository import Gtk
from gi.repository import Gdk
# Application imports
from .logger import Logger
from .keybindings import Keybindings

View File

@@ -4,7 +4,9 @@
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
from gi.repository import Gtk, Gdk, GdkPixbuf
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import GdkPixbuf
# Application imports

View File

@@ -4,7 +4,9 @@
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
from gi.repository import Gtk, Gdk, GdkPixbuf
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import GdkPixbuf
# Application imports

View File

@@ -3,7 +3,8 @@
# Lib imports
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gio
from gi.repository import Gtk
from gi.repository import Gio
# Application imports
@@ -64,7 +65,7 @@ class IOWidget(Gtk.Box):
self.progress.set_fraction(current/total)
def finish_callback(self, file, task=None, eve=None):
if self._action == "move" and self._action == "rename":
if self._action == "move" or self._action == "rename":
status = self._file.move_finish(task)
if self._action == "copy":
status = self._file.copy_finish(task)

View File

@@ -3,16 +3,17 @@
# Lib imports
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gio
from gi.repository import Gtk
from gi.repository import Gio
# Application imports
class TabHeader(Gtk.ButtonBox):
"""docstring for TabHeader"""
class TabHeaderWidget(Gtk.ButtonBox):
"""docstring for TabHeaderWidget"""
def __init__(self, tab, close_tab):
super(TabHeader, self).__init__()
super(TabHeaderWidget, self).__init__()
self._tab = tab
self._close_tab = close_tab # NOTE: Close method in tab_mixin