GRAYBYTE WORDPRESS FILE MANAGER1855

Server IP : 198.54.121.189 / Your IP : 216.73.216.224
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/python35/lib64/python3.5/idlelib/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/alt/python35/lib64/python3.5/idlelib//CodeContext.py
"""CodeContext - Extension to display the block context above the edit window

Once code has scrolled off the top of a window, it can be difficult to
determine which block you are in.  This extension implements a pane at the top
of each IDLE edit window which provides block structure hints.  These hints are
the lines which contain the block opening keywords, e.g. 'if', for the
enclosing block.  The number of hint lines is determined by the numlines
variable in the CodeContext section of config-extensions.def. Lines which do
not open blocks are not shown in the context hints pane.

"""
import tkinter
from tkinter.constants import TOP, LEFT, X, W, SUNKEN
import re
from sys import maxsize as INFINITY
from idlelib.configHandler import idleConf

BLOCKOPENERS = {"class", "def", "elif", "else", "except", "finally", "for",
                    "if", "try", "while", "with"}
UPDATEINTERVAL = 100 # millisec
FONTUPDATEINTERVAL = 1000 # millisec

getspacesfirstword =\
                   lambda s, c=re.compile(r"^(\s*)(\w*)"): c.match(s).groups()

class CodeContext:
    menudefs = [('options', [('!Code Conte_xt', '<<toggle-code-context>>')])]
    context_depth = idleConf.GetOption("extensions", "CodeContext",
                                       "numlines", type="int", default=3)
    bgcolor = idleConf.GetOption("extensions", "CodeContext",
                                 "bgcolor", type="str", default="LightGray")
    fgcolor = idleConf.GetOption("extensions", "CodeContext",
                                 "fgcolor", type="str", default="Black")
    def __init__(self, editwin):
        self.editwin = editwin
        self.text = editwin.text
        self.textfont = self.text["font"]
        self.label = None
        # self.info is a list of (line number, indent level, line text, block
        # keyword) tuples providing the block structure associated with
        # self.topvisible (the linenumber of the line displayed at the top of
        # the edit window). self.info[0] is initialized as a 'dummy' line which
        # starts the toplevel 'block' of the module.
        self.info = [(0, -1, "", False)]
        self.topvisible = 1
        visible = idleConf.GetOption("extensions", "CodeContext",
                                     "visible", type="bool", default=False)
        if visible:
            self.toggle_code_context_event()
            self.editwin.setvar('<<toggle-code-context>>', True)
        # Start two update cycles, one for context lines, one for font changes.
        self.text.after(UPDATEINTERVAL, self.timer_event)
        self.text.after(FONTUPDATEINTERVAL, self.font_timer_event)

    def toggle_code_context_event(self, event=None):
        if not self.label:
            # Calculate the border width and horizontal padding required to
            # align the context with the text in the main Text widget.
            #
            # All values are passed through getint(), since some
            # values may be pixel objects, which can't simply be added to ints.
            widgets = self.editwin.text, self.editwin.text_frame
            # Calculate the required vertical padding
            padx = 0
            for widget in widgets:
                padx += widget.tk.getint(widget.pack_info()['padx'])
                padx += widget.tk.getint(widget.cget('padx'))
            # Calculate the required border width
            border = 0
            for widget in widgets:
                border += widget.tk.getint(widget.cget('border'))
            self.label = tkinter.Label(self.editwin.top,
                                       text="\n" * (self.context_depth - 1),
                                       anchor=W, justify=LEFT,
                                       font=self.textfont,
                                       bg=self.bgcolor, fg=self.fgcolor,
                                       width=1, #don't request more than we get
                                       padx=padx, border=border,
                                       relief=SUNKEN)
            # Pack the label widget before and above the text_frame widget,
            # thus ensuring that it will appear directly above text_frame
            self.label.pack(side=TOP, fill=X, expand=False,
                            before=self.editwin.text_frame)
        else:
            self.label.destroy()
            self.label = None
        idleConf.SetOption("extensions", "CodeContext", "visible",
                           str(self.label is not None))
        idleConf.SaveUserCfgFiles()

    def get_line_info(self, linenum):
        """Get the line indent value, text, and any block start keyword

        If the line does not start a block, the keyword value is False.
        The indentation of empty lines (or comment lines) is INFINITY.

        """
        text = self.text.get("%d.0" % linenum, "%d.end" % linenum)
        spaces, firstword = getspacesfirstword(text)
        opener = firstword in BLOCKOPENERS and firstword
        if len(text) == len(spaces) or text[len(spaces)] == '#':
            indent = INFINITY
        else:
            indent = len(spaces)
        return indent, text, opener

    def get_context(self, new_topvisible, stopline=1, stopindent=0):
        """Get context lines, starting at new_topvisible and working backwards.

        Stop when stopline or stopindent is reached. Return a tuple of context
        data and the indent level at the top of the region inspected.

        """
        assert stopline > 0
        lines = []
        # The indentation level we are currently in:
        lastindent = INFINITY
        # For a line to be interesting, it must begin with a block opening
        # keyword, and have less indentation than lastindent.
        for linenum in range(new_topvisible, stopline-1, -1):
            indent, text, opener = self.get_line_info(linenum)
            if indent < lastindent:
                lastindent = indent
                if opener in ("else", "elif"):
                    # We also show the if statement
                    lastindent += 1
                if opener and linenum < new_topvisible and indent >= stopindent:
                    lines.append((linenum, indent, text, opener))
                if lastindent <= stopindent:
                    break
        lines.reverse()
        return lines, lastindent

    def update_code_context(self):
        """Update context information and lines visible in the context pane.

        """
        new_topvisible = int(self.text.index("@0,0").split('.')[0])
        if self.topvisible == new_topvisible:      # haven't scrolled
            return
        if self.topvisible < new_topvisible:       # scroll down
            lines, lastindent = self.get_context(new_topvisible,
                                                 self.topvisible)
            # retain only context info applicable to the region
            # between topvisible and new_topvisible:
            while self.info[-1][1] >= lastindent:
                del self.info[-1]
        elif self.topvisible > new_topvisible:     # scroll up
            stopindent = self.info[-1][1] + 1
            # retain only context info associated
            # with lines above new_topvisible:
            while self.info[-1][0] >= new_topvisible:
                stopindent = self.info[-1][1]
                del self.info[-1]
            lines, lastindent = self.get_context(new_topvisible,
                                                 self.info[-1][0]+1,
                                                 stopindent)
        self.info.extend(lines)
        self.topvisible = new_topvisible
        # empty lines in context pane:
        context_strings = [""] * max(0, self.context_depth - len(self.info))
        # followed by the context hint lines:
        context_strings += [x[2] for x in self.info[-self.context_depth:]]
        self.label["text"] = '\n'.join(context_strings)

    def timer_event(self):
        if self.label:
            self.update_code_context()
        self.text.after(UPDATEINTERVAL, self.timer_event)

    def font_timer_event(self):
        newtextfont = self.text["font"]
        if self.label and newtextfont != self.textfont:
            self.textfont = newtextfont
            self.label["font"] = self.textfont
        self.text.after(FONTUPDATEINTERVAL, self.font_timer_event)

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
August 12 2024 08:39:02
root / linksafe
0755
Icons
--
August 12 2024 08:39:02
root / linksafe
0755
__pycache__
--
August 12 2024 08:39:02
root / linksafe
0755
idle_test
--
August 12 2024 08:39:02
root / linksafe
0755
AutoComplete.py
8.985 KB
May 31 2024 13:51:41
root / linksafe
0644
AutoCompleteWindow.py
17.323 KB
May 31 2024 13:51:41
root / linksafe
0644
AutoExpand.py
3.315 KB
May 31 2024 13:51:41
root / linksafe
0644
Bindings.py
3.038 KB
May 31 2024 13:51:41
root / linksafe
0644
CREDITS.txt
1.822 KB
November 01 2019 23:02:34
root / linksafe
0644
CallTipWindow.py
5.894 KB
May 31 2024 13:51:41
root / linksafe
0644
CallTips.py
5.793 KB
May 31 2024 13:51:41
root / linksafe
0644
ChangeLog
55.066 KB
November 01 2019 23:02:34
root / linksafe
0644
ClassBrowser.py
6.835 KB
May 31 2024 13:51:41
root / linksafe
0644
CodeContext.py
8.161 KB
May 31 2024 13:51:41
root / linksafe
0644
ColorDelegator.py
10.35 KB
May 31 2024 13:51:41
root / linksafe
0644
Debugger.py
18.318 KB
May 31 2024 13:51:41
root / linksafe
0644
Delegator.py
1.019 KB
May 31 2024 13:51:41
root / linksafe
0644
EditorWindow.py
64.058 KB
May 31 2024 13:51:41
root / linksafe
0644
FileList.py
3.724 KB
May 31 2024 13:51:41
root / linksafe
0644
FormatParagraph.py
7.116 KB
May 31 2024 13:51:41
root / linksafe
0644
GrepDialog.py
5.004 KB
May 31 2024 13:51:41
root / linksafe
0644
HISTORY.txt
10.07 KB
November 01 2019 23:02:34
root / linksafe
0644
HyperParser.py
12.575 KB
May 31 2024 13:51:41
root / linksafe
0644
IOBinding.py
20.116 KB
May 31 2024 13:51:41
root / linksafe
0644
IdleHistory.py
3.957 KB
May 31 2024 13:51:41
root / linksafe
0644
MultiCall.py
18.136 KB
May 31 2024 13:51:41
root / linksafe
0644
MultiStatusBar.py
1.316 KB
May 31 2024 13:51:41
root / linksafe
0644
NEWS.txt
15.172 KB
November 01 2019 23:02:34
root / linksafe
0644
NEWS2x.txt
26.535 KB
November 01 2019 23:02:34
root / linksafe
0644
ObjectBrowser.py
3.882 KB
May 31 2024 13:51:41
root / linksafe
0644
OutputWindow.py
4.291 KB
May 31 2024 13:51:41
root / linksafe
0644
ParenMatch.py
6.557 KB
May 31 2024 13:51:41
root / linksafe
0644
PathBrowser.py
3.132 KB
May 31 2024 13:51:41
root / linksafe
0644
Percolator.py
3.104 KB
May 31 2024 13:51:41
root / linksafe
0644
PyParse.py
19.981 KB
May 31 2024 13:51:41
root / linksafe
0644
PyShell.py
57.467 KB
May 31 2024 13:51:41
root / linksafe
0755
README.txt
7.706 KB
November 01 2019 23:02:34
root / linksafe
0644
RemoteDebugger.py
11.726 KB
May 31 2024 13:51:41
root / linksafe
0644
RemoteObjectBrowser.py
0.941 KB
May 31 2024 13:51:41
root / linksafe
0644
ReplaceDialog.py
7.306 KB
May 31 2024 13:51:41
root / linksafe
0644
RstripExtension.py
1.025 KB
May 31 2024 13:51:41
root / linksafe
0644
ScriptBinding.py
7.872 KB
May 31 2024 13:51:41
root / linksafe
0644
ScrolledList.py
4.272 KB
May 31 2024 13:51:41
root / linksafe
0644
SearchDialog.py
3.054 KB
May 31 2024 13:51:41
root / linksafe
0644
SearchDialogBase.py
6.845 KB
May 31 2024 13:51:41
root / linksafe
0644
SearchEngine.py
7.31 KB
May 31 2024 13:51:41
root / linksafe
0644
StackViewer.py
4.322 KB
May 31 2024 13:51:41
root / linksafe
0644
TODO.txt
8.279 KB
November 01 2019 23:02:34
root / linksafe
0644
ToolTip.py
3.099 KB
May 31 2024 13:51:41
root / linksafe
0644
TreeWidget.py
14.672 KB
May 31 2024 13:51:41
root / linksafe
0644
UndoDelegator.py
10.723 KB
May 31 2024 13:51:41
root / linksafe
0644
WidgetRedirector.py
6.776 KB
May 31 2024 13:51:41
root / linksafe
0644
WindowList.py
2.414 KB
May 31 2024 13:51:41
root / linksafe
0644
ZoomHeight.py
1.27 KB
May 31 2024 13:51:41
root / linksafe
0644
__init__.py
0.327 KB
May 31 2024 13:51:41
root / linksafe
0644
__main__.py
0.155 KB
May 31 2024 13:51:41
root / linksafe
0644
aboutDialog.py
6.823 KB
May 31 2024 13:51:41
root / linksafe
0644
config-extensions.def
2.896 KB
November 01 2019 23:02:34
root / linksafe
0644
config-highlight.def
2.456 KB
November 01 2019 23:02:34
root / linksafe
0644
config-keys.def
7.595 KB
November 01 2019 23:02:34
root / linksafe
0644
config-main.def
2.503 KB
November 01 2019 23:02:34
root / linksafe
0644
configDialog.py
63.536 KB
May 31 2024 13:51:41
root / linksafe
0644
configHandler.py
31.69 KB
May 31 2024 13:51:41
root / linksafe
0644
configHelpSourceEdit.py
6.657 KB
May 31 2024 13:51:41
root / linksafe
0644
configSectionNameDialog.py
3.913 KB
May 31 2024 13:51:41
root / linksafe
0644
dynOptionMenuWidget.py
1.943 KB
May 31 2024 13:51:41
root / linksafe
0644
extend.txt
3.557 KB
November 01 2019 23:02:34
root / linksafe
0644
help.html
42.394 KB
November 01 2019 23:02:34
root / linksafe
0644
help.py
10.695 KB
May 31 2024 13:51:41
root / linksafe
0644
help.txt
17.48 KB
November 01 2019 23:02:34
root / linksafe
0644
idle.py
0.442 KB
May 31 2024 13:51:41
root / linksafe
0644
idle.pyw
0.557 KB
November 01 2019 23:02:34
root / linksafe
0644
idlever.py
0.405 KB
May 31 2024 13:51:41
root / linksafe
0644
keybindingDialog.py
12.125 KB
May 31 2024 13:51:41
root / linksafe
0644
macosxSupport.py
8.48 KB
May 31 2024 13:51:41
root / linksafe
0644
rpc.py
20.297 KB
May 31 2024 13:51:41
root / linksafe
0644
run.py
13.544 KB
May 31 2024 13:51:41
root / linksafe
0644
tabbedpages.py
17.986 KB
May 31 2024 13:51:41
root / linksafe
0644
textView.py
3.339 KB
May 31 2024 13:51:41
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF