8000 bpo-31860: Make the font sample in the IDLE font configuration dialog… · ultimatecoder/cpython@ed6554c · GitHub
[go: up one dir, main page]

Skip to content

Commit ed6554c

Browse files
serhiy-storchakaterryjreedy
authored andcommitted
bpo-31860: Make the font sample in the IDLE font configuration dialog editable. (python#4106)
Changes persist while IDLE remains open
1 parent 93fd478 commit ed6554c

File tree

3 files changed

+45
-34
lines changed

3 files changed

+45
-34
lines changed

Lib/idlelib/configdialog.py

Lines changed: 40 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,11 @@ def cancel(self):
189189
"""
190190
self.destroy()
191191

192+
def destroy(self):
193+
global font_sample_text
194+
font_sample_text = self.fontpage.font_sample.get('1.0', 'end')
195+
super().destroy()
196+
192197
def help(self):
193198
"""Create textview for config dialog help.
194199
@@ -429,6 +434,35 @@ def save_all_changed_extensions(self):
429434
# def other_methods():
430435
# # Define tab-specific behavior.
431436

437+
font_sample_text = (
438+
'<ASCII/Latin1>\n'
439+
'AaBbCcDdEeFfGgHhIiJj\n1234567890#:+=(){}[]\n'
440+
'\u00a2\u00a3\u00a5\u00a7\u00a9\u00ab\u00ae\u00b6\u00bd\u011e'
441+
'\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c7\u00d0\u00d8\u00df\n'
442+
'\n<IPA,Greek,Cyrillic>\n'
443+
'\u0250\u0255\u0258\u025e\u025f\u0264\u026b\u026e\u0270\u0277'
444+
'\u027b\u0281\u0283\u0286\u028e\u029e\u02a2\u02ab\u02ad\u02af\n'
445+
'\u0391\u03b1\u0392\u03b2\u0393\u03b3\u0394\u03b4\u0395\u03b5'
446+
'\u0396\u03b6\u0397\u03b7\u0398\u03b8\u0399\u03b9\u039a\u03ba\n'
447+
'\u0411\u0431\u0414\u0434\u0416\u0436\u041f\u043f\u0424\u0444'
448+
'\u0427\u0447\u042a\u044a\u042d\u044d\u0460\u0464\u046c\u04dc\n'
449+
'\n<Hebrew, Arabic>\n'
450+
'\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9'
451+
'\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\n'
452+
'\u0627\u0628\u062c\u062f\u0647\u0648\u0632\u062d\u0637\u064a'
453+
'\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\n'
454+
'\n<Devanagari, Tamil>\n'
455+
'\u0966\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f'
456+
'\u0905\u0906\u0907\u0908\u0909\u090a\u090f\u0910\u0913\u0914\n'
457+
'\u0be6\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef'
458+
'\u0b85\u0b87\u0b89\u0b8e\n'
459+
'\n<East Asian>\n'
460+
'\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\n'
461+
'\u6c49\u5b57\u6f22\u5b57\u4eba\u6728\u706b\u571f\u91d1\u6c34\n'
462+
'\uac00\ub0d0\ub354\ub824\ubaa8\ubd64\uc218\uc720\uc988\uce58\n'
463+
'\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\n'
464+
)
465+
432466

433467
class FontPage(Frame):
434468

@@ -494,7 +528,8 @@ def create_page_font_tab(self):
494528
frame_font = LabelFrame(
495529
self, borderwidth=2, relief=GROOVE, text=' Shell/Editor Font ')
496530
frame_sample = LabelFrame(
497-
self, borderwidth=2, relief=GROOVE, text=' Font Sample ')
531+
self, borderwidth=2, relief=GROOVE,
532+
text=' Font Sample (Editable) ')
498533
frame_indent = LabelFrame(
499534
self, borderwidth=2, relief=GROOVE, text=' Indentation Width ')
500535
# frame_font.
@@ -516,36 +551,8 @@ def create_page_font_tab(self):
516551
frame_font_param, variable=self.font_bold,
517552
onvalue=1, offvalue=0, text='Bold')
518553
# frame_sample.
519-
sample = (
520-
'<ASCII/Latin1>\n'
521-
'AaBbCcDdEeFfGgHhIiJj\n1234567890#:+=(){}[]\n'
522-
'\u00a2\u00a3\u00a5\u00a7\u00a9\u00ab\u00ae\u00b6\u00bd\u011e'
523-
'\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c7\u00d0\u00d8\u00df\n'
524-
'\n<IPA,Greek,Cyrillic>\n'
525-
'\u0250\u0255\u0258\u025e\u025f\u0264\u026b\u026e\u0270\u0277'
526-
'\u027b\u0281\u0283\u0286\u028e\u029e\u02a2\u02ab\u02ad\u02af\n'
527-
'\u0391\u03b1\u0392\u03b2\u0393\u03b3\u0394\u03b4\u0395\u03b5'
528-
'\u0396\u03b6\u0397\u03b7\u0398\u03b8\u0399\u03b9\u039a\u03ba\n'
529-
'\u0411\u0431\u0414\u0434\u0416\u0436\u041f\u043f\u0424\u0444'
530-
'\u0427\u0447\u042a\u044a\u042d\u044d\u0460\u0464\u046c\u04dc\n'
531-
'\n<Hebrew, Arabic>\n'
532-
'\u05d0\u05d1\u05d2\u05d3\u05d4\u05d5\u05d6\u05d7\u05d8\u05d9'
533-
'\u05da\u05db\u05dc\u05dd\u05de\u05df\u05e0\u05e1\u05e2\u05e3\n'
534-
'\u0627\u0628\u062c\u062f\u0647\u0648\u0632\u062d\u0637\u064a'
535-
'\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\n'
536-
'\n<Devanagari, Tamil>\n'
537-
'\u0966\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f'
538-
'\u0905\u0906\u0907\u0908\u0909\u090a\u090f\u0910\u0913\u0914\n'
539-
'\u0be6\u0be7\u0be8\u0be9\u0 6D47 bea\u0beb\u0bec\u0bed\u0bee\u0bef'
540-
'\u0b85\u0b87\u0b89\u0b8e\n'
541-
'\n<East Asian>\n'
542-
'\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d\n'
543-
'\u6c49\u5b57\u6f22\u5b57\u4eba\u6728\u706b\u571f\u91d1\u6c34\n'
544-
'\uac00\ub0d0\ub354\ub824\ubaa8\ubd64\uc218\uc720\uc988\uce58\n'
545-
'\u3042\u3044\u3046\u3048\u304a\u30a2\u30a4\u30a6\u30a8\u30aa\n'
546-
)
547-
temp_font = tkFont.Font(self, ('courier', 10, 'normal'))
548-
self.font_sample = Label(frame_sample, text=sample, font=temp_font)
554+
self.font_sample = Text(frame_sample, width=20, height=20)
555+
self.font_sample.insert(END, font_sample_text)
549556
# frame_indent.
550557
indent_title = Label(
551558
frame_indent, justify=LEFT,
@@ -2153,6 +2160,8 @@ def detach(self):
21532160
Devanagari and Tamil lines start with digits. The East Asian lines
21542161
are Chinese digits, Chinese Hanzi, Korean Hangul, and Japanese
21552162
Hiragana and Katakana.
2163+
2164+
You can edit the font sample. Changes remain until IDLE is closed.
21562165
''',
21572166
'Highlights': '''
21582167
Highlighting:

Lib/idlelib/idle_test/test_configdialog.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,9 @@ def tearDownModule():
4444
tracers.detach()
4545
tracers.clear()
4646
changes.clear()
47-
del dialog
4847
root.update_idletasks()
4948
root.destroy()
50-
del root
49+
root = dialog = None
5150

5251

5352
class FontPageTest(unittest.TestCase):
@@ -192,6 +191,7 @@ def test_font_set(self):
192191
def test_set_samples(self):
193192
d = self.page
194193
del d.set_samples # Unmask method for test
194+
orig_samples = d.font_sample, d.highlight_sample
195195
d.font_sample, d.highlight_sample = {}, {}
196196
d.font_name.set('test')
197197
d.font_size.set('5')
@@ -202,7 +202,7 @@ def test_set_samples(self):
202202
d.set_samples()
203203
self.assertTrue(d.font_sample == d.highlight_sample == expected)
204204

205-
del d.font_sample, d.highlight_sample
205+
d.font_sample, d.highlight_sample = orig_samples
206206
d.set_samples = Func() # Re-mask for other tests.
207207

208208

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
The font sample in the IDLE configuration dialog is now editable.
2+
Changes persist while IDLE remains open

0 commit comments

Comments
 (0)
0