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.
This commit is contained in:
parent
02c91f59b6
commit
35b87e6001
|
@ -12,7 +12,7 @@ HelpSource htests. These are run by running query.py.
|
||||||
from idlelib import query
|
from idlelib import query
|
||||||
import unittest
|
import unittest
|
||||||
from test.support import requires
|
from test.support import requires
|
||||||
from tkinter import Tk
|
from tkinter import Tk, END
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
@ -392,10 +392,12 @@ class CustomRunGuiTest(unittest.TestCase):
|
||||||
def test_click_args(self):
|
def test_click_args(self):
|
||||||
root = Tk()
|
root = Tk()
|
||||||
root.withdraw()
|
root.withdraw()
|
||||||
dialog = query.CustomRun(root, 'Title', _utest=True)
|
dialog = query.CustomRun(root, 'Title',
|
||||||
dialog.entry.insert(0, 'okay')
|
cli_args=['a', 'b=1'], _utest=True)
|
||||||
|
self.assertEqual(dialog.entry.get(), 'a b=1')
|
||||||
|
dialog.entry.insert(END, ' c')
|
||||||
dialog.button_ok.invoke()
|
dialog.button_ok.invoke()
|
||||||
self.assertEqual(dialog.result, (['okay'], True))
|
self.assertEqual(dialog.result, (['a', 'b=1', 'c'], True))
|
||||||
root.destroy()
|
root.destroy()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -325,9 +325,13 @@ class CustomRun(Query):
|
||||||
"""
|
"""
|
||||||
# Used in runscript.run_custom_event
|
# Used in runscript.run_custom_event
|
||||||
|
|
||||||
def __init__(self, parent, title, *, cli_args='',
|
def __init__(self, parent, title, *, cli_args=[],
|
||||||
_htest=False, _utest=False):
|
_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:'
|
message = 'Command Line Arguments for sys.argv:'
|
||||||
super().__init__(
|
super().__init__(
|
||||||
parent, title, message, text0=cli_args,
|
parent, title, message, text0=cli_args,
|
||||||
|
|
|
@ -39,6 +39,8 @@ class ScriptBinding:
|
||||||
# XXX This should be done differently
|
# XXX This should be done differently
|
||||||
self.flist = self.editwin.flist
|
self.flist = self.editwin.flist
|
||||||
self.root = self.editwin.root
|
self.root = self.editwin.root
|
||||||
|
# cli_args is list of strings that extends sys.argv
|
||||||
|
self.cli_args = []
|
||||||
|
|
||||||
if macosx.isCocoaTk():
|
if macosx.isCocoaTk():
|
||||||
self.editwin.text_frame.bind('<<run-module-event-2>>', self._run_module_event)
|
self.editwin.text_frame.bind('<<run-module-event-2>>', self._run_module_event)
|
||||||
|
@ -137,10 +139,11 @@ class ScriptBinding:
|
||||||
return 'break'
|
return 'break'
|
||||||
if customize:
|
if customize:
|
||||||
title = f"Customize {self.editwin.short_title()} Run"
|
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.
|
if not run_args: # User cancelled.
|
||||||
return 'break'
|
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
|
interp = self.shell.interp
|
||||||
if pyshell.use_subprocess and restart:
|
if pyshell.use_subprocess and restart:
|
||||||
interp.restart_subprocess(
|
interp.restart_subprocess(
|
||||||
|
@ -148,8 +151,8 @@ class ScriptBinding:
|
||||||
self.editwin._filename_to_unicode(filename))
|
self.editwin._filename_to_unicode(filename))
|
||||||
dirname = os.path.dirname(filename)
|
dirname = os.path.dirname(filename)
|
||||||
argv = [filename]
|
argv = [filename]
|
||||||
if cli_args:
|
if self.cli_args:
|
||||||
argv += cli_args
|
argv += self.cli_args
|
||||||
interp.runcommand(f"""if 1:
|
interp.runcommand(f"""if 1:
|
||||||
__file__ = {filename!r}
|
__file__ = {filename!r}
|
||||||
import sys as _sys
|
import sys as _sys
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
Initialize the Customize Run dialog with the command line arguments
|
||||||
|
most recently entered before. The user can optionally edit before
|
||||||
|
submitting them.
|
Loading…
Reference in New Issue