From 39aa0eeea445f93569a0f84c12213cac311ded8e Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Wed, 27 Sep 2023 21:03:49 -0500 Subject: [PATCH] extending builder; format cleanup; dereference attempt --- src/versions/solarfm-0.0.1/solarfm/..o | Bin 25672 -> 0 bytes .../solarfm-0.0.1/solarfm/core/controller.py | 3 +- .../solarfm/core/controller_data.py | 32 ++++++++++++++++-- .../signals/file_action_signals_mixin.py | 6 ++-- .../mixins/signals/keyboard_signals_mixin.py | 2 +- .../solarfm/core/mixins/ui/grid_mixin.py | 6 ++-- .../solarfm/core/mixins/ui/tab_mixin.py | 13 ++++--- .../core/widgets/files_view/files_widget.py | 6 ++-- .../core/widgets/files_view/grid_mixin.py | 7 ++-- .../core/widgets/files_view/tab_mixin.py | 13 ++++--- 10 files changed, 59 insertions(+), 29 deletions(-) delete mode 100644 src/versions/solarfm-0.0.1/solarfm/..o diff --git a/src/versions/solarfm-0.0.1/solarfm/..o b/src/versions/solarfm-0.0.1/solarfm/..o deleted file mode 100644 index 878e30fc0ced86db23ef50d2cf708aa6db18d965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25672 zcmbu|eRx#morm!g0y05}0mTii)3NbF<~~2Z{MB<^ zI>|ksdCob{d1mr9UVdfPobaH81TVHFcsF_R&tlc{Lifc#&hGy(+e`9g&Ruur&TjZ< zSBl?yT#q#DncYyAlIVH6Lg(A-o_lztA#K? zz+fXJs>=(RonGpXE>={Eb%V6)8EVEmdy)MPG42KJn*1C%kIS`dv-|x&?b7TDxJA2K zJIR^ad3L;P?Yivo{l9jNcDy^ZOS6mWe(h@QbxYCLEyZ4s@9Ob7?0KBguE2ifctg7` z>;6l-cI&#dYxHwqy^PW>)1Jq>(uE^|!IC7Z3)#goR=aLL2gbWfyH0y?AJVSIE|!1P zuE4rE(uLCl2j{N{@k$WR4WMBX)%DsvE|xBw8W_w!ZL!C?3Ol_S+7(+jS-S%3CTW*v z-KVu{wI_R*bm36oWc|U_$@<^P2G>ZMc4_tr@tStob}bc47tRhGod2q!4zAhH0e6LV zHTEPvqg}mqQ?%=_Zn}1v_DY1c%d+lP?b_^q|6aRnJ6=S)b~|2{cJ+3=dD`_@w@AB8 zy9ky_7fuOWTz_!22`roOGorW_5$Y1*c)%E!~;I7fG-MUom z((UCMuU(`4B0I`|p!g=Lz`EhuG#4Sa({x zX6xS9uF<+bX;*LEDea1_JE>isb^oJXx^>63OSSI5wd=F5@$YEYZQXCQ>$L9I+I3iW zSi3gs{!_b%b^El-wys0F6zg8q&a7vsR|>EqgE+VQ@xUBr&ppk2HD3R9z9r+prMpk0<7?*Z*vt^1O8 z&GvkMbP;FAtJW^fzCI7uug|G=yd`?PdOO}oJzkc*9$(et_4yAEtb@;M*I~!opk1y# zj|a6Yw(EZXMV!4JTeT~&$M<#ZQtWpwGqr27=doP7TDxEOQ>yrSnQr$xOS?=vUY&L| zb{$-%*FnTSk51_Ea_#Zmrd_uk??dhC?e#sNUC7RJp>|nzzrWWm&yM#+?V9ZQ-l<*4 zx*Y9N?D73hyBd3apU^I3udn;_iC9-5JI}lIc%Ge?f{Qr&d~4RO)w&;R=h^eE)vnmO zb=r0N(-3&Q`kZ#fcK$}_`AfI+Ql!VLx5u|$yH>jn{-RyT&fg~O`t174*RIJP-@j_t zY~7REwOIF*b~W~V|5v+QyH0$L7!?XvB<3h8y#V%OCQ zJzkI9??&w!?Rxp4c3pP7Z)%rm&*Kt(9+~#K{alaNYxnzY?Ygb|mUc~czrWJ1&CbhD zv@5XgMeTC!@qJCZM(e(zU8>#h_q5Bh?%%Xav+g#;jsrCpc(qIIu!6?VL3+I8CT?$IvKF1}xC*J8(8pk0^$ni!bB zf6y+?&fgmCn(cT~wQIM>m#1C5p99A?Qo3+K01cO@&i(Z;;Kpg!Z7T=LVmp6x^>`usGJjONTI<{e z7xPkK-5<3pu-MI0jn=)TU7FqR zG3|Q%99Yj+OLs}Y_(aV~sy|f$_et$K?3%h;yEHrAwc0h=bN#b+Ep`oT*Dl+-7VX;X zYtTPy*J96Ons(iGUKVPXX~(-xyH@LN(5}&o9`D?_1ozKi?|RR>%H8X42@mDYxx-7SNg3)d1bAEhdY;>xH#0dUCpk4IIc;^~py z5dU)D9u4+RofCKYzkl+lLu`oyqX+JB-$O_D8tC7N_Wt9?J=OllDfm40;UgF6ZsCpc zkEh$83%9v*beo$;HO}~pbbo54AK`bmx#RQ~pZDRpfo-gd{^q*>B5}UEC!pJ`cMHpH z)-M{!7x+qaj=vV2$K$?8xXq65e#UZ}Js$T(%5B!W7k#%`|L#D(z<+?w<8g11cAFi4 z96J3C=se%s(CHVW(^sL>*P+uti%$O%I{mBY^lzinzlTo$5jy>-=u^wi|8?l}H==X= z+tKOoL#O`|I{nws>A#Im|3h^8pQF?N8lC=+==6j7Uk)!^pI4&OPekYVH=)ztflj{^ zo&F(o`p41fzl%=)V|4mopws^ro&Hbg^q05=C7zETL#NL`=lCF+|Pe-NGi%jon^ zpwoX3o&G22^uI)>e+QlZ&*=0+{qNXf^G5G}85ryIlhEnicYeyxN2f1F=lBn!)4N|P ztMQ*hr*A{&_-~-oyI(G<@!v4&>d{LL*#diPV8+gzugicatTSnM|I7oyX$GE)9U zbozF5_hIb&sDtSAJ?QiwqSL$o@>r(cUszX6?oD?0sd zboxW+^e52i&!W?h^nWOc%>(^-bo%M&^tYkYFGi;?N2gznPX7!#{R`;yFQe0UqSGHk zr|(0jA3iKTZ}e&C^i$F4Bk1%C(djGD>DQpsH=)ySL8sq|PJaNM{x~}Q8Fcy)m&WIf zek?luG<5nfI{iK9^vlrcA48{q8lC=mboy7&>EA-9e;1wp19bXi_p5$?v#;ml(CKeL z=lHjw(=SG+uR^DlR)9cXbZ$#(#UqGkN zN2gzoPXASO`fsAs{{Wr79i9FlI{k5U`ZMVCBa-!c8;edq4V~l9MyFqdPG5;mzZRW- z13LXybo$-s^oP*tPoUGEMW-L>{_5p#cD;>9r=O0_@#mt`7oyXzK&Nj&r{9Q9zYU#! zFFO5Ubo!I%^a;^l%GvoDjZQxSo#W3yr=N#TUxZG-5}ke>I{hYe`t9iS`_So+pwpj1 zryt_}9vod)^kdNJC!^Enpwllvr!PULUxiM;9-V$OI{glG`u*tiN73m|qthpiiq9MU z)#&t7(CKHP)8CCwUxrTqC_4R9==59A>35>jA3&!+j!u6DoqojS@p+>ki%vfcoqjet z{UUVwN_6_Q==2-V>9?ZO??$ITgie0~o&GF3{m3ig^F}`&oqjqx{akeVLUj5S==2Tf z^c&IXx1rPTMW;WEPJa@eK4G+;pV8>_6VN&S40QT===4SC^efTn*P+vILZ{!3PQMSG z{s=n#DRlZFSH|a!ehfPOWOVu*bovG8^d;!@tI+A!qtkCjr{952zaO3cC_4RVbowOs z?jnD)-)~%vPCo^m9?TM??k6RfKGoLo&F3u{fN}~ywQ(E zr=NySKO3EX5juS(I{jL7`VHvxThZxvqthQkr$2#Ce-@p7vH7oENk zoqh#6eFHlEMs)gZ==6Kh=?|mRpG2omaPQ9ZH~V}XjZQxSo#W3yr=N#TUxZG-5}ke> zI{hYe`t9iS`_So+pwpj1ryt_p4H%s_`Z4JAlhNsO(CHVT)0d#ruR^C^k50cCoqh*8 z{eE=%qv-Uf(dm<-Z>X{B?P_%TDd-%37CQai==5di^pB#`KZQ=e1)Y8;I{g83`s3*I zXVB?KxOeM`^)?orei}N*pN&qx2%WwXoqjDk{RVXUt?2Z-(diGN)1N@6KZ{O3(!HxV zI&bvj(dnn7)6YexFGQzbfll9mPQMYIej7UdUUd4y==3Mi=@YKe^D`QqegZnjpMg$4 z51qaUoqi=c{W^5|P3ZL7(dqZ0(;q>nKZQ;|BrQH~^kdNJC!^Enpwllvr!PULUxiM; z9-V$OI{glG`u*tiN73m|qthpi_4>C9UjNbQr=WBEndtO)q0>KzPX7ox{Ws9*zmHD; zQ*`<_(dmDOPX8Bl`eEbZ^G5#(bo$St(}&UN??I4#q% zpEvq6bo#02^bvIWh3NDZ==5vQ>6_5$Uqq*GN2foCPTzx0{~J2iKZj1=hED$mI(;`f{rl+j zp$YMMqrVEBJ`4*!e{Cyy(Zyx_@H-9a3Sm$Nb>v=ic(7%KVC=s^#U&3QJ3> zS9%#$MWuxq)kQVc{dbitD;fCUfhGBc_urpiRbF1b+$$?AS>`P-FDpSwTz zxaO`kx9sRAmq)LA?7ryRDq^2{?(G8Znq;3Z10VEG8o2Gce&9Cb-?;1QZrv9BwSWKr zpTh0m-N$WybidKJqn*F&{PmBPoBdmRPVTM(bKFsWfpzQ7e|&}Af9&xUu?I$PW5*xM qclsZw^Y17a5H(Tg9_Qvb_W0QOKjSyMZ}*VS=<%mTPtM(_$Nv>CNaFnf diff --git a/src/versions/solarfm-0.0.1/solarfm/core/controller.py b/src/versions/solarfm-0.0.1/solarfm/core/controller.py index 21e9282..b07fb5f 100644 --- a/src/versions/solarfm-0.0.1/solarfm/core/controller.py +++ b/src/versions/solarfm-0.0.1/solarfm/core/controller.py @@ -77,8 +77,7 @@ class Controller(UIMixin, SignalsMixins, Controller_Data): event_system.subscribe("set_clipboard_data", self.set_clipboard_data) def _load_glade_file(self): - self.builder = Gtk.Builder() - self.builder.add_from_file(settings_manager.get_glade_file()) + self.builder.add_from_file( settings_manager.get_glade_file() ) self.builder.expose_object("main_window", self.window) self.core_widget = self.builder.get_object("core_widget") diff --git a/src/versions/solarfm-0.0.1/solarfm/core/controller_data.py b/src/versions/solarfm-0.0.1/solarfm/core/controller_data.py index 083c69a..2605c64 100644 --- a/src/versions/solarfm-0.0.1/solarfm/core/controller_data.py +++ b/src/versions/solarfm-0.0.1/solarfm/core/controller_data.py @@ -35,13 +35,39 @@ class State: user_pass_dialog: type = None + +class SFMBuilder(Gtk.Builder): + """docstring for SFMBuilder.""" + + def __init__(self): + super(SFMBuilder, self).__init__() + + self.objects = {} + + def get_object(self, id: str, use_gtk: bool = True) -> any: + if not use_gtk: + return self.objects[id] + + return super(SFMBuilder, self).get_object(id) + + def expose_object(self, id: str, object: any, use_gtk: bool = True) -> None: + if not use_gtk: + self.objects[id] = object + else: + super(SFMBuilder, self).expose_object(id, object) + + def dereference_object(self, id: str) -> None: + del self.objects[id] + + + class Controller_Data: """ Controller_Data contains most of the state of the app at ay given time. It also has some support methods. """ __slots__ = "settings", "builder", "logger", "keybindings", "trashman", "fm_controller", "window", "window1", "window2", "window3", "window4" def _setup_controller_data(self) -> None: self.window = settings_manager.get_main_window() - self.builder = None + self.builder = SFMBuilder() self.core_widget = None self._load_glade_file() @@ -88,7 +114,7 @@ class Controller_Data: state.notebooks = self.notebooks state.wid, state.tid = self.fm_controller.get_active_wid_and_tid() state.tab = self.get_fm_window(state.wid).get_tab_by_id(state.tid) - state.icon_grid = self.builder.get_object(f"{state.wid}|{state.tid}|icon_grid") + state.icon_grid = self.builder.get_object(f"{state.wid}|{state.tid}|icon_grid", use_gtk = False) # state.icon_grid = event_system.emit_and_await("get_files_view_icon_grid", (state.wid, state.tid)) state.store = state.icon_grid.get_model() state.message_dialog = MessageWidget() @@ -110,7 +136,7 @@ class Controller_Data: event_system.emit("update_state_info_plugins", state) # NOTE: Need to remove after we convert plugins to use emit_and_await return state - def format_to_uris(self, store, wid, tid, treePaths, use_just_path=False): + def format_to_uris(self, store, wid, tid, treePaths, use_just_path = False): tab = self.get_fm_window(wid).get_tab_by_id(tid) dir = tab.get_current_directory() uris = [] diff --git a/src/versions/solarfm-0.0.1/solarfm/core/mixins/signals/file_action_signals_mixin.py b/src/versions/solarfm-0.0.1/solarfm/core/mixins/signals/file_action_signals_mixin.py index ec2bd33..aba1eac 100644 --- a/src/versions/solarfm-0.0.1/solarfm/core/mixins/signals/file_action_signals_mixin.py +++ b/src/versions/solarfm-0.0.1/solarfm/core/mixins/signals/file_action_signals_mixin.py @@ -35,7 +35,7 @@ class FileActionSignalsMixin: # NOTE: Too lazy to impliment a proper update handler and so just regen store and update tab. # Use a lock system to prevent too many update calls for certain instances but user can manually refresh if they have urgency - def dir_watch_updates(self, file_monitor, file, other_file=None, eve_type=None, data=None): + def dir_watch_updates(self, file_monitor, file, other_file = None, eve_type = None, data = None): if eve_type in [Gio.FileMonitorEvent.CREATED, Gio.FileMonitorEvent.DELETED, Gio.FileMonitorEvent.RENAMED, Gio.FileMonitorEvent.MOVED_IN, Gio.FileMonitorEvent.MOVED_OUT]: @@ -68,7 +68,7 @@ class FileActionSignalsMixin: wid, tid = tab_widget.split("|") notebook = self.builder.get_object(f"window_{wid}") tab = self.get_fm_window(wid).get_tab_by_id(tid) - icon_grid = self.builder.get_object(f"{wid}|{tid}|icon_grid") + icon_grid = self.builder.get_object(f"{wid}|{tid}|icon_grid", use_gtk = False) store = icon_grid.get_model() _store, tab_widget_label = self.get_store_and_label_from_notebook(notebook, f"{wid}|{tid}") @@ -82,7 +82,7 @@ class FileActionSignalsMixin: self.set_bottom_labels(tab) - def do_file_search(self, widget, eve=None): + def do_file_search(self, widget, eve = None): if not self.ctrl_down and not self.shift_down and not self.alt_down: target = widget.get_name() notebook = self.builder.get_object(target) diff --git a/src/versions/solarfm-0.0.1/solarfm/core/mixins/signals/keyboard_signals_mixin.py b/src/versions/solarfm-0.0.1/solarfm/core/mixins/signals/keyboard_signals_mixin.py index 62508ab..9e02fe1 100644 --- a/src/versions/solarfm-0.0.1/solarfm/core/mixins/signals/keyboard_signals_mixin.py +++ b/src/versions/solarfm-0.0.1/solarfm/core/mixins/signals/keyboard_signals_mixin.py @@ -74,7 +74,7 @@ class KeyboardSignalsMixin: def keyboard_close_tab(self): wid, tid = self.fm_controller.get_active_wid_and_tid() notebook = self.builder.get_object(f"window_{wid}") - scroll = self.builder.get_object(f"{wid}|{tid}") + scroll = self.builder.get_object(f"{wid}|{tid}", use_gtk = False) page = notebook.page_num(scroll) tab = self.get_fm_window(wid).get_tab_by_id(tid) watcher = tab.get_dir_watcher() diff --git a/src/versions/solarfm-0.0.1/solarfm/core/mixins/ui/grid_mixin.py b/src/versions/solarfm-0.0.1/solarfm/core/mixins/ui/grid_mixin.py index b28a5e4..85772b3 100644 --- a/src/versions/solarfm-0.0.1/solarfm/core/mixins/ui/grid_mixin.py +++ b/src/versions/solarfm-0.0.1/solarfm/core/mixins/ui/grid_mixin.py @@ -81,7 +81,7 @@ class GridMixin: def create_tab_widget(self, tab): return TabHeaderWidget(tab, self.close_tab) - def create_scroll_and_store(self, tab, wid, use_tree_view=False): + def create_scroll_and_store(self, tab, wid, use_tree_view = False): scroll = Gtk.ScrolledWindow() if not use_tree_view: @@ -93,8 +93,8 @@ class GridMixin: scroll.add(grid) scroll.set_name(f"{wid}|{tab.get_id()}") grid.set_name(f"{wid}|{tab.get_id()}") - self.builder.expose_object(f"{wid}|{tab.get_id()}|icon_grid", grid) - self.builder.expose_object(f"{wid}|{tab.get_id()}", scroll) + self.builder.expose_object(f"{wid}|{tab.get_id()}|icon_grid", grid, use_gtk = False) + self.builder.expose_object(f"{wid}|{tab.get_id()}", scroll, use_gtk = False) return scroll, grid.get_store() diff --git a/src/versions/solarfm-0.0.1/solarfm/core/mixins/ui/tab_mixin.py b/src/versions/solarfm-0.0.1/solarfm/core/mixins/ui/tab_mixin.py index e88f393..ed79fcd 100644 --- a/src/versions/solarfm-0.0.1/solarfm/core/mixins/ui/tab_mixin.py +++ b/src/versions/solarfm-0.0.1/solarfm/core/mixins/ui/tab_mixin.py @@ -17,7 +17,7 @@ from .grid_mixin import GridMixin class TabMixin(GridMixin): """docstring for TabMixin""" - def create_tab(self, wid=None, tid=None, path=None): + def create_tab(self, wid: int = None, tid: int = None, path: str = None): if not wid: wid, tid = self.fm_controller.get_active_wid_and_tid() @@ -60,7 +60,7 @@ class TabMixin(GridMixin): tab_box = button.get_parent() wid = int(notebook.get_name()[-1]) tid = self.get_id_from_tab_box(tab_box) - scroll = self.builder.get_object(f"{wid}|{tid}") + scroll = self.builder.get_object(f"{wid}|{tid}", use_gtk = False) icon_grid = scroll.get_children()[0] store = icon_grid.get_store() tab = self.get_fm_window(wid).get_tab_by_id(tid) @@ -69,6 +69,9 @@ class TabMixin(GridMixin): watcher.cancel() self.get_fm_window(wid).delete_tab_by_id(tid) + self.builder.dereference_object(f"{wid}|{tid}|icon_grid") + self.builder.dereference_object(f"{wid}|{tid}") + store.clear() # store.run_dispose() icon_grid.destroy() @@ -112,7 +115,7 @@ class TabMixin(GridMixin): if not settings_manager.is_trace_debug(): self.fm_controller.save_state() - def on_tab_switch_update(self, notebook, content=None, index=None): + def on_tab_switch_update(self, notebook, content = None, index = None): self.selected_files.clear() wid, tid = content.get_children()[0].get_name().split("|") self.fm_controller.set_wid_and_tid(wid, tid) @@ -131,7 +134,7 @@ class TabMixin(GridMixin): def get_tab_icon_grid_from_notebook(self, notebook): return notebook.get_children()[1].get_children()[0] - def refresh_tab(data=None): + def refresh_tab(data = None): state = self.get_current_state() state.tab.load_directory() self.load_store(state.tab, state.store) @@ -148,7 +151,7 @@ class TabMixin(GridMixin): if not settings_manager.is_trace_debug(): self.fm_controller.save_state() - def do_action_from_bar_controls(self, widget, eve=None): + def do_action_from_bar_controls(self, widget, eve = None): action = widget.get_name() wid, tid = self.fm_controller.get_active_wid_and_tid() notebook = self.builder.get_object(f"window_{wid}") diff --git a/src/versions/solarfm-0.0.1/solarfm/core/widgets/files_view/files_widget.py b/src/versions/solarfm-0.0.1/solarfm/core/widgets/files_view/files_widget.py index 9a49117..cca26d6 100644 --- a/src/versions/solarfm-0.0.1/solarfm/core/widgets/files_view/files_widget.py +++ b/src/versions/solarfm-0.0.1/solarfm/core/widgets/files_view/files_widget.py @@ -54,7 +54,7 @@ class FilesWidget(FileActionSignalsMixin, WindowMixin): self.files_view.set_group_name("files_widget") self.builder.expose_object(f"{self.NAME}", self.files_view) - def _load_files_view_state(self, win_name=None, tabs=None): + def _load_files_view_state(self, win_name = None, tabs = None): if win_name == self.NAME: if tabs: for tab in tabs: @@ -62,9 +62,9 @@ class FilesWidget(FileActionSignalsMixin, WindowMixin): else: self.create_new_tab_notebook(None, self.INDEX, None) - def _get_files_view_icon_grid(self, win_index=None, tid=None): + def _get_files_view_icon_grid(self, win_index = None, tid = None): if win_index == str(self.INDEX): - return self.builder.get_object(f"{self.INDEX}|{tid}|icon_grid") + return self.builder.get_object(f"{self.INDEX}|{tid}|icon_grid", use_gtk = False) def set_fm_controller(self, _fm_controller): diff --git a/src/versions/solarfm-0.0.1/solarfm/core/widgets/files_view/grid_mixin.py b/src/versions/solarfm-0.0.1/solarfm/core/widgets/files_view/grid_mixin.py index d56649a..0b02715 100644 --- a/src/versions/solarfm-0.0.1/solarfm/core/widgets/files_view/grid_mixin.py +++ b/src/versions/solarfm-0.0.1/solarfm/core/widgets/files_view/grid_mixin.py @@ -59,7 +59,6 @@ class GridMixin: icon = tab.create_icon(dir, file) itr = store.get_iter(i) store.set_value(itr, 0, icon) - return 1 def create_icons_generator(self, tab, dir, files): for file in files: @@ -82,7 +81,7 @@ class GridMixin: def create_tab_widget(self, tab): return TabHeaderWidget(tab, self.close_tab) - def create_scroll_and_store(self, tab, wid, use_tree_view=False): + def create_scroll_and_store(self, tab, wid, use_tree_view = False): scroll = Gtk.ScrolledWindow() if not use_tree_view: @@ -94,8 +93,8 @@ class GridMixin: scroll.add(grid) scroll.set_name(f"{wid}|{tab.get_id()}") grid.set_name(f"{wid}|{tab.get_id()}") - self.builder.expose_object(f"{wid}|{tab.get_id()}|icon_grid", grid) - self.builder.expose_object(f"{wid}|{tab.get_id()}", scroll) + self.builder.expose_object(f"{wid}|{tab.get_id()}|icon_grid", grid, use_gtk = False) + self.builder.expose_object(f"{wid}|{tab.get_id()}", scroll, use_gtk = False) return scroll, grid.get_store() diff --git a/src/versions/solarfm-0.0.1/solarfm/core/widgets/files_view/tab_mixin.py b/src/versions/solarfm-0.0.1/solarfm/core/widgets/files_view/tab_mixin.py index 1bf3b50..9ea81ba 100644 --- a/src/versions/solarfm-0.0.1/solarfm/core/widgets/files_view/tab_mixin.py +++ b/src/versions/solarfm-0.0.1/solarfm/core/widgets/files_view/tab_mixin.py @@ -17,7 +17,7 @@ from .grid_mixin import GridMixin class TabMixin(GridMixin): """docstring for TabMixin""" - def create_tab(self, wid=None, tid=None, path=None): + def create_tab(self, wid: int = None, tid: int = None, path: str = None): if not wid: wid, tid = self.fm_controller.get_active_wid_and_tid() @@ -62,7 +62,7 @@ class TabMixin(GridMixin): tab_box = button.get_parent() wid = int(notebook.get_name()[-1]) tid = self.get_id_from_tab_box(tab_box) - scroll = self.builder.get_object(f"{wid}|{tid}") + scroll = self.builder.get_object(f"{wid}|{tid}", use_gtk = False) icon_grid = scroll.get_children()[0] store = icon_grid.get_model() tab = self.get_fm_window(wid).get_tab_by_id(tid) @@ -71,6 +71,9 @@ class TabMixin(GridMixin): watcher.cancel() self.get_fm_window(wid).delete_tab_by_id(tid) + self.builder.dereference_object(f"{wid}|{tid}|icon_grid") + self.builder.dereference_object(f"{wid}|{tid}") + store.clear() # store.run_dispose() icon_grid.destroy() @@ -114,7 +117,7 @@ class TabMixin(GridMixin): if not settings_manager.is_trace_debug(): self.fm_controller.save_state() - def on_tab_switch_update(self, notebook, content=None, index=None): + def on_tab_switch_update(self, notebook, content = None, index = None): self.selected_files.clear() wid, tid = content.get_children()[0].get_name().split("|") self.fm_controller.set_wid_and_tid(wid, tid) @@ -133,7 +136,7 @@ class TabMixin(GridMixin): def get_tab_icon_grid_from_notebook(self, notebook): return notebook.get_children()[1].get_children()[0] - def refresh_tab(data=None): + def refresh_tab(data = None): state = self.get_current_state() state.tab.load_directory() self.load_store(state.tab, state.store) @@ -150,7 +153,7 @@ class TabMixin(GridMixin): if not settings_manager.is_trace_debug(): self.fm_controller.save_state() - def do_action_from_bar_controls(self, widget, eve=None): + def do_action_from_bar_controls(self, widget, eve = None): action = widget.get_name() wid, tid = self.fm_controller.get_active_wid_and_tid() notebook = self.builder.get_object(f"window_{wid}")