[pitivi] Set widget names for AT-SPI/accessibility



commit 0fb0c0e0e9995ebed737c4da122e60f59a205191
Author: Jean-FranÃois Fortin Tam <nekohayo gmail com>
Date:   Fri Oct 19 11:04:12 2012 -0400

    Set widget names for AT-SPI/accessibility
    
    This makes our tests easier to develop as we can access widgets by name
    in dogtail scripts and we can look at the structure in sniff/accerciser.

 data/ui/medialibrary.ui     |   51 +++++++++++++++++++++++++++++-------------
 pitivi/mainwindow.py        |   16 +++++++++++++
 pitivi/timeline/timeline.py |    2 +
 pitivi/viewer.py            |    9 +++++++
 4 files changed, 62 insertions(+), 16 deletions(-)
---
diff --git a/data/ui/medialibrary.ui b/data/ui/medialibrary.ui
index 1c86748..f1e066f 100644
--- a/data/ui/medialibrary.ui
+++ b/data/ui/medialibrary.ui
@@ -6,18 +6,26 @@
     <property name="can_focus">False</property>
     <property name="show_arrow">False</property>
     <property name="icon_size">1</property>
+    <child internal-child="accessible">
+      <object class="AtkObject" id="medialibrary_toolbar-atkobject">
+        <property name="AtkObject::accessible-name">medialibrary_toolbar</property>
+      </object>
+    </child>
     <child>
       <object class="GtkToolButton" id="media_import_button">
-        <property name="use_action_appearance">False</property>
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="has_tooltip">True</property>
         <property name="tooltip_markup" translatable="yes">Add media files to your project</property>
-        <property name="use_action_appearance">False</property>
         <property name="is_important">True</property>
         <property name="label" translatable="yes">Import</property>
         <property name="use_underline">True</property>
         <property name="icon_name">list-add</property>
+        <child internal-child="accessible">
+          <object class="AtkObject" id="media_import_button-atkobject">
+            <property name="AtkObject::accessible-name">media_import_button</property>
+          </object>
+        </child>
         <signal name="clicked" handler="_importSourcesCb" swapped="no"/>
       </object>
       <packing>
@@ -27,17 +35,20 @@
     </child>
     <child>
       <object class="GtkToolButton" id="media_remove_button">
-        <property name="use_action_appearance">False</property>
         <property name="visible">True</property>
         <property name="sensitive">False</property>
         <property name="can_focus">False</property>
         <property name="has_tooltip">True</property>
         <property name="tooltip_markup" translatable="yes">Remove selected clips from the project</property>
         <property name="tooltip_text" translatable="yes">Remove selected clips from the project</property>
-        <property name="use_action_appearance">False</property>
         <property name="label" translatable="yes">_Remove from Project</property>
         <property name="use_underline">True</property>
         <property name="icon_name">list-remove</property>
+        <child internal-child="accessible">
+          <object class="AtkObject" id="media_remove_button-atkobject">
+            <property name="AtkObject::accessible-name">media_remove_button</property>
+          </object>
+        </child>
         <signal name="clicked" handler="_removeClickedCb" swapped="no"/>
       </object>
       <packing>
@@ -47,16 +58,19 @@
     </child>
     <child>
       <object class="GtkToolButton" id="media_props_button">
-        <property name="use_action_appearance">False</property>
         <property name="visible">True</property>
         <property name="sensitive">False</property>
         <property name="can_focus">False</property>
         <property name="has_tooltip">True</property>
         <property name="tooltip_markup" translatable="yes">Clip Properties...</property>
         <property name="tooltip_text" translatable="yes">Clip Properties...</property>
-        <property name="use_action_appearance">False</property>
         <property name="use_underline">True</property>
         <property name="icon_name">document-properties</property>
+        <child internal-child="accessible">
+          <object class="AtkObject" id="media_props_button-atkobject">
+            <property name="AtkObject::accessible-name">media_props_button</property>
+          </object>
+        </child>
         <signal name="clicked" handler="_clipPropertiesCb" swapped="no"/>
       </object>
       <packing>
@@ -66,17 +80,20 @@
     </child>
     <child>
       <object class="GtkToolButton" id="media_insert_button">
-        <property name="use_action_appearance">False</property>
         <property name="visible">True</property>
         <property name="sensitive">False</property>
         <property name="can_focus">False</property>
         <property name="has_tooltip">True</property>
         <property name="tooltip_markup" translatable="yes">Insert the selected clips at the end of the timeline</property>
         <property name="tooltip_text" translatable="yes">Insert the selected clips at the end of the timeline</property>
-        <property name="use_action_appearance">False</property>
         <property name="label" translatable="yes">Insert at _End of Timeline</property>
         <property name="use_underline">True</property>
         <property name="icon_name">insert-object</property>
+        <child internal-child="accessible">
+          <object class="AtkObject" id="media_insert_button-atkobject">
+            <property name="AtkObject::accessible-name">media_insert_button</property>
+          </object>
+        </child>
         <signal name="clicked" handler="_insertEndCb" swapped="no"/>
       </object>
       <packing>
@@ -86,13 +103,16 @@
     </child>
     <child>
       <object class="GtkToggleToolButton" id="media_listview_button">
-        <property name="use_action_appearance">False</property>
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="tooltip_markup" translatable="yes">Show clips as a detailed list</property>
-        <property name="use_action_appearance">False</property>
         <property name="use_underline">True</property>
         <property name="icon_name">view-list-symbolic</property>
+        <child internal-child="accessible">
+          <object class="AtkObject" id="media_listview_button-atkobject">
+            <property name="AtkObject::accessible-name">media_listview_button</property>
+          </object>
+        </child>
         <signal name="toggled" handler="_toggleViewTypeCb" swapped="no"/>
       </object>
       <packing>
@@ -102,10 +122,8 @@
     </child>
     <child>
       <object class="GtkToolItem" id="toolbutton7">
-        <property name="use_action_appearance">False</property>
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="use_action_appearance">False</property>
         <child>
           <object class="GtkEntry" id="media_search_entry">
             <property name="visible">True</property>
@@ -120,6 +138,11 @@
             <property name="secondary_icon_tooltip_text" translatable="yes">Show all clips</property>
             <property name="secondary_icon_tooltip_markup" translatable="yes">Show all clips</property>
             <property name="placeholder_text">Search...</property>
+            <child internal-child="accessible">
+              <object class="AtkObject" id="media_search_entry-atkobject">
+                <property name="AtkObject::accessible-name">media_search_entry</property>
+              </object>
+            </child>
             <signal name="changed" handler="_searchEntryChangedCb" swapped="no"/>
             <signal name="focus-in-event" handler="_disableKeyboardShortcutsCb" swapped="no"/>
             <signal name="focus-out-event" handler="_enableKeyboardShortcutsCb" swapped="no"/>
@@ -175,11 +198,9 @@
         <property name="layout_style">end</property>
         <child>
           <object class="GtkButton" id="view_error_button">
-            <property name="use_action_appearance">False</property>
             <property name="visible">True</property>
             <property name="can_focus">True</property>
             <property name="receives_default">True</property>
-            <property name="use_action_appearance">False</property>
             <signal name="clicked" handler="_viewErrorsButtonClickedCb" swapped="no"/>
           </object>
           <packing>
@@ -191,11 +212,9 @@
         <child>
           <object class="GtkButton" id="warnings_dismiss_button">
             <property name="label">gtk-close</property>
-            <property name="use_action_appearance">False</property>
             <property name="visible">True</property>
             <property name="can_focus">True</property>
             <property name="receives_default">True</property>
-            <property name="use_action_appearance">False</property>
             <property name="use_stock">True</property>
             <signal name="clicked" handler="_warningInfoBarDismissedCb" swapped="no"/>
           </object>
diff --git a/pitivi/mainwindow.py b/pitivi/mainwindow.py
index dd681e3..22edc63 100644
--- a/pitivi/mainwindow.py
+++ b/pitivi/mainwindow.py
@@ -356,6 +356,8 @@ class PitiviMainWindow(Gtk.Window, Loggable):
         -------- Context tabs
         ------ Viewer (upper-right)
         ---- Timeline (bottom half)
+
+        The full hierarchy is also visible with accessibility tools like "sniff"
         """
         self.set_title("%s" % (APPNAME))
         self.set_icon_name("pitivi")
@@ -446,6 +448,20 @@ class PitiviMainWindow(Gtk.Window, Loggable):
         self.timeline_ui.show()
         ttb.show()
 
+        # Identify widgets for AT-SPI, making our test suite easier to develop
+        # These will show up in sniff, accerciser, etc.
+        self.get_accessible().set_name("main window")
+        self.toolbar.get_accessible().set_name("main toolbar")
+        self.vpaned.get_accessible().set_name("contents")
+        self.mainhpaned.get_accessible().set_name("upper half")
+        timeline_area.get_accessible().set_name("lower half")
+        self.secondhpaned.get_accessible().set_name("tabs")
+        self.main_tabs.get_accessible().set_name("primary tabs")
+        self.context_tabs.get_accessible().set_name("secondary tabs")
+        self.viewer.get_accessible().set_name("viewer")
+        self.timeline_ui.get_accessible().set_name("timeline ui")
+        ttb.get_accessible().set_name("timeline toolbar")
+
         # Restore settings (or set defaults) for position and visibility
         height = -1
         width = -1
diff --git a/pitivi/timeline/timeline.py b/pitivi/timeline/timeline.py
index d1a7a48..8d6ecd6 100644
--- a/pitivi/timeline/timeline.py
+++ b/pitivi/timeline/timeline.py
@@ -1026,6 +1026,7 @@ class Timeline(Gtk.Table, Loggable, Zoomable):
 
         # timeline ruler
         self.ruler = ruler.ScaleRuler(self.app, self.hadj)
+        self.ruler.get_accessible().set_name("timeline ruler")  # used for dogtail
         self.ruler.set_size_request(0, 25)
         self.ruler.connect("key-press-event", self._keyPressEventCb)
         rulerframe = Gtk.Frame()
@@ -1035,6 +1036,7 @@ class Timeline(Gtk.Table, Loggable, Zoomable):
 
         # proportional timeline
         self._canvas = TimelineCanvas(self.app)
+        self._canvas.get_accessible().set_name("timeline canvas")  # used for dogtail
         self._root_item = self._canvas.get_root_item()
         self.attach(self._canvas, 1, 2, 1, 2)
 
diff --git a/pitivi/viewer.py b/pitivi/viewer.py
index be42b10..ae77027 100644
--- a/pitivi/viewer.py
+++ b/pitivi/viewer.py
@@ -247,6 +247,15 @@ class PitiviViewer(Gtk.VBox, Loggable):
         bbox.pack_start(self.timecode_entry, False, 10, 0)
         self._haveUI = True
 
+        # Identify widgets for AT-SPI, making our test suite easier to develop
+        # These will show up in sniff, accerciser, etc.
+        self.goToStart_button.get_accessible().set_name("goToStart_button")
+        self.back_button.get_accessible().set_name("back_button")
+        self.playpause_button.get_accessible().set_name("playpause_button")
+        self.forward_button.get_accessible().set_name("forward_button")
+        self.goToEnd_button.get_accessible().set_name("goToEnd_button")
+        self.timecode_entry.get_accessible().set_name("timecode_entry")
+
         screen = Gdk.Screen.get_default()
         height = screen.get_height()
         if height >= 800:



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]