From eae2537c17dc331459ce9864996fe35ab9aae0f8 Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Sat, 8 Jul 2017 17:54:12 -0400 Subject: [PATCH] Revise configdialog as indicated in review. --- Lib/idlelib/configdialog.py | 56 +++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py index 982380c0d47..01e17ccf737 100644 --- a/Lib/idlelib/configdialog.py +++ b/Lib/idlelib/configdialog.py @@ -77,7 +77,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('', self.Cancel) #dismiss dialog, no save @@ -142,27 +142,24 @@ 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( frame, borderwidth=2, relief=GROOVE, text=' Indentation Width ') - #frame_font + # frame_font frame_font_name = Frame(frame_font) 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('', self.on_list_fonts_button_release) - self.list_fonts.bind('', self.on_list_fonts_key_release) - self.list_fonts.bind('', self.on_list_fonts_key_release) + self.fontlist.bind('<>', 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) @@ -173,7 +170,7 @@ class ConfigDialog(Toplevel): self.font_sample = Label( frame_font_sample, justify=LEFT, font=self.edit_font, text='AaBbCcDdEe\nFfGgHhIiJjK\n1234567890\n#:+=(){}[]') - #frame_indent + # frame_indent frame_indent_size = Frame(frame_indent) indent_size_title = Label( frame_indent_size, justify=LEFT, @@ -182,25 +179,26 @@ class ConfigDialog(Toplevel): frame_indent_size, variable=self.space_num, orient='horizontal', tickinterval=2, from_=2, to=16) - #widget packing - #body + # 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) - #frame_font + # frame_font 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) check_font_bold.pack(side=LEFT, anchor=W, padx=20) frame_font_sample.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) self.font_sample.pack(expand=TRUE, fill=BOTH) - #frame_indent + # frame_indent 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): @@ -1024,18 +1022,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) - self.font_name.set(font.lower()) - self.set_font_sample() - - def on_list_fonts_key_release(self, event): - font = self.list_fonts.get(ACTIVE) + font = self.fontlist.get(ANCHOR if event.type == 3 else ACTIVE) self.font_name.set(font.lower()) self.set_font_sample() @@ -1169,7 +1162,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] @@ -1178,9 +1171,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.