mirror of https://github.com/python/cpython.git
bpo-36096: IDLE: Refactor class variables in colorizer (GH-12002)
This commit is contained in:
parent
32f5fdd7f4
commit
ed1deb0719
|
@ -55,26 +55,35 @@ def color_config(text):
|
||||||
class ColorDelegator(Delegator):
|
class ColorDelegator(Delegator):
|
||||||
"""Delegator for syntax highlighting (text coloring).
|
"""Delegator for syntax highlighting (text coloring).
|
||||||
|
|
||||||
Class variables:
|
Instance variables:
|
||||||
after_id: Identifier for scheduled after event.
|
delegate: Delegator below this one in the stack, meaning the
|
||||||
|
one this one delegates to.
|
||||||
|
|
||||||
|
Used to track state:
|
||||||
|
after_id: Identifier for scheduled after event, which is a
|
||||||
|
timer for colorizing the text.
|
||||||
allow_colorizing: Boolean toggle for applying colorizing.
|
allow_colorizing: Boolean toggle for applying colorizing.
|
||||||
colorizing: Boolean flag when colorizing is in process.
|
colorizing: Boolean flag when colorizing is in process.
|
||||||
stop_colorizing: Boolean flag to end an active colorizing
|
stop_colorizing: Boolean flag to end an active colorizing
|
||||||
process.
|
process.
|
||||||
close_when_done: Widget to destroy after colorizing process
|
close_when_done: Widget to destroy after colorizing process
|
||||||
completes (doesn't seem to be used by IDLE).
|
completes (doesn't seem to be used by IDLE).
|
||||||
|
|
||||||
Instance variables:
|
|
||||||
delegate: Delegator below this one in the stack, meaning the
|
|
||||||
one this one delegates to.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
Delegator.__init__(self)
|
Delegator.__init__(self)
|
||||||
|
self.init_state()
|
||||||
self.prog = prog
|
self.prog = prog
|
||||||
self.idprog = idprog
|
self.idprog = idprog
|
||||||
self.LoadTagDefs()
|
self.LoadTagDefs()
|
||||||
|
|
||||||
|
def init_state(self):
|
||||||
|
"Initialize variables that track colorizing state."
|
||||||
|
self.after_id = None
|
||||||
|
self.allow_colorizing = True
|
||||||
|
self.stop_colorizing = False
|
||||||
|
self.colorizing = False
|
||||||
|
|
||||||
def setdelegate(self, delegate):
|
def setdelegate(self, delegate):
|
||||||
"""Set the delegate for this instance.
|
"""Set the delegate for this instance.
|
||||||
|
|
||||||
|
@ -134,11 +143,6 @@ def delete(self, index1, index2=None):
|
||||||
self.delegate.delete(index1, index2)
|
self.delegate.delete(index1, index2)
|
||||||
self.notify_range(index1)
|
self.notify_range(index1)
|
||||||
|
|
||||||
after_id = None
|
|
||||||
allow_colorizing = True
|
|
||||||
stop_colorizing = False
|
|
||||||
colorizing = False
|
|
||||||
|
|
||||||
def notify_range(self, index1, index2=None):
|
def notify_range(self, index1, index2=None):
|
||||||
"Mark text changes for processing and restart colorizing, if active."
|
"Mark text changes for processing and restart colorizing, if active."
|
||||||
self.tag_add("TODO", index1, index2)
|
self.tag_add("TODO", index1, index2)
|
||||||
|
|
|
@ -100,6 +100,45 @@ def test_color_config(self):
|
||||||
eq(text['inactiveselectbackground'], 'gray')
|
eq(text['inactiveselectbackground'], 'gray')
|
||||||
|
|
||||||
|
|
||||||
|
class ColorDelegatorInstantiationTest(unittest.TestCase):
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls):
|
||||||
|
requires('gui')
|
||||||
|
root = cls.root = Tk()
|
||||||
|
root.withdraw()
|
||||||
|
text = cls.text = Text(root)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def tearDownClass(cls):
|
||||||
|
del cls.text
|
||||||
|
cls.root.update_idletasks()
|
||||||
|
cls.root.destroy()
|
||||||
|
del cls.root
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.color = colorizer.ColorDelegator()
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.color.close()
|
||||||
|
self.text.delete('1.0', 'end')
|
||||||
|
self.color.resetcache()
|
||||||
|
del self.color
|
||||||
|
|
||||||
|
def test_init(self):
|
||||||
|
color = self.color
|
||||||
|
self.assertIsInstance(color, colorizer.ColorDelegator)
|
||||||
|
|
||||||
|
def test_init_state(self):
|
||||||
|
# init_state() is called during the instantiation of
|
||||||
|
# ColorDelegator in setUp().
|
||||||
|
color = self.color
|
||||||
|
self.assertIsNone(color.after_id)
|
||||||
|
self.assertTrue(color.allow_colorizing)
|
||||||
|
self.assertFalse(color.colorizing)
|
||||||
|
self.assertFalse(color.stop_colorizing)
|
||||||
|
|
||||||
|
|
||||||
class ColorDelegatorTest(unittest.TestCase):
|
class ColorDelegatorTest(unittest.TestCase):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -109,7 +148,7 @@ def setUpClass(cls):
|
||||||
root.withdraw()
|
root.withdraw()
|
||||||
text = cls.text = Text(root)
|
text = cls.text = Text(root)
|
||||||
cls.percolator = Percolator(text)
|
cls.percolator = Percolator(text)
|
||||||
# Delegator stack = [Delagator(text)]
|
# Delegator stack = [Delegator(text)]
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def tearDownClass(cls):
|
def tearDownClass(cls):
|
||||||
|
@ -122,7 +161,7 @@ def tearDownClass(cls):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.color = colorizer.ColorDelegator()
|
self.color = colorizer.ColorDelegator()
|
||||||
self.percolator.insertfilter(self.color)
|
self.percolator.insertfilter(self.color)
|
||||||
# Calls color.setdelagate(Delagator(text)).
|
# Calls color.setdelegate(Delegator(text)).
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.color.close()
|
self.color.close()
|
||||||
|
@ -131,15 +170,8 @@ def tearDown(self):
|
||||||
self.color.resetcache()
|
self.color.resetcache()
|
||||||
del self.color
|
del self.color
|
||||||
|
|
||||||
def test_init(self):
|
|
||||||
color = self.color
|
|
||||||
self.assertIsInstance(color, colorizer.ColorDelegator)
|
|
||||||
# The following are class variables.
|
|
||||||
self.assertTrue(color.allow_colorizing)
|
|
||||||
self.assertFalse(color.colorizing)
|
|
||||||
|
|
||||||
def test_setdelegate(self):
|
def test_setdelegate(self):
|
||||||
# Called in setUp.
|
# Called in setUp when filter is attached to percolator.
|
||||||
color = self.color
|
color = self.color
|
||||||
self.assertIsInstance(color.delegate, colorizer.Delegator)
|
self.assertIsInstance(color.delegate, colorizer.Delegator)
|
||||||
# It is too late to mock notify_range, so test side effect.
|
# It is too late to mock notify_range, so test side effect.
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Refactor class variables to instance variables in colorizer.
|
Loading…
Reference in New Issue