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. |
import time import re import keyword import builtins from tkinter import * from idlelib.Delegator import Delegator from idlelib.configHandler import idleConf DEBUG = False def any(name, alternates): "Return a named group pattern matching list of alternates." return "(?P<%s>" % name + "|".join(alternates) + ")" def make_pat(): kw = r"\b" + any("KEYWORD", keyword.kwlist) + r"\b" builtinlist = [str(name) for name in dir(builtins) if not name.startswith('_') and \ name not in keyword.kwlist] # self.file = open("file") : # 1st 'file' colorized normal, 2nd as builtin, 3rd as string builtin = r"([^.'\"\\#]\b|^)" + any("BUILTIN", builtinlist) + r"\b" comment = any("COMMENT", [r"#[^\n]*"]) stringprefix = r"(\br|u|ur|R|U|UR|Ur|uR|b|B|br|Br|bR|BR|rb|rB|Rb|RB)?" sqstring = stringprefix + r"'[^'\\\n]*(\\.[^'\\\n]*)*'?" dqstring = stringprefix + r'"[^"\\\n]*(\\.[^"\\\n]*)*"?' sq3string = stringprefix + r"'''[^'\\]*((\\.|'(?!''))[^'\\]*)*(''')?" dq3string = stringprefix + r'"""[^"\\]*((\\.|"(?!""))[^"\\]*)*(""")?' string = any("STRING", [sq3string, dq3string, sqstring, dqstring]) return kw + "|" + builtin + "|" + comment + "|" + string +\ "|" + any("SYNC", [r"\n"]) prog = re.compile(make_pat(), re.S) idprog = re.compile(r"\s+(\w+)", re.S) asprog = re.compile(r".*?\b(as)\b") class ColorDelegator(Delegator): def __init__(self): Delegator.__init__(self) self.prog = prog self.idprog = idprog self.asprog = asprog self.LoadTagDefs() def setdelegate(self, delegate): if self.delegate is not None: self.unbind("<<toggle-auto-coloring>>") Delegator.setdelegate(self, delegate) if delegate is not None: self.config_colors() self.bind("<<toggle-auto-coloring>>", self.toggle_colorize_event) self.notify_range("1.0", "end") else: # No delegate - stop any colorizing self.stop_colorizing = True self.allow_colorizing = False def config_colors(self): for tag, cnf in self.tagdefs.items(): if cnf: self.tag_configure(tag, **cnf) self.tag_raise('sel') def LoadTagDefs(self): theme = idleConf.GetOption('main','Theme','name') self.tagdefs = { "COMMENT": idleConf.GetHighlight(theme, "comment"), "KEYWORD": idleConf.GetHighlight(theme, "keyword"), "BUILTIN": idleConf.GetHighlight(theme, "builtin"), "STRING": idleConf.GetHighlight(theme, "string"), "DEFINITION": idleConf.GetHighlight(theme, "definition"), "SYNC": {'background':None,'foreground':None}, "TODO": {'background':None,'foreground':None}, "BREAK": idleConf.GetHighlight(theme, "break"), "ERROR": idleConf.GetHighlight(theme, "error"), # The following is used by ReplaceDialog: "hit": idleConf.GetHighlight(theme, "hit"), } if DEBUG: print('tagdefs',self.tagdefs) def insert(self, index, chars, tags=None): index = self.index(index) self.delegate.insert(index, chars, tags) self.notify_range(index, index + "+%dc" % len(chars)) def delete(self, index1, index2=None): index1 = self.index(index1) self.delegate.delete(index1, index2) self.notify_range(index1) after_id = None allow_colorizing = True colorizing = False def notify_range(self, index1, index2=None): self.tag_add("TODO", index1, index2) if self.after_id: if DEBUG: print("colorizing already scheduled") return if self.colorizing: self.stop_colorizing = True if DEBUG: print("stop colorizing") if self.allow_colorizing: if DEBUG: print("schedule colorizing") self.after_id = self.after(1, self.recolorize) close_when_done = None # Window to be closed when done colorizing def close(self, close_when_done=None): if self.after_id: after_id = self.after_id self.after_id = None if DEBUG: print("cancel scheduled recolorizer") self.after_cancel(after_id) self.allow_colorizing = False self.stop_colorizing = True if close_when_done: if not self.colorizing: close_when_done.destroy() else: self.close_when_done = close_when_done def toggle_colorize_event(self, event): if self.after_id: after_id = self.after_id self.after_id = None if DEBUG: print("cancel scheduled recolorizer") self.after_cancel(after_id) if self.allow_colorizing and self.colorizing: if DEBUG: print("stop colorizing") self.stop_colorizing = True self.allow_colorizing = not self.allow_colorizing if self.allow_colorizing and not self.colorizing: self.after_id = self.after(1, self.recolorize) if DEBUG: print("auto colorizing turned",\ self.allow_colorizing and "on" or "off") return "break" def recolorize(self): self.after_id = None if not self.delegate: if DEBUG: print("no delegate") return if not self.allow_colorizing: if DEBUG: print("auto colorizing is off") return if self.colorizing: if DEBUG: print("already colorizing") return try: self.stop_colorizing = False self.colorizing = True if DEBUG: print("colorizing...") t0 = time.perf_counter() self.recolorize_main() t1 = time.perf_counter() if DEBUG: print("%.3f seconds" % (t1-t0)) finally: self.colorizing = False if self.allow_colorizing and self.tag_nextrange("TODO", "1.0"): if DEBUG: print("reschedule colorizing") self.after_id = self.after(1, self.recolorize) if self.close_when_done: top = self.close_when_done self.close_when_done = None top.destroy() def recolorize_main(self): next = "1.0" while True: item = self.tag_nextrange("TODO", next) if not item: break head, tail = item self.tag_remove("SYNC", head, tail) item = self.tag_prevrange("SYNC", head) if item: head = item[1] else: head = "1.0" chars = "" next = head lines_to_get = 1 ok = False while not ok: mark = next next = self.index(mark + "+%d lines linestart" % lines_to_get) lines_to_get = min(lines_to_get * 2, 100) ok = "SYNC" in self.tag_names(next + "-1c") line = self.get(mark, next) ##print head, "get", mark, next, "->", repr(line) if not line: return for tag in self.tagdefs: self.tag_remove(tag, mark, next) chars = chars + line m = self.prog.search(chars) while m: for key, value in m.groupdict().items(): if value: a, b = m.span(key) self.tag_add(key, head + "+%dc" % a, head + "+%dc" % b) if value in ("def", "class"): m1 = self.idprog.match(chars, b) if m1: a, b = m1.span(1) self.tag_add("DEFINITION", head + "+%dc" % a, head + "+%dc" % b) elif value == "import": # color all the "as" words on same line, except # if in a comment; cheap approximation to the # truth if '#' in chars: endpos = chars.index('#') else: endpos = len(chars) while True: m1 = self.asprog.match(chars, b, endpos) if not m1: break a, b = m1.span(1) self.tag_add("KEYWORD", head + "+%dc" % a, head + "+%dc" % b) m = self.prog.search(chars, m.end()) if "SYNC" in self.tag_names(next + "-1c"): head = next chars = "" else: ok = False if not ok: # We're in an inconsistent state, and the call to # update may tell us to stop. It may also change # the correct value for "next" (since this is a # line.col string, not a true mark). So leave a # crumb telling the next invocation to resume here # in case update tells us to leave. self.tag_add("TODO", next) self.update() if self.stop_colorizing: if DEBUG: print("colorizing stopped") return def removecolors(self): for tag in self.tagdefs: self.tag_remove(tag, "1.0", "end") def main(): from idlelib.Percolator import Percolator root = Tk() root.wm_protocol("WM_DELETE_WINDOW", root.quit) text = Text(background="white") text.pack(expand=1, fill="both") text.focus_set() p = Percolator(text) d = ColorDelegator() p.insertfilter(d) root.mainloop() if __name__ == "__main__": main()
SILENT KILLER Tool