dogtail File conflict between and another package.



Greetings.
It has been brought to my attention that a file from the dogtail package 
conflicts with another totally unrelated package. The usr/bin/sniff 
file also exists in the ksniffer package, which is a network sniffing 
application for KDE.

In Ubuntu, I have renamed the sniff command to dogtail-sniff, in version 
0.6.1 of the package, but I am 
wondering if you would consider renaming this in your official releases? 
Doing so would ultimately make work easier for those of us who maintain 
the packages in distributions, as we don't need to keep on making new 
patches for every new release.

Patches are attached.

Thanks for your time.
--
Luke Yelavich
GPG key: 0xD06320CE
	 (http://www.themuso.com/themuso-gpg-key.txt)
Email & MSN: themuso themuso com
Jabber: themuso jabber org au
diff -Nur dogtail-0.6.1/sniff/dogtail-sniff dogtail-0.6.1.new/sniff/dogtail-sniff
--- dogtail-0.6.1/sniff/dogtail-sniff	1970-01-01 10:00:00.000000000 +1000
+++ dogtail-0.6.1.new/sniff/dogtail-sniff	2006-09-27 07:17:19.000000000 +1000
@@ -0,0 +1,406 @@
+#!/usr/bin/env python
+# -*- coding: UTF8 -*-
+
+appName = 'Sniff'
+appAuthors = ['Zack Cerza <zcerza redhat com>', 'David Malcolm <dmalcolm redhat com']
+
+from dogtail.utils import checkForA11yInteractively
+checkForA11yInteractively()
+
+from dogtail import tree
+from dogtail import utils
+import gobject
+import gnome
+import atspi
+program = gnome.program_init(appName, '0.1')
+import gtk.glade
+
+import os
+if os.path.exists('sniff.glade'):
+    x = gtk.glade.XML('sniff.glade')
+else:
+    import sys
+    exec_root = sys.argv[0].split("/bin/")[0]
+    if exec_root[0] is not '/':
+        exec_root = "/usr"
+    x = gtk.glade.XML(exec_root + '/share/dogtail/glade/sniff.glade')
+
+sniff = x.get_widget(appName)
+
+try:
+    sniff.set_icon_from_file('../icons/dogtail-head.svg')
+except:
+    sniff.set_icon_from_file('/usr/share/icons/hicolor/scalable/apps/dogtail-head.svg')
+
+view = x.get_widget('treeTreeView')
+
+nameTextLabel = x.get_widget('nameTextLabel')
+roleNameTextLabel = x.get_widget('roleNameTextLabel')
+descTextLabel = x.get_widget('descTextLabel')
+actionsTextLabel = x.get_widget('actionsTextLabel')
+textLabel = x.get_widget('textLabel')
+textTextView = x.get_widget('textTextView')
+
+# Indices of the various fields of the tree model:
+MODEL_FIELD_NODE = 0
+MODEL_FIELD_NAME = 1
+MODEL_FIELD_ROLENAME = 2
+MODEL_FIELD_DESCRIPTION = 3
+MODEL_FIELD_PIXBUF = 4
+
+def quit(*args):
+    gtk.main_quit()
+
+def expandAll(widget, *args):
+    global view
+    if args[0] == True: view.expand_all()
+    elif args[0] == False: view.collapse_all()
+
+def showAbout(*args):
+    about = gtk.AboutDialog()
+    about.set_name(appName)
+    about.set_authors(appAuthors)
+    about.set_comments('Explore your desktop with Dogtail')
+    about.set_website('http://people.redhat.com/zcerza/dogtail/')
+    about.show_all()
+
+def connectSignals():
+    sniff.connect('delete_event', quit)
+
+    quit1 = x.get_widget('quit1')
+    quit1.connect('activate', quit)
+
+    expand_all1 = x.get_widget('expand_all1')
+    expand_all1.connect('activate', expandAll, True)
+    collapse_all1 = x.get_widget('collapse_all1')
+    collapse_all1.connect('activate', expandAll, False)
+
+    about1 = x.get_widget('about1')
+    about1.connect('activate', showAbout)
+
+    refreshMenuItem = x.get_widget('refresh1')
+    refreshMenuItem.connect('activate', refreshAll)
+
+    view.connect('button-press-event', buttonPress)
+    view.connect('row-expanded', rowExpanded)
+    view.connect('row-collapsed', rowCollapsed)
+    treeSelection = view.get_selection()
+    treeSelection.connect('changed', selectionChanged)
+
+def buttonPress(widget, event, *userParams):
+    global model
+    try: path, treeViewCol, relX, relY = \
+                    view.get_path_at_pos(int(event.x), int(event.y))
+    except TypeError: return
+    node = model[path][0]
+    setUpTable(node)
+
+    if event.button == 3:
+        menu = gtk.Menu()
+        menuItem = None
+        if node.actions:
+            for action in node.actions.values():
+                menuItem = gtk.MenuItem(action.name.capitalize())
+                menuItem.connect('activate', menuItemActivate, action.do)
+                menuItem.show()
+                menu.append(menuItem)
+        if not menuItem: return
+        menu.show()
+        menu.popup(None, None, None, event.button, event.time)
+
+# I hate globals too. I think we need one here, though.
+# Make it a non-integer, so we can know if it has been set yet (later).
+textTextViewBufferChangedLastHandlerID = 3.141592654
+
+def setUpTable(node):
+    """Generic code for setting up the table under the TreeView"""
+    nameTextLabel.set_text(node.name)
+    roleNameTextLabel.set_text(node.roleName)
+    descTextLabel.set_text(node.description)
+    if node.actions:
+        str = ''
+        for action in node.actions.values(): str = ' '.join([str, action.name]).strip()
+        actionsTextLabel.set_text(str)
+
+    global textTextViewBufferChangedLastHandlerID
+    # Have we connected this signal yet? If so, disconnect it before proceeding.
+    if int(textTextViewBufferChangedLastHandlerID) == \
+            textTextViewBufferChangedLastHandlerID:
+        textTextView.get_buffer().disconnect(textTextViewBufferChangedLastHandlerID)
+
+    if node.text is not None:
+        buffer = textTextView.get_buffer()
+        buffer.set_text(node.text)
+        # Eeew! I'm touching tree's privates.
+        if node._Node__editableText:
+            # Remember the handler ID of this connection.
+            textTextView.set_sensitive(True)
+            textTextViewBufferChangedLastHandlerID = \
+                    buffer.connect('changed', changeText, node)
+        else:
+            textTextView.set_sensitive(False)
+    else:
+        textTextView.get_buffer().set_text('')
+        textTextView.set_sensitive(False)
+
+def changeText(textBuffer, node):
+    node.text = textBuffer.get_text(textBuffer.get_start_iter(), \
+                    textBuffer.get_end_iter())
+
+def rowExpanded(treeview, iter, path, *userParams):
+    global model
+    row = model[path]
+    childRows = row.iterchildren()
+    node = row[0]
+    childNodes = node.children
+    for childNode in childNodes:
+        childRow = childRows.next()
+        addChildren(childNode, childRow.iter)
+
+def rowCollapsed(treeview, iter, path, *userParams):
+    global model
+    row = model[path]
+    childRows = row.iterchildren()
+    try:
+        while True:
+            childRow = childRows.next()
+            grandChildRows = childRow.iterchildren()
+            try:
+                while True:
+                    grandChildRow = grandChildRows.next()
+                    model.remove(grandChildRow.iter)
+            except StopIteration: pass
+    except StopIteration: pass
+
+def selectionChanged(treeSelection):
+    # print "selection changed"
+    node = getSelectedNode()
+    if node: node.blink()
+
+def getSelectedNode():
+    global model
+    global view
+    (store, iter) = view.get_selection().get_selected()
+    if not iter: node = None
+    else: node = model[iter][0]
+    return node
+
+def menuItemActivate(menuItem, *userParams):
+    method = userParams[0]
+    if method: method()
+
+def refreshAll(menuItem, *userParams):
+    global model
+    resetModel()
+
+def addNodeToModel(node, parentInTreeView = None):
+    global model
+    iter = model.insert_before(parentInTreeView, None)
+    model.set_value(iter, MODEL_FIELD_NODE, node)
+    return iter
+
+def addChildren(node, parentInTreeView = None):
+    global model
+    for child in node.children:
+        iter = addNodeToModel(child, parentInTreeView)
+
+def showNode(node, parentInTreeView = None):
+    global model
+    iter = addNodeToModel(node, parentInTreeView)
+    addChildren(node, iter)
+
+def resetModel():
+    global model
+    model.clear()
+    showNode(tree.root)
+    rootPath = model.get_path(model.get_iter_root())
+    view.expand_row(rootPath, False)
+
+def loadIcon(iconName):
+    try:
+        pixbuf = gtk.gdk.pixbuf_new_from_file('icons/' + iconName)
+    except gobject.GError:
+        iconName = '/usr/share/dogtail/icons/' + iconName
+        pixbuf = gtk.gdk.pixbuf_new_from_file(iconName)
+    return pixbuf
+
+button_xpm = loadIcon("button.xpm")
+checkbutton_xpm = loadIcon("checkbutton.xpm")
+checkmenuitem_xpm = loadIcon("checkmenuitem.xpm")
+colorselection_xpm = loadIcon("colorselection.xpm")
+combo_xpm = loadIcon("combo.xpm")
+dialog_xpm = loadIcon("dialog.xpm")
+image_xpm = loadIcon("image.xpm")
+label_xpm = loadIcon("label.xpm")
+menubar_xpm = loadIcon("menubar.xpm")
+menuitem_xpm = loadIcon("menuitem.xpm")
+notebook_xpm = loadIcon("notebook.xpm")
+scrolledwindow_xpm = loadIcon("scrolledwindow.xpm")
+spinbutton_xpm = loadIcon("spinbutton.xpm")
+statusbar_xpm = loadIcon("statusbar.xpm")
+table_xpm = loadIcon("table.xpm")
+text_xpm = loadIcon("text.xpm")
+toolbar_xpm = loadIcon("toolbar.xpm")
+tree_xpm = loadIcon("tree.xpm")
+treeitem_xpm = loadIcon("treeitem.xpm")
+unknown_xpm = loadIcon("unknown.xpm")
+viewport_xpm = loadIcon("viewport.xpm")
+vscrollbar_xpm = loadIcon("vscrollbar.xpm")
+vseparator_xpm = loadIcon("vseparator.xpm")
+window_xpm = loadIcon("window.xpm")
+
+iconForRole = { \
+        atspi.SPI_ROLE_INVALID : None, \
+        atspi.SPI_ROLE_ACCEL_LABEL : label_xpm, \
+        atspi.SPI_ROLE_ALERT : None, \
+        atspi.SPI_ROLE_ANIMATION : None, \
+        atspi.SPI_ROLE_ARROW : None, \
+        atspi.SPI_ROLE_CALENDAR : None, \
+        atspi.SPI_ROLE_CANVAS : None, \
+        atspi.SPI_ROLE_CHECK_BOX : checkbutton_xpm, \
+        atspi.SPI_ROLE_CHECK_MENU_ITEM : checkmenuitem_xpm, \
+        atspi.SPI_ROLE_COLOR_CHOOSER : colorselection_xpm, \
+        atspi.SPI_ROLE_COLUMN_HEADER : None, \
+        atspi.SPI_ROLE_COMBO_BOX : combo_xpm, \
+        atspi.SPI_ROLE_DATE_EDITOR : None, \
+        atspi.SPI_ROLE_DESKTOP_ICON : None, \
+        atspi.SPI_ROLE_DESKTOP_FRAME : None, \
+        atspi.SPI_ROLE_DIAL : None, \
+        atspi.SPI_ROLE_DIALOG : dialog_xpm, \
+        atspi.SPI_ROLE_DIRECTORY_PANE : None, \
+        atspi.SPI_ROLE_DRAWING_AREA : None, \
+        atspi.SPI_ROLE_FILE_CHOOSER : None, \
+        atspi.SPI_ROLE_FILLER : None, \
+        atspi.SPI_ROLE_FONT_CHOOSER : None, \
+        atspi.SPI_ROLE_FRAME : window_xpm, \
+        atspi.SPI_ROLE_GLASS_PANE : None, \
+        atspi.SPI_ROLE_HTML_CONTAINER : None, \
+        atspi.SPI_ROLE_ICON : image_xpm, \
+        atspi.SPI_ROLE_IMAGE : image_xpm, \
+        atspi.SPI_ROLE_INTERNAL_FRAME : None, \
+        atspi.SPI_ROLE_LABEL : label_xpm, \
+        atspi.SPI_ROLE_LAYERED_PANE : viewport_xpm, \
+        atspi.SPI_ROLE_LIST : None, \
+        atspi.SPI_ROLE_LIST_ITEM : None, \
+        atspi.SPI_ROLE_MENU : menuitem_xpm, \
+        atspi.SPI_ROLE_MENU_BAR : menubar_xpm, \
+        atspi.SPI_ROLE_MENU_ITEM : menuitem_xpm, \
+        atspi.SPI_ROLE_OPTION_PANE : None, \
+        atspi.SPI_ROLE_PAGE_TAB : notebook_xpm, \
+        atspi.SPI_ROLE_PAGE_TAB_LIST : notebook_xpm, \
+        atspi.SPI_ROLE_PANEL : viewport_xpm, \
+        atspi.SPI_ROLE_PASSWORD_TEXT : None, \
+        atspi.SPI_ROLE_POPUP_MENU : None, \
+        atspi.SPI_ROLE_PROGRESS_BAR : None, \
+        atspi.SPI_ROLE_PUSH_BUTTON : button_xpm, \
+        atspi.SPI_ROLE_RADIO_BUTTON : None, \
+        atspi.SPI_ROLE_RADIO_MENU_ITEM : None, \
+        atspi.SPI_ROLE_ROOT_PANE : viewport_xpm, \
+        atspi.SPI_ROLE_ROW_HEADER : None, \
+        atspi.SPI_ROLE_SCROLL_BAR : vscrollbar_xpm, \
+        atspi.SPI_ROLE_SCROLL_PANE : scrolledwindow_xpm, \
+        atspi.SPI_ROLE_SEPARATOR : vseparator_xpm, \
+        atspi.SPI_ROLE_SLIDER : None, \
+        atspi.SPI_ROLE_SPIN_BUTTON : spinbutton_xpm, \
+        atspi.SPI_ROLE_SPLIT_PANE : None, \
+        atspi.SPI_ROLE_STATUS_BAR : statusbar_xpm, \
+        atspi.SPI_ROLE_TABLE : table_xpm, \
+        atspi.SPI_ROLE_TABLE_CELL : treeitem_xpm, \
+        atspi.SPI_ROLE_TABLE_COLUMN_HEADER : None, \
+        atspi.SPI_ROLE_TABLE_ROW_HEADER : None, \
+        atspi.SPI_ROLE_TEAROFF_MENU_ITEM : None, \
+        atspi.SPI_ROLE_TERMINAL : None, \
+        atspi.SPI_ROLE_TEXT : text_xpm, \
+        atspi.SPI_ROLE_TOGGLE_BUTTON : None, \
+        atspi.SPI_ROLE_TOOL_BAR : toolbar_xpm, \
+        atspi.SPI_ROLE_TOOL_TIP : None, \
+        atspi.SPI_ROLE_TREE : tree_xpm, \
+        atspi.SPI_ROLE_TREE_TABLE : tree_xpm, \
+        atspi.SPI_ROLE_UNKNOWN : unknown_xpm, \
+        atspi.SPI_ROLE_VIEWPORT : viewport_xpm, \
+        atspi.SPI_ROLE_WINDOW : window_xpm, \
+        atspi.SPI_ROLE_EXTENDED : None, \
+        atspi.SPI_ROLE_HEADER : None, \
+        atspi.SPI_ROLE_FOOTER : None, \
+        atspi.SPI_ROLE_PARAGRAPH : None, \
+        atspi.SPI_ROLE_RULER : None, \
+        atspi.SPI_ROLE_APPLICATION : None, \
+        atspi.SPI_ROLE_AUTOCOMPLETE : None, \
+        atspi.SPI_ROLE_EDITBAR : None, \
+        atspi.SPI_ROLE_EMBEDDED : None, \
+        atspi.SPI_ROLE_LAST_DEFINED: None }
+
+def getPixbufForNode(node):
+    theme = gtk.icon_theme_get_default()
+    try:
+        if node.role==atspi.SPI_ROLE_APPLICATION:
+            # FIXME: Use the pixbuf from libwcnk (if available):
+            # wnckApp = Application(node).getWnckApplication()
+            # if wnckApp
+            try: return theme.load_icon(node.name, 24, gtk.ICON_LOOKUP_USE_BUILTIN)
+            except gobject.GError:
+                try: return theme.load_icon(node.name.lower(), 24, gtk.ICON_LOOKUP_USE_BUILTIN)
+                except gobject.GError: return None
+        elif node.parent:
+            return iconForRole[node.role]
+        else:
+            return theme.load_icon("gnome-fs-desktop", 24, gtk.ICON_LOOKUP_USE_BUILTIN)
+    except atspi.SpiException:
+        return theme.load_icon("gtk-dialog-error", 24, gtk.ICON_LOOKUP_USE_BUILTIN)
+
+def getNodeAttr(column, cell, model, iter, attr):
+    node = model.get_value(iter, MODEL_FIELD_NODE)
+    try:
+        text = getattr(node, attr)
+    except atspi.SpiException:
+        text = "(broken node)"
+    cell.set_property('text', text)
+
+def getCellPixbufForNode(column, cell, model, iter):
+    node = model.get_value(iter, MODEL_FIELD_NODE)
+    pixbuf = getPixbufForNode(node)
+    cell.set_property('pixbuf', pixbuf)
+
+def main():
+    connectSignals()
+
+    nameTextLabel.set_text('')
+    roleNameTextLabel.set_text('')
+    descTextLabel.set_text('')
+    actionsTextLabel.set_text('')
+    textTextView.set_sensitive(False)
+    textTextView.get_buffer().set_text('')
+
+    global sniff, view, model
+
+    col = gtk.TreeViewColumn()
+    cellRenderer = gtk.CellRendererPixbuf()
+    col.pack_start(cellRenderer, expand = False)
+    col.set_cell_data_func(cellRenderer, getCellPixbufForNode)
+
+    cellRenderer = gtk.CellRendererText()
+    col.pack_end(cellRenderer, expand = False)
+    col.set_cell_data_func(cellRenderer, getNodeAttr, 'name')
+
+    col.set_title('Name')
+
+    view.insert_column(col, -1)
+    #view.insert_column_with_data_func(-1, "Role Name", \
+    #               gtk.CellRendererText(), getNodeAttr, 'roleName')
+    #view.insert_column_with_data_func(-1, "Description", \
+    #               gtk.CellRendererText(), getNodeAttr, 'description')
+    for column in view.get_columns():
+        column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
+        column.set_resizable(True)
+    view.show()
+    sniff.show_all ()
+
+    model = gtk.TreeStore(gobject.TYPE_PYOBJECT, gobject.TYPE_STRING, \
+                    gobject.TYPE_STRING, gobject.TYPE_STRING)
+    view.set_model(model)
+
+    resetModel()
+
+    gtk.main()
+
+if __name__ == '__main__': main()
diff -Nur dogtail-0.6.1/sniff/dogtail-sniff.desktop dogtail-0.6.1.new/sniff/dogtail-sniff.desktop
--- dogtail-0.6.1/sniff/dogtail-sniff.desktop	1970-01-01 10:00:00.000000000 +1000
+++ dogtail-0.6.1.new/sniff/dogtail-sniff.desktop	2006-08-22 04:03:24.000000000 +1000
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=AT-SPI Browser
+Name[en_CA]=AT-SPI Browser
+Name[en_GB]=AT-SPI Browser
+Comment=Browse your Assistive Technology-enabled desktop
+Comment[en_CA]=Browse your Assistive Technology-enabled desktop
+Comment[en_GB]=Browse your Assistive Technology-enabled desktop
+Exec=sniff
+Terminal=false
+Type=Application
+Icon=dogtail-head.svg
+StartupNotify=true
+Categories=Application;Development;
diff -Nur dogtail-0.6.1/sniff/dogtail-sniff.glade dogtail-0.6.1.new/sniff/dogtail-sniff.glade
--- dogtail-0.6.1/sniff/dogtail-sniff.glade	1970-01-01 10:00:00.000000000 +1000
+++ dogtail-0.6.1.new/sniff/dogtail-sniff.glade	2006-04-17 16:20:07.000000000 +1000
@@ -0,0 +1,498 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd";>
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkWindow" id="Sniff">
+  <property name="width_request">325</property>
+  <property name="height_request">475</property>
+  <property name="visible">True</property>
+  <property name="title" translatable="yes">AT-SPI Browser</property>
+  <property name="type">GTK_WINDOW_TOPLEVEL</property>
+  <property name="window_position">GTK_WIN_POS_NONE</property>
+  <property name="modal">False</property>
+  <property name="resizable">True</property>
+  <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
+  <property name="urgency_hint">False</property>
+
+  <child>
+    <widget class="GtkVBox" id="vbox1">
+      <property name="visible">True</property>
+      <property name="homogeneous">False</property>
+      <property name="spacing">0</property>
+
+      <child>
+	<widget class="GtkMenuBar" id="menubar1">
+	  <property name="visible">True</property>
+	  <property name="pack_direction">GTK_PACK_DIRECTION_LTR</property>
+	  <property name="child_pack_direction">GTK_PACK_DIRECTION_LTR</property>
+
+	  <child>
+	    <widget class="GtkMenuItem" id="sniff1">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">_Sniff</property>
+	      <property name="use_underline">True</property>
+
+	      <child>
+		<widget class="GtkMenu" id="sniff1_menu">
+
+		  <child>
+		    <widget class="GtkImageMenuItem" id="quit1">
+		      <property name="visible">True</property>
+		      <property name="stock_item">GNOMEUIINFO_MENU_EXIT_ITEM</property>
+		      <signal name="activate" handler="on_quit1_activate" last_modification_time="Tue, 26 Jul 2005 14:21:44 GMT"/>
+		    </widget>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	  </child>
+
+	  <child>
+	    <widget class="GtkMenuItem" id="view1">
+	      <property name="visible">True</property>
+	      <property name="stock_item">GNOMEUIINFO_MENU_VIEW_TREE</property>
+
+	      <child>
+		<widget class="GtkMenu" id="view1_menu">
+
+		  <child>
+		    <widget class="GtkImageMenuItem" id="refresh1">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_Refresh</property>
+		      <property name="use_underline">True</property>
+		      <signal name="activate" handler="on_refresh1_activate" last_modification_time="Wed, 27 Jul 2005 16:21:27 GMT"/>
+		      <accelerator key="R" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+		      <child internal-child="image">
+			<widget class="GtkImage" id="image1">
+			  <property name="visible">True</property>
+			  <property name="stock">gtk-refresh</property>
+			  <property name="icon_size">1</property>
+			  <property name="xalign">0.5</property>
+			  <property name="yalign">0.5</property>
+			  <property name="xpad">0</property>
+			  <property name="ypad">0</property>
+			</widget>
+		      </child>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkSeparatorMenuItem" id="separator3">
+		      <property name="visible">True</property>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkMenuItem" id="expand_all1">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_Expand All</property>
+		      <property name="use_underline">True</property>
+		      <signal name="activate" handler="on_expand_all1_activate" last_modification_time="Wed, 27 Jul 2005 18:41:34 GMT"/>
+		    </widget>
+		  </child>
+
+		  <child>
+		    <widget class="GtkMenuItem" id="collapse_all1">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_Collapse All</property>
+		      <property name="use_underline">True</property>
+		      <signal name="activate" handler="on_collapse_all1_activate" last_modification_time="Wed, 27 Jul 2005 18:40:57 GMT"/>
+		    </widget>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	  </child>
+
+	  <child>
+	    <widget class="GtkMenuItem" id="help1">
+	      <property name="visible">True</property>
+	      <property name="stock_item">GNOMEUIINFO_MENU_HELP_TREE</property>
+
+	      <child>
+		<widget class="GtkMenu" id="help1_menu">
+
+		  <child>
+		    <widget class="GtkImageMenuItem" id="about1">
+		      <property name="visible">True</property>
+		      <property name="stock_item">GNOMEUIINFO_MENU_ABOUT_ITEM</property>
+		      <signal name="activate" handler="on_about1_activate" last_modification_time="Tue, 26 Jul 2005 14:21:44 GMT"/>
+		    </widget>
+		  </child>
+		</widget>
+	      </child>
+	    </widget>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">False</property>
+	  <property name="fill">False</property>
+	</packing>
+      </child>
+
+      <child>
+	<widget class="GtkVPaned" id="vpaned1">
+	  <property name="visible">True</property>
+	  <property name="can_focus">True</property>
+	  <property name="position">350</property>
+
+	  <child>
+	    <widget class="GtkScrolledWindow" id="scrolledwindow2">
+	      <property name="visible">True</property>
+	      <property name="can_focus">True</property>
+	      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+	      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+	      <property name="shadow_type">GTK_SHADOW_IN</property>
+	      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+	      <child>
+		<widget class="GtkTreeView" id="treeTreeView">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="has_focus">True</property>
+		  <property name="headers_visible">True</property>
+		  <property name="rules_hint">False</property>
+		  <property name="reorderable">False</property>
+		  <property name="enable_search">True</property>
+		  <property name="fixed_height_mode">False</property>
+		  <property name="hover_selection">False</property>
+		  <property name="hover_expand">False</property>
+		</widget>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="shrink">True</property>
+	      <property name="resize">False</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkTable" id="table1">
+	      <property name="visible">True</property>
+	      <property name="n_rows">5</property>
+	      <property name="n_columns">2</property>
+	      <property name="homogeneous">False</property>
+	      <property name="row_spacing">6</property>
+	      <property name="column_spacing">12</property>
+
+	      <child>
+		<widget class="GtkLabel" id="nameLabel">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">Name:</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">0</property>
+		  <property name="right_attach">1</property>
+		  <property name="top_attach">0</property>
+		  <property name="bottom_attach">1</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="roleNameLabel">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">Role Name:</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">0</property>
+		  <property name="right_attach">1</property>
+		  <property name="top_attach">1</property>
+		  <property name="bottom_attach">2</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="descLabel">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">Description:</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">0</property>
+		  <property name="right_attach">1</property>
+		  <property name="top_attach">2</property>
+		  <property name="bottom_attach">3</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="nameTextLabel">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="label" translatable="yes">name</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">True</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">1</property>
+		  <property name="right_attach">2</property>
+		  <property name="top_attach">0</property>
+		  <property name="bottom_attach">1</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="roleNameTextLabel">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="label" translatable="yes">roleName</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">True</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">1</property>
+		  <property name="right_attach">2</property>
+		  <property name="top_attach">1</property>
+		  <property name="bottom_attach">2</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="descTextLabel">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="label" translatable="yes">description</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">True</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">1</property>
+		  <property name="right_attach">2</property>
+		  <property name="top_attach">2</property>
+		  <property name="bottom_attach">3</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="textLabel">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">Text:</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">0</property>
+		  <property name="right_attach">1</property>
+		  <property name="top_attach">4</property>
+		  <property name="bottom_attach">5</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="actionsLabel">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">Actions:</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">0</property>
+		  <property name="right_attach">1</property>
+		  <property name="top_attach">3</property>
+		  <property name="bottom_attach">4</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkLabel" id="actionsTextLabel">
+		  <property name="visible">True</property>
+		  <property name="label" translatable="yes">actions</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">False</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0.5</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">1</property>
+		  <property name="right_attach">2</property>
+		  <property name="top_attach">3</property>
+		  <property name="bottom_attach">4</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkScrolledWindow" id="scrolledwindow3">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+		  <property name="shadow_type">GTK_SHADOW_IN</property>
+		  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+		  <child>
+		    <widget class="GtkTextView" id="textTextView">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">True</property>
+		      <property name="overwrite">False</property>
+		      <property name="accepts_tab">True</property>
+		      <property name="justification">GTK_JUSTIFY_LEFT</property>
+		      <property name="wrap_mode">GTK_WRAP_NONE</property>
+		      <property name="cursor_visible">True</property>
+		      <property name="pixels_above_lines">0</property>
+		      <property name="pixels_below_lines">0</property>
+		      <property name="pixels_inside_wrap">0</property>
+		      <property name="left_margin">0</property>
+		      <property name="right_margin">0</property>
+		      <property name="indent">0</property>
+		      <property name="text" translatable="yes"></property>
+		    </widget>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="left_attach">1</property>
+		  <property name="right_attach">2</property>
+		  <property name="top_attach">4</property>
+		  <property name="bottom_attach">5</property>
+		  <property name="x_options">expand|shrink|fill</property>
+		  <property name="y_options">expand|shrink|fill</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="shrink">True</property>
+	      <property name="resize">True</property>
+	    </packing>
+	  </child>
+	</widget>
+	<packing>
+	  <property name="padding">0</property>
+	  <property name="expand">True</property>
+	  <property name="fill">True</property>
+	</packing>
+      </child>
+    </widget>
+  </child>
+</widget>
+
+</glade-interface>
diff -Nur dogtail-0.6.1/sniff/sniff dogtail-0.6.1.new/sniff/sniff
--- dogtail-0.6.1/sniff/sniff	2006-09-27 07:17:19.000000000 +1000
+++ dogtail-0.6.1.new/sniff/sniff	1970-01-01 10:00:00.000000000 +1000
@@ -1,406 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: UTF8 -*-
-
-appName = 'Sniff'
-appAuthors = ['Zack Cerza <zcerza redhat com>', 'David Malcolm <dmalcolm redhat com']
-
-from dogtail.utils import checkForA11yInteractively
-checkForA11yInteractively()
-
-from dogtail import tree
-from dogtail import utils
-import gobject
-import gnome
-import atspi
-program = gnome.program_init(appName, '0.1')
-import gtk.glade
-
-import os
-if os.path.exists('sniff.glade'):
-    x = gtk.glade.XML('sniff.glade')
-else:
-    import sys
-    exec_root = sys.argv[0].split("/bin/")[0]
-    if exec_root[0] is not '/':
-        exec_root = "/usr"
-    x = gtk.glade.XML(exec_root + '/share/dogtail/glade/sniff.glade')
-
-sniff = x.get_widget(appName)
-
-try:
-    sniff.set_icon_from_file('../icons/dogtail-head.svg')
-except:
-    sniff.set_icon_from_file('/usr/share/icons/hicolor/scalable/apps/dogtail-head.svg')
-
-view = x.get_widget('treeTreeView')
-
-nameTextLabel = x.get_widget('nameTextLabel')
-roleNameTextLabel = x.get_widget('roleNameTextLabel')
-descTextLabel = x.get_widget('descTextLabel')
-actionsTextLabel = x.get_widget('actionsTextLabel')
-textLabel = x.get_widget('textLabel')
-textTextView = x.get_widget('textTextView')
-
-# Indices of the various fields of the tree model:
-MODEL_FIELD_NODE = 0
-MODEL_FIELD_NAME = 1
-MODEL_FIELD_ROLENAME = 2
-MODEL_FIELD_DESCRIPTION = 3
-MODEL_FIELD_PIXBUF = 4
-
-def quit(*args):
-    gtk.main_quit()
-
-def expandAll(widget, *args):
-    global view
-    if args[0] == True: view.expand_all()
-    elif args[0] == False: view.collapse_all()
-
-def showAbout(*args):
-    about = gtk.AboutDialog()
-    about.set_name(appName)
-    about.set_authors(appAuthors)
-    about.set_comments('Explore your desktop with Dogtail')
-    about.set_website('http://people.redhat.com/zcerza/dogtail/')
-    about.show_all()
-
-def connectSignals():
-    sniff.connect('delete_event', quit)
-
-    quit1 = x.get_widget('quit1')
-    quit1.connect('activate', quit)
-
-    expand_all1 = x.get_widget('expand_all1')
-    expand_all1.connect('activate', expandAll, True)
-    collapse_all1 = x.get_widget('collapse_all1')
-    collapse_all1.connect('activate', expandAll, False)
-
-    about1 = x.get_widget('about1')
-    about1.connect('activate', showAbout)
-
-    refreshMenuItem = x.get_widget('refresh1')
-    refreshMenuItem.connect('activate', refreshAll)
-
-    view.connect('button-press-event', buttonPress)
-    view.connect('row-expanded', rowExpanded)
-    view.connect('row-collapsed', rowCollapsed)
-    treeSelection = view.get_selection()
-    treeSelection.connect('changed', selectionChanged)
-
-def buttonPress(widget, event, *userParams):
-    global model
-    try: path, treeViewCol, relX, relY = \
-                    view.get_path_at_pos(int(event.x), int(event.y))
-    except TypeError: return
-    node = model[path][0]
-    setUpTable(node)
-
-    if event.button == 3:
-        menu = gtk.Menu()
-        menuItem = None
-        if node.actions:
-            for action in node.actions.values():
-                menuItem = gtk.MenuItem(action.name.capitalize())
-                menuItem.connect('activate', menuItemActivate, action.do)
-                menuItem.show()
-                menu.append(menuItem)
-        if not menuItem: return
-        menu.show()
-        menu.popup(None, None, None, event.button, event.time)
-
-# I hate globals too. I think we need one here, though.
-# Make it a non-integer, so we can know if it has been set yet (later).
-textTextViewBufferChangedLastHandlerID = 3.141592654
-
-def setUpTable(node):
-    """Generic code for setting up the table under the TreeView"""
-    nameTextLabel.set_text(node.name)
-    roleNameTextLabel.set_text(node.roleName)
-    descTextLabel.set_text(node.description)
-    if node.actions:
-        str = ''
-        for action in node.actions.values(): str = ' '.join([str, action.name]).strip()
-        actionsTextLabel.set_text(str)
-
-    global textTextViewBufferChangedLastHandlerID
-    # Have we connected this signal yet? If so, disconnect it before proceeding.
-    if int(textTextViewBufferChangedLastHandlerID) == \
-            textTextViewBufferChangedLastHandlerID:
-        textTextView.get_buffer().disconnect(textTextViewBufferChangedLastHandlerID)
-
-    if node.text is not None:
-        buffer = textTextView.get_buffer()
-        buffer.set_text(node.text)
-        # Eeew! I'm touching tree's privates.
-        if node._Node__editableText:
-            # Remember the handler ID of this connection.
-            textTextView.set_sensitive(True)
-            textTextViewBufferChangedLastHandlerID = \
-                    buffer.connect('changed', changeText, node)
-        else:
-            textTextView.set_sensitive(False)
-    else:
-        textTextView.get_buffer().set_text('')
-        textTextView.set_sensitive(False)
-
-def changeText(textBuffer, node):
-    node.text = textBuffer.get_text(textBuffer.get_start_iter(), \
-                    textBuffer.get_end_iter())
-
-def rowExpanded(treeview, iter, path, *userParams):
-    global model
-    row = model[path]
-    childRows = row.iterchildren()
-    node = row[0]
-    childNodes = node.children
-    for childNode in childNodes:
-        childRow = childRows.next()
-        addChildren(childNode, childRow.iter)
-
-def rowCollapsed(treeview, iter, path, *userParams):
-    global model
-    row = model[path]
-    childRows = row.iterchildren()
-    try:
-        while True:
-            childRow = childRows.next()
-            grandChildRows = childRow.iterchildren()
-            try:
-                while True:
-                    grandChildRow = grandChildRows.next()
-                    model.remove(grandChildRow.iter)
-            except StopIteration: pass
-    except StopIteration: pass
-
-def selectionChanged(treeSelection):
-    # print "selection changed"
-    node = getSelectedNode()
-    if node: node.blink()
-
-def getSelectedNode():
-    global model
-    global view
-    (store, iter) = view.get_selection().get_selected()
-    if not iter: node = None
-    else: node = model[iter][0]
-    return node
-
-def menuItemActivate(menuItem, *userParams):
-    method = userParams[0]
-    if method: method()
-
-def refreshAll(menuItem, *userParams):
-    global model
-    resetModel()
-
-def addNodeToModel(node, parentInTreeView = None):
-    global model
-    iter = model.insert_before(parentInTreeView, None)
-    model.set_value(iter, MODEL_FIELD_NODE, node)
-    return iter
-
-def addChildren(node, parentInTreeView = None):
-    global model
-    for child in node.children:
-        iter = addNodeToModel(child, parentInTreeView)
-
-def showNode(node, parentInTreeView = None):
-    global model
-    iter = addNodeToModel(node, parentInTreeView)
-    addChildren(node, iter)
-
-def resetModel():
-    global model
-    model.clear()
-    showNode(tree.root)
-    rootPath = model.get_path(model.get_iter_root())
-    view.expand_row(rootPath, False)
-
-def loadIcon(iconName):
-    try:
-        pixbuf = gtk.gdk.pixbuf_new_from_file('icons/' + iconName)
-    except gobject.GError:
-        iconName = '/usr/share/dogtail/icons/' + iconName
-        pixbuf = gtk.gdk.pixbuf_new_from_file(iconName)
-    return pixbuf
-
-button_xpm = loadIcon("button.xpm")
-checkbutton_xpm = loadIcon("checkbutton.xpm")
-checkmenuitem_xpm = loadIcon("checkmenuitem.xpm")
-colorselection_xpm = loadIcon("colorselection.xpm")
-combo_xpm = loadIcon("combo.xpm")
-dialog_xpm = loadIcon("dialog.xpm")
-image_xpm = loadIcon("image.xpm")
-label_xpm = loadIcon("label.xpm")
-menubar_xpm = loadIcon("menubar.xpm")
-menuitem_xpm = loadIcon("menuitem.xpm")
-notebook_xpm = loadIcon("notebook.xpm")
-scrolledwindow_xpm = loadIcon("scrolledwindow.xpm")
-spinbutton_xpm = loadIcon("spinbutton.xpm")
-statusbar_xpm = loadIcon("statusbar.xpm")
-table_xpm = loadIcon("table.xpm")
-text_xpm = loadIcon("text.xpm")
-toolbar_xpm = loadIcon("toolbar.xpm")
-tree_xpm = loadIcon("tree.xpm")
-treeitem_xpm = loadIcon("treeitem.xpm")
-unknown_xpm = loadIcon("unknown.xpm")
-viewport_xpm = loadIcon("viewport.xpm")
-vscrollbar_xpm = loadIcon("vscrollbar.xpm")
-vseparator_xpm = loadIcon("vseparator.xpm")
-window_xpm = loadIcon("window.xpm")
-
-iconForRole = { \
-        atspi.SPI_ROLE_INVALID : None, \
-        atspi.SPI_ROLE_ACCEL_LABEL : label_xpm, \
-        atspi.SPI_ROLE_ALERT : None, \
-        atspi.SPI_ROLE_ANIMATION : None, \
-        atspi.SPI_ROLE_ARROW : None, \
-        atspi.SPI_ROLE_CALENDAR : None, \
-        atspi.SPI_ROLE_CANVAS : None, \
-        atspi.SPI_ROLE_CHECK_BOX : checkbutton_xpm, \
-        atspi.SPI_ROLE_CHECK_MENU_ITEM : checkmenuitem_xpm, \
-        atspi.SPI_ROLE_COLOR_CHOOSER : colorselection_xpm, \
-        atspi.SPI_ROLE_COLUMN_HEADER : None, \
-        atspi.SPI_ROLE_COMBO_BOX : combo_xpm, \
-        atspi.SPI_ROLE_DATE_EDITOR : None, \
-        atspi.SPI_ROLE_DESKTOP_ICON : None, \
-        atspi.SPI_ROLE_DESKTOP_FRAME : None, \
-        atspi.SPI_ROLE_DIAL : None, \
-        atspi.SPI_ROLE_DIALOG : dialog_xpm, \
-        atspi.SPI_ROLE_DIRECTORY_PANE : None, \
-        atspi.SPI_ROLE_DRAWING_AREA : None, \
-        atspi.SPI_ROLE_FILE_CHOOSER : None, \
-        atspi.SPI_ROLE_FILLER : None, \
-        atspi.SPI_ROLE_FONT_CHOOSER : None, \
-        atspi.SPI_ROLE_FRAME : window_xpm, \
-        atspi.SPI_ROLE_GLASS_PANE : None, \
-        atspi.SPI_ROLE_HTML_CONTAINER : None, \
-        atspi.SPI_ROLE_ICON : image_xpm, \
-        atspi.SPI_ROLE_IMAGE : image_xpm, \
-        atspi.SPI_ROLE_INTERNAL_FRAME : None, \
-        atspi.SPI_ROLE_LABEL : label_xpm, \
-        atspi.SPI_ROLE_LAYERED_PANE : viewport_xpm, \
-        atspi.SPI_ROLE_LIST : None, \
-        atspi.SPI_ROLE_LIST_ITEM : None, \
-        atspi.SPI_ROLE_MENU : menuitem_xpm, \
-        atspi.SPI_ROLE_MENU_BAR : menubar_xpm, \
-        atspi.SPI_ROLE_MENU_ITEM : menuitem_xpm, \
-        atspi.SPI_ROLE_OPTION_PANE : None, \
-        atspi.SPI_ROLE_PAGE_TAB : notebook_xpm, \
-        atspi.SPI_ROLE_PAGE_TAB_LIST : notebook_xpm, \
-        atspi.SPI_ROLE_PANEL : viewport_xpm, \
-        atspi.SPI_ROLE_PASSWORD_TEXT : None, \
-        atspi.SPI_ROLE_POPUP_MENU : None, \
-        atspi.SPI_ROLE_PROGRESS_BAR : None, \
-        atspi.SPI_ROLE_PUSH_BUTTON : button_xpm, \
-        atspi.SPI_ROLE_RADIO_BUTTON : None, \
-        atspi.SPI_ROLE_RADIO_MENU_ITEM : None, \
-        atspi.SPI_ROLE_ROOT_PANE : viewport_xpm, \
-        atspi.SPI_ROLE_ROW_HEADER : None, \
-        atspi.SPI_ROLE_SCROLL_BAR : vscrollbar_xpm, \
-        atspi.SPI_ROLE_SCROLL_PANE : scrolledwindow_xpm, \
-        atspi.SPI_ROLE_SEPARATOR : vseparator_xpm, \
-        atspi.SPI_ROLE_SLIDER : None, \
-        atspi.SPI_ROLE_SPIN_BUTTON : spinbutton_xpm, \
-        atspi.SPI_ROLE_SPLIT_PANE : None, \
-        atspi.SPI_ROLE_STATUS_BAR : statusbar_xpm, \
-        atspi.SPI_ROLE_TABLE : table_xpm, \
-        atspi.SPI_ROLE_TABLE_CELL : treeitem_xpm, \
-        atspi.SPI_ROLE_TABLE_COLUMN_HEADER : None, \
-        atspi.SPI_ROLE_TABLE_ROW_HEADER : None, \
-        atspi.SPI_ROLE_TEAROFF_MENU_ITEM : None, \
-        atspi.SPI_ROLE_TERMINAL : None, \
-        atspi.SPI_ROLE_TEXT : text_xpm, \
-        atspi.SPI_ROLE_TOGGLE_BUTTON : None, \
-        atspi.SPI_ROLE_TOOL_BAR : toolbar_xpm, \
-        atspi.SPI_ROLE_TOOL_TIP : None, \
-        atspi.SPI_ROLE_TREE : tree_xpm, \
-        atspi.SPI_ROLE_TREE_TABLE : tree_xpm, \
-        atspi.SPI_ROLE_UNKNOWN : unknown_xpm, \
-        atspi.SPI_ROLE_VIEWPORT : viewport_xpm, \
-        atspi.SPI_ROLE_WINDOW : window_xpm, \
-        atspi.SPI_ROLE_EXTENDED : None, \
-        atspi.SPI_ROLE_HEADER : None, \
-        atspi.SPI_ROLE_FOOTER : None, \
-        atspi.SPI_ROLE_PARAGRAPH : None, \
-        atspi.SPI_ROLE_RULER : None, \
-        atspi.SPI_ROLE_APPLICATION : None, \
-        atspi.SPI_ROLE_AUTOCOMPLETE : None, \
-        atspi.SPI_ROLE_EDITBAR : None, \
-        atspi.SPI_ROLE_EMBEDDED : None, \
-        atspi.SPI_ROLE_LAST_DEFINED: None }
-
-def getPixbufForNode(node):
-    theme = gtk.icon_theme_get_default()
-    try:
-        if node.role==atspi.SPI_ROLE_APPLICATION:
-            # FIXME: Use the pixbuf from libwcnk (if available):
-            # wnckApp = Application(node).getWnckApplication()
-            # if wnckApp
-            try: return theme.load_icon(node.name, 24, gtk.ICON_LOOKUP_USE_BUILTIN)
-            except gobject.GError:
-                try: return theme.load_icon(node.name.lower(), 24, gtk.ICON_LOOKUP_USE_BUILTIN)
-                except gobject.GError: return None
-        elif node.parent:
-            return iconForRole[node.role]
-        else:
-            return theme.load_icon("gnome-fs-desktop", 24, gtk.ICON_LOOKUP_USE_BUILTIN)
-    except atspi.SpiException:
-        return theme.load_icon("gtk-dialog-error", 24, gtk.ICON_LOOKUP_USE_BUILTIN)
-
-def getNodeAttr(column, cell, model, iter, attr):
-    node = model.get_value(iter, MODEL_FIELD_NODE)
-    try:
-        text = getattr(node, attr)
-    except atspi.SpiException:
-        text = "(broken node)"
-    cell.set_property('text', text)
-
-def getCellPixbufForNode(column, cell, model, iter):
-    node = model.get_value(iter, MODEL_FIELD_NODE)
-    pixbuf = getPixbufForNode(node)
-    cell.set_property('pixbuf', pixbuf)
-
-def main():
-    connectSignals()
-
-    nameTextLabel.set_text('')
-    roleNameTextLabel.set_text('')
-    descTextLabel.set_text('')
-    actionsTextLabel.set_text('')
-    textTextView.set_sensitive(False)
-    textTextView.get_buffer().set_text('')
-
-    global sniff, view, model
-
-    col = gtk.TreeViewColumn()
-    cellRenderer = gtk.CellRendererPixbuf()
-    col.pack_start(cellRenderer, expand = False)
-    col.set_cell_data_func(cellRenderer, getCellPixbufForNode)
-
-    cellRenderer = gtk.CellRendererText()
-    col.pack_end(cellRenderer, expand = False)
-    col.set_cell_data_func(cellRenderer, getNodeAttr, 'name')
-
-    col.set_title('Name')
-
-    view.insert_column(col, -1)
-    #view.insert_column_with_data_func(-1, "Role Name", \
-    #               gtk.CellRendererText(), getNodeAttr, 'roleName')
-    #view.insert_column_with_data_func(-1, "Description", \
-    #               gtk.CellRendererText(), getNodeAttr, 'description')
-    for column in view.get_columns():
-        column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
-        column.set_resizable(True)
-    view.show()
-    sniff.show_all ()
-
-    model = gtk.TreeStore(gobject.TYPE_PYOBJECT, gobject.TYPE_STRING, \
-                    gobject.TYPE_STRING, gobject.TYPE_STRING)
-    view.set_model(model)
-
-    resetModel()
-
-    gtk.main()
-
-if __name__ == '__main__': main()
diff -Nur dogtail-0.6.1/sniff/sniff.desktop dogtail-0.6.1.new/sniff/sniff.desktop
--- dogtail-0.6.1/sniff/sniff.desktop	2006-08-22 04:03:24.000000000 +1000
+++ dogtail-0.6.1.new/sniff/sniff.desktop	1970-01-01 10:00:00.000000000 +1000
@@ -1,14 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Name=AT-SPI Browser
-Name[en_CA]=AT-SPI Browser
-Name[en_GB]=AT-SPI Browser
-Comment=Browse your Assistive Technology-enabled desktop
-Comment[en_CA]=Browse your Assistive Technology-enabled desktop
-Comment[en_GB]=Browse your Assistive Technology-enabled desktop
-Exec=sniff
-Terminal=false
-Type=Application
-Icon=dogtail-head.svg
-StartupNotify=true
-Categories=Application;Development;
diff -Nur dogtail-0.6.1/sniff/sniff.glade dogtail-0.6.1.new/sniff/sniff.glade
--- dogtail-0.6.1/sniff/sniff.glade	2006-04-17 16:20:07.000000000 +1000
+++ dogtail-0.6.1.new/sniff/sniff.glade	1970-01-01 10:00:00.000000000 +1000
@@ -1,498 +0,0 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd";>
-
-<glade-interface>
-<requires lib="gnome"/>
-
-<widget class="GtkWindow" id="Sniff">
-  <property name="width_request">325</property>
-  <property name="height_request">475</property>
-  <property name="visible">True</property>
-  <property name="title" translatable="yes">AT-SPI Browser</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <property name="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-
-  <child>
-    <widget class="GtkVBox" id="vbox1">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">0</property>
-
-      <child>
-	<widget class="GtkMenuBar" id="menubar1">
-	  <property name="visible">True</property>
-	  <property name="pack_direction">GTK_PACK_DIRECTION_LTR</property>
-	  <property name="child_pack_direction">GTK_PACK_DIRECTION_LTR</property>
-
-	  <child>
-	    <widget class="GtkMenuItem" id="sniff1">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">_Sniff</property>
-	      <property name="use_underline">True</property>
-
-	      <child>
-		<widget class="GtkMenu" id="sniff1_menu">
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="quit1">
-		      <property name="visible">True</property>
-		      <property name="stock_item">GNOMEUIINFO_MENU_EXIT_ITEM</property>
-		      <signal name="activate" handler="on_quit1_activate" last_modification_time="Tue, 26 Jul 2005 14:21:44 GMT"/>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkMenuItem" id="view1">
-	      <property name="visible">True</property>
-	      <property name="stock_item">GNOMEUIINFO_MENU_VIEW_TREE</property>
-
-	      <child>
-		<widget class="GtkMenu" id="view1_menu">
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="refresh1">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">_Refresh</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_refresh1_activate" last_modification_time="Wed, 27 Jul 2005 16:21:27 GMT"/>
-		      <accelerator key="R" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-
-		      <child internal-child="image">
-			<widget class="GtkImage" id="image1">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-refresh</property>
-			  <property name="icon_size">1</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-		      </child>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkSeparatorMenuItem" id="separator3">
-		      <property name="visible">True</property>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkMenuItem" id="expand_all1">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">_Expand All</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_expand_all1_activate" last_modification_time="Wed, 27 Jul 2005 18:41:34 GMT"/>
-		    </widget>
-		  </child>
-
-		  <child>
-		    <widget class="GtkMenuItem" id="collapse_all1">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">_Collapse All</property>
-		      <property name="use_underline">True</property>
-		      <signal name="activate" handler="on_collapse_all1_activate" last_modification_time="Wed, 27 Jul 2005 18:40:57 GMT"/>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkMenuItem" id="help1">
-	      <property name="visible">True</property>
-	      <property name="stock_item">GNOMEUIINFO_MENU_HELP_TREE</property>
-
-	      <child>
-		<widget class="GtkMenu" id="help1_menu">
-
-		  <child>
-		    <widget class="GtkImageMenuItem" id="about1">
-		      <property name="visible">True</property>
-		      <property name="stock_item">GNOMEUIINFO_MENU_ABOUT_ITEM</property>
-		      <signal name="activate" handler="on_about1_activate" last_modification_time="Tue, 26 Jul 2005 14:21:44 GMT"/>
-		    </widget>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkVPaned" id="vpaned1">
-	  <property name="visible">True</property>
-	  <property name="can_focus">True</property>
-	  <property name="position">350</property>
-
-	  <child>
-	    <widget class="GtkScrolledWindow" id="scrolledwindow2">
-	      <property name="visible">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-	      <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-	      <property name="shadow_type">GTK_SHADOW_IN</property>
-	      <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-	      <child>
-		<widget class="GtkTreeView" id="treeTreeView">
-		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="has_focus">True</property>
-		  <property name="headers_visible">True</property>
-		  <property name="rules_hint">False</property>
-		  <property name="reorderable">False</property>
-		  <property name="enable_search">True</property>
-		  <property name="fixed_height_mode">False</property>
-		  <property name="hover_selection">False</property>
-		  <property name="hover_expand">False</property>
-		</widget>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="shrink">True</property>
-	      <property name="resize">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkTable" id="table1">
-	      <property name="visible">True</property>
-	      <property name="n_rows">5</property>
-	      <property name="n_columns">2</property>
-	      <property name="homogeneous">False</property>
-	      <property name="row_spacing">6</property>
-	      <property name="column_spacing">12</property>
-
-	      <child>
-		<widget class="GtkLabel" id="nameLabel">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">Name:</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="left_attach">0</property>
-		  <property name="right_attach">1</property>
-		  <property name="top_attach">0</property>
-		  <property name="bottom_attach">1</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options"></property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="roleNameLabel">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">Role Name:</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="left_attach">0</property>
-		  <property name="right_attach">1</property>
-		  <property name="top_attach">1</property>
-		  <property name="bottom_attach">2</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options"></property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="descLabel">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">Description:</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="left_attach">0</property>
-		  <property name="right_attach">1</property>
-		  <property name="top_attach">2</property>
-		  <property name="bottom_attach">3</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options"></property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="nameTextLabel">
-		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="label" translatable="yes">name</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">True</property>
-		  <property name="xalign">0</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="left_attach">1</property>
-		  <property name="right_attach">2</property>
-		  <property name="top_attach">0</property>
-		  <property name="bottom_attach">1</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options"></property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="roleNameTextLabel">
-		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="label" translatable="yes">roleName</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">True</property>
-		  <property name="xalign">0</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="left_attach">1</property>
-		  <property name="right_attach">2</property>
-		  <property name="top_attach">1</property>
-		  <property name="bottom_attach">2</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options"></property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="descTextLabel">
-		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="label" translatable="yes">description</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">True</property>
-		  <property name="xalign">0</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="left_attach">1</property>
-		  <property name="right_attach">2</property>
-		  <property name="top_attach">2</property>
-		  <property name="bottom_attach">3</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options"></property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="textLabel">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">Text:</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="left_attach">0</property>
-		  <property name="right_attach">1</property>
-		  <property name="top_attach">4</property>
-		  <property name="bottom_attach">5</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options"></property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="actionsLabel">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">Actions:</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="left_attach">0</property>
-		  <property name="right_attach">1</property>
-		  <property name="top_attach">3</property>
-		  <property name="bottom_attach">4</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options"></property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkLabel" id="actionsTextLabel">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">actions</property>
-		  <property name="use_underline">False</property>
-		  <property name="use_markup">False</property>
-		  <property name="justify">GTK_JUSTIFY_LEFT</property>
-		  <property name="wrap">False</property>
-		  <property name="selectable">False</property>
-		  <property name="xalign">0</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xpad">0</property>
-		  <property name="ypad">0</property>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="left_attach">1</property>
-		  <property name="right_attach">2</property>
-		  <property name="top_attach">3</property>
-		  <property name="bottom_attach">4</property>
-		  <property name="x_options">fill</property>
-		  <property name="y_options"></property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkScrolledWindow" id="scrolledwindow3">
-		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-		  <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-		  <property name="shadow_type">GTK_SHADOW_IN</property>
-		  <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
-		  <child>
-		    <widget class="GtkTextView" id="textTextView">
-		      <property name="visible">True</property>
-		      <property name="can_focus">True</property>
-		      <property name="editable">True</property>
-		      <property name="overwrite">False</property>
-		      <property name="accepts_tab">True</property>
-		      <property name="justification">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap_mode">GTK_WRAP_NONE</property>
-		      <property name="cursor_visible">True</property>
-		      <property name="pixels_above_lines">0</property>
-		      <property name="pixels_below_lines">0</property>
-		      <property name="pixels_inside_wrap">0</property>
-		      <property name="left_margin">0</property>
-		      <property name="right_margin">0</property>
-		      <property name="indent">0</property>
-		      <property name="text" translatable="yes"></property>
-		    </widget>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="left_attach">1</property>
-		  <property name="right_attach">2</property>
-		  <property name="top_attach">4</property>
-		  <property name="bottom_attach">5</property>
-		  <property name="x_options">expand|shrink|fill</property>
-		  <property name="y_options">expand|shrink|fill</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="shrink">True</property>
-	      <property name="resize">True</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-</glade-interface>
diff -Nur dogtail-0.6.1/sniff/dogtail-sniff dogtail-0.6.1.new/sniff/dogtail-sniff
--- dogtail-0.6.1/sniff/dogtail-sniff	2007-03-17 11:25:39.868957382 +1100
+++ dogtail-0.6.1.new/sniff/dogtail-sniff	2007-03-17 11:27:24.562923549 +1100
@@ -16,14 +16,14 @@
 import gtk.glade
 
 import os
-if os.path.exists('sniff.glade'):
-    x = gtk.glade.XML('sniff.glade')
+if os.path.exists('dogtail-sniff.glade'):
+    x = gtk.glade.XML('dogtail-sniff.glade')
 else:
     import sys
     exec_root = sys.argv[0].split("/bin/")[0]
     if exec_root[0] is not '/':
         exec_root = "/usr"
-    x = gtk.glade.XML(exec_root + '/share/dogtail/glade/sniff.glade')
+    x = gtk.glade.XML(exec_root + '/share/dogtail/glade/dogtail-sniff.glade')
 
 sniff = x.get_widget(appName)
 
diff -Nur dogtail-0.6.1/sniff/dogtail-sniff.desktop dogtail-0.6.1.new/sniff/dogtail-sniff.desktop
--- dogtail-0.6.1/sniff/dogtail-sniff.desktop	2007-03-17 11:25:39.872957610 +1100
+++ dogtail-0.6.1.new/sniff/dogtail-sniff.desktop	2007-03-17 11:26:24.895523300 +1100
@@ -6,7 +6,7 @@
 Comment=Browse your Assistive Technology-enabled desktop
 Comment[en_CA]=Browse your Assistive Technology-enabled desktop
 Comment[en_GB]=Browse your Assistive Technology-enabled desktop
-Exec=sniff
+Exec=dogtail-sniff
 Terminal=false
 Type=Application
 Icon=dogtail-head.svg
diff -Nur dogtail-0.6.1/dogtail.spec dogtail-0.6.1.new/dogtail.spec
--- dogtail-0.6.1/dogtail.spec	2006-10-17 05:25:22.000000000 +1000
+++ dogtail-0.6.1.new/dogtail.spec	2007-03-17 11:47:14.470732533 +1100
@@ -33,7 +33,7 @@
 python ./setup.py install -O2 --root=$RPM_BUILD_ROOT --record=%{name}.files
 rm -rf $RPM_BUILD_ROOT/%{_docdir}/dogtail
 find examples -type f -exec chmod 0644 \{\} \;
-desktop-file-install $RPM_BUILD_ROOT/%{_datadir}/applications/sniff.desktop \
+desktop-file-install $RPM_BUILD_ROOT/%{_datadir}/applications/dogtail-sniff.desktop \
   --vendor=fedora \
   --dir=$RPM_BUILD_ROOT/%{_datadir}/applications \
   --add-category X-Fedora \
diff -Nur dogtail-0.6.1/Makefile dogtail-0.6.1.new/Makefile
--- dogtail-0.6.1/Makefile	2006-07-29 03:51:47.000000000 +1000
+++ dogtail-0.6.1.new/Makefile	2007-03-17 11:47:14.470732533 +1100
@@ -18,7 +18,7 @@
 export StudlyCaps='[a-zA-Z_][a-zA-Z0-9_]*$$'
 
 check:
-	pylint --indent-string="	" --class-rgx=${StudlyCaps} --function-rgx=${camelCAPS} --method-rgx=${camelCAPS} --variable-rgx=${camelCAPS} --argument-rgx=${camelCaps} dogtail sniff/sniff examples/*.py
+	pylint --indent-string="	" --class-rgx=${StudlyCaps} --function-rgx=${camelCAPS} --method-rgx=${camelCAPS} --variable-rgx=${camelCAPS} --argument-rgx=${camelCaps} dogtail sniff/dogtail-sniff examples/*.py
 
 tarball:
 	python setup.py sdist
diff -Nur dogtail-0.6.1/setup.py dogtail-0.6.1.new/setup.py
--- dogtail-0.6.1/setup.py	2006-09-22 03:21:27.000000000 +1000
+++ dogtail-0.6.1.new/setup.py	2007-03-17 11:48:25.926804582 +1100
@@ -43,7 +43,7 @@
 def scripts():
     import os
     list = os.listdir(os.curdir + '/scripts/')
-    result = ['sniff/sniff', 'recorder/dogtail-recorder']
+    result = ['sniff/dogtail-sniff', 'recorder/dogtail-recorder']
     for file in list:
         if file != 'CVS':
             result = result + ['scripts/' + file]
@@ -65,10 +65,10 @@
                                         examples() ),
                                 ('share/doc/dogtail/examples/data',
                                         examples_data() ),
-                                ('share/dogtail/glade', ['sniff/sniff.glade',
+                                ('share/dogtail/glade', ['sniff/dogtail-sniff.glade',
                                         'recorder/recorder.glade']),
                                 ('share/dogtail/icons', sniff_icons() ),
-                                ('share/applications', ['sniff/sniff.desktop',
+                                ('share/applications', ['sniff/dogtail-sniff.desktop',
                                         'recorder/dogtail-recorder.desktop']),
                                 ('share/icons/hicolor/48x48/apps', icons('png')),
                                 ('share/icons/hicolor/scalable/apps', icons('svg'))

Attachment: signature.asc
Description: Digital signature



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