Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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):