|
@@ -1,3 +1,4 @@
|
|
|
+import platform
|
|
|
from pathlib import Path
|
|
|
from typing import Dict, Optional
|
|
|
|
|
@@ -27,6 +28,7 @@ class local_file_picker(ui.dialog):
|
|
|
self.show_hidden_files = show_hidden_files
|
|
|
|
|
|
with self, ui.card():
|
|
|
+ self.add_drives_toggle()
|
|
|
self.grid = ui.aggrid({
|
|
|
'columnDefs': [{'field': 'name', 'headerName': 'File'}],
|
|
|
'rowSelection': 'multiple' if multiple else 'single',
|
|
@@ -36,6 +38,16 @@ class local_file_picker(ui.dialog):
|
|
|
ui.button('Ok', on_click=self._handle_ok)
|
|
|
self.update_grid()
|
|
|
|
|
|
+ def add_drives_toggle(self):
|
|
|
+ if platform.system() == 'Windows':
|
|
|
+ import win32api
|
|
|
+ drives = win32api.GetLogicalDriveStrings().split('\000')[:-1]
|
|
|
+ self.drives_toggle = ui.toggle(drives, value=drives[0], on_change=self.update_drive)
|
|
|
+
|
|
|
+ def update_drive(self):
|
|
|
+ self.path = Path(self.drives_toggle.value).expanduser()
|
|
|
+ self.update_grid()
|
|
|
+
|
|
|
def update_grid(self) -> None:
|
|
|
paths = list(self.path.glob('*'))
|
|
|
if not self.show_hidden_files:
|
|
@@ -58,7 +70,7 @@ class local_file_picker(ui.dialog):
|
|
|
})
|
|
|
self.grid.update()
|
|
|
|
|
|
- async def handle_double_click(self, msg: Dict) -> None:
|
|
|
+ def handle_double_click(self, msg: Dict) -> None:
|
|
|
self.path = Path(msg['args']['data']['path'])
|
|
|
if self.path.is_dir():
|
|
|
self.update_grid()
|