diff options
author | Tim 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) |
commit | dfbdcb9b47db727a9929a96e6a16fc3af092f158 (patch) | |
tree | 3d7343193d0f6b6f5c642b9979710235e5519a0b | |
parent | 7183abd2f2d455b425ffaf94ea5217ae168b916d (diff) |
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.py | 2 | ||||
-rwxr-xr-x | Experior.Activity/widgetIdentifier.py | 59 |
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): |