SILENT KILLERPanel

Current Path: > > opt > alt > > python33 > lib64 > python3.3 > > idlelib


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt/alt//python33/lib64/python3.3//idlelib

NameTypeSizeLast ModifiedActions
Icons Directory - -
__pycache__ Directory - -
idle_test Directory - -
AutoComplete.py File 9082 bytes April 17 2024 16:58:17.
AutoCompleteWindow.py File 17672 bytes April 17 2024 16:58:17.
AutoExpand.py File 2483 bytes April 17 2024 16:58:17.
Bindings.py File 3434 bytes April 17 2024 16:58:17.
CREDITS.txt File 1865 bytes September 19 2017 07:32:02.
CallTipWindow.py File 5899 bytes April 17 2024 16:58:17.
CallTips.py File 5932 bytes April 17 2024 16:58:17.
ChangeLog File 56393 bytes September 19 2017 07:32:02.
ClassBrowser.py File 6371 bytes April 17 2024 16:58:17.
CodeContext.py File 8353 bytes April 17 2024 16:58:17.
ColorDelegator.py File 10467 bytes April 17 2024 16:58:17.
Debugger.py File 16367 bytes April 17 2024 16:58:17.
Delegator.py File 665 bytes April 17 2024 16:58:17.
EditorWindow.py File 66307 bytes April 17 2024 16:58:17.
FileList.py File 3814 bytes April 17 2024 16:58:17.
FormatParagraph.py File 7166 bytes April 17 2024 16:58:17.
GrepDialog.py File 4111 bytes April 17 2024 16:58:17.
HISTORY.txt File 10317 bytes September 19 2017 07:32:02.
HyperParser.py File 10562 bytes April 17 2024 16:58:17.
IOBinding.py File 19862 bytes April 17 2024 16:58:17.
IdleHistory.py File 4117 bytes April 17 2024 16:58:17.
MultiCall.py File 17529 bytes April 17 2024 16:58:17.
MultiStatusBar.py File 783 bytes April 17 2024 16:58:17.
NEWS.txt File 34417 bytes September 19 2017 07:32:02.
ObjectBrowser.py File 3749 bytes April 17 2024 16:58:17.
OutputWindow.py File 4394 bytes April 17 2024 16:58:17.
ParenMatch.py File 6627 bytes April 17 2024 16:58:17.
PathBrowser.py File 2878 bytes April 17 2024 16:58:17.
Percolator.py File 2658 bytes April 17 2024 16:58:17.
PyParse.py File 19414 bytes April 17 2024 16:58:17.
PyShell.py File 57877 bytes April 17 2024 16:58:17.
README.txt File 2502 bytes September 19 2017 07:32:02.
RemoteDebugger.py File 12029 bytes April 17 2024 16:58:17.
RemoteObjectBrowser.py File 964 bytes April 17 2024 16:58:17.
ReplaceDialog.py File 5829 bytes April 17 2024 16:58:17.
RstripExtension.py File 1050 bytes April 17 2024 16:58:17.
ScriptBinding.py File 8069 bytes April 17 2024 16:58:17.
ScrolledList.py File 3997 bytes April 17 2024 16:58:17.
SearchDialog.py File 2016 bytes April 17 2024 16:58:17.
SearchDialogBase.py File 5185 bytes April 17 2024 16:58:17.
SearchEngine.py File 7544 bytes April 17 2024 16:58:17.
StackViewer.py File 3567 bytes April 17 2024 16:58:17.
TODO.txt File 8478 bytes September 19 2017 07:32:02.
ToolTip.py File 2736 bytes April 17 2024 16:58:17.
TreeWidget.py File 15220 bytes April 17 2024 16:58:17.
UndoDelegator.py File 10305 bytes April 17 2024 16:58:17.
WidgetRedirector.py File 4477 bytes April 17 2024 16:58:17.
WindowList.py File 2472 bytes April 17 2024 16:58:17.
ZoomHeight.py File 1307 bytes April 17 2024 16:58:17.
__init__.py File 37 bytes April 17 2024 16:58:17.
__main__.py File 109 bytes April 17 2024 16:58:17.
aboutDialog.py File 6575 bytes April 17 2024 16:58:17.
config-extensions.def File 2788 bytes September 19 2017 07:32:02.
config-highlight.def File 1740 bytes September 19 2017 07:32:02.
config-keys.def File 7524 bytes September 19 2017 07:32:02.
config-main.def File 2514 bytes September 19 2017 07:32:02.
configDialog.py File 52850 bytes April 17 2024 16:58:17.
configHandler.py File 29323 bytes April 17 2024 16:58:17.
configHelpSourceEdit.py File 6725 bytes April 17 2024 16:58:17.
configSectionNameDialog.py File 4314 bytes April 17 2024 16:58:17.
dynOptionMenuWidget.py File 1308 bytes April 17 2024 16:58:17.
extend.txt File 3642 bytes September 19 2017 07:32:02.
help.txt File 11994 bytes September 19 2017 07:32:02.
idle.py File 400 bytes April 17 2024 16:58:17.
idle.pyw File 671 bytes September 19 2017 07:32:02.
idlever.py File 23 bytes April 17 2024 16:58:17.
keybindingDialog.py File 12427 bytes April 17 2024 16:58:17.
macosxSupport.py File 7172 bytes April 17 2024 16:58:17.
rpc.py File 20953 bytes April 17 2024 16:58:17.
run.py File 13694 bytes April 17 2024 16:58:17.
tabbedpages.py File 18167 bytes April 17 2024 16:58:17.
textView.py File 3545 bytes April 17 2024 16:58:17.

Reading File: //opt/alt//python33/lib64/python3.3//idlelib/ClassBrowser.py

