@@ -108,8 +108,8 @@ def __init__(self, parent=None, class_parent=None, files=None):
108
108
109
109
# General attributes
110
110
self .remote_files_manager = None
111
- self .server_id = None
112
- self .root_prefix = ""
111
+ self .server_id : str | None = None
112
+ self .root_prefix : dict [ str , str ] = {}
113
113
114
114
self .background_files_load = set ()
115
115
self .extra_files = []
@@ -559,7 +559,7 @@ async def _do_remote_upload_file(self, local_path):
559
559
return
560
560
561
561
remote_file = posixpath .join (
562
- self .root_prefix , os .path .basename (local_path )
562
+ self .root_prefix [ self . server_id ] , os .path .basename (local_path )
563
563
)
564
564
file_content = None
565
565
@@ -607,7 +607,9 @@ async def _do_remote_ls(self, path, server_id):
607
607
init_files_display = self .get_conf ("init_files_display" )
608
608
generator = self .remote_files_manager .ls (path )
609
609
async for file in generator :
610
- file_name = os .path .relpath (file ["name" ], self .root_prefix )
610
+ file_name = os .path .relpath (
611
+ file ["name" ], self .root_prefix [self .server_id ]
612
+ )
611
613
file_type = file ["type" ]
612
614
if len (files ) < init_files_display :
613
615
if not self .get_conf (
@@ -655,7 +657,9 @@ async def _get_extra_files(self, generator, already_added):
655
657
self .more_files_available = True
656
658
break
657
659
658
- file_name = os .path .relpath (file ["name" ], self .root_prefix )
660
+ file_name = os .path .relpath (
661
+ file ["name" ], self .root_prefix [self .server_id ]
662
+ )
659
663
file_type = file ["type" ]
660
664
if not self .get_conf ("show_hidden" ) and file_name .startswith ("." ):
661
665
continue
@@ -679,7 +683,7 @@ async def _get_extra_files(self, generator, already_added):
679
683
)
680
684
681
685
def _new_item (self , new_name , for_file = False , with_content = False ):
682
- new_path = posixpath .join (self .root_prefix , new_name )
686
+ new_path = posixpath .join (self .root_prefix [ self . server_id ] , new_name )
683
687
if not with_content :
684
688
self ._do_remote_new (new_path , for_file = for_file ).connect (
685
689
self ._on_remote_new
@@ -725,11 +729,12 @@ def chdir(
725
729
self .history .append (directory )
726
730
self .histindex = len (self .history ) - 1
727
731
728
- if directory == self .root_prefix :
732
+ if directory == self .root_prefix . get ( server_id ) :
729
733
return
730
- self . root_prefix = directory
734
+
731
735
if server_id :
732
736
self .server_id = server_id
737
+ self .root_prefix [self .server_id ] = directory
733
738
if remote_files_manager :
734
739
self .remote_files_manager = remote_files_manager
735
740
self .refresh (force_current = True )
@@ -762,7 +767,7 @@ def set_files(self, files, reset=True):
762
767
763
768
for file in files :
764
769
path = file ["name" ]
765
- name = os .path .relpath (path , self .root_prefix )
770
+ name = os .path .relpath (path , self .root_prefix [ self . server_id ] )
766
771
767
772
file_type = file ["type" ]
768
773
icon = ima .icon ("FileIcon" )
@@ -827,16 +832,16 @@ def fetch_more_files(self):
827
832
)
828
833
829
834
def set_current_folder (self , folder ):
830
- self .root_prefix = folder
835
+ self .root_prefix [ self . server_id ] = folder
831
836
return self .model .invisibleRootItem ()
832
837
833
838
def get_current_folder (self ):
834
- return self .root_prefix
839
+ return self .root_prefix [ self . server_id ]
835
840
836
841
def go_to_parent_directory (self ):
837
- parent_directory = os .path .dirname (self .root_prefix )
842
+ parent_directory = os .path .dirname (self .root_prefix [ self . server_id ] )
838
843
logger .debug (
839
- f"Going to parent directory of { self .root_prefix } : "
844
+ f"Going to parent directory of { self .root_prefix [ self . server_id ] } : "
840
845
f"{ parent_directory } "
841
846
)
842
847
self .chdir (parent_directory )
@@ -859,7 +864,7 @@ def go_to_next_directory(self):
859
864
def refresh (self , new_path = None , force_current = False ):
860
865
if force_current :
861
866
if new_path is None :
862
- new_path = self .root_prefix
867
+ new_path = self .root_prefix . get ( self . server_id )
863
868
self ._do_remote_ls (new_path , self .server_id ).connect (
864
869
self ._on_remote_ls
865
870
)
@@ -941,7 +946,9 @@ def copy_paste_item(self):
941
946
data = self .model .data (data_index , Qt .UserRole + 1 )
942
947
if data :
943
948
old_path = data ["name" ]
944
- relpath = os .path .relpath (old_path , self .root_prefix )
949
+ relpath = os .path .relpath (
950
+ old_path , self .root_prefix [self .server_id ]
951
+ )
945
952
new_relpath , valid = QInputDialog .getText (
946
953
self ,
947
954
_ ("Copy and Paste" ),
@@ -950,7 +957,9 @@ def copy_paste_item(self):
950
957
relpath ,
951
958
)
952
959
if valid :
953
- new_path = posixpath .join (self .root_prefix , new_relpath )
960
+ new_path = posixpath .join (
961
+ self .root_prefix [self .server_id ], new_relpath
962
+ )
954
963
self ._do_remote_copy_paste (old_path , new_path ).connect (
955
964
self ._on_remote_copy_paste
956
965
)
@@ -968,12 +977,16 @@ def rename_item(self):
968
977
data = self .model .data (data_index , Qt .UserRole + 1 )
969
978
if data :
970
979
old_path = data ["name" ]
971
- relpath = os .path .relpath (old_path , self .root_prefix )
980
+ relpath = os .path .relpath (
981
+ old_path , self .root_prefix [self .server_id ]
982
+ )
972
983
new_relpath , valid = QInputDialog .getText (
973
984
self , _ ("Rename" ), _ ("New name:" ), QLineEdit .Normal , relpath
974
985
)
975
986
if valid :
976
- new_path = posixpath .join (self .root_prefix , new_relpath )
987
+ new_path = posixpath .join (
988
+ self .root_prefix [self .server_id ], new_relpath
989
+ )
977
990
self ._do_remote_rename (old_path , str (new_path )).connect (
978
991
self ._on_remote_rename
979
992
)
@@ -984,7 +997,7 @@ def copy_path(self):
984
997
not self .view .currentIndex ()
985
998
or not self .view .currentIndex ().isValid ()
986
999
):
987
- path = self .root_prefix
1000
+ path = self .root_prefix [ self . server_id ]
988
1001
else :
989
1002
source_index = self .proxy_model .mapToSource (
990
1003
self .view .currentIndex ()
@@ -1009,7 +1022,7 @@ def delete_item(self):
1009
1022
data = self .model .data (data_index , Qt .UserRole + 1 )
1010
1023
if data :
1011
1024
path = data ["name" ]
1012
- filename = os .path .relpath (path , self .root_prefix )
1025
+ filename = os .path .relpath (path , self .root_prefix [ self . server_id ] )
1013
1026
result = QMessageBox .warning (
1014
1027
self ,
1015
1028
_ ("Delete" ),
@@ -1037,7 +1050,7 @@ def download_item(self):
1037
1050
data = self .model .data (data_index , Qt .UserRole + 1 )
1038
1051
if data :
1039
1052
path = data ["name" ]
1040
- filename = os .path .relpath (path , self .root_prefix )
1053
+ filename = os .path .relpath (path , self .root_prefix [ self . server_id ] )
1041
1054
is_file = data ["type" ] == "file"
1042
1055
remote_filename = filename if is_file else f"{ filename } .zip"
1043
1056
@@ -1068,3 +1081,6 @@ def upload_file(self):
1068
1081
self ._on_remote_upload_file
1069
1082
)
1070
1083
self .sig_start_spinner_requested .emit ()
1084
+
1085
+ def reset (self , server_id ):
1086
+ self .root_prefix [server_id ] = None
0 commit comments