From 368d054e05e7b3c066f6e4c4aedc35007e5e11d0 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 24 Oct 2017 16:21:59 +0300 Subject: [PATCH 1/4] bpo-31860: Make the font sample in the IDLE font configuration dialog editable. --- Lib/idlelib/configdialog.py | 4 ++-- .../NEWS.d/next/IDLE/2017-10-24-16-21-50.bpo-31860.gECuWx.rst | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/IDLE/2017-10-24-16-21-50.bpo-31860.gECuWx.rst diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index cea85580d436a3..5d9e745b7514f6 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -544,8 +544,8 @@ def create_page_font_tab(self): '\uac00\ub0d0\ub354\ub824\ubaa8\ubd64\uc218\uc720\uc988\uce58\n' '\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\n' ) - temp_font = tkFont.Font(self, ('courier', 10, 'normal')) - self.font_sample = Label(frame_sample, text=sample, font=temp_font) + self.font_sample = Text(frame_sample, width=20, height=10) + self.font_sample.insert(END, sample) # frame_indent. indent_title = Label( frame_indent, justify=LEFT, diff --git a/Misc/NEWS.d/next/IDLE/2017-10-24-16-21-50.bpo-31860.gECuWx.rst b/Misc/NEWS.d/next/IDLE/2017-10-24-16-21-50.bpo-31860.gECuWx.rst new file mode 100644 index 00000000000000..84327d397e069d --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2017-10-24-16-21-50.bpo-31860.gECuWx.rst @@ -0,0 +1 @@ +The font sample in the IDLE font configuration dialog is now editable. From 1b80bb65e1eac40de7dd2bcc5cd020ffe1082e0e Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Thu, 26 Oct 2017 23:07:36 -0400 Subject: [PATCH 2/4] Make sample edits persist about option invocations. --- Lib/idlelib/configdialog.py | 69 ++++++++++++---------- Lib/idlelib/idle_test/test_configdialog.py | 6 +- 2 files changed, 42 insertions(+), 33 deletions(-) diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index 5d9e745b7514f6..a37d955b4d7f8d 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -189,6 +189,11 @@ def cancel(self): """ self.destroy() + def destroy(self): + global font_sample_text + font_sample_text = self.fontpage.font_sample.get('1.0', 'end') + super().destroy() + def help(self): """Create textview for config dialog help. @@ -429,6 +434,35 @@ def save_all_changed_extensions(self): # def other_methods(): # # Define tab-specific behavior. +font_sample_text = ( + '\n' + 'AaBbCcDdEeFfGgHhIiJj\n1234567890#:+=(){}[]\n' + '\u00a2\u00a3\u00a5\u00a7\u00a9\u00ab\u00ae\u00b6\u00bd\u011e' + '\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c7\u00d0\u00d8\u00df\n' + '\n\n' + '\u0250\u0255\u0258\u025e\u025f\u0264\u026b\u026e\u0270\u0277' + '\u027b\u0281\u0283\u0286\u028e\u029e\u02a2\u02ab\u02ad\u02af\n' + '\u0391\u03b1\u0392\u03b2\u0393\u03b3\u0394\u03b4\u0395\u03b5' + '\u0396\u03b6\u0397\u03b7\u0398\u03b8\u0399\u03b9\u039a\u03ba\n' + '\u0411\u0431\u0414\u0434\u0416\u0436\u041f\u043f\u0424\u0444' + '\u0427\u0447\u042a\u044a\u042d\u044d\u0460\u0464\u046c\u04dc\n' + '\n\n' + '\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9' + '\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\n' + '\u0627\u0628\u062c\u062f\u0647\u0648\u0632\u062d\u0637\u064a' + '\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\n' + '\n\n' + '\u0966\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f' + '\u0905\u0906\u0907\u0908\u0909\u090a\u090f\u0910\u0913\u0914\n' + '\u0be6\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef' + '\u0b85\u0b87\u0b89\u0b8e\n' + '\n\n' + '\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\n' + '\u6c49\u5b57\u6f22\u5b57\u4eba\u6728\u706b\u571f\u91d1\u6c34\n' + '\uac00\ub0d0\ub354\ub824\ubaa8\ubd64\uc218\uc720\uc988\uce58\n' + '\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\n' + ) + class FontPage(Frame): @@ -494,7 +528,8 @@ def create_page_font_tab(self): frame_font = LabelFrame( self, borderwidth=2, relief=GROOVE, text=' Shell/Editor Font ') frame_sample = LabelFrame( - self, borderwidth=2, relief=GROOVE, text=' Font Sample ') + self, borderwidth=2, relief=GROOVE, + text=' Font Sample (Editable) ') frame_indent = LabelFrame( self, borderwidth=2, relief=GROOVE, text=' Indentation Width ') # frame_font. @@ -516,36 +551,8 @@ def create_page_font_tab(self): frame_font_param, variable=self.font_bold, onvalue=1, offvalue=0, text='Bold') # frame_sample. - sample = ( - '\n' - 'AaBbCcDdEeFfGgHhIiJj\n1234567890#:+=(){}[]\n' - '\u00a2\u00a3\u00a5\u00a7\u00a9\u00ab\u00ae\u00b6\u00bd\u011e' - '\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c7\u00d0\u00d8\u00df\n' - '\n\n' - '\u0250\u0255\u0258\u025e\u025f\u0264\u026b\u026e\u0270\u0277' - '\u027b\u0281\u0283\u0286\u028e\u029e\u02a2\u02ab\u02ad\u02af\n' - '\u0391\u03b1\u0392\u03b2\u0393\u03b3\u0394\u03b4\u0395\u03b5' - '\u0396\u03b6\u0397\u03b7\u0398\u03b8\u0399\u03b9\u039a\u03ba\n' - '\u0411\u0431\u0414\u0434\u0416\u0436\u041f\u043f\u0424\u0444' - '\u0427\u0447\u042a\u044a\u042d\u044d\u0460\u0464\u046c\u04dc\n' - '\n\n' - '\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9' - '\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\n' - '\u0627\u0628\u062c\u062f\u0647\u0648\u0632\u062d\u0637\u064a' - '\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\n' - '\n\n' - '\u0966\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f' - '\u0905\u0906\u0907\u0908\u0909\u090a\u090f\u0910\u0913\u0914\n' - '\u0be6\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef' - '\u0b85\u0b87\u0b89\u0b8e\n' - '\n\n' - '\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\n' - '\u6c49\u5b57\u6f22\u5b57\u4eba\u6728\u706b\u571f\u91d1\u6c34\n' - '\uac00\ub0d0\ub354\ub824\ubaa8\ubd64\uc218\uc720\uc988\uce58\n' - '\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\n' - ) self.font_sample = Text(frame_sample, width=20, height=10) - self.font_sample.insert(END, sample) + self.font_sample.insert(END, font_sample_text) # frame_indent. indent_title = Label( frame_indent, justify=LEFT, @@ -2153,6 +2160,8 @@ def detach(self): Devanagari and Tamil lines start with digits. The East Asian lines are Chinese digits, Chinese Hanzi, Korean Hangul, and Japanese Hiragana and Katakana. + +You can edit the font sample. Changes remain until IDLE is closed. ''', 'Highlights': ''' Highlighting: diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py index dc7f69c2af86b2..982dc0b7eff7e1 100644 --- a/Lib/idlelib/idle_test/test_configdialog.py +++ b/Lib/idlelib/idle_test/test_configdialog.py @@ -44,10 +44,9 @@ def tearDownModule(): tracers.detach() tracers.clear() changes.clear() - del dialog root.update_idletasks() root.destroy() - del root + root = dialog = None class FontPageTest(unittest.TestCase): @@ -192,6 +191,7 @@ def test_font_set(self): def test_set_samples(self): d = self.page del d.set_samples # Unmask method for test + orig_samples = d.font_sample, d.highlight_sample d.font_sample, d.highlight_sample = {}, {} d.font_name.set('test') d.font_size.set('5') @@ -202,7 +202,7 @@ def test_set_samples(self): d.set_samples() self.assertTrue(d.font_sample == d.highlight_sample == expected) - del d.font_sample, d.highlight_sample + d.font_sample, d.highlight_sample = orig_samples d.set_samples = Func() # Re-mask for other tests. From bb0f0512113552c512eeed394f70d59b299457eb Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Thu, 26 Oct 2017 23:19:54 -0400 Subject: [PATCH 3/4] Update 2017-10-24-16-21-50.bpo-31860.gECuWx.rst --- Misc/NEWS.d/next/IDLE/2017-10-24-16-21-50.bpo-31860.gECuWx.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/IDLE/2017-10-24-16-21-50.bpo-31860.gECuWx.rst b/Misc/NEWS.d/next/IDLE/2017-10-24-16-21-50.bpo-31860.gECuWx.rst index 84327d397e069d..a1c115e3f78bc0 100644 --- a/Misc/NEWS.d/next/IDLE/2017-10-24-16-21-50.bpo-31860.gECuWx.rst +++ b/Misc/NEWS.d/next/IDLE/2017-10-24-16-21-50.bpo-31860.gECuWx.rst @@ -1 +1,2 @@ -The font sample in the IDLE font configuration dialog is now editable. +The font sample in the IDLE configuration dialog is now editable. +Changes persist while IDLE remains open From 873798f1539eaf10cd52c9d67bda36eb662995b4 Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Thu, 26 Oct 2017 23:28:39 -0400 Subject: [PATCH 4/4] Update configdialog.py Edit code by increasing height to try to force Apveyor to run --- Lib/idlelib/configdialog.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index a37d955b4d7f8d..099f5262b1e4f5 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -551,7 +551,7 @@ def create_page_font_tab(self): frame_font_param, variable=self.font_bold, onvalue=1, offvalue=0, text='Bold') # frame_sample. - self.font_sample = Text(frame_sample, width=20, height=10) + self.font_sample = Text(frame_sample, width=20, height=20) self.font_sample.insert(END, font_sample_text) # frame_indent. indent_title = Label(