"""Class browser.

XXX TO DO:

- reparse when source changed (maybe just a button would be OK?)
    (or recheck on window popup)
- add popup menu with more options (e.g. doc strings, base classes, imports)
- show function argument list? (have to do pattern matching on source)
- should the classes and methods lists also be in the module's menu bar?
- add base classes to class browser tree
"""

import os
import sys
import pyclbr

from idlelib import PyShell
from idlelib.WindowList import ListedToplevel
from idlelib.TreeWidget import TreeNode, TreeItem, ScrolledCanvas
from idlelib.configHandler import idleConf

class ClassBrowser:

    def __init__(self, flist, name, path):
        # XXX This API should change, if the file doesn't end in ".py"
        # XXX the code here is bogus!
        self.name = name
        self.file = os.path.join(path[0], self.name + ".py")
        self.init(flist)

    def close(self, event=None):
        self.top.destroy()
        self.node.destroy()

    def init(self, flist):
        self.flist = flist
        # reset pyclbr
        pyclbr._modules.clear()
        # create top
        self.top = top = ListedToplevel(flist.root)
        top.protocol("WM_DELETE_WINDOW", self.close)
        top.bind("<Escape>", self.close)
        self.settitle()
        top.focus_set()
        # create scrolled canvas
        theme = idleConf.GetOption('main','Theme','name')
        background = idleConf.GetHighlight(theme, 'normal')['background']
        sc = ScrolledCanvas(top, bg=background, highlightthickness=0, takefocus=1)
        sc.frame.pack(expand=1, fill="both")
        item = self.rootnode()
        self.node = node = TreeNode(sc.canvas, None, item)
        node.update()
        node.expand()

    def settitle(self):
        self.top.wm_title("Class Browser - " + self.name)
        self.top.wm_iconname("Class Browser")

    def rootnode(self):
        return ModuleBrowserTreeItem(self.file)

class ModuleBrowserTreeItem(TreeItem):

    def __init__(self, file):
        self.file = file

    def GetText(self):
        return os.path.basename(self.file)

    def GetIconName(self):
        return "python"

    def GetSubList(self):
        sublist = []
        for name in self.listclasses():
            item = ClassBrowserTreeItem(name, self.classes, self.file)
            sublist.append(item)
        return sublist

    def OnDoubleClick(self):
        if os.path.normcase(self.file[-3:]) != ".py":
            return
        if not os.path.exists(self.file):
            return
        PyShell.flist.open(self.file)

    def IsExpandable(self):
        return os.path.normcase(self.file[-3:]) == ".py"

    def listclasses(self):
        dir, file = os.path.split(self.file)
        name, ext = os.path.splitext(file)
        if os.path.normcase(ext) != ".py":
            return []
        try:
            dict = pyclbr.readmodule_ex(name, [dir] + sys.path)
        except ImportError as msg:
            return []
        items = []
        self.classes = {}
        for key, cl in dict.items():
            if cl.module == name:
                s = key
                if hasattr(cl, 'super') and cl.super:
                    supers = []
                    for sup in cl.super:
                        if type(sup) is type(''):
                            sname = sup
                        else:
                            sname = sup.name
                            if sup.module != cl.module:
                                sname = "%s.%s" % (sup.module, sname)
                        supers.append(sname)
                    s = s + "(%s)" % ", ".join(supers)
                items.append((cl.lineno, s))
                self.classes[s] = cl
        items.sort()
        list = []
        for item, s in items:
            list.append(s)
        return list

class ClassBrowserTreeItem(TreeItem):

    def __init__(self, name, classes, file):
        self.name = name
        self.classes = classes
        self.file = file
        try:
            self.cl = self.classes[self.name]
        except (IndexError, KeyError):
            self.cl = None
        self.isfunction = isinstance(self.cl, pyclbr.Function)

    def GetText(self):
        if self.isfunction:
            return "def " + self.name + "(...)"
        else:
            return "class " + self.name

    def GetIconName(self):
        if self.isfunction:
            return "python"
        else:
            return "folder"

    def IsExpandable(self):
        if self.cl:
            try:
                return not not self.cl.methods
            except AttributeError:
                return False

    def GetSubList(self):
        if not self.cl:
            return []
        sublist = []
        for name in self.listmethods():
            item = MethodBrowserTreeItem(name, self.cl, self.file)
            sublist.append(item)
        return sublist

    def OnDoubleClick(self):
        if not os.path.exists(self.file):
            return
        edit = PyShell.flist.open(self.file)
        if hasattr(self.cl, 'lineno'):
            lineno = self.cl.lineno
            edit.gotoline(lineno)

    def listmethods(self):
        if not self.cl:
            return []
        items = []
        for name, lineno in self.cl.methods.items():
            items.append((lineno, name))
        items.sort()
        list = []
        for item, name in items:
            list.append(name)
        return list

class MethodBrowserTreeItem(TreeItem):

    def __init__(self, name, cl, file):
        self.name = name
        self.cl = cl
        self.file = file

    def GetText(self):
        return "def " + self.name + "(...)"

    def GetIconName(self):
        return "python" # XXX

    def IsExpandable(self):
        return 0

    def OnDoubleClick(self):
        if not os.path.exists(self.file):
            return
        edit = PyShell.flist.open(self.file)
        edit.gotoline(self.cl.methods[self.name])

def main():
    try:
        file = __file__
    except NameError:
        file = sys.argv[0]
        if sys.argv[1:]:
            file = sys.argv[1]
        else:
            file = sys.argv[0]
    dir, file = os.path.split(file)
    name = os.path.splitext(file)[0]
    ClassBrowser(PyShell.flist, name, [dir])
    if sys.stdin is sys.__stdin__:
        mainloop()

if __name__ == "__main__":
    main()

SILENT KILLER Tool