diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-07-21 20:25:43 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-21 20:25:43 (GMT) |
commit | 9325f4091b66f3a9cc85681435367671d335e3e7 (patch) | |
tree | 3cc7ce950e9a9bd31ba30474d6b7f482a523702b /Lib/idlelib | |
parent | a8cac5762c22120ccbacb6568bba77af2d22b3f7 (diff) | |
download | cpython-9325f4091b66f3a9cc85681435367671d335e3e7.zip cpython-9325f4091b66f3a9cc85681435367671d335e3e7.tar.gz cpython-9325f4091b66f3a9cc85681435367671d335e3e7.tar.bz2 |
bpo-37627: Initialize IDLE Custom Run dialog with previous entries (GH-14870)
Repeat the command line arguments most recently entered before so the user can edit them.
(cherry picked from commit 35b87e6001bd991f625abe305951c77ddeb9a9c5)
Co-authored-by: Ngalim Siregar <ngalim.siregar@gmail.com>
Diffstat (limited to 'Lib/idlelib')
-rw-r--r-- | Lib/idlelib/idle_test/test_query.py | 10 | ||||
-rw-r--r-- | Lib/idlelib/query.py | 8 | ||||
-rw-r--r-- | Lib/idlelib/runscript.py | 11 |
3 files changed, 19 insertions, 10 deletions
diff --git a/Lib/idlelib/idle_test/test_query.py b/Lib/idlelib/idle_test/test_query.py index 3b444de..f957585 100644 --- a/Lib/idlelib/idle_test/test_query.py +++ b/Lib/idlelib/idle_test/test_query.py @@ -12,7 +12,7 @@ HelpSource htests. These are run by running query.py. from idlelib import query import unittest from test.support import requires -from tkinter import Tk +from tkinter import Tk, END import sys from unittest import mock @@ -392,10 +392,12 @@ class CustomRunGuiTest(unittest.TestCase): def test_click_args(self): root = Tk() root.withdraw() - dialog = query.CustomRun(root, 'Title', _utest=True) - dialog.entry.insert(0, 'okay') + dialog = query.CustomRun(root, 'Title', + cli_args=['a', 'b=1'], _utest=True) + self.assertEqual(dialog.entry.get(), 'a b=1') + dialog.entry.insert(END, ' c') dialog.button_ok.invoke() - self.assertEqual(dialog.result, (['okay'], True)) + self.assertEqual(dialog.result, (['a', 'b=1', 'c'], True)) root.destroy() diff --git a/Lib/idlelib/query.py b/Lib/idlelib/query.py index d74084f..097e6e6 100644 --- a/Lib/idlelib/query.py +++ b/Lib/idlelib/query.py @@ -325,9 +325,13 @@ class CustomRun(Query): """ # Used in runscript.run_custom_event - def __init__(self, parent, title, *, cli_args='', + def __init__(self, parent, title, *, cli_args=[], _htest=False, _utest=False): - # TODO Use cli_args to pre-populate entry. + """cli_args is a list of strings. + + The list is assigned to the default Entry StringVar. + The strings are displayed joined by ' ' for display. + """ message = 'Command Line Arguments for sys.argv:' super().__init__( parent, title, message, text0=cli_args, diff --git a/Lib/idlelib/runscript.py b/Lib/idlelib/runscript.py index b041e56..f97cf52 100644 --- a/Lib/idlelib/runscript.py +++ b/Lib/idlelib/runscript.py @@ -39,6 +39,8 @@ class ScriptBinding: # XXX This should be done differently self.flist = self.editwin.flist self.root = self.editwin.root + # cli_args is list of strings that extends sys.argv + self.cli_args = [] if macosx.isCocoaTk(): self.editwin.text_frame.bind('<<run-module-event-2>>', self._run_module_event) @@ -137,10 +139,11 @@ class ScriptBinding: return 'break' if customize: title = f"Customize {self.editwin.short_title()} Run" - run_args = CustomRun(self.shell.text, title).result + run_args = CustomRun(self.shell.text, title, + cli_args=self.cli_args).result if not run_args: # User cancelled. return 'break' - cli_args, restart = run_args if customize else ([], True) + self.cli_args, restart = run_args if customize else ([], True) interp = self.shell.interp if pyshell.use_subprocess and restart: interp.restart_subprocess( @@ -148,8 +151,8 @@ class ScriptBinding: self.editwin._filename_to_unicode(filename)) dirname = os.path.dirname(filename) argv = [filename] - if cli_args: - argv += cli_args + if self.cli_args: + argv += self.cli_args interp.runcommand(f"""if 1: __file__ = {filename!r} import sys as _sys |