|
4 | 4 | import ttk |
5 | 5 | except ImportError: |
6 | 6 | from tkinter import ttk |
| 7 | +import os |
7 | 8 |
|
8 | 9 |
|
9 | 10 | class TestFileBrowser(BaseWidgetTest): |
10 | | - def test_filebrowser(self): |
| 11 | + def test_filebrowser_opendir(self): |
| 12 | + # --- multiple selection |
| 13 | + path = os.path.expanduser('~') |
| 14 | + fb = FileBrowser(self.window, initialdir=path, initialfile="test", mode="opendir", |
| 15 | + multiple_selection=True, defaultext=".png", |
| 16 | + title="Test", filetypes=[], |
| 17 | + okbuttontext=None, cancelbuttontext="Cancel", |
| 18 | + foldercreation=False) |
| 19 | + self.window.update() |
| 20 | + fb.right_tree.focus_force() |
| 21 | + self.window.update() |
| 22 | + fb.event_generate('<Control-a>') |
| 23 | + self.window.update() |
| 24 | + self.window.update_idletasks() |
| 25 | + fb.validate() |
| 26 | + walk = os.walk(path) |
| 27 | + root, dirs, _ = walk.send(None) |
| 28 | + res = list(fb.get_result()) |
| 29 | + res.sort() |
| 30 | + dirs = [os.path.realpath(os.path.join(root, d)) for d in dirs] |
| 31 | + dirs.sort() |
| 32 | + self.assertEqual(res, dirs) |
| 33 | + # --- single selection |
11 | 34 | fb = FileBrowser(self.window, initialdir=".", initialfile="test", mode="opendir", |
| 35 | + multiple_selection=False, defaultext=".png", |
| 36 | + title="Test", filetypes=[], |
| 37 | + okbuttontext=None, cancelbuttontext="Cancel", |
| 38 | + foldercreation=False) |
| 39 | + self.window.update() |
| 40 | + fb.validate() |
| 41 | + self.assertTrue(os.path.isdir(fb.get_result())) |
| 42 | + |
| 43 | + def test_filebrowser_openfile(self): |
| 44 | + # --- multiple selection |
| 45 | + path = os.path.expanduser('~') |
| 46 | + fb = FileBrowser(self.window, initialdir=path, initialfile="test", mode="openfile", |
12 | 47 | multiple_selection=True, defaultext=".png", |
13 | 48 | title="Test", filetypes=[], |
14 | 49 | okbuttontext=None, cancelbuttontext="Cancel", |
15 | 50 | foldercreation=False) |
16 | 51 | self.window.update() |
17 | | - fb.destroy() |
| 52 | + fb.right_tree.focus_force() |
| 53 | + self.window.update() |
| 54 | + fb.event_generate('<Control-a>') |
| 55 | + self.window.update() |
| 56 | + self.window.update_idletasks() |
| 57 | + fb.validate() |
| 58 | + walk = os.walk(path) |
| 59 | + root, _, files = walk.send(None) |
| 60 | + res = list(fb.get_result()) |
| 61 | + res.sort() |
| 62 | + files = [os.path.realpath(os.path.join(root, f)) for f in files] |
| 63 | + files.sort() |
| 64 | + self.assertEqual(res, files) |
| 65 | + # --- single selection |
18 | 66 | fb = FileBrowser(self.window, initialdir=".", initialfile="test", mode="openfile", |
19 | | - multiple_selection=True, defaultext=".png", |
| 67 | + multiple_selection=False, defaultext="", |
| 68 | + title="Test", filetypes=[("PNG", '*.png'), ('ALL', '*')], |
| 69 | + okbuttontext=None, cancelbuttontext="Cancel", |
| 70 | + foldercreation=False) |
| 71 | + self.window.update() |
| 72 | + fb.validate() |
| 73 | + self.assertEqual(fb.get_result(), '') |
| 74 | + fb = FileBrowser(self.window, initialdir=".", initialfile="test", mode="openfile", |
| 75 | + multiple_selection=False, defaultext="", |
| 76 | + title="Test", filetypes=[("PNG", '*.png'), ('ALL', '*')], |
| 77 | + okbuttontext=None, cancelbuttontext="Cancel", |
| 78 | + foldercreation=False) |
| 79 | + self.window.update() |
| 80 | + fb.validate() |
| 81 | + self.assertEqual(fb.get_result(), '') |
| 82 | + fb = FileBrowser(self.window, initialdir=".", initialfile="test", mode="openfile", |
| 83 | + multiple_selection=False, defaultext="", |
20 | 84 | title="Test", filetypes=[], |
21 | 85 | okbuttontext=None, cancelbuttontext="Cancel", |
22 | 86 | foldercreation=False) |
23 | 87 | self.window.update() |
24 | | - fb.destroy() |
| 88 | + walk = os.walk(os.path.abspath(".")) |
| 89 | + root, _, files = walk.send(None) |
| 90 | + files = fb.right_tree.tag_has('file') |
| 91 | + if files: |
| 92 | + fb.right_tree.selection_set(files[0]) |
| 93 | + fb.validate() |
| 94 | + self.assertTrue(os.path.isfile(fb.get_result())) |
| 95 | + else: |
| 96 | + fb.validate() |
| 97 | + self.assertEqual(fb.get_result(), '') |
| 98 | + |
| 99 | + def test_filebrowser_save(self): |
25 | 100 | fb = FileBrowser(self.window, initialdir="/", initialfile="test", mode="save", |
26 | 101 | multiple_selection=True, defaultext=".png", |
27 | 102 | title="Test", filetypes=[("PNG", '*.png'), ('ALL', '*')], |
28 | 103 | okbuttontext=None, cancelbuttontext="Cancel", |
29 | | - foldercreation=False) |
| 104 | + foldercreation=True) |
30 | 105 | self.window.update() |
31 | | - fb.destroy() |
32 | | - |
33 | | - |
| 106 | + fb.validate() |
| 107 | + self.assertEqual(fb.get_result(), '/test.png') |
0 commit comments