summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorNgalim Siregar <ngalim.siregar@gmail.com>2019-07-21 15:37:28 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2019-07-21 15:37:28 (GMT)
commit35b87e6001bd991f625abe305951c77ddeb9a9c5 (patch)
tree03f4ffc0e8b45197b82fbe2affdf4b36a758b041 /Lib
parent02c91f59b6f6e720a9e89635e00c55bcf7f932a8 (diff)
downloadcpython-35b87e6001bd991f625abe305951c77ddeb9a9c5.zip
cpython-35b87e6001bd991f625abe305951c77ddeb9a9c5.tar.gz
cpython-35b87e6001bd991f625abe305951c77ddeb9a9c5.tar.bz2
bpo-37627: Initialize IDLE Custom Run dialog with previous entries (#14870)
Repeat the command line arguments most recently entered before so the user can edit them.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/idlelib/idle_test/test_query.py10
-rw-r--r--Lib/idlelib/query.py8
-rw-r--r--Lib/idlelib/runscript.py11
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