[3.6] bpo-30870: IDLE: Change sample font when select by key-up/down (GH-2617) (#2640)
Patch by Louie Lu.
(cherry picked from commit bb2bae8
)
This commit is contained in:
parent
04f77d4677
commit
7ab3342333
|
@ -14,7 +14,7 @@ from tkinter import (Toplevel, Frame, LabelFrame, Listbox, Label, Button,
|
|||
StringVar, BooleanVar, IntVar, TRUE, FALSE,
|
||||
TOP, BOTTOM, RIGHT, LEFT, SOLID, GROOVE, NORMAL, DISABLED,
|
||||
NONE, BOTH, X, Y, W, E, EW, NS, NSEW, NW,
|
||||
HORIZONTAL, VERTICAL, ANCHOR, END)
|
||||
HORIZONTAL, VERTICAL, ANCHOR, ACTIVE, END)
|
||||
from tkinter.ttk import Scrollbar
|
||||
import tkinter.colorchooser as tkColorChooser
|
||||
import tkinter.font as tkFont
|
||||
|
@ -78,7 +78,7 @@ class ConfigDialog(Toplevel):
|
|||
self.transient(parent)
|
||||
self.grab_set()
|
||||
self.protocol("WM_DELETE_WINDOW", self.cancel)
|
||||
self.tab_pages.focus_set()
|
||||
self.fontlist.focus_set()
|
||||
# XXX Decide whether to keep or delete these key bindings.
|
||||
# Key bindings for this dialog.
|
||||
# self.bind('<Escape>', self.Cancel) #dismiss dialog, no save
|
||||
|
@ -143,10 +143,9 @@ class ConfigDialog(Toplevel):
|
|||
self.space_num = IntVar(parent)
|
||||
self.edit_font = tkFont.Font(parent, ('courier', 10, 'normal'))
|
||||
|
||||
##widget creation
|
||||
#body frame
|
||||
# Create widgets.
|
||||
# body and body section frames.
|
||||
frame = self.tab_pages.pages['Fonts/Tabs'].frame
|
||||
#body section frames
|
||||
frame_font = LabelFrame(
|
||||
frame, borderwidth=2, relief=GROOVE, text=' Base Editor Font ')
|
||||
frame_indent = LabelFrame(
|
||||
|
@ -156,13 +155,12 @@ class ConfigDialog(Toplevel):
|
|||
frame_font_param = Frame(frame_font)
|
||||
font_name_title = Label(
|
||||
frame_font_name, justify=LEFT, text='Font Face :')
|
||||
self.list_fonts = Listbox(
|
||||
self.fontlist = Listbox(
|
||||
frame_font_name, height=5, takefocus=FALSE, exportselection=FALSE)
|
||||
self.list_fonts.bind(
|
||||
'<ButtonRelease-1>', self.on_list_fonts_button_release)
|
||||
self.fontlist.bind('<<ListboxSelect>>', self.on_fontlist_select)
|
||||
scroll_font = Scrollbar(frame_font_name)
|
||||
scroll_font.config(command=self.list_fonts.yview)
|
||||
self.list_fonts.config(yscrollcommand=scroll_font.set)
|
||||
scroll_font.config(command=self.fontlist.yview)
|
||||
self.fontlist.config(yscrollcommand=scroll_font.set)
|
||||
font_size_title = Label(frame_font_param, text='Size :')
|
||||
self.opt_menu_font_size = DynOptionMenu(
|
||||
frame_font_param, self.font_size, None, command=self.set_font_sample)
|
||||
|
@ -182,7 +180,7 @@ class ConfigDialog(Toplevel):
|
|||
frame_indent_size, variable=self.space_num,
|
||||
orient='horizontal', tickinterval=2, from_=2, to=16)
|
||||
|
||||
#widget packing
|
||||
# Pack widgets.
|
||||
# body
|
||||
frame_font.pack(side=LEFT, padx=5, pady=5, expand=TRUE, fill=BOTH)
|
||||
frame_indent.pack(side=LEFT, padx=5, pady=5, fill=Y)
|
||||
|
@ -190,7 +188,7 @@ class ConfigDialog(Toplevel):
|
|||
frame_font_name.pack(side=TOP, padx=5, pady=5, fill=X)
|
||||
frame_font_param.pack(side=TOP, padx=5, pady=5, fill=X)
|
||||
font_name_title.pack(side=TOP, anchor=W)
|
||||
self.list_fonts.pack(side=LEFT, expand=TRUE, fill=X)
|
||||
self.fontlist.pack(side=LEFT, expand=TRUE, fill=X)
|
||||
scroll_font.pack(side=LEFT, fill=Y)
|
||||
font_size_title.pack(side=LEFT, anchor=W)
|
||||
self.opt_menu_font_size.pack(side=LEFT, anchor=W)
|
||||
|
@ -201,6 +199,7 @@ class ConfigDialog(Toplevel):
|
|||
frame_indent_size.pack(side=TOP, fill=X)
|
||||
indent_size_title.pack(side=TOP, anchor=W, padx=5)
|
||||
self.scale_indent_size.pack(side=TOP, padx=5, fill=X)
|
||||
|
||||
return frame
|
||||
|
||||
def create_page_highlight(self):
|
||||
|
@ -986,13 +985,13 @@ class ConfigDialog(Toplevel):
|
|||
self.is_builtin_theme.set(0)
|
||||
self.set_theme_type()
|
||||
|
||||
def on_list_fonts_button_release(self, event):
|
||||
"""Handle event of selecting a font from the list.
|
||||
def on_fontlist_select(self, event):
|
||||
"""Handle selecting a font from the list.
|
||||
|
||||
Change the font name to the font selected from the list
|
||||
and update sample text to show that font.
|
||||
Event can result from either mouse click or Up or Down key.
|
||||
Set font_name and example display to selection.
|
||||
"""
|
||||
font = self.list_fonts.get(ANCHOR)
|
||||
font = self.fontlist.get(ANCHOR if event.type == 3 else ACTIVE)
|
||||
self.font_name.set(font.lower())
|
||||
self.set_font_sample()
|
||||
|
||||
|
@ -1126,7 +1125,7 @@ class ConfigDialog(Toplevel):
|
|||
fonts = list(tkFont.families(self))
|
||||
fonts.sort()
|
||||
for font in fonts:
|
||||
self.list_fonts.insert(END, font)
|
||||
self.fontlist.insert(END, font)
|
||||
configured_font = idleConf.GetFont(self, 'main', 'EditorWindow')
|
||||
font_name = configured_font[0].lower()
|
||||
font_size = configured_font[1]
|
||||
|
@ -1135,9 +1134,10 @@ class ConfigDialog(Toplevel):
|
|||
lc_fonts = [s.lower() for s in fonts]
|
||||
try:
|
||||
current_font_index = lc_fonts.index(font_name)
|
||||
self.list_fonts.see(current_font_index)
|
||||
self.list_fonts.select_set(current_font_index)
|
||||
self.list_fonts.select_anchor(current_font_index)
|
||||
self.fontlist.see(current_font_index)
|
||||
self.fontlist.select_set(current_font_index)
|
||||
self.fontlist.select_anchor(current_font_index)
|
||||
self.fontlist.activate(current_font_index)
|
||||
except ValueError:
|
||||
pass
|
||||
# Set font size dropdown.
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
IDLE: In Settings dialog, select font with Up, Down keys as well as mouse.
|
||||
Initial patch by Louie Lu.
|
Loading…
Reference in New Issue