修改远程文件无法显示的问题
This commit is contained in:
parent
8231566051
commit
80d0ad288c
@ -276,9 +276,12 @@ class SyncTab:
|
|||||||
self.current_folder_var.set(folder_path)
|
self.current_folder_var.set(folder_path)
|
||||||
self.remote_dir_var.set(remote_path)
|
self.remote_dir_var.set(remote_path)
|
||||||
|
|
||||||
# 刷新文件预览
|
# 刷新本地文件预览
|
||||||
self._refresh_local_tree(folder_path)
|
self._refresh_local_tree(folder_path)
|
||||||
|
|
||||||
|
# 刷新远程文件预览
|
||||||
|
self._refresh_remote_tree(remote_path)
|
||||||
|
|
||||||
# 更新访问记录
|
# 更新访问记录
|
||||||
self.folder_manager.update_folder_access(folder_path)
|
self.folder_manager.update_folder_access(folder_path)
|
||||||
|
|
||||||
@ -385,6 +388,91 @@ class SyncTab:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.logger.error(f"Error refreshing local tree: {e}")
|
self.logger.error(f"Error refreshing local tree: {e}")
|
||||||
|
|
||||||
|
def _refresh_remote_tree(self, remote_path=None):
|
||||||
|
"""刷新远程文件树"""
|
||||||
|
if remote_path is None:
|
||||||
|
remote_path = self.remote_dir_var.get()
|
||||||
|
|
||||||
|
if not remote_path:
|
||||||
|
return
|
||||||
|
|
||||||
|
# 清空现有项目
|
||||||
|
self.remote_tree.delete(*self.remote_tree.get_children())
|
||||||
|
|
||||||
|
# 显示加载提示
|
||||||
|
self.log_queue.put(f"🔄 正在加载远程文件: {remote_path}")
|
||||||
|
|
||||||
|
def load_worker():
|
||||||
|
try:
|
||||||
|
# 获取所有可用的云盘服务
|
||||||
|
all_files = {}
|
||||||
|
|
||||||
|
for cloud in self.clouds:
|
||||||
|
try:
|
||||||
|
self.log_queue.put(f" 正在从 {cloud.name} 获取文件列表...")
|
||||||
|
files = cloud.list_files(remote_path)
|
||||||
|
|
||||||
|
if files:
|
||||||
|
all_files[cloud.name] = files
|
||||||
|
self.log_queue.put(f" ✅ {cloud.name}: 找到 {len(files)} 个文件")
|
||||||
|
else:
|
||||||
|
self.log_queue.put(f" ℹ️ {cloud.name}: 目录为空或不存在")
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
self.logger.error(f"Failed to list files from {cloud.name}: {e}")
|
||||||
|
self.log_queue.put(f" ❌ {cloud.name}: 获取失败 - {str(e)[:50]}")
|
||||||
|
|
||||||
|
# 在UI线程中更新树形视图
|
||||||
|
def update_tree():
|
||||||
|
if not all_files:
|
||||||
|
# 显示"无文件"提示
|
||||||
|
self.remote_tree.insert("", "end", text="📭 远程目录为空或不存在")
|
||||||
|
return
|
||||||
|
|
||||||
|
# 为每个云盘创建一个分类节点
|
||||||
|
for cloud_name, files in all_files.items():
|
||||||
|
cloud_node = self.remote_tree.insert("", "end", text=f"☁️ {cloud_name}", open=True)
|
||||||
|
|
||||||
|
# 解析文件列表并添加到树中
|
||||||
|
for file_info in files:
|
||||||
|
# bypy的输出格式可能是 "D 文件夹名" 或 "F 文件名 (大小)"
|
||||||
|
file_info = file_info.strip()
|
||||||
|
|
||||||
|
if not file_info:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 尝试解析文件类型和名称
|
||||||
|
if file_info.startswith('D '):
|
||||||
|
# 目录
|
||||||
|
name = file_info[2:].strip()
|
||||||
|
self.remote_tree.insert(cloud_node, "end", text=f"📁 {name}")
|
||||||
|
elif file_info.startswith('F '):
|
||||||
|
# 文件
|
||||||
|
parts = file_info[2:].split('(')
|
||||||
|
name = parts[0].strip()
|
||||||
|
size = parts[1].rstrip(')').strip() if len(parts) > 1 else ""
|
||||||
|
display_text = f"📄 {name}" + (f" ({size})" if size else "")
|
||||||
|
self.remote_tree.insert(cloud_node, "end", text=display_text)
|
||||||
|
else:
|
||||||
|
# 未知格式,直接显示
|
||||||
|
self.remote_tree.insert(cloud_node, "end", text=f"📄 {file_info}")
|
||||||
|
|
||||||
|
self.log_queue.put("✅ 远程文件列表加载完成")
|
||||||
|
|
||||||
|
self.frame.after(0, update_tree)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
self.logger.error(f"Error loading remote files: {e}")
|
||||||
|
self.log_queue.put(f"❌ 加载远程文件失败: {e}")
|
||||||
|
|
||||||
|
def show_error():
|
||||||
|
self.remote_tree.insert("", "end", text=f"❌ 加载失败: {str(e)[:50]}")
|
||||||
|
|
||||||
|
self.frame.after(0, show_error)
|
||||||
|
|
||||||
|
# 在后台线程中加载
|
||||||
|
threading.Thread(target=load_worker, daemon=True).start()
|
||||||
|
|
||||||
def _browse_directory(self):
|
def _browse_directory(self):
|
||||||
"""向后兼容的方法"""
|
"""向后兼容的方法"""
|
||||||
self._browse_and_add_folder()
|
self._browse_and_add_folder()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user