Revise configdialog as indicated in review.

This commit is contained in:
Terry Jan Reedy 2017-07-08 17:54:12 -04:00
parent 62f063ad09
commit eae2537c17

View file

@ -77,7 +77,7 @@ def __init__(self, parent, title='', _htest=False, _utest=False):
self.transient(parent) self.transient(parent)
self.grab_set() self.grab_set()
self.protocol("WM_DELETE_WINDOW", self.cancel) 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. # XXX Decide whether to keep or delete these key bindings.
# Key bindings for this dialog. # Key bindings for this dialog.
# self.bind('<Escape>', self.Cancel) #dismiss dialog, no save # self.bind('<Escape>', self.Cancel) #dismiss dialog, no save
@ -142,27 +142,24 @@ def create_page_font_tab(self):
self.space_num = IntVar(parent) self.space_num = IntVar(parent)
self.edit_font = tkFont.Font(parent, ('courier', 10, 'normal')) self.edit_font = tkFont.Font(parent, ('courier', 10, 'normal'))
##widget creation # Create widgets.
#body frame # body and body section frames.
frame = self.tab_pages.pages['Fonts/Tabs'].frame frame = self.tab_pages.pages['Fonts/Tabs'].frame
#body section frames
frame_font = LabelFrame( frame_font = LabelFrame(
frame, borderwidth=2, relief=GROOVE, text=' Base Editor Font ') frame, borderwidth=2, relief=GROOVE, text=' Base Editor Font ')
frame_indent = LabelFrame( frame_indent = LabelFrame(
frame, borderwidth=2, relief=GROOVE, text=' Indentation Width ') frame, borderwidth=2, relief=GROOVE, text=' Indentation Width ')
#frame_font # frame_font
frame_font_name = Frame(frame_font) frame_font_name = Frame(frame_font)
frame_font_param = Frame(frame_font) frame_font_param = Frame(frame_font)
font_name_title = Label( font_name_title = Label(
frame_font_name, justify=LEFT, text='Font Face :') frame_font_name, justify=LEFT, text='Font Face :')
self.list_fonts = Listbox( self.fontlist = Listbox(
frame_font_name, height=5, takefocus=FALSE, exportselection=FALSE) 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)
self.list_fonts.bind('<KeyRelease-Up>', self.on_list_fonts_key_release)
self.list_fonts.bind('<KeyRelease-Down>', self.on_list_fonts_key_release)
scroll_font = Scrollbar(frame_font_name) scroll_font = Scrollbar(frame_font_name)
scroll_font.config(command=self.list_fonts.yview) scroll_font.config(command=self.fontlist.yview)
self.list_fonts.config(yscrollcommand=scroll_font.set) self.fontlist.config(yscrollcommand=scroll_font.set)
font_size_title = Label(frame_font_param, text='Size :') font_size_title = Label(frame_font_param, text='Size :')
self.opt_menu_font_size = DynOptionMenu( self.opt_menu_font_size = DynOptionMenu(
frame_font_param, self.font_size, None, command=self.set_font_sample) frame_font_param, self.font_size, None, command=self.set_font_sample)
@ -173,7 +170,7 @@ def create_page_font_tab(self):
self.font_sample = Label( self.font_sample = Label(
frame_font_sample, justify=LEFT, font=self.edit_font, frame_font_sample, justify=LEFT, font=self.edit_font,
text='AaBbCcDdEe\nFfGgHhIiJjK\n1234567890\n#:+=(){}[]') text='AaBbCcDdEe\nFfGgHhIiJjK\n1234567890\n#:+=(){}[]')
#frame_indent # frame_indent
frame_indent_size = Frame(frame_indent) frame_indent_size = Frame(frame_indent)
indent_size_title = Label( indent_size_title = Label(
frame_indent_size, justify=LEFT, frame_indent_size, justify=LEFT,
@ -182,25 +179,26 @@ def create_page_font_tab(self):
frame_indent_size, variable=self.space_num, frame_indent_size, variable=self.space_num,
orient='horizontal', tickinterval=2, from_=2, to=16) orient='horizontal', tickinterval=2, from_=2, to=16)
#widget packing # Pack widgets.
#body # body
frame_font.pack(side=LEFT, padx=5, pady=5, expand=TRUE, fill=BOTH) 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_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_name.pack(side=TOP, padx=5, pady=5, fill=X)
frame_font_param.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) 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) scroll_font.pack(side=LEFT, fill=Y)
font_size_title.pack(side=LEFT, anchor=W) font_size_title.pack(side=LEFT, anchor=W)
self.opt_menu_font_size.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) check_font_bold.pack(side=LEFT, anchor=W, padx=20)
frame_font_sample.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH) frame_font_sample.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH)
self.font_sample.pack(expand=TRUE, fill=BOTH) self.font_sample.pack(expand=TRUE, fill=BOTH)
#frame_indent # frame_indent
frame_indent_size.pack(side=TOP, fill=X) frame_indent_size.pack(side=TOP, fill=X)
indent_size_title.pack(side=TOP, anchor=W, padx=5) indent_size_title.pack(side=TOP, anchor=W, padx=5)
self.scale_indent_size.pack(side=TOP, padx=5, fill=X) self.scale_indent_size.pack(side=TOP, padx=5, fill=X)
return frame return frame
def create_page_highlight(self): def create_page_highlight(self):
@ -1024,18 +1022,13 @@ def create_new_theme(self, new_theme_name):
self.is_builtin_theme.set(0) self.is_builtin_theme.set(0)
self.set_theme_type() self.set_theme_type()
def on_list_fonts_button_release(self, event): def on_fontlist_select(self, event):
"""Handle event of selecting a font from the list. """Handle selecting a font from the list.
Change the font name to the font selected from the list Event can result from either mouse click or Up or Down key.
and update sample text to show that font. 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()
def on_list_fonts_key_release(self, event):
font = self.list_fonts.get(ACTIVE)
self.font_name.set(font.lower()) self.font_name.set(font.lower())
self.set_font_sample() self.set_font_sample()
@ -1169,7 +1162,7 @@ def load_font_cfg(self):
fonts = list(tkFont.families(self)) fonts = list(tkFont.families(self))
fonts.sort() fonts.sort()
for font in fonts: for font in fonts:
self.list_fonts.insert(END, font) self.fontlist.insert(END, font)
configured_font = idleConf.GetFont(self, 'main', 'EditorWindow') configured_font = idleConf.GetFont(self, 'main', 'EditorWindow')
font_name = configured_font[0].lower() font_name = configured_font[0].lower()
font_size = configured_font[1] font_size = configured_font[1]
@ -1178,9 +1171,10 @@ def load_font_cfg(self):
lc_fonts = [s.lower() for s in fonts] lc_fonts = [s.lower() for s in fonts]
try: try:
current_font_index = lc_fonts.index(font_name) current_font_index = lc_fonts.index(font_name)
self.list_fonts.see(current_font_index) self.fontlist.see(current_font_index)
self.list_fonts.select_set(current_font_index) self.fontlist.select_set(current_font_index)
self.list_fonts.select_anchor(current_font_index) self.fontlist.select_anchor(current_font_index)
self.fontlist.activate(current_font_index)
except ValueError: except ValueError:
pass pass
# Set font size dropdown. # Set font size dropdown.