After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 340734 - The (tree API) sample program does not run to completion
The (tree API) sample program does not run to completion
Status: RESOLVED FIXED
Product: dogtail
Classification: Deprecated
Component: Framework
CVS HEAD
Other All
: Normal minor
: ---
Assigned To: Dogtail Maintainers
Dogtail Maintainers
Depends on:
Blocks:
 
 
Reported: 2006-05-05 13:18 UTC by Len DiMaggio
Modified: 2006-07-14 17:18 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Patch file - better late than never (812 bytes, patch)
2006-07-07 14:06 UTC, Len DiMaggio
committed Details | Review

Description Len DiMaggio 2006-05-05 13:18:34 UTC
Please describe the problem:
The (tree API) sample program here: 

http://cvs.gnome.org/viewcvs/dogtail/examples/gedit-test-utf8-tree-api.py?rev=1.3&view=markup

doesn't run successfully. It cannot locate the 'Desktop' dir into which it
should save the output file from the tests.

I made the following changes and it seems to work:

#!/usr/bin/env python
# Dogtail demo script using tree.py
# FIXME: Use TC.
__author__ = 'Zack Cerza <zcerza@redhat.com'

from dogtail import tree
from dogtail.utils import run
from time import sleep
from os import environ, path, remove
environ['LANG']='en_US.UTF-8'

# Remove the output file, if it's still there from a previous run
if path.isfile(path.join(path.expandvars("$HOME"), "Desktop", "UTF8demo.txt")):
	remove(path.join(path.expandvars("$HOME"), "Desktop", "UTF8demo.txt"))

# Start gedit.
run("gedit")

# Get a handle to gedit's application object.
gedit = tree.root.application('gedit')

# Get a handle to gedit's text object.
textbuffer = gedit.child(roleName = 'text')

# Load the UTF-8 demo file.
from sys import path
utfdemo = file(path[0] + '/data/UTF-8-demo.txt')

# Load the UTF-8 demo file into gedit's text buffer.
textbuffer.text = utfdemo.read()

# Get a handle to gedit's File menu.
filemenu = gedit.menu('File')

# Get a handle to gedit's Save button.
savebutton = gedit.button('Save')

# Click the button
savebutton.click()

# Get a handle to gedit's Save As... dialog.
saveas = gedit.dialog('Save as...')

# We want to save to the file name 'UTF8demo.txt'.
saveas.child(roleName = 'text').text = 'UTF8demo.txt'

# Save the file on the Desktop

# Don't make the mistake of only searching by name, there are multiple
# "Desktop" entires in the Save As dialog - you have to query for the
# roleName too - see the on-line help for the Dogtail "tree" class for
# details
desktop = saveas.child('Desktop', roleName='table cell')
desktop.actions['activate'].do()

#  Click the Save button.
saveas.button('Save').click()

# Let's quit now.
filemenu.menuItem('Quit').click() 



Steps to reproduce:
1. 
2. 
3. 


Actual results:


Expected results:


Does this happen every time?


Other information:
Comment 1 Len DiMaggio 2006-05-05 13:51:57 UTC
Sorry about that - I should have included a diff - thanks to David Malcolm for pointing that out!  ;-)

$ diff -up gedit-test-utf8-tree-api.py  modified_tree.py 
--- gedit-test-utf8-tree-api.py 2006-05-05 09:48:37.000000000 -0400
+++ tree.py     2006-04-24 11:25:16.000000000 -0400
@@ -11,7 +11,7 @@ environ['LANG']='en_US.UTF-8'
 
 # Remove the output file, if it's still there from a previous run
 if path.isfile(path.join(path.expandvars("$HOME"), "Desktop", "UTF8demo.txt")):
-    remove(path.join(path.expandvars("$HOME"), "Desktop", "UTF8demo.txt"))
+       remove(path.join(path.expandvars("$HOME"), "Desktop", "UTF8demo.txt"))
 
 # Start gedit.
 run("gedit")
@@ -44,11 +44,18 @@ saveas = gedit.dialog('Save as...')
 # We want to save to the file name 'UTF8demo.txt'.
 saveas.child(roleName = 'text').text = 'UTF8demo.txt'
 
-# Let's save it to the desktop.
-saveas.menuItem('Desktop').click()
+# Save the file on the Desktop
 
-# Click the Save button.
+# Don't make the mistake of only searching by name, there are multiple
+# "Desktop" entires in the Save As dialog - you have to query for the
+# roleName too - see the on-line help for the Dogtail "tree" class for
+# details
+desktop = saveas.child('Desktop', roleName='table cell')
+desktop.actions['activate'].do()
+
+#  Click the Save button.
 saveas.button('Save').click()
 
 # Let's quit now.
-filemenu.menuItem('Quit').click()
+filemenu.menuItem('Quit').click() 
+
Comment 2 Zack Cerza 2006-06-23 20:50:49 UTC
I can't get this to apply. Can you include the patch as an attachment?
Comment 3 Len DiMaggio 2006-07-07 14:06:33 UTC
Created attachment 68563 [details] [review]
Patch file - better late than never
Comment 4 Zack Cerza 2006-07-14 17:18:50 UTC
Thanks, Len.

I did make one change to your patch. While this:

 desktop.actions['activate'].do()

does indeed work, this is the "official" method:

 desktop.doAction('activate')