PHP 8.2.30
Preview: filelist.py Size: 3.80 KB
/proc/self/root/opt/alt/python37/lib64/python3.7/idlelib/filelist.py

"idlelib.filelist"

import os
from tkinter import messagebox as tkMessageBox


class FileList:

    # N.B. this import overridden in PyShellFileList.
    from idlelib.editor import EditorWindow

    def __init__(self, root):
        self.root = root
        self.dict = {}
        self.inversedict = {}
        self.vars = {} # For EditorWindow.getrawvar (shared Tcl variables)

    def open(self, filename, action=None):
        assert filename
        filename = self.canonize(filename)
        if os.path.isdir(filename):
            # This can happen when bad filename is passed on command line:
            tkMessageBox.showerror(
                "File Error",
                "%r is a directory." % (filename,),
                master=self.root)
            return None
        key = os.path.normcase(filename)
        if key in self.dict:
            edit = self.dict[key]
            edit.top.wakeup()
            return edit
        if action:
            # Don't create window, perform 'action', e.g. open in same window
            return action(filename)
        else:
            edit = self.EditorWindow(self, filename, key)
            if edit.good_load:
                return edit
            else:
                edit._close()
                return None

    def gotofileline(self, filename, lineno=None):
        edit = self.open(filename)
        if edit is not None and lineno is not None:
            edit.gotoline(lineno)

    def new(self, filename=None):
        return self.EditorWindow(self, filename)

    def close_all_callback(self, *args, **kwds):
        for edit in list(self.inversedict):
            reply = edit.close()
            if reply == "cancel":
                break
        return "break"

    def unregister_maybe_terminate(self, edit):
        try:
            key = self.inversedict[edit]
        except KeyError:
            print("Don't know this EditorWindow object.  (close)")
            return
        if key:
            del self.dict[key]
        del self.inversedict[edit]
        if not self.inversedict:
            self.root.quit()

    def filename_changed_edit(self, edit):
        edit.saved_change_hook()
        try:
            key = self.inversedict[edit]
        except KeyError:
            print("Don't know this EditorWindow object.  (rename)")
            return
        filename = edit.io.filename
        if not filename:
            if key:
                del self.dict[key]
            self.inversedict[edit] = None
            return
        filename = self.canonize(filename)
        newkey = os.path.normcase(filename)
        if newkey == key:
            return
        if newkey in self.dict:
            conflict = self.dict[newkey]
            self.inversedict[conflict] = None
            tkMessageBox.showerror(
                "Name Conflict",
                "You now have multiple edit windows open for %r" % (filename,),
                master=self.root)
        self.dict[newkey] = edit
        self.inversedict[edit] = newkey
        if key:
            try:
                del self.dict[key]
            except KeyError:
                pass

    def canonize(self, filename):
        if not os.path.isabs(filename):
            try:
                pwd = os.getcwd()
            except OSError:
                pass
            else:
                filename = os.path.join(pwd, filename)
        return os.path.normpath(filename)


def _test():  # TODO check and convert to htest
    from tkinter import Tk
    from idlelib.editor import fixwordbreaks
    from idlelib.run import fix_scaling
    root = Tk()
    fix_scaling(root)
    fixwordbreaks(root)
    root.withdraw()
    flist = FileList(root)
    flist.new()
    if flist.inversedict:
        root.mainloop()

if __name__ == '__main__':
    from unittest import main
    main('idlelib.idle_test.test_filelist', verbosity=2)

#    _test()

Directory Contents

Dirs: 3 × Files: 73

Name Size Perms Modified Actions
Icons DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
idle_test DIR
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
- drwxr-xr-x 2024-05-23 07:07:51
Edit Download
8.74 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
19.64 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
3.14 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
8.12 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
6.17 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
6.99 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
55.04 KB lrw-r--r-- 2023-06-05 20:45:13
Edit Download
11.06 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
12.69 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
2.21 KB lrw-r--r-- 2023-06-05 20:45:13
Edit Download
2.80 KB lrw-r--r-- 2023-06-05 20:45:13
Edit Download
10.65 KB lrw-r--r-- 2023-06-05 20:45:13
Edit Download
3.09 KB lrw-r--r-- 2023-06-05 20:45:13
Edit Download
37.28 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
102.07 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
14.13 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
1.82 KB lrw-r--r-- 2023-06-05 20:45:13
Edit Download
18.66 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
11.86 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
3.96 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
1.06 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
1.02 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
1.97 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
64.08 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
3.56 KB lrw-r--r-- 2023-06-05 20:45:13
Edit Download
3.80 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
15.41 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
7.30 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
60.76 KB lrw-r--r-- 2023-06-05 20:45:13
Edit Download
11.46 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
8.77 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
3.95 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
10.07 KB lrw-r--r-- 2023-06-05 20:45:13
Edit Download
12.58 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
454 B lrw-r--r-- 2024-04-17 17:36:04
Edit Download
570 B lrw-r--r-- 2023-06-05 20:45:13
Edit Download
20.15 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
9.44 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
3.83 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
18.21 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
47.65 KB lrw-r--r-- 2023-06-05 20:45:13
Edit Download
26.54 KB lrw-r--r-- 2023-06-05 20:45:13
Edit Download
5.65 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
7.04 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
3.12 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
3.06 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
19.48 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
55.91 KB lrwxr-xr-x 2024-04-17 17:36:04
Edit Download
14.55 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
9.37 KB lrw-r--r-- 2023-06-05 20:45:13
Edit Download
6.71 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
9.66 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
20.64 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
19.82 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
8.58 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
4.36 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
5.44 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
7.36 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
7.30 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
13.27 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
12.54 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
4.35 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
1.41 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
6.65 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
8.28 KB lrw-r--r-- 2023-06-05 20:45:13
Edit Download
6.41 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
15.97 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
10.79 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
2.55 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
4.10 KB lrw-r--r-- 2024-04-17 17:36:04
Edit Download
961 B lrw-r--r-- 2024-04-17 17:36:04
Edit Download
396 B lrw-r--r-- 2024-04-17 17:36:04
Edit Download
159 B lrw-r--r-- 2024-04-17 17:36:04
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).