Skip to content

Commit 60d557e

Browse files
hgmzhnclaude
andcommitted
feat: 全新的资源管理器风格文件夹选择对话框 (v1.8.7)
主要改进: - 🗂️ 树形快速访问面板:左侧快速访问面板改为可折叠的树形结构 - 📍 从系统读取路径:自动从 Windows 注册表读取真实的快速访问文件夹路径 - 🧭 面包屑导航:顶部显示可点击的路径导航 - ⏮️ 导航历史:支持后退/前进按钮浏览文件夹历史 - 📂 嵌套式浏览:只显示当前目录内容,双击进入子文件夹 - ✏️ 路径编辑模式:点击地址栏的编辑按钮可切换到路径输入模式 - 💾 显示驱动器卷标:自动获取并显示驱动器的卷标名称 - 🎯 智能文件夹发现:自动发现用户目录下的常用文件夹 统一使用新对话框: - ✅ 主界面的"添加文件夹"功能 - ✅ 编辑器的"添加文件夹"功能 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 4619eab commit 60d557e

4 files changed

Lines changed: 658 additions & 108 deletions

File tree

desktop_qt_ui/editor/editor_logic.py

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
from typing import List, Optional
44

55
from PyQt6.QtCore import QObject, pyqtSignal, pyqtSlot
6-
from PyQt6.QtWidgets import QFileDialog, QListView, QTreeView
6+
from PyQt6.QtWidgets import QFileDialog
77

88
from services import get_config_service
9+
from widgets.folder_dialog import select_folders
910

1011

1112
class EditorLogic(QObject):
@@ -43,27 +44,18 @@ def open_and_add_files(self):
4344
def open_and_add_folder(self):
4445
"""Opens a dialog to select folders (supports multiple selection) and adds all containing images to the list."""
4546
last_dir = self.config_service.get_config().app.last_open_dir
46-
# 使用文件对话框的 Directory 模式,并启用多选
47-
dialog = QFileDialog()
48-
dialog.setFileMode(QFileDialog.FileMode.Directory)
49-
dialog.setOption(QFileDialog.Option.DontUseNativeDialog, True)
50-
dialog.setDirectory(last_dir)
51-
dialog.setWindowTitle("选择文件夹(可多选)")
52-
53-
# 启用多选
54-
file_view = dialog.findChild(QListView, 'listView')
55-
if file_view:
56-
file_view.setSelectionMode(QListView.SelectionMode.ExtendedSelection)
57-
tree_view = dialog.findChild(QTreeView)
58-
if tree_view:
59-
tree_view.setSelectionMode(QTreeView.SelectionMode.ExtendedSelection)
60-
61-
if dialog.exec():
62-
folders = dialog.selectedFiles()
63-
if folders:
64-
# 添加所有选中的文件夹
65-
for folder_path in folders:
66-
self.add_folder(folder_path)
47+
48+
# 使用自定义的现代化文件夹选择器
49+
folders = select_folders(
50+
parent=None,
51+
start_dir=last_dir,
52+
multi_select=True
53+
)
54+
55+
if folders:
56+
# 添加所有选中的文件夹
57+
for folder_path in folders:
58+
self.add_folder(folder_path)
6759

6860
def add_files(self, files: List[str]):
6961
if not files:

0 commit comments

Comments
 (0)