1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
# -*- coding: utf-8 -*-
import os
from dogtail import tree
from dogtail.utils import run
from dogtail.predicate import GenericPredicate
def gedit_text_tree_api_demo():
os.environ["LANG"] = "en_US.UTF-8"
# Remove the output file, if it's still there from a previous run
if os.path.isfile(os.path.join("/tmp", "UTF8demo.txt")):
os.remove(os.path.join("/tmp", "UTF8demo.txt"))
# Start gedit.
# Get a handle to gedit's application object.
os.system("killall gedit") # preventing the undesired result if the sript is started multiple times in a row
run("gedit")
gedit = tree.root.application("gedit")
# Get a handle to gedit's text object.
text_buffer = gedit.findChildren(GenericPredicate(roleName="text"))[1]
# is equal to
# text_buffer = gedit.findChild(lambda x: x.roleName=="text" and x.showing) # we can specify search by another attribute - showing
# Load the UTF-8 demo file.
# Set the attribute to the given text object
with open(os.path.abspath(".") + "/data/UTF-8-demo.txt", "r") as open_file:
text_buffer.text = open_file.read()
# Get a handle to gedit's Save button and click.
save_button = gedit.findChild(lambda x: x.name == "Save" and x.roleName in ("button", "push button"))
save_button.click()
# We want to save to the file name 'UTF8demo.txt'.
dialog = gedit.findChild(lambda x: "Save As" in x.name and x.roleName == "file chooser")
dialog.child(roleName="text").text = "/tmp/UTF8demo.txt"
# Get a handle to gedit's Save dialog and click.
save_as_button = gedit.findChildren(lambda x: "Save" in x.name)[-1]
save_as_button.click()
# Let's quit now.
gedit.child("Menu", "toggle button").click()
# Sometimes the node is not unique so you need to specify another attribute to look for
gedit.findChild(lambda x: x.name == "Close" and x.showing).click()
gedit_text_tree_api_demo()
|