SolarFM/src/solarfm/core/ui_mixin.py

89 lines
3.2 KiB
Python

# Python imports
# Lib imports
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import GLib
# Application imports
from .mixins.ui.pane_mixin import PaneMixin
from .mixins.ui.window_mixin import WindowMixin
from .widgets.files_view.files_widget import FilesWidget
class UIMixinException(Exception):
...
class UIMixin(PaneMixin, WindowMixin):
# class UIMixin(PaneMixin):
def _generate_file_views(self, session_json = None):
# self._wip_hybrid_approach_loading_process(session_json)
self._current_loading_process(session_json)
def _wip_hybrid_approach_loading_process(self, session_json = None):
for session in session_json:
self.fm_controller.create_window()
FilesWidget().set_fm_controller(self.fm_controller)
for session in session_json:
nickname = session["window"]["Nickname"]
tabs = session["window"]["tabs"]
isHidden = True if session["window"]["isHidden"] == "True" else False
event_system.emit("load_files_view_state", (nickname, tabs, isHidden))
def _focus_last_visible_notebook(self, icon_grid):
import time
window = settings_manager.get_main_window()
while not window.is_visible() and not window.get_realized():
time.sleep(0.2)
icon_grid.event(Gdk.Event().new(type = Gdk.EventType.BUTTON_RELEASE))
def _current_loading_process(self, session_json = None):
if session_json:
for j, value in enumerate(session_json):
i = j + 1
notebook_tggl_button = self.builder.get_object(f"tggl_notebook_{i}")
is_hidden = True if value["window"]["isHidden"] == "True" else False
tabs = value["window"]["tabs"]
self.fm_controller.create_window()
notebook_tggl_button.set_active(True)
if tabs:
for tab in tabs:
self.create_new_tab_notebook(None, i, tab)
else:
self.create_new_tab_notebook(None, i, None)
if is_hidden:
self.toggle_notebook_pane(notebook_tggl_button)
try:
if not self.is_pane4_hidden:
notebook = self.window4
elif not self.is_pane3_hidden:
notebook = self.window3
elif not self.is_pane2_hidden:
notebook = self.window2
elif not self.is_pane1_hidden:
notebook = self.window1
scroll_win = notebook.get_children()[-1]
icon_grid = scroll_win.get_children()[0]
GLib.Thread("", self._focus_last_visible_notebook, icon_grid)
except UIMixinException as e:
logger.info("\n: The saved session might be missing window data! :\nLocation: ~/.config/solarfm/session.json\nFix: Back it up and delete it to reset.\n")
logger.debug(repr(e))
else:
for j in range(0, 4):
i = j + 1
self.fm_controller.create_window()
self.create_new_tab_notebook(None, i, None)