Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim McNamara <code@timmcnamara.co.nz>2010-08-15 21:56:51 (GMT)
committer Tim McNamara <code@timmcnamara.co.nz>2010-08-15 21:56:51 (GMT)
commitdfbdcb9b47db727a9929a96e6a16fc3af092f158 (patch)
tree3d7343193d0f6b6f5c642b9979710235e5519a0b
parent7183abd2f2d455b425ffaf94ea5217ae168b916d (diff)
Toolbutton IDs rewrittenHEADmaster
I've rewritten the toolbutton identification algorithm. Hopefully the current implementation is faster and easier to read.
-rw-r--r--Experior.Activity/tests/test_widgetIdentifier_identification.py2
-rwxr-xr-xExperior.Activity/widgetIdentifier.py59
2 files changed, 40 insertions, 21 deletions
diff --git a/Experior.Activity/tests/test_widgetIdentifier_identification.py b/Experior.Activity/tests/test_widgetIdentifier_identification.py
index 1a570f1..ed97bf9 100644
--- a/Experior.Activity/tests/test_widgetIdentifier_identification.py
+++ b/Experior.Activity/tests/test_widgetIdentifier_identification.py
@@ -22,7 +22,7 @@ def test_set_name_matches():
assert W.getIdentifier() == '1'
-B = ButtonIdentifier(gtk.Button('Stop'))
+B = ToolButtonIdentifier(gtk.Button('Stop'))
def test_button_id():
assert B.getIdentifier() == 'Stop'
diff --git a/Experior.Activity/widgetIdentifier.py b/Experior.Activity/widgetIdentifier.py
index d114d38..38a0d5b 100755
--- a/Experior.Activity/widgetIdentifier.py
+++ b/Experior.Activity/widgetIdentifier.py
@@ -163,27 +163,46 @@ class ButtonIdentifier(WidgetIdentifier):
# class ToolButtonIdentifier(WidgetIdentifier):
class ToolButtonIdentifier(ButtonIdentifier):
def getIdentifierSub(self):
- ident = ButtonIdentifier.getIdentifierSub(self)
- widget = self._widget
-
- # Get the identifier using the icon
- if not self.validateIdentifier(ident):
- ico = None
- ico = widget.get_icon_widget()
- if isinstance(ico, Icon):
- ident = ico.props.icon_name
-
- # Label did not give us a good ident, check the icon name
- if not self.validateIdentifier(ident):
- ident = widget.get_icon_name()
-
- # Icon did not give us a good ident, try the label
- if not self.validateIdentifier(ident):
- label = widget.get_label_widget()
- if hasattr(label,"get_text"):
- ident = label.get_text()
+ ident = ButtonIdentifier.getIdentifierSub(self)
+ if self.validateIdentifier(ident): return ident
+ widget = self._widget
- return ident
+ lw = widget.get_label_widget()
+ if lw is not None:
+ try:
+ #hopefully it's just a gtk.Label
+ ident = lw.get_text()
+ except AttributeError:
+ try:
+ ident = identifiers[lw.get_name()](lw)
+ except AttributeError:
+ ident = None
+ if self.validateIdentifier(ident): return ident
+
+ lab = widget.get_label()
+ if lab is not None and self.validateIdentifier(lab):
+ return lab
+
+ #icon_widget
+ iw = widget.get_icon_widget()
+ if iw is not None:
+ try:
+ ident = iw.props.icon_name
+ except AttributeError:
+ try:
+ ident= iw.get_text()
+ except AttributeError:
+ try:
+ ident = identifiers[iw.get_name()](iw)
+ except AttributeError:
+ ident = None
+ if self.validateIdentifier(ident): return ident
+
+ icon_n = widget.get_icon_name()
+ if icon_n is not None:
+ if self.validateIdentifier(icon_n): return icon_n
+
+ return widget.get_stock_id()
class ComboBoxIdentifier(WidgetIdentifier):
def getIdentifierSub(self):