Skip to content

Commit aec5fbc

Browse files
committed
add FILES_DELIMITER constants for popup_get_file(multiple_files=True)
1 parent 0015b06 commit aec5fbc

4 files changed

Lines changed: 26 additions & 23 deletions

File tree

TkEasyGUI/dialogs.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@
4242
POPUP_OK_BUTTON_WIDTH = 12
4343
POPUP_CANCEL_BUTTON_WIDTH = 9
4444
POPUP_TTK_BUTTONS = True # use ttk buttons
45-
# delimiter for multiple files, used in popup_get_file with multiple_files=True
46-
POPUP_FILES_DELIMITER = "|" if is_win() else ";"
4745

4846

4947
def popup_set_options(
@@ -716,25 +714,27 @@ def popup_get_file(
716714
default_extension: Optional[str] = None,
717715
files_delimiter: Optional[
718716
str
719-
] = POPUP_FILES_DELIMITER, # delimiter for multiple files, used when multiple_files=True
717+
] = None, # default is FILES_DELIMITER for multiple files, used when multiple_files=True
720718
# pylint: disable=unused-argument
721719
no_window: Optional[bool] = None, # for compatibility
722720
**kw,
723-
) -> Union[str, tuple[str], None]:
721+
) -> Optional[str]:
724722
"""Popup a file selection dialog. Return the file selected."""
723+
from . import widgets as eg
724+
725725
if title is None:
726726
title = message
727727
if initial_folder is None:
728728
initial_folder = os.getcwd()
729729
if file_types is None:
730730
file_types = [("All Files", "*.*")]
731+
if files_delimiter is None:
732+
files_delimiter = eg.FILES_DELIMITER
731733
# check no_window
732734
if no_window is None:
733735
no_window = True
734736
if no_window is False:
735737
# --- no_window is False ---
736-
from . import widgets as eg
737-
738738
# show base dialog
739739
layout_no_window: list[list[eg.Element]] = [
740740
[eg.Text(message)],
@@ -785,8 +785,7 @@ def popup_get_file(
785785
**kw,
786786
)
787787
if multiple_files and isinstance(result, (tuple, list)):
788-
if files_delimiter is not None:
789-
result = files_delimiter.join(result)
788+
result = str(files_delimiter).join(result)
790789
return result
791790

792791

TkEasyGUI/widgets.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@
9494
"y2": 22 + 6,
9595
} # for macOS titlebar
9696

97+
# delimiter for multiple files, used in popup_get_file with multiple_files=True
98+
FILES_DELIMITER = "|" if utils.is_win() else ":"
99+
97100

98101
# ------------------------------------------------------------------------------
99102
# Widget wrapper
@@ -4688,7 +4691,7 @@ def __init__(
46884691
save_as: bool = False,
46894692
enable_events: bool = False, # enable changing events
46904693
# other
4691-
files_delimiter: Optional[str] = "|",
4694+
files_delimiter: Optional[str] = FILES_DELIMITER,
46924695
metadata: Union[dict[str, Any], None] = None,
46934696
**kw,
46944697
) -> None:
@@ -4769,7 +4772,9 @@ def show_dialog(self, *args) -> Union[Any, None]:
47694772
# Keep popup_get_file return value unchanged (tuple/list) while
47704773
# updating target widgets/events with a readable string.
47714774
fallback_delimiter = " "
4772-
target_value = fallback_delimiter.join(str(item) for item in target_value)
4775+
target_value = fallback_delimiter.join(
4776+
str(item) for item in target_value
4777+
)
47734778
if (target is not None) and (target_value is not None) and (target_value != ""):
47744779
target.update(target_value) # type: ignore [call-arg]
47754780
if self.enable_events:

tests/popup/popup_get_file_sp_file_types.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,19 @@
44

55
import TkEasyGUI as eg
66

7-
FILES_DELIMITER = "|"
8-
97
# file types
10-
file_types = (
8+
file_types = [
119
("Image files", "*.jpg;*.jpeg;*.jpe;*.heic;*.png;*.gif"),
1210
("All files", "*.*"),
13-
)
11+
]
1412
# popup
15-
files = eg.popup_get_file(
13+
files_str = eg.popup_get_file(
1614
"Please select images.",
1715
file_types=file_types,
1816
multiple_files=True,
19-
files_delimiter=FILES_DELIMITER,
17+
files_delimiter=eg.FILES_DELIMITER,
2018
)
21-
print(f"raw={files}")
22-
if files not in (None, ""):
23-
print(files.split(FILES_DELIMITER))
19+
print(f"Selected: {files_str}")
20+
if files_str:
21+
files = files_str.split(eg.FILES_DELIMITER)
22+
eg.popup_listbox(files, "Selected Files")

tests/popup/select_multiple_files.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22

33
import TkEasyGUI as eg
44

5-
FILES_DELIMITER = "|"
6-
75
selected_files = eg.popup_get_file(
86
"Please select files.",
97
title="Select Multiple Files",
108
multiple_files=True,
11-
files_delimiter=FILES_DELIMITER,
9+
files_delimiter=eg.FILES_DELIMITER,
1210
)
1311

1412
if selected_files in (None, ""):
1513
print("No files selected.")
1614
else:
1715
print(f"raw={selected_files}")
1816
print("split:")
19-
for index, file_path in enumerate(str(selected_files).split(FILES_DELIMITER), start=1):
17+
for index, file_path in enumerate(
18+
str(selected_files).split(eg.FILES_DELIMITER), start=1
19+
):
2020
print(f" {index}. {file_path}")

0 commit comments

Comments
 (0)