From dfbdcb9b47db727a9929a96e6a16fc3af092f158 Mon Sep 17 00:00:00 2001 From: Tim McNamara Date: Sun, 15 Aug 2010 21:56:51 +0000 Subject: Toolbutton IDs rewritten I've rewritten the toolbutton identification algorithm. Hopefully the current implementation is faster and easier to read. --- 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): -- cgit v0.9.1