bpo-31050: IDLE: Factor GenPage class from ConfigDialog (#2952)

The slightly modified tests for the General tab continue to pass.
Patch by Cheryl Sabella.
This commit is contained in:
csabella 2017-07-30 18:39:17 -04:00 committed by Terry Jan Reedy
parent 75f0b5dbac
commit e8eb17b2c1
3 changed files with 269 additions and 284 deletions

View file

@ -89,14 +89,14 @@ class ConfigDialog(Toplevel):
"""Create and place widgets for tabbed dialog. """Create and place widgets for tabbed dialog.
Widgets Bound to self: Widgets Bound to self:
tab_pages: TabbedPageSet note: Notebook
highpage: self.create_page_highlight
fontpage: FontPage
keyspage: self.create_page_keys
genpage: GenPage
extpageL self.create_page_extensions
Methods: Methods:
create_page_font_tab
create_page_highlight
create_page_keys
create_page_general
create_page_extensions
create_action_buttons create_action_buttons
load_configs: Load pages except for extensions. load_configs: Load pages except for extensions.
activate_config_changes: Tell editors to reload. activate_config_changes: Tell editors to reload.
@ -105,7 +105,7 @@ class ConfigDialog(Toplevel):
self.highpage = self.create_page_highlight() self.highpage = self.create_page_highlight()
self.fontpage = FontPage(note, self.highpage) self.fontpage = FontPage(note, self.highpage)
self.keyspage = self.create_page_keys() self.keyspage = self.create_page_keys()
self.genpage = self.create_page_general() self.genpage = GenPage(note)
self.extpage = self.create_page_extensions() self.extpage = self.create_page_extensions()
note.add(self.fontpage, text='Fonts/Tabs') note.add(self.fontpage, text='Fonts/Tabs')
note.add(self.highpage, text='Highlights') note.add(self.highpage, text='Highlights')
@ -133,7 +133,7 @@ class ConfigDialog(Toplevel):
#self.load_tab_cfg() #self.load_tab_cfg()
self.load_theme_cfg() self.load_theme_cfg()
self.load_key_cfg() self.load_key_cfg()
self.load_general_cfg() # self.load_general_cfg()
# note: extension page handled separately # note: extension page handled separately
def create_action_buttons(self): def create_action_buttons(self):
@ -1198,256 +1198,6 @@ class ConfigDialog(Toplevel):
instance.ApplyKeybindings() instance.ApplyKeybindings()
instance.reset_help_menu_entries() instance.reset_help_menu_entries()
def create_page_general(self):
"""Return frame of widgets for General tab.
Enable users to provisionally change general options. Function
load_general_cfg intializes tk variables and helplist using
idleConf. Radiobuttons startup_shell_on and startup_editor_on
set var startup_edit. Radiobuttons save_ask_on and save_auto_on
set var autosave. Entry boxes win_width_int and win_height_int
set var win_width and win_height. Setting var_name invokes the
default callback that adds option to changes.
Helplist: load_general_cfg loads list user_helplist with
name, position pairs and copies names to listbox helplist.
Clicking a name invokes help_source selected. Clicking
button_helplist_name invokes helplist_item_name, which also
changes user_helplist. These functions all call
set_add_delete_state. All but load call update_help_changes to
rewrite changes['main']['HelpFiles'].
Widget Structure: (*) widgets bound to self
frame
frame_run: LabelFrame
startup_title: Label
(*)startup_editor_on: Radiobutton - startup_edit
(*)startup_shell_on: Radiobutton - startup_edit
frame_save: LabelFrame
run_save_title: Label
(*)save_ask_on: Radiobutton - autosave
(*)save_auto_on: Radiobutton - autosave
frame_win_size: LabelFrame
win_size_title: Label
win_width_title: Label
(*)win_width_int: Entry - win_width
win_height_title: Label
(*)win_height_int: Entry - win_height
frame_help: LabelFrame
frame_helplist: Frame
frame_helplist_buttons: Frame
(*)button_helplist_edit
(*)button_helplist_add
(*)button_helplist_remove
(*)helplist: ListBox
scroll_helplist: Scrollbar
"""
parent = self.parent
self.startup_edit = tracers.add(
IntVar(parent), ('main', 'General', 'editor-on-startup'))
self.autosave = tracers.add(
IntVar(parent), ('main', 'General', 'autosave'))
self.win_width = tracers.add(
StringVar(parent), ('main', 'EditorWindow', 'width'))
self.win_height = tracers.add(
StringVar(parent), ('main', 'EditorWindow', 'height'))
# Create widgets:
# body and section frames.
frame = Frame(self.note)
frame_run = LabelFrame(frame, borderwidth=2, relief=GROOVE,
text=' Startup Preferences ')
frame_save = LabelFrame(frame, borderwidth=2, relief=GROOVE,
text=' autosave Preferences ')
frame_win_size = Frame(frame, borderwidth=2, relief=GROOVE)
frame_help = LabelFrame(frame, borderwidth=2, relief=GROOVE,
text=' Additional Help Sources ')
# frame_run.
startup_title = Label(frame_run, text='At Startup')
self.startup_editor_on = Radiobutton(
frame_run, variable=self.startup_edit, value=1,
text="Open Edit Window")
self.startup_shell_on = Radiobutton(
frame_run, variable=self.startup_edit, value=0,
text='Open Shell Window')
# frame_save.
run_save_title = Label(frame_save, text='At Start of Run (F5) ')
self.save_ask_on = Radiobutton(
frame_save, variable=self.autosave, value=0,
text="Prompt to Save")
self.save_auto_on = Radiobutton(
frame_save, variable=self.autosave, value=1,
text='No Prompt')
# frame_win_size.
win_size_title = Label(
frame_win_size, text='Initial Window Size (in characters)')
win_width_title = Label(frame_win_size, text='Width')
self.win_width_int = Entry(
frame_win_size, textvariable=self.win_width, width=3)
win_height_title = Label(frame_win_size, text='Height')
self.win_height_int = Entry(
frame_win_size, textvariable=self.win_height, width=3)
# frame_help.
frame_helplist = Frame(frame_help)
frame_helplist_buttons = Frame(frame_helplist)
self.helplist = Listbox(
frame_helplist, height=5, takefocus=True,
exportselection=FALSE)
scroll_helplist = Scrollbar(frame_helplist)
scroll_helplist['command'] = self.helplist.yview
self.helplist['yscrollcommand'] = scroll_helplist.set
self.helplist.bind('<ButtonRelease-1>', self.help_source_selected)
self.button_helplist_edit = Button(
frame_helplist_buttons, text='Edit', state=DISABLED,
width=8, command=self.helplist_item_edit)
self.button_helplist_add = Button(
frame_helplist_buttons, text='Add',
width=8, command=self.helplist_item_add)
self.button_helplist_remove = Button(
frame_helplist_buttons, text='Remove', state=DISABLED,
width=8, command=self.helplist_item_remove)
# Pack widgets:
# body.
frame_run.pack(side=TOP, padx=5, pady=5, fill=X)
frame_save.pack(side=TOP, padx=5, pady=5, fill=X)
frame_win_size.pack(side=TOP, padx=5, pady=5, fill=X)
frame_help.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH)
# frame_run.
startup_title.pack(side=LEFT, anchor=W, padx=5, pady=5)
self.startup_shell_on.pack(side=RIGHT, anchor=W, padx=5, pady=5)
self.startup_editor_on.pack(side=RIGHT, anchor=W, padx=5, pady=5)
# frame_save.
run_save_title.pack(side=LEFT, anchor=W, padx=5, pady=5)
self.save_auto_on.pack(side=RIGHT, anchor=W, padx=5, pady=5)
self.save_ask_on.pack(side=RIGHT, anchor=W, padx=5, pady=5)
# frame_win_size.
win_size_title.pack(side=LEFT, anchor=W, padx=5, pady=5)
self.win_height_int.pack(side=RIGHT, anchor=E, padx=10, pady=5)
win_height_title.pack(side=RIGHT, anchor=E, pady=5)
self.win_width_int.pack(side=RIGHT, anchor=E, padx=10, pady=5)
win_width_title.pack(side=RIGHT, anchor=E, pady=5)
# frame_help.
frame_helplist_buttons.pack(side=RIGHT, padx=5, pady=5, fill=Y)
frame_helplist.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH)
scroll_helplist.pack(side=RIGHT, anchor=W, fill=Y)
self.helplist.pack(side=LEFT, anchor=E, expand=TRUE, fill=BOTH)
self.button_helplist_edit.pack(side=TOP, anchor=W, pady=5)
self.button_helplist_add.pack(side=TOP, anchor=W)
self.button_helplist_remove.pack(side=TOP, anchor=W, pady=5)
return frame
def load_general_cfg(self):
"Load current configuration settings for the general options."
# Set startup state.
self.startup_edit.set(idleConf.GetOption(
'main', 'General', 'editor-on-startup', default=0, type='bool'))
# Set autosave state.
self.autosave.set(idleConf.GetOption(
'main', 'General', 'autosave', default=0, type='bool'))
# Set initial window size.
self.win_width.set(idleConf.GetOption(
'main', 'EditorWindow', 'width', type='int'))
self.win_height.set(idleConf.GetOption(
'main', 'EditorWindow', 'height', type='int'))
# Set additional help sources.
self.user_helplist = idleConf.GetAllExtraHelpSourcesList()
self.helplist.delete(0, 'end')
for help_item in self.user_helplist:
self.helplist.insert(END, help_item[0])
self.set_add_delete_state()
def var_changed_startup_edit(self, *params):
"Store change to toggle for starting IDLE in the editor or shell."
value = self.startup_edit.get()
changes.add_option('main', 'General', 'editor-on-startup', value)
def var_changed_autosave(self, *params):
"Store change to autosave."
value = self.autosave.get()
changes.add_option('main', 'General', 'autosave', value)
def var_changed_win_width(self, *params):
"Store change to window width."
value = self.win_width.get()
changes.add_option('main', 'EditorWindow', 'width', value)
def var_changed_win_height(self, *params):
"Store change to window height."
value = self.win_height.get()
changes.add_option('main', 'EditorWindow', 'height', value)
def help_source_selected(self, event):
"Handle event for selecting additional help."
self.set_add_delete_state()
def set_add_delete_state(self):
"Toggle the state for the help list buttons based on list entries."
if self.helplist.size() < 1: # No entries in list.
self.button_helplist_edit['state'] = DISABLED
self.button_helplist_remove['state'] = DISABLED
else: # Some entries.
if self.helplist.curselection(): # There currently is a selection.
self.button_helplist_edit['state'] = NORMAL
self.button_helplist_remove['state'] = NORMAL
else: # There currently is not a selection.
self.button_helplist_edit['state'] = DISABLED
self.button_helplist_remove['state'] = DISABLED
def helplist_item_add(self):
"""Handle add button for the help list.
Query for name and location of new help sources and add
them to the list.
"""
help_source = HelpSource(self, 'New Help Source').result
if help_source:
self.user_helplist.append(help_source)
self.helplist.insert(END, help_source[0])
self.update_help_changes()
def helplist_item_edit(self):
"""Handle edit button for the help list.
Query with existing help source information and update
config if the values are changed.
"""
item_index = self.helplist.index(ANCHOR)
help_source = self.user_helplist[item_index]
new_help_source = HelpSource(
self, 'Edit Help Source',
menuitem=help_source[0],
filepath=help_source[1],
).result
if new_help_source and new_help_source != help_source:
self.user_helplist[item_index] = new_help_source
self.helplist.delete(item_index)
self.helplist.insert(item_index, new_help_source[0])
self.update_help_changes()
self.set_add_delete_state() # Selected will be un-selected
def helplist_item_remove(self):
"""Handle remove button for the help list.
Delete the help list item from config.
"""
item_index = self.helplist.index(ANCHOR)
del(self.user_helplist[item_index])
self.helplist.delete(item_index)
self.update_help_changes()
self.set_add_delete_state()
def update_help_changes(self):
"Clear and rebuild the HelpFiles section in changes"
changes['main']['HelpFiles'] = {}
for num in range(1, len(self.user_helplist) + 1):
changes.add_option(
'main', 'HelpFiles', str(num),
';'.join(self.user_helplist[num-1][:2]))
def create_page_extensions(self): def create_page_extensions(self):
"""Part of the config dialog used for configuring IDLE extensions. """Part of the config dialog used for configuring IDLE extensions.
@ -1845,6 +1595,238 @@ class FontPage(Frame):
changes.add_option('main', 'Indent', 'num-spaces', value) changes.add_option('main', 'Indent', 'num-spaces', value)
class GenPage(Frame):
def __init__(self, parent):
super().__init__(parent)
self.create_page_general()
self.load_general_cfg()
def create_page_general(self):
"""Return frame of widgets for General tab.
Enable users to provisionally change general options. Function
load_general_cfg intializes tk variables and helplist using
idleConf. Radiobuttons startup_shell_on and startup_editor_on
set var startup_edit. Radiobuttons save_ask_on and save_auto_on
set var autosave. Entry boxes win_width_int and win_height_int
set var win_width and win_height. Setting var_name invokes the
default callback that adds option to changes.
Helplist: load_general_cfg loads list user_helplist with
name, position pairs and copies names to listbox helplist.
Clicking a name invokes help_source selected. Clicking
button_helplist_name invokes helplist_item_name, which also
changes user_helplist. These functions all call
set_add_delete_state. All but load call update_help_changes to
rewrite changes['main']['HelpFiles'].
Widget Structure: (*) widgets bound to self
frame
frame_run: LabelFrame
startup_title: Label
(*)startup_editor_on: Radiobutton - startup_edit
(*)startup_shell_on: Radiobutton - startup_edit
frame_save: LabelFrame
run_save_title: Label
(*)save_ask_on: Radiobutton - autosave
(*)save_auto_on: Radiobutton - autosave
frame_win_size: LabelFrame
win_size_title: Label
win_width_title: Label
(*)win_width_int: Entry - win_width
win_height_title: Label
(*)win_height_int: Entry - win_height
frame_help: LabelFrame
frame_helplist: Frame
frame_helplist_buttons: Frame
(*)button_helplist_edit
(*)button_helplist_add
(*)button_helplist_remove
(*)helplist: ListBox
scroll_helplist: Scrollbar
"""
self.startup_edit = tracers.add(
IntVar(self), ('main', 'General', 'editor-on-startup'))
self.autosave = tracers.add(
IntVar(self), ('main', 'General', 'autosave'))
self.win_width = tracers.add(
StringVar(self), ('main', 'EditorWindow', 'width'))
self.win_height = tracers.add(
StringVar(self), ('main', 'EditorWindow', 'height'))
# Create widgets:
# Section frames.
frame_run = LabelFrame(self, borderwidth=2, relief=GROOVE,
text=' Startup Preferences ')
frame_save = LabelFrame(self, borderwidth=2, relief=GROOVE,
text=' autosave Preferences ')
frame_win_size = Frame(self, borderwidth=2, relief=GROOVE)
frame_help = LabelFrame(self, borderwidth=2, relief=GROOVE,
text=' Additional Help Sources ')
# frame_run.
startup_title = Label(frame_run, text='At Startup')
self.startup_editor_on = Radiobutton(
frame_run, variable=self.startup_edit, value=1,
text="Open Edit Window")
self.startup_shell_on = Radiobutton(
frame_run, variable=self.startup_edit, value=0,
text='Open Shell Window')
# frame_save.
run_save_title = Label(frame_save, text='At Start of Run (F5) ')
self.save_ask_on = Radiobutton(
frame_save, variable=self.autosave, value=0,
text="Prompt to Save")
self.save_auto_on = Radiobutton(
frame_save, variable=self.autosave, value=1,
text='No Prompt')
# frame_win_size.
win_size_title = Label(
frame_win_size, text='Initial Window Size (in characters)')
win_width_title = Label(frame_win_size, text='Width')
self.win_width_int = Entry(
frame_win_size, textvariable=self.win_width, width=3)
win_height_title = Label(frame_win_size, text='Height')
self.win_height_int = Entry(
frame_win_size, textvariable=self.win_height, width=3)
# frame_help.
frame_helplist = Frame(frame_help)
frame_helplist_buttons = Frame(frame_helplist)
self.helplist = Listbox(
frame_helplist, height=5, takefocus=True,
exportselection=FALSE)
scroll_helplist = Scrollbar(frame_helplist)
scroll_helplist['command'] = self.helplist.yview
self.helplist['yscrollcommand'] = scroll_helplist.set
self.helplist.bind('<ButtonRelease-1>', self.help_source_selected)
self.button_helplist_edit = Button(
frame_helplist_buttons, text='Edit', state=DISABLED,
width=8, command=self.helplist_item_edit)
self.button_helplist_add = Button(
frame_helplist_buttons, text='Add',
width=8, command=self.helplist_item_add)
self.button_helplist_remove = Button(
frame_helplist_buttons, text='Remove', state=DISABLED,
width=8, command=self.helplist_item_remove)
# Pack widgets:
# body.
frame_run.pack(side=TOP, padx=5, pady=5, fill=X)
frame_save.pack(side=TOP, padx=5, pady=5, fill=X)
frame_win_size.pack(side=TOP, padx=5, pady=5, fill=X)
frame_help.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH)
# frame_run.
startup_title.pack(side=LEFT, anchor=W, padx=5, pady=5)
self.startup_shell_on.pack(side=RIGHT, anchor=W, padx=5, pady=5)
self.startup_editor_on.pack(side=RIGHT, anchor=W, padx=5, pady=5)
# frame_save.
run_save_title.pack(side=LEFT, anchor=W, padx=5, pady=5)
self.save_auto_on.pack(side=RIGHT, anchor=W, padx=5, pady=5)
self.save_ask_on.pack(side=RIGHT, anchor=W, padx=5, pady=5)
# frame_win_size.
win_size_title.pack(side=LEFT, anchor=W, padx=5, pady=5)
self.win_height_int.pack(side=RIGHT, anchor=E, padx=10, pady=5)
win_height_title.pack(side=RIGHT, anchor=E, pady=5)
self.win_width_int.pack(side=RIGHT, anchor=E, padx=10, pady=5)
win_width_title.pack(side=RIGHT, anchor=E, pady=5)
# frame_help.
frame_helplist_buttons.pack(side=RIGHT, padx=5, pady=5, fill=Y)
frame_helplist.pack(side=TOP, padx=5, pady=5, expand=TRUE, fill=BOTH)
scroll_helplist.pack(side=RIGHT, anchor=W, fill=Y)
self.helplist.pack(side=LEFT, anchor=E, expand=TRUE, fill=BOTH)
self.button_helplist_edit.pack(side=TOP, anchor=W, pady=5)
self.button_helplist_add.pack(side=TOP, anchor=W)
self.button_helplist_remove.pack(side=TOP, anchor=W, pady=5)
def load_general_cfg(self):
"Load current configuration settings for the general options."
# Set startup state.
self.startup_edit.set(idleConf.GetOption(
'main', 'General', 'editor-on-startup', default=0, type='bool'))
# Set autosave state.
self.autosave.set(idleConf.GetOption(
'main', 'General', 'autosave', default=0, type='bool'))
# Set initial window size.
self.win_width.set(idleConf.GetOption(
'main', 'EditorWindow', 'width', type='int'))
self.win_height.set(idleConf.GetOption(
'main', 'EditorWindow', 'height', type='int'))
# Set additional help sources.
self.user_helplist = idleConf.GetAllExtraHelpSourcesList()
self.helplist.delete(0, 'end')
for help_item in self.user_helplist:
self.helplist.insert(END, help_item[0])
self.set_add_delete_state()
def help_source_selected(self, event):
"Handle event for selecting additional help."
self.set_add_delete_state()
def set_add_delete_state(self):
"Toggle the state for the help list buttons based on list entries."
if self.helplist.size() < 1: # No entries in list.
self.button_helplist_edit['state'] = DISABLED
self.button_helplist_remove['state'] = DISABLED
else: # Some entries.
if self.helplist.curselection(): # There currently is a selection.
self.button_helplist_edit['state'] = NORMAL
self.button_helplist_remove['state'] = NORMAL
else: # There currently is not a selection.
self.button_helplist_edit['state'] = DISABLED
self.button_helplist_remove['state'] = DISABLED
def helplist_item_add(self):
"""Handle add button for the help list.
Query for name and location of new help sources and add
them to the list.
"""
help_source = HelpSource(self, 'New Help Source').result
if help_source:
self.user_helplist.append(help_source)
self.helplist.insert(END, help_source[0])
self.update_help_changes()
def helplist_item_edit(self):
"""Handle edit button for the help list.
Query with existing help source information and update
config if the values are changed.
"""
item_index = self.helplist.index(ANCHOR)
help_source = self.user_helplist[item_index]
new_help_source = HelpSource(
self, 'Edit Help Source',
menuitem=help_source[0],
filepath=help_source[1],
).result
if new_help_source and new_help_source != help_source:
self.user_helplist[item_index] = new_help_source
self.helplist.delete(item_index)
self.helplist.insert(item_index, new_help_source[0])
self.update_help_changes()
self.set_add_delete_state() # Selected will be un-selected
def helplist_item_remove(self):
"""Handle remove button for the help list.
Delete the help list item from config.
"""
item_index = self.helplist.index(ANCHOR)
del(self.user_helplist[item_index])
self.helplist.delete(item_index)
self.update_help_changes()
self.set_add_delete_state()
def update_help_changes(self):
"Clear and rebuild the HelpFiles section in changes"
changes['main']['HelpFiles'] = {}
for num in range(1, len(self.user_helplist) + 1):
changes.add_option(
'main', 'HelpFiles', str(num),
';'.join(self.user_helplist[num-1][:2]))
class VarTrace: class VarTrace:
"""Maintain Tk variables trace state.""" """Maintain Tk variables trace state."""

View file

@ -237,7 +237,7 @@ class KeysTest(unittest.TestCase):
changes.clear() changes.clear()
class GeneralTest(unittest.TestCase): class GenPageTest(unittest.TestCase):
"""Test that general tab widgets enable users to make changes. """Test that general tab widgets enable users to make changes.
Test that widget actions set vars, that var changes add Test that widget actions set vars, that var changes add
@ -245,20 +245,18 @@ class GeneralTest(unittest.TestCase):
""" """
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
d = dialog page = cls.page = dialog.genpage
# Select General tab so can force focus on helplist. dialog.note.select(page)
d.note.select(d.genpage) page.set = page.set_add_delete_state = Func()
# Mask instance methods used by help functions. page.upc = page.update_help_changes = Func()
d.set = d.set_add_delete_state = Func()
d.upc = d.update_help_changes = Func()
@classmethod @classmethod
def tearDownClass(cls): def tearDownClass(cls):
d = dialog page = cls.page
del d.set, d.set_add_delete_state del page.set, page.set_add_delete_state
del d.upc, d.update_help_changes del page.upc, page.update_help_changes
d.helplist.delete(0, 'end') page.helplist.delete(0, 'end')
d.user_helplist.clear() page.user_helplist.clear()
def setUp(self): def setUp(self):
changes.clear() changes.clear()
@ -266,7 +264,7 @@ class GeneralTest(unittest.TestCase):
def test_load_general_cfg(self): def test_load_general_cfg(self):
# Set to wrong values, load, check right values. # Set to wrong values, load, check right values.
eq = self.assertEqual eq = self.assertEqual
d = dialog d = self.page
d.startup_edit.set(1) d.startup_edit.set(1)
d.autosave.set(1) d.autosave.set(1)
d.win_width.set(1) d.win_width.set(1)
@ -283,29 +281,32 @@ class GeneralTest(unittest.TestCase):
eq(d.user_helplist, [('name', 'file', '1')]) eq(d.user_helplist, [('name', 'file', '1')])
def test_startup(self): def test_startup(self):
dialog.startup_editor_on.invoke() d = self.page
d.startup_editor_on.invoke()
self.assertEqual(mainpage, self.assertEqual(mainpage,
{'General': {'editor-on-startup': '1'}}) {'General': {'editor-on-startup': '1'}})
changes.clear() changes.clear()
dialog.startup_shell_on.invoke() d.startup_shell_on.invoke()
self.assertEqual(mainpage, self.assertEqual(mainpage,
{'General': {'editor-on-startup': '0'}}) {'General': {'editor-on-startup': '0'}})
def test_autosave(self): def test_autosave(self):
dialog.save_auto_on.invoke() d = self.page
d.save_auto_on.invoke()
self.assertEqual(mainpage, {'General': {'autosave': '1'}}) self.assertEqual(mainpage, {'General': {'autosave': '1'}})
dialog.save_ask_on.invoke() d.save_ask_on.invoke()
self.assertEqual(mainpage, {'General': {'autosave': '0'}}) self.assertEqual(mainpage, {'General': {'autosave': '0'}})
def test_editor_size(self): def test_editor_size(self):
dialog.win_height_int.insert(0, '1') d = self.page
d.win_height_int.insert(0, '1')
self.assertEqual(mainpage, {'EditorWindow': {'height': '140'}}) self.assertEqual(mainpage, {'EditorWindow': {'height': '140'}})
changes.clear() changes.clear()
dialog.win_width_int.insert(0, '1') d.win_width_int.insert(0, '1')
self.assertEqual(mainpage, {'EditorWindow': {'width': '180'}}) self.assertEqual(mainpage, {'EditorWindow': {'width': '180'}})
def test_source_selected(self): def test_source_selected(self):
d = dialog d = self.page
d.set = d.set_add_delete_state d.set = d.set_add_delete_state
d.upc = d.update_help_changes d.upc = d.update_help_changes
helplist = d.helplist helplist = d.helplist
@ -331,7 +332,7 @@ class GeneralTest(unittest.TestCase):
def test_set_add_delete_state(self): def test_set_add_delete_state(self):
# Call with 0 items, 1 unselected item, 1 selected item. # Call with 0 items, 1 unselected item, 1 selected item.
eq = self.assertEqual eq = self.assertEqual
d = dialog d = self.page
del d.set_add_delete_state # Unmask method. del d.set_add_delete_state # Unmask method.
sad = d.set_add_delete_state sad = d.set_add_delete_state
h = d.helplist h = d.helplist
@ -358,7 +359,7 @@ class GeneralTest(unittest.TestCase):
eq = self.assertEqual eq = self.assertEqual
orig_helpsource = configdialog.HelpSource orig_helpsource = configdialog.HelpSource
hs = configdialog.HelpSource = Func(return_self=True) hs = configdialog.HelpSource = Func(return_self=True)
d = dialog d = self.page
d.helplist.delete(0, 'end') d.helplist.delete(0, 'end')
d.user_helplist.clear() d.user_helplist.clear()
d.set.called = d.upc.called = 0 d.set.called = d.upc.called = 0
@ -385,7 +386,7 @@ class GeneralTest(unittest.TestCase):
eq = self.assertEqual eq = self.assertEqual
orig_helpsource = configdialog.HelpSource orig_helpsource = configdialog.HelpSource
hs = configdialog.HelpSource = Func(return_self=True) hs = configdialog.HelpSource = Func(return_self=True)
d = dialog d = self.page
d.helplist.delete(0, 'end') d.helplist.delete(0, 'end')
d.helplist.insert(0, 'name1') d.helplist.insert(0, 'name1')
d.helplist.selection_set(0) d.helplist.selection_set(0)
@ -412,7 +413,7 @@ class GeneralTest(unittest.TestCase):
def test_helplist_item_remove(self): def test_helplist_item_remove(self):
eq = self.assertEqual eq = self.assertEqual
d = dialog d = self.page
d.helplist.delete(0, 'end') d.helplist.delete(0, 'end')
d.helplist.insert(0, 'name1') d.helplist.insert(0, 'name1')
d.helplist.selection_set(0) d.helplist.selection_set(0)
@ -427,7 +428,7 @@ class GeneralTest(unittest.TestCase):
self.assertTrue(d.upc.called == d.set.called == 1) self.assertTrue(d.upc.called == d.set.called == 1)
def test_update_help_changes(self): def test_update_help_changes(self):
d = dialog d = self.page
del d.update_help_changes del d.update_help_changes
d.user_helplist.clear() d.user_helplist.clear()
d.user_helplist.append(('name1', 'file1')) d.user_helplist.append(('name1', 'file1'))

View file

@ -0,0 +1,2 @@
Factor GenPage(Frame) class from ConfigDialog. The slightly modified tests
continue to pass. Patch by Cheryl Sabella.