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 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
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. |
"""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 = set(["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 int(str(<value>)), 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 += int(str( widget.pack_info()['padx'] )) padx += int(str( widget.cget('padx') )) # Calculate the required border width border = 0 for widget in widgets: border += int(str( 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)
SILENT KILLER Tool