mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Issue #27891: Consistently group and sort imports within idlelib modules.
This commit is contained in:
parent
89b1162511
commit
bfbaa6b206
47 changed files with 200 additions and 125 deletions
|
@ -228,4 +228,23 @@ Help
|
||||||
|
|
||||||
<No menu>
|
<No menu>
|
||||||
Center Insert # eEW.center_insert_event
|
Center Insert # eEW.center_insert_event
|
||||||
|
|
||||||
|
|
||||||
|
CODE STYLE -- Generally PEP 8.
|
||||||
|
|
||||||
|
import
|
||||||
|
------
|
||||||
|
Put import at the top, unless there is a good reason otherwise.
|
||||||
|
PEP 8 says to group stdlib, 3rd-party dependencies, and package imports.
|
||||||
|
For idlelib, the groups are general stdlib, tkinter, and idlelib.
|
||||||
|
Sort modules within each group, except that tkinter.ttk follows tkinter.
|
||||||
|
Sort 'from idlelib import mod1' and 'from idlelib.mod2 import object'
|
||||||
|
together by module, ignoring within module objects.
|
||||||
|
Put 'import __main__' after other idlelib imports.
|
||||||
|
|
||||||
|
Imports only needed for testing are not at the top but are put in the
|
||||||
|
htest function def or the "if __name__ == '__main__'" clause.
|
||||||
|
|
||||||
|
Within module imports like "from idlelib.mod import class" may cause
|
||||||
|
circular imports to deadlock. Even without this, circular imports may
|
||||||
|
require at least one of the imports to be delayed until a function call.
|
||||||
|
|
|
@ -4,26 +4,27 @@ This extension can complete either attribute names or file names. It can pop
|
||||||
a window with all available names, for the user to select from.
|
a window with all available names, for the user to select from.
|
||||||
"""
|
"""
|
||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
import string
|
import string
|
||||||
|
import sys
|
||||||
|
|
||||||
from idlelib.config import idleConf
|
# These constants represent the two different types of completions.
|
||||||
|
# They must be defined here so autocomple_w can import them.
|
||||||
# This string includes all chars that may be in an identifier
|
|
||||||
ID_CHARS = string.ascii_letters + string.digits + "_"
|
|
||||||
|
|
||||||
# These constants represent the two different types of completions
|
|
||||||
COMPLETE_ATTRIBUTES, COMPLETE_FILES = range(1, 2+1)
|
COMPLETE_ATTRIBUTES, COMPLETE_FILES = range(1, 2+1)
|
||||||
|
|
||||||
from idlelib import autocomplete_w
|
from idlelib import autocomplete_w
|
||||||
|
from idlelib.config import idleConf
|
||||||
from idlelib.hyperparser import HyperParser
|
from idlelib.hyperparser import HyperParser
|
||||||
|
|
||||||
import __main__
|
import __main__
|
||||||
|
|
||||||
|
# This string includes all chars that may be in an identifier.
|
||||||
|
# TODO Update this here and elsewhere.
|
||||||
|
ID_CHARS = string.ascii_letters + string.digits + "_"
|
||||||
|
|
||||||
SEPS = os.sep
|
SEPS = os.sep
|
||||||
if os.altsep: # e.g. '/' on Windows...
|
if os.altsep: # e.g. '/' on Windows...
|
||||||
SEPS += os.altsep
|
SEPS += os.altsep
|
||||||
|
|
||||||
|
|
||||||
class AutoComplete:
|
class AutoComplete:
|
||||||
|
|
||||||
menudefs = [
|
menudefs = [
|
||||||
|
|
|
@ -3,8 +3,9 @@ An auto-completion window for IDLE, used by the autocomplete extension
|
||||||
"""
|
"""
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
from tkinter.ttk import Scrollbar
|
from tkinter.ttk import Scrollbar
|
||||||
from idlelib.multicall import MC_SHIFT
|
|
||||||
from idlelib.autocomplete import COMPLETE_FILES, COMPLETE_ATTRIBUTES
|
from idlelib.autocomplete import COMPLETE_FILES, COMPLETE_ATTRIBUTES
|
||||||
|
from idlelib.multicall import MC_SHIFT
|
||||||
|
|
||||||
HIDE_VIRTUAL_EVENT_NAME = "<<autocompletewindow-hide>>"
|
HIDE_VIRTUAL_EVENT_NAME = "<<autocompletewindow-hide>>"
|
||||||
HIDE_SEQUENCES = ("<FocusOut>", "<ButtonPress>")
|
HIDE_SEQUENCES = ("<FocusOut>", "<ButtonPress>")
|
||||||
|
|
|
@ -12,8 +12,8 @@ its state.
|
||||||
|
|
||||||
This is an extension file and there is only one instance of AutoExpand.
|
This is an extension file and there is only one instance of AutoExpand.
|
||||||
'''
|
'''
|
||||||
import string
|
|
||||||
import re
|
import re
|
||||||
|
import string
|
||||||
|
|
||||||
###$ event <<expand-word>>
|
###$ event <<expand-word>>
|
||||||
###$ win <Alt-slash>
|
###$ win <Alt-slash>
|
||||||
|
@ -100,7 +100,6 @@ class AutoExpand:
|
||||||
i = i-1
|
i = i-1
|
||||||
return line[i:]
|
return line[i:]
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
import unittest
|
import unittest
|
||||||
unittest.main('idlelib.idle_test.test_autoexpand', verbosity=2)
|
unittest.main('idlelib.idle_test.test_autoexpand', verbosity=2)
|
||||||
|
|
|
@ -11,13 +11,13 @@ XXX TO DO:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
import pyclbr
|
import pyclbr
|
||||||
|
import sys
|
||||||
|
|
||||||
from idlelib import pyshell
|
|
||||||
from idlelib.windows import ListedToplevel
|
|
||||||
from idlelib.tree import TreeNode, TreeItem, ScrolledCanvas
|
|
||||||
from idlelib.config import idleConf
|
from idlelib.config import idleConf
|
||||||
|
from idlelib import pyshell
|
||||||
|
from idlelib.tree import TreeNode, TreeItem, ScrolledCanvas
|
||||||
|
from idlelib.windows import ListedToplevel
|
||||||
|
|
||||||
file_open = None # Method...Item and Class...Item use this.
|
file_open = None # Method...Item and Class...Item use this.
|
||||||
# Normally pyshell.flist.open, but there is no pyshell.flist for htest.
|
# Normally pyshell.flist.open, but there is no pyshell.flist for htest.
|
||||||
|
|
|
@ -5,7 +5,6 @@ parameter and docstring information when you type an opening parenthesis, and
|
||||||
which disappear when you type a closing parenthesis.
|
which disappear when you type a closing parenthesis.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
import __main__
|
|
||||||
import inspect
|
import inspect
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
@ -14,6 +13,7 @@ import types
|
||||||
|
|
||||||
from idlelib import calltip_w
|
from idlelib import calltip_w
|
||||||
from idlelib.hyperparser import HyperParser
|
from idlelib.hyperparser import HyperParser
|
||||||
|
import __main__
|
||||||
|
|
||||||
class CallTips:
|
class CallTips:
|
||||||
|
|
||||||
|
|
|
@ -9,10 +9,12 @@ variable in the codecontext section of config-extensions.def. Lines which do
|
||||||
not open blocks are not shown in the context hints pane.
|
not open blocks are not shown in the context hints pane.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
import tkinter
|
|
||||||
from tkinter.constants import TOP, LEFT, X, W, SUNKEN
|
|
||||||
import re
|
import re
|
||||||
from sys import maxsize as INFINITY
|
from sys import maxsize as INFINITY
|
||||||
|
|
||||||
|
import tkinter
|
||||||
|
from tkinter.constants import TOP, LEFT, X, W, SUNKEN
|
||||||
|
|
||||||
from idlelib.config import idleConf
|
from idlelib.config import idleConf
|
||||||
|
|
||||||
BLOCKOPENERS = {"class", "def", "elif", "else", "except", "finally", "for",
|
BLOCKOPENERS = {"class", "def", "elif", "else", "except", "finally", "for",
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
import time
|
|
||||||
import re
|
|
||||||
import keyword
|
|
||||||
import builtins
|
import builtins
|
||||||
from idlelib.delegator import Delegator
|
import keyword
|
||||||
|
import re
|
||||||
|
import time
|
||||||
|
|
||||||
from idlelib.config import idleConf
|
from idlelib.config import idleConf
|
||||||
|
from idlelib.delegator import Delegator
|
||||||
|
|
||||||
DEBUG = False
|
DEBUG = False
|
||||||
|
|
||||||
|
|
|
@ -18,10 +18,10 @@ configuration problem notification and resolution.
|
||||||
"""
|
"""
|
||||||
# TODOs added Oct 2014, tjr
|
# TODOs added Oct 2014, tjr
|
||||||
|
|
||||||
|
from configparser import ConfigParser
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from configparser import ConfigParser
|
|
||||||
from tkinter.font import Font, nametofont
|
from tkinter.font import Font, nametofont
|
||||||
|
|
||||||
class InvalidConfigType(Exception): pass
|
class InvalidConfigType(Exception): pass
|
||||||
|
|
|
@ -11,17 +11,17 @@ Refer to comments in EditorWindow autoindent code for details.
|
||||||
"""
|
"""
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
from tkinter.ttk import Scrollbar
|
from tkinter.ttk import Scrollbar
|
||||||
import tkinter.messagebox as tkMessageBox
|
|
||||||
import tkinter.colorchooser as tkColorChooser
|
import tkinter.colorchooser as tkColorChooser
|
||||||
import tkinter.font as tkFont
|
import tkinter.font as tkFont
|
||||||
|
import tkinter.messagebox as tkMessageBox
|
||||||
|
|
||||||
from idlelib.config import idleConf
|
from idlelib.config import idleConf
|
||||||
from idlelib.dynoption import DynOptionMenu
|
|
||||||
from idlelib.config_key import GetKeysDialog
|
from idlelib.config_key import GetKeysDialog
|
||||||
|
from idlelib.dynoption import DynOptionMenu
|
||||||
|
from idlelib import macosx
|
||||||
from idlelib.query import SectionName, HelpSource
|
from idlelib.query import SectionName, HelpSource
|
||||||
from idlelib.tabbedpages import TabbedPageSet
|
from idlelib.tabbedpages import TabbedPageSet
|
||||||
from idlelib.textview import view_text
|
from idlelib.textview import view_text
|
||||||
from idlelib import macosx
|
|
||||||
|
|
||||||
class ConfigDialog(Toplevel):
|
class ConfigDialog(Toplevel):
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
import os
|
|
||||||
import bdb
|
import bdb
|
||||||
|
import os
|
||||||
|
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
from tkinter.ttk import Scrollbar
|
from tkinter.ttk import Scrollbar
|
||||||
from idlelib.windows import ListedToplevel
|
|
||||||
from idlelib.scrolledlist import ScrolledList
|
|
||||||
from idlelib import macosx
|
from idlelib import macosx
|
||||||
|
from idlelib.scrolledlist import ScrolledList
|
||||||
|
from idlelib.windows import ListedToplevel
|
||||||
|
|
||||||
|
|
||||||
class Idb(bdb.Bdb):
|
class Idb(bdb.Bdb):
|
||||||
|
|
|
@ -8,11 +8,10 @@
|
||||||
|
|
||||||
# XXX TO DO:
|
# XXX TO DO:
|
||||||
# - for classes/modules, add "open source" to object browser
|
# - for classes/modules, add "open source" to object browser
|
||||||
|
from reprlib import Repr
|
||||||
|
|
||||||
from idlelib.tree import TreeItem, TreeNode, ScrolledCanvas
|
from idlelib.tree import TreeItem, TreeNode, ScrolledCanvas
|
||||||
|
|
||||||
from reprlib import Repr
|
|
||||||
|
|
||||||
myrepr = Repr()
|
myrepr = Repr()
|
||||||
myrepr.maxstring = 100
|
myrepr.maxstring = 100
|
||||||
myrepr.maxother = 100
|
myrepr.maxother = 100
|
||||||
|
|
|
@ -3,6 +3,7 @@ OptionMenu widget modified to allow dynamic menu reconfiguration
|
||||||
and setting of highlightthickness
|
and setting of highlightthickness
|
||||||
"""
|
"""
|
||||||
import copy
|
import copy
|
||||||
|
|
||||||
from tkinter import OptionMenu, _setit, StringVar, Button
|
from tkinter import OptionMenu, _setit, StringVar, Button
|
||||||
|
|
||||||
class DynOptionMenu(OptionMenu):
|
class DynOptionMenu(OptionMenu):
|
||||||
|
|
|
@ -6,24 +6,28 @@ import platform
|
||||||
import re
|
import re
|
||||||
import string
|
import string
|
||||||
import sys
|
import sys
|
||||||
|
import tokenize
|
||||||
|
import traceback
|
||||||
|
import webbrowser
|
||||||
|
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
from tkinter.ttk import Scrollbar
|
from tkinter.ttk import Scrollbar
|
||||||
import tkinter.simpledialog as tkSimpleDialog
|
import tkinter.simpledialog as tkSimpleDialog
|
||||||
import tkinter.messagebox as tkMessageBox
|
import tkinter.messagebox as tkMessageBox
|
||||||
import traceback
|
|
||||||
import webbrowser
|
|
||||||
|
|
||||||
from idlelib.multicall import MultiCallCreator
|
|
||||||
from idlelib import query
|
|
||||||
from idlelib import windows
|
|
||||||
from idlelib import search
|
|
||||||
from idlelib import grep
|
|
||||||
from idlelib import replace
|
|
||||||
from idlelib import pyparse
|
|
||||||
from idlelib.config import idleConf
|
from idlelib.config import idleConf
|
||||||
from idlelib import help_about, textview, configdialog
|
from idlelib import configdialog
|
||||||
from idlelib import macosx
|
from idlelib import grep
|
||||||
from idlelib import help
|
from idlelib import help
|
||||||
|
from idlelib import help_about
|
||||||
|
from idlelib import macosx
|
||||||
|
from idlelib.multicall import MultiCallCreator
|
||||||
|
from idlelib import pyparse
|
||||||
|
from idlelib import query
|
||||||
|
from idlelib import replace
|
||||||
|
from idlelib import search
|
||||||
|
from idlelib import textview
|
||||||
|
from idlelib import windows
|
||||||
|
|
||||||
# The default tab setting for a Text widget, in average-width characters.
|
# The default tab setting for a Text widget, in average-width characters.
|
||||||
TK_TABWIDTH_DEFAULT = 8
|
TK_TABWIDTH_DEFAULT = 8
|
||||||
|
@ -1515,9 +1519,6 @@ def classifyws(s, tabwidth):
|
||||||
break
|
break
|
||||||
return raw, effective
|
return raw, effective
|
||||||
|
|
||||||
import tokenize
|
|
||||||
_tokenize = tokenize
|
|
||||||
del tokenize
|
|
||||||
|
|
||||||
class IndentSearcher(object):
|
class IndentSearcher(object):
|
||||||
|
|
||||||
|
@ -1542,8 +1543,8 @@ class IndentSearcher(object):
|
||||||
return self.text.get(mark, mark + " lineend+1c")
|
return self.text.get(mark, mark + " lineend+1c")
|
||||||
|
|
||||||
def tokeneater(self, type, token, start, end, line,
|
def tokeneater(self, type, token, start, end, line,
|
||||||
INDENT=_tokenize.INDENT,
|
INDENT=tokenize.INDENT,
|
||||||
NAME=_tokenize.NAME,
|
NAME=tokenize.NAME,
|
||||||
OPENERS=('class', 'def', 'for', 'if', 'try', 'while')):
|
OPENERS=('class', 'def', 'for', 'if', 'try', 'while')):
|
||||||
if self.finished:
|
if self.finished:
|
||||||
pass
|
pass
|
||||||
|
@ -1554,19 +1555,19 @@ class IndentSearcher(object):
|
||||||
self.finished = 1
|
self.finished = 1
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
save_tabsize = _tokenize.tabsize
|
save_tabsize = tokenize.tabsize
|
||||||
_tokenize.tabsize = self.tabwidth
|
tokenize.tabsize = self.tabwidth
|
||||||
try:
|
try:
|
||||||
try:
|
try:
|
||||||
tokens = _tokenize.generate_tokens(self.readline)
|
tokens = tokenize.generate_tokens(self.readline)
|
||||||
for token in tokens:
|
for token in tokens:
|
||||||
self.tokeneater(*token)
|
self.tokeneater(*token)
|
||||||
except (_tokenize.TokenError, SyntaxError):
|
except (tokenize.TokenError, SyntaxError):
|
||||||
# since we cut off the tokenizer early, we can trigger
|
# since we cut off the tokenizer early, we can trigger
|
||||||
# spurious errors
|
# spurious errors
|
||||||
pass
|
pass
|
||||||
finally:
|
finally:
|
||||||
_tokenize.tabsize = save_tabsize
|
tokenize.tabsize = save_tabsize
|
||||||
return self.blkopenline, self.indentedline
|
return self.blkopenline, self.indentedline
|
||||||
|
|
||||||
### end autoindent code ###
|
### end autoindent code ###
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
import tkinter.messagebox as tkMessageBox
|
import tkinter.messagebox as tkMessageBox
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
import os
|
|
||||||
import fnmatch
|
import fnmatch
|
||||||
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from tkinter import StringVar, BooleanVar
|
from tkinter import StringVar, BooleanVar
|
||||||
from tkinter.ttk import Checkbutton
|
from tkinter.ttk import Checkbutton
|
||||||
from idlelib import searchengine
|
|
||||||
from idlelib.searchbase import SearchDialogBase
|
from idlelib.searchbase import SearchDialogBase
|
||||||
# Importing OutputWindow fails due to import loop
|
from idlelib import searchengine
|
||||||
|
|
||||||
|
# Importing OutputWindow here fails due to import loop
|
||||||
# EditorWindow -> GrepDialop -> OutputWindow -> EditorWindow
|
# EditorWindow -> GrepDialop -> OutputWindow -> EditorWindow
|
||||||
|
|
||||||
def grep(text, io=None, flist=None):
|
def grep(text, io=None, flist=None):
|
||||||
|
@ -127,9 +130,9 @@ class GrepDialog(SearchDialogBase):
|
||||||
|
|
||||||
|
|
||||||
def _grep_dialog(parent): # htest #
|
def _grep_dialog(parent): # htest #
|
||||||
from idlelib.pyshell import PyShellFileList
|
|
||||||
from tkinter import Toplevel, Text, SEL, END
|
from tkinter import Toplevel, Text, SEL, END
|
||||||
from tkinter.ttk import Button
|
from tkinter.ttk import Button
|
||||||
|
from idlelib.pyshell import PyShellFileList
|
||||||
top = Toplevel(parent)
|
top = Toplevel(parent)
|
||||||
top.title("Test GrepDialog")
|
top.title("Test GrepDialog")
|
||||||
x, y = map(int, parent.geometry().split('+')[1:])
|
x, y = map(int, parent.geometry().split('+')[1:])
|
||||||
|
|
|
@ -27,9 +27,11 @@ show_idlehelp - Create HelpWindow. Called in EditorWindow.help_dialog.
|
||||||
from html.parser import HTMLParser
|
from html.parser import HTMLParser
|
||||||
from os.path import abspath, dirname, isfile, join
|
from os.path import abspath, dirname, isfile, join
|
||||||
from platform import python_version
|
from platform import python_version
|
||||||
|
|
||||||
from tkinter import Toplevel, Frame, Text, Menu
|
from tkinter import Toplevel, Frame, Text, Menu
|
||||||
from tkinter.ttk import Menubutton, Scrollbar
|
from tkinter.ttk import Menubutton, Scrollbar
|
||||||
from tkinter import font as tkfont
|
from tkinter import font as tkfont
|
||||||
|
|
||||||
from idlelib.config import idleConf
|
from idlelib.config import idleConf
|
||||||
|
|
||||||
## About IDLE ##
|
## About IDLE ##
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
"""About Dialog for IDLE
|
"""About Dialog for IDLE
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from sys import version
|
from sys import version
|
||||||
|
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
|
|
||||||
from idlelib import textview
|
from idlelib import textview
|
||||||
|
|
||||||
|
|
||||||
class AboutDialog(Toplevel):
|
class AboutDialog(Toplevel):
|
||||||
"""Modal about dialog for idle
|
"""Modal about dialog for idle
|
||||||
|
|
||||||
|
@ -144,6 +146,7 @@ class AboutDialog(Toplevel):
|
||||||
def Ok(self, event=None):
|
def Ok(self, event=None):
|
||||||
self.destroy()
|
self.destroy()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
import unittest
|
import unittest
|
||||||
unittest.main('idlelib.idle_test.test_help_about', verbosity=2, exit=False)
|
unittest.main('idlelib.idle_test.test_help_about', verbosity=2, exit=False)
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
from idlelib.config import idleConf
|
from idlelib.config import idleConf
|
||||||
|
|
||||||
|
|
||||||
class History:
|
class History:
|
||||||
''' Implement Idle Shell history mechanism.
|
''' Implement Idle Shell history mechanism.
|
||||||
|
|
||||||
|
@ -99,6 +100,7 @@ class History:
|
||||||
self.pointer = None
|
self.pointer = None
|
||||||
self.prefix = None
|
self.prefix = None
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
from unittest import main
|
from unittest import main
|
||||||
main('idlelib.idle_test.test_idlehistory', verbosity=2, exit=False)
|
main('idlelib.idle_test.test_history', verbosity=2, exit=False)
|
||||||
|
|
|
@ -4,11 +4,10 @@ HyperParser uses PyParser. PyParser mostly gives information on the
|
||||||
proper indentation of code. HyperParser gives additional information on
|
proper indentation of code. HyperParser gives additional information on
|
||||||
the structure of code.
|
the structure of code.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import string
|
|
||||||
from keyword import iskeyword
|
from keyword import iskeyword
|
||||||
from idlelib import pyparse
|
import string
|
||||||
|
|
||||||
|
from idlelib import pyparse
|
||||||
|
|
||||||
# all ASCII chars that may be in an identifier
|
# all ASCII chars that may be in an identifier
|
||||||
_ASCII_ID_CHARS = frozenset(string.ascii_letters + string.digits + "_")
|
_ASCII_ID_CHARS = frozenset(string.ascii_letters + string.digits + "_")
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import unittest
|
import unittest
|
||||||
import io
|
import io
|
||||||
from idlelib.pyshell import PseudoInputFile, PseudoOutputFile
|
|
||||||
|
from idlelib.run import PseudoInputFile, PseudoOutputFile
|
||||||
|
|
||||||
|
|
||||||
class S(str):
|
class S(str):
|
||||||
|
@ -230,4 +231,4 @@ class PseudeInputFilesTest(unittest.TestCase):
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main(verbosity=2)
|
||||||
|
|
|
@ -2,9 +2,10 @@
|
||||||
A number of functions that enhance IDLE on Mac OSX.
|
A number of functions that enhance IDLE on Mac OSX.
|
||||||
"""
|
"""
|
||||||
from sys import platform # Used in _init_tk_type, changed by test.
|
from sys import platform # Used in _init_tk_type, changed by test.
|
||||||
import tkinter
|
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
|
import tkinter
|
||||||
|
|
||||||
|
|
||||||
## Define functions that query the Mac graphics type.
|
## Define functions that query the Mac graphics type.
|
||||||
## _tk_type and its initializer are private to this section.
|
## _tk_type and its initializer are private to this section.
|
||||||
|
|
|
@ -28,9 +28,9 @@ The order by which events are called is defined by these rules:
|
||||||
unless this conflicts with the first rule.
|
unless this conflicts with the first rule.
|
||||||
Each function will be called at most once for each event.
|
Each function will be called at most once for each event.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sys
|
|
||||||
import re
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
import tkinter
|
import tkinter
|
||||||
|
|
||||||
# the event type constants, which define the meaning of mc_type
|
# the event type constants, which define the meaning of mc_type
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
from tkinter import *
|
|
||||||
from idlelib.editor import EditorWindow
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
from tkinter import *
|
||||||
import tkinter.messagebox as tkMessageBox
|
import tkinter.messagebox as tkMessageBox
|
||||||
|
|
||||||
|
from idlelib.editor import EditorWindow
|
||||||
from idlelib import iomenu
|
from idlelib import iomenu
|
||||||
|
|
||||||
|
|
||||||
class OutputWindow(EditorWindow):
|
class OutputWindow(EditorWindow):
|
||||||
|
|
||||||
"""An editor window that can serve as an output file.
|
"""An editor window that can serve as an output file.
|
||||||
|
|
|
@ -14,10 +14,11 @@ Known problems with comment reformatting:
|
||||||
spaces, they will not be considered part of the same block.
|
spaces, they will not be considered part of the same block.
|
||||||
* Fancy comments, like this bulleted list, aren't handled :-)
|
* Fancy comments, like this bulleted list, aren't handled :-)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from idlelib.config import idleConf
|
from idlelib.config import idleConf
|
||||||
|
|
||||||
|
|
||||||
class FormatParagraph:
|
class FormatParagraph:
|
||||||
|
|
||||||
menudefs = [
|
menudefs = [
|
||||||
|
@ -189,6 +190,7 @@ def get_comment_header(line):
|
||||||
if m is None: return ""
|
if m is None: return ""
|
||||||
return m.group(1)
|
return m.group(1)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import unittest
|
import unittest
|
||||||
unittest.main('idlelib.idle_test.test_paragraph',
|
unittest.main('idlelib.idle_test.test_paragraph',
|
||||||
|
|
|
@ -4,7 +4,6 @@ When you hit a right paren, the cursor should move briefly to the left
|
||||||
paren. Paren here is used generically; the matching applies to
|
paren. Paren here is used generically; the matching applies to
|
||||||
parentheses, square brackets, and curly braces.
|
parentheses, square brackets, and curly braces.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from idlelib.hyperparser import HyperParser
|
from idlelib.hyperparser import HyperParser
|
||||||
from idlelib.config import idleConf
|
from idlelib.config import idleConf
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
|
import importlib.machinery
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import importlib.machinery
|
|
||||||
|
|
||||||
from idlelib.tree import TreeItem
|
|
||||||
from idlelib.browser import ClassBrowser, ModuleBrowserTreeItem
|
from idlelib.browser import ClassBrowser, ModuleBrowserTreeItem
|
||||||
from idlelib.pyshell import PyShellFileList
|
from idlelib.pyshell import PyShellFileList
|
||||||
|
from idlelib.tree import TreeItem
|
||||||
|
|
||||||
|
|
||||||
class PathBrowser(ClassBrowser):
|
class PathBrowser(ClassBrowser):
|
||||||
|
@ -24,6 +24,7 @@ class PathBrowser(ClassBrowser):
|
||||||
def rootnode(self):
|
def rootnode(self):
|
||||||
return PathBrowserTreeItem()
|
return PathBrowserTreeItem()
|
||||||
|
|
||||||
|
|
||||||
class PathBrowserTreeItem(TreeItem):
|
class PathBrowserTreeItem(TreeItem):
|
||||||
|
|
||||||
def GetText(self):
|
def GetText(self):
|
||||||
|
@ -36,6 +37,7 @@ class PathBrowserTreeItem(TreeItem):
|
||||||
sublist.append(item)
|
sublist.append(item)
|
||||||
return sublist
|
return sublist
|
||||||
|
|
||||||
|
|
||||||
class DirBrowserTreeItem(TreeItem):
|
class DirBrowserTreeItem(TreeItem):
|
||||||
|
|
||||||
def __init__(self, dir, packages=[]):
|
def __init__(self, dir, packages=[]):
|
||||||
|
@ -95,6 +97,7 @@ class DirBrowserTreeItem(TreeItem):
|
||||||
sorted.sort()
|
sorted.sort()
|
||||||
return sorted
|
return sorted
|
||||||
|
|
||||||
|
|
||||||
def _path_browser(parent): # htest #
|
def _path_browser(parent): # htest #
|
||||||
flist = PyShellFileList(parent)
|
flist = PyShellFileList(parent)
|
||||||
PathBrowser(flist, _htest=True)
|
PathBrowser(flist, _htest=True)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from idlelib.redirector import WidgetRedirector
|
|
||||||
from idlelib.delegator import Delegator
|
from idlelib.delegator import Delegator
|
||||||
|
from idlelib.redirector import WidgetRedirector
|
||||||
|
|
||||||
|
|
||||||
class Percolator:
|
class Percolator:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
from collections import Mapping
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from collections import Mapping
|
|
||||||
|
|
||||||
# Reason last stmt is continued (or C_NONE if it's not).
|
# Reason last stmt is continued (or C_NONE if it's not).
|
||||||
(C_NONE, C_BACKSLASH, C_STRING_FIRST_LINE,
|
(C_NONE, C_BACKSLASH, C_STRING_FIRST_LINE,
|
||||||
|
|
|
@ -15,9 +15,13 @@ if TkVersion < 8.5:
|
||||||
parent=root)
|
parent=root)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
from code import InteractiveInterpreter
|
||||||
import getopt
|
import getopt
|
||||||
|
import io
|
||||||
|
import linecache
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
|
from platform import python_version, system
|
||||||
import re
|
import re
|
||||||
import socket
|
import socket
|
||||||
import subprocess
|
import subprocess
|
||||||
|
@ -25,23 +29,20 @@ import sys
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
import tokenize
|
import tokenize
|
||||||
|
import warnings
|
||||||
|
|
||||||
import linecache
|
from idlelib import testing # bool value
|
||||||
from code import InteractiveInterpreter
|
|
||||||
from platform import python_version, system
|
|
||||||
|
|
||||||
from idlelib import testing
|
|
||||||
from idlelib.editor import EditorWindow, fixwordbreaks
|
|
||||||
from idlelib.filelist import FileList
|
|
||||||
from idlelib.colorizer import ColorDelegator
|
from idlelib.colorizer import ColorDelegator
|
||||||
from idlelib.undo import UndoDelegator
|
|
||||||
from idlelib.outwin import OutputWindow
|
|
||||||
from idlelib.config import idleConf
|
from idlelib.config import idleConf
|
||||||
from idlelib.run import idle_formatwarning, PseudoInputFile, PseudoOutputFile
|
|
||||||
from idlelib import rpc
|
|
||||||
from idlelib import debugger
|
from idlelib import debugger
|
||||||
from idlelib import debugger_r
|
from idlelib import debugger_r
|
||||||
|
from idlelib.editor import EditorWindow, fixwordbreaks
|
||||||
|
from idlelib.filelist import FileList
|
||||||
from idlelib import macosx
|
from idlelib import macosx
|
||||||
|
from idlelib.outwin import OutputWindow
|
||||||
|
from idlelib import rpc
|
||||||
|
from idlelib.run import idle_formatwarning, PseudoInputFile, PseudoOutputFile
|
||||||
|
from idlelib.undo import UndoDelegator
|
||||||
|
|
||||||
HOST = '127.0.0.1' # python execution server on localhost loopback
|
HOST = '127.0.0.1' # python execution server on localhost loopback
|
||||||
PORT = 0 # someday pass in host, port for remote debug capability
|
PORT = 0 # someday pass in host, port for remote debug capability
|
||||||
|
@ -51,7 +52,6 @@ PORT = 0 # someday pass in host, port for remote debug capability
|
||||||
# temporarily redirect the stream to the shell window to display warnings when
|
# temporarily redirect the stream to the shell window to display warnings when
|
||||||
# checking user's code.
|
# checking user's code.
|
||||||
warning_stream = sys.__stderr__ # None, at least on Windows, if no console.
|
warning_stream = sys.__stderr__ # None, at least on Windows, if no console.
|
||||||
import warnings
|
|
||||||
|
|
||||||
def idle_showwarning(
|
def idle_showwarning(
|
||||||
message, category, filename, lineno, file=None, line=None):
|
message, category, filename, lineno, file=None, line=None):
|
||||||
|
|
|
@ -23,9 +23,10 @@ Subclass HelpSource gets menu item and path for additions to Help menu.
|
||||||
import importlib
|
import importlib
|
||||||
import os
|
import os
|
||||||
from sys import executable, platform # Platform is set for one test.
|
from sys import executable, platform # Platform is set for one test.
|
||||||
|
|
||||||
from tkinter import Toplevel, StringVar, W, E, N, S
|
from tkinter import Toplevel, StringVar, W, E, N, S
|
||||||
from tkinter import filedialog
|
|
||||||
from tkinter.ttk import Frame, Button, Entry, Label
|
from tkinter.ttk import Frame, Button, Entry, Label
|
||||||
|
from tkinter import filedialog
|
||||||
from tkinter.font import Font
|
from tkinter.font import Font
|
||||||
|
|
||||||
class Query(Toplevel):
|
class Query(Toplevel):
|
||||||
|
|
|
@ -3,12 +3,12 @@ Uses idlelib.SearchEngine for search capability.
|
||||||
Defines various replace related functions like replace, replace all,
|
Defines various replace related functions like replace, replace all,
|
||||||
replace+find.
|
replace+find.
|
||||||
"""
|
"""
|
||||||
from tkinter import StringVar, TclError
|
|
||||||
|
|
||||||
from idlelib import searchengine
|
|
||||||
from idlelib.searchbase import SearchDialogBase
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
from tkinter import StringVar, TclError
|
||||||
|
|
||||||
|
from idlelib.searchbase import SearchDialogBase
|
||||||
|
from idlelib import searchengine
|
||||||
|
|
||||||
def replace(text):
|
def replace(text):
|
||||||
"""Returns a singleton ReplaceDialog instance.The single dialog
|
"""Returns a singleton ReplaceDialog instance.The single dialog
|
||||||
|
|
|
@ -26,23 +26,21 @@ See the Idle run.main() docstring for further information on how this was
|
||||||
accomplished in Idle.
|
accomplished in Idle.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
import builtins
|
||||||
import sys
|
import copyreg
|
||||||
import os
|
|
||||||
import io
|
import io
|
||||||
import socket
|
import marshal
|
||||||
|
import os
|
||||||
|
import pickle
|
||||||
|
import queue
|
||||||
import select
|
import select
|
||||||
|
import socket
|
||||||
import socketserver
|
import socketserver
|
||||||
import struct
|
import struct
|
||||||
import pickle
|
import sys
|
||||||
import threading
|
import threading
|
||||||
import queue
|
|
||||||
import traceback
|
import traceback
|
||||||
import copyreg
|
|
||||||
import types
|
import types
|
||||||
import marshal
|
|
||||||
import builtins
|
|
||||||
|
|
||||||
|
|
||||||
def unpickle_code(ms):
|
def unpickle_code(ms):
|
||||||
co = marshal.loads(ms)
|
co = marshal.loads(ms)
|
||||||
|
@ -60,10 +58,12 @@ def dumps(obj, protocol=None):
|
||||||
p.dump(obj)
|
p.dump(obj)
|
||||||
return f.getvalue()
|
return f.getvalue()
|
||||||
|
|
||||||
|
|
||||||
class CodePickler(pickle.Pickler):
|
class CodePickler(pickle.Pickler):
|
||||||
dispatch_table = {types.CodeType: pickle_code}
|
dispatch_table = {types.CodeType: pickle_code}
|
||||||
dispatch_table.update(copyreg.dispatch_table)
|
dispatch_table.update(copyreg.dispatch_table)
|
||||||
|
|
||||||
|
|
||||||
BUFSIZE = 8*1024
|
BUFSIZE = 8*1024
|
||||||
LOCALHOST = '127.0.0.1'
|
LOCALHOST = '127.0.0.1'
|
||||||
|
|
||||||
|
@ -487,16 +487,19 @@ class RemoteObject(object):
|
||||||
# Token mix-in class
|
# Token mix-in class
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def remoteref(obj):
|
def remoteref(obj):
|
||||||
oid = id(obj)
|
oid = id(obj)
|
||||||
objecttable[oid] = obj
|
objecttable[oid] = obj
|
||||||
return RemoteProxy(oid)
|
return RemoteProxy(oid)
|
||||||
|
|
||||||
|
|
||||||
class RemoteProxy(object):
|
class RemoteProxy(object):
|
||||||
|
|
||||||
def __init__(self, oid):
|
def __init__(self, oid):
|
||||||
self.oid = oid
|
self.oid = oid
|
||||||
|
|
||||||
|
|
||||||
class RPCHandler(socketserver.BaseRequestHandler, SocketIO):
|
class RPCHandler(socketserver.BaseRequestHandler, SocketIO):
|
||||||
|
|
||||||
debugging = False
|
debugging = False
|
||||||
|
@ -514,6 +517,7 @@ class RPCHandler(socketserver.BaseRequestHandler, SocketIO):
|
||||||
def get_remote_proxy(self, oid):
|
def get_remote_proxy(self, oid):
|
||||||
return RPCProxy(self, oid)
|
return RPCProxy(self, oid)
|
||||||
|
|
||||||
|
|
||||||
class RPCClient(SocketIO):
|
class RPCClient(SocketIO):
|
||||||
|
|
||||||
debugging = False
|
debugging = False
|
||||||
|
@ -539,6 +543,7 @@ class RPCClient(SocketIO):
|
||||||
def get_remote_proxy(self, oid):
|
def get_remote_proxy(self, oid):
|
||||||
return RPCProxy(self, oid)
|
return RPCProxy(self, oid)
|
||||||
|
|
||||||
|
|
||||||
class RPCProxy(object):
|
class RPCProxy(object):
|
||||||
|
|
||||||
__methods = None
|
__methods = None
|
||||||
|
@ -587,6 +592,7 @@ def _getattributes(obj, attributes):
|
||||||
if not callable(attr):
|
if not callable(attr):
|
||||||
attributes[name] = 1
|
attributes[name] = 1
|
||||||
|
|
||||||
|
|
||||||
class MethodProxy(object):
|
class MethodProxy(object):
|
||||||
|
|
||||||
def __init__(self, sockio, oid, name):
|
def __init__(self, sockio, oid, name):
|
||||||
|
|
|
@ -2,21 +2,21 @@ import io
|
||||||
import linecache
|
import linecache
|
||||||
import queue
|
import queue
|
||||||
import sys
|
import sys
|
||||||
import _thread as thread
|
|
||||||
import threading
|
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
import tkinter
|
import _thread as thread
|
||||||
|
import threading
|
||||||
|
import warnings
|
||||||
|
|
||||||
from idlelib import calltips
|
import tkinter # Tcl, deletions, messagebox if startup fails
|
||||||
from idlelib import autocomplete
|
|
||||||
|
|
||||||
from idlelib import debugger_r
|
|
||||||
from idlelib import debugobj_r
|
|
||||||
from idlelib import stackviewer
|
|
||||||
from idlelib import rpc
|
|
||||||
from idlelib import iomenu
|
|
||||||
|
|
||||||
|
from idlelib import autocomplete # AutoComplete, fetch_encodings
|
||||||
|
from idlelib import calltips # CallTips
|
||||||
|
from idlelib import debugger_r # start_debugger
|
||||||
|
from idlelib import debugobj_r # remote_object_tree_item
|
||||||
|
from idlelib import iomenu # encoding
|
||||||
|
from idlelib import rpc # multiple objects
|
||||||
|
from idlelib import stackviewer # StackTreeItem
|
||||||
import __main__
|
import __main__
|
||||||
|
|
||||||
for mod in ('simpledialog', 'messagebox', 'font',
|
for mod in ('simpledialog', 'messagebox', 'font',
|
||||||
|
@ -27,7 +27,6 @@ for mod in ('simpledialog', 'messagebox', 'font',
|
||||||
|
|
||||||
LOCALHOST = '127.0.0.1'
|
LOCALHOST = '127.0.0.1'
|
||||||
|
|
||||||
import warnings
|
|
||||||
|
|
||||||
def idle_formatwarning(message, category, filename, lineno, line=None):
|
def idle_formatwarning(message, category, filename, lineno, line=None):
|
||||||
"""Format warnings the IDLE way."""
|
"""Format warnings the IDLE way."""
|
||||||
|
@ -280,6 +279,7 @@ def exit():
|
||||||
capture_warnings(False)
|
capture_warnings(False)
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
class MyRPCServer(rpc.RPCServer):
|
class MyRPCServer(rpc.RPCServer):
|
||||||
|
|
||||||
def handle_error(self, request, client_address):
|
def handle_error(self, request, client_address):
|
||||||
|
|
|
@ -20,11 +20,12 @@ XXX GvR Redesign this interface (yet again) as follows:
|
||||||
import os
|
import os
|
||||||
import tabnanny
|
import tabnanny
|
||||||
import tokenize
|
import tokenize
|
||||||
|
|
||||||
import tkinter.messagebox as tkMessageBox
|
import tkinter.messagebox as tkMessageBox
|
||||||
from idlelib import pyshell
|
|
||||||
|
|
||||||
from idlelib.config import idleConf
|
from idlelib.config import idleConf
|
||||||
from idlelib import macosx
|
from idlelib import macosx
|
||||||
|
from idlelib import pyshell
|
||||||
|
|
||||||
indent_message = """Error: Inconsistent indentation detected!
|
indent_message = """Error: Inconsistent indentation detected!
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
from idlelib import macosx
|
|
||||||
from tkinter.ttk import Scrollbar
|
from tkinter.ttk import Scrollbar
|
||||||
|
|
||||||
|
from idlelib import macosx
|
||||||
|
|
||||||
|
|
||||||
class ScrolledList:
|
class ScrolledList:
|
||||||
|
|
||||||
default = "(None)"
|
default = "(None)"
|
||||||
|
|
|
@ -24,6 +24,7 @@ def find_selection(text):
|
||||||
"Handle the editor edit menu item and corresponding event."
|
"Handle the editor edit menu item and corresponding event."
|
||||||
return _setup(text).find_selection(text)
|
return _setup(text).find_selection(text)
|
||||||
|
|
||||||
|
|
||||||
class SearchDialog(SearchDialogBase):
|
class SearchDialog(SearchDialogBase):
|
||||||
|
|
||||||
def create_widgets(self):
|
def create_widgets(self):
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
from tkinter import Toplevel, Frame
|
from tkinter import Toplevel, Frame
|
||||||
from tkinter.ttk import Entry, Label, Button, Checkbutton, Radiobutton
|
from tkinter.ttk import Entry, Label, Button, Checkbutton, Radiobutton
|
||||||
|
|
||||||
|
|
||||||
class SearchDialogBase:
|
class SearchDialogBase:
|
||||||
'''Create most of a 3 or 4 row, 3 column search dialog.
|
'''Create most of a 3 or 4 row, 3 column search dialog.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
'''Define SearchEngine for search dialogs.'''
|
'''Define SearchEngine for search dialogs.'''
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from tkinter import StringVar, BooleanVar, TclError
|
from tkinter import StringVar, BooleanVar, TclError
|
||||||
import tkinter.messagebox as tkMessageBox
|
import tkinter.messagebox as tkMessageBox
|
||||||
|
|
||||||
|
@ -14,6 +15,7 @@ def get(root):
|
||||||
# This creates a cycle that persists until root is deleted.
|
# This creates a cycle that persists until root is deleted.
|
||||||
return root._searchengine
|
return root._searchengine
|
||||||
|
|
||||||
|
|
||||||
class SearchEngine:
|
class SearchEngine:
|
||||||
"""Handles searching a text widget for Find, Replace, and Grep."""
|
"""Handles searching a text widget for Find, Replace, and Grep."""
|
||||||
|
|
||||||
|
@ -186,6 +188,7 @@ class SearchEngine:
|
||||||
col = len(chars) - 1
|
col = len(chars) - 1
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def search_reverse(prog, chars, col):
|
def search_reverse(prog, chars, col):
|
||||||
'''Search backwards and return an re match object or None.
|
'''Search backwards and return an re match object or None.
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
import linecache
|
import linecache
|
||||||
|
import os
|
||||||
import re
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
|
|
||||||
from idlelib.tree import TreeNode, TreeItem, ScrolledCanvas
|
|
||||||
from idlelib.debugobj import ObjectTreeItem, make_objecttreeitem
|
from idlelib.debugobj import ObjectTreeItem, make_objecttreeitem
|
||||||
|
from idlelib.tree import TreeNode, TreeItem, ScrolledCanvas
|
||||||
|
|
||||||
def StackBrowser(root, flist=None, tb=None, top=None):
|
def StackBrowser(root, flist=None, tb=None, top=None):
|
||||||
if top is None:
|
if top is None:
|
||||||
|
@ -16,6 +17,7 @@ def StackBrowser(root, flist=None, tb=None, top=None):
|
||||||
node = TreeNode(sc.canvas, None, item)
|
node = TreeNode(sc.canvas, None, item)
|
||||||
node.expand()
|
node.expand()
|
||||||
|
|
||||||
|
|
||||||
class StackTreeItem(TreeItem):
|
class StackTreeItem(TreeItem):
|
||||||
|
|
||||||
def __init__(self, flist=None, tb=None):
|
def __init__(self, flist=None, tb=None):
|
||||||
|
@ -54,6 +56,7 @@ class StackTreeItem(TreeItem):
|
||||||
sublist.append(item)
|
sublist.append(item)
|
||||||
return sublist
|
return sublist
|
||||||
|
|
||||||
|
|
||||||
class FrameTreeItem(TreeItem):
|
class FrameTreeItem(TreeItem):
|
||||||
|
|
||||||
def __init__(self, info, flist):
|
def __init__(self, info, flist):
|
||||||
|
@ -95,6 +98,7 @@ class FrameTreeItem(TreeItem):
|
||||||
if os.path.isfile(filename):
|
if os.path.isfile(filename):
|
||||||
self.flist.gotofileline(filename, lineno)
|
self.flist.gotofileline(filename, lineno)
|
||||||
|
|
||||||
|
|
||||||
class VariablesTreeItem(ObjectTreeItem):
|
class VariablesTreeItem(ObjectTreeItem):
|
||||||
|
|
||||||
def GetText(self):
|
def GetText(self):
|
||||||
|
@ -119,6 +123,7 @@ class VariablesTreeItem(ObjectTreeItem):
|
||||||
sublist.append(item)
|
sublist.append(item)
|
||||||
return sublist
|
return sublist
|
||||||
|
|
||||||
|
|
||||||
def _stack_viewer(parent): # htest #
|
def _stack_viewer(parent): # htest #
|
||||||
from idlelib.pyshell import PyShellFileList
|
from idlelib.pyshell import PyShellFileList
|
||||||
top = tk.Toplevel(parent)
|
top = tk.Toplevel(parent)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from tkinter import Frame, Label
|
from tkinter import Frame, Label
|
||||||
|
|
||||||
|
|
||||||
class MultiStatusBar(Frame):
|
class MultiStatusBar(Frame):
|
||||||
|
|
||||||
def __init__(self, master, **kw):
|
def __init__(self, master, **kw):
|
||||||
|
@ -17,6 +18,7 @@ class MultiStatusBar(Frame):
|
||||||
label.config(width=width)
|
label.config(width=width)
|
||||||
label.config(text=text)
|
label.config(text=text)
|
||||||
|
|
||||||
|
|
||||||
def _multistatus_bar(parent): # htest #
|
def _multistatus_bar(parent): # htest #
|
||||||
from tkinter import Toplevel, Frame, Text, Button
|
from tkinter import Toplevel, Frame, Text, Button
|
||||||
top = Toplevel(parent)
|
top = Toplevel(parent)
|
||||||
|
|
|
@ -285,6 +285,7 @@ class TabSet(Frame):
|
||||||
# placed hide it
|
# placed hide it
|
||||||
self.tab_set.lower()
|
self.tab_set.lower()
|
||||||
|
|
||||||
|
|
||||||
class TabbedPageSet(Frame):
|
class TabbedPageSet(Frame):
|
||||||
"""A Tkinter tabbed-pane widget.
|
"""A Tkinter tabbed-pane widget.
|
||||||
|
|
||||||
|
@ -302,6 +303,7 @@ class TabbedPageSet(Frame):
|
||||||
remove_page() methods.
|
remove_page() methods.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
class Page(object):
|
class Page(object):
|
||||||
"""Abstract base class for TabbedPageSet's pages.
|
"""Abstract base class for TabbedPageSet's pages.
|
||||||
|
|
||||||
|
@ -467,6 +469,7 @@ class TabbedPageSet(Frame):
|
||||||
|
|
||||||
self._tab_set.set_selected_tab(page_name)
|
self._tab_set.set_selected_tab(page_name)
|
||||||
|
|
||||||
|
|
||||||
def _tabbed_pages(parent): # htest #
|
def _tabbed_pages(parent): # htest #
|
||||||
top=Toplevel(parent)
|
top=Toplevel(parent)
|
||||||
x, y = map(int, parent.geometry().split('+')[1:])
|
x, y = map(int, parent.geometry().split('+')[1:])
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
"""Simple text browser for IDLE
|
"""Simple text browser for IDLE
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
from tkinter.ttk import Scrollbar
|
from tkinter.ttk import Scrollbar
|
||||||
from tkinter.messagebox import showerror
|
from tkinter.messagebox import showerror
|
||||||
|
|
||||||
|
|
||||||
class TextViewer(Toplevel):
|
class TextViewer(Toplevel):
|
||||||
"""A simple text viewer dialog for IDLE
|
"""A simple text viewer dialog for IDLE
|
||||||
|
|
||||||
|
|
|
@ -15,10 +15,12 @@
|
||||||
# - optimize tree redraw after expand of subnode
|
# - optimize tree redraw after expand of subnode
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
from tkinter.ttk import Scrollbar
|
from tkinter.ttk import Scrollbar
|
||||||
from idlelib import zoomheight
|
|
||||||
from idlelib.config import idleConf
|
from idlelib.config import idleConf
|
||||||
|
from idlelib import zoomheight
|
||||||
|
|
||||||
ICONDIR = "Icons"
|
ICONDIR = "Icons"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import string
|
import string
|
||||||
|
|
||||||
from idlelib.delegator import Delegator
|
from idlelib.delegator import Delegator
|
||||||
|
|
||||||
# tkintter import not needed because module does not create widgets,
|
# tkintter import not needed because module does not create widgets,
|
||||||
# although many methods operate on text widget arguments.
|
# although many methods operate on text widget arguments.
|
||||||
|
|
||||||
|
@ -158,7 +160,6 @@ class UndoDelegator(Delegator):
|
||||||
|
|
||||||
|
|
||||||
class Command:
|
class Command:
|
||||||
|
|
||||||
# Base class for Undoable commands
|
# Base class for Undoable commands
|
||||||
|
|
||||||
tags = None
|
tags = None
|
||||||
|
@ -204,7 +205,6 @@ class Command:
|
||||||
|
|
||||||
|
|
||||||
class InsertCommand(Command):
|
class InsertCommand(Command):
|
||||||
|
|
||||||
# Undoable insert command
|
# Undoable insert command
|
||||||
|
|
||||||
def __init__(self, index1, chars, tags=None):
|
def __init__(self, index1, chars, tags=None):
|
||||||
|
@ -262,7 +262,6 @@ class InsertCommand(Command):
|
||||||
|
|
||||||
|
|
||||||
class DeleteCommand(Command):
|
class DeleteCommand(Command):
|
||||||
|
|
||||||
# Undoable delete command
|
# Undoable delete command
|
||||||
|
|
||||||
def __init__(self, index1, index2=None):
|
def __init__(self, index1, index2=None):
|
||||||
|
@ -297,8 +296,8 @@ class DeleteCommand(Command):
|
||||||
text.see('insert')
|
text.see('insert')
|
||||||
##sys.__stderr__.write("undo: %s\n" % self)
|
##sys.__stderr__.write("undo: %s\n" % self)
|
||||||
|
|
||||||
class CommandSequence(Command):
|
|
||||||
|
|
||||||
|
class CommandSequence(Command):
|
||||||
# Wrapper for a sequence of undoable cmds to be undone/redone
|
# Wrapper for a sequence of undoable cmds to be undone/redone
|
||||||
# as a unit
|
# as a unit
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from tkinter import *
|
from tkinter import *
|
||||||
|
|
||||||
|
|
||||||
class WindowList:
|
class WindowList:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -48,6 +49,7 @@ class WindowList:
|
||||||
t, v, tb = sys.exc_info()
|
t, v, tb = sys.exc_info()
|
||||||
print("warning: callback failed in WindowList", t, ":", v)
|
print("warning: callback failed in WindowList", t, ":", v)
|
||||||
|
|
||||||
|
|
||||||
registry = WindowList()
|
registry = WindowList()
|
||||||
|
|
||||||
add_windows_to_menu = registry.add_windows_to_menu
|
add_windows_to_menu = registry.add_windows_to_menu
|
||||||
|
|
|
@ -5,6 +5,7 @@ import sys
|
||||||
|
|
||||||
from idlelib import macosx
|
from idlelib import macosx
|
||||||
|
|
||||||
|
|
||||||
class ZoomHeight:
|
class ZoomHeight:
|
||||||
|
|
||||||
menudefs = [
|
menudefs = [
|
||||||
|
@ -20,6 +21,7 @@ class ZoomHeight:
|
||||||
top = self.editwin.top
|
top = self.editwin.top
|
||||||
zoom_height(top)
|
zoom_height(top)
|
||||||
|
|
||||||
|
|
||||||
def zoom_height(top):
|
def zoom_height(top):
|
||||||
geom = top.wm_geometry()
|
geom = top.wm_geometry()
|
||||||
m = re.match(r"(\d+)x(\d+)\+(-?\d+)\+(-?\d+)", geom)
|
m = re.match(r"(\d+)x(\d+)\+(-?\d+)\+(-?\d+)", geom)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue