File: ChangeLog

package info (click to toggle)
dogtail 1.0.0-6
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,488 kB
  • sloc: python: 5,970; makefile: 60; sh: 7
file content (2935 lines) | stat: -rw-r--r-- 105,383 bytes parent folder | download | duplicates (2)
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2018-11-09 Vita Humpa <vhumpa@redhat.com>

	dogtail 1.0
	==============
	After more than five years of continuous experimentation and development, we are excited to finally release Dogtail 1.0—a Wayland-enabled version of Dogtail! How did we achieve this? It was made possible by the `gnome-ponytail-daemon`, originally crafted by Olivier Fourdan: https://gitlab.gnome.org/ofourdan/gnome-ponytail-daemon. This tool allows us to perform actions in a Wayland GNOME session in a similar way to how we have been doing so with X functions. See NEWS or README.md for more details!

2018-11-09 Vita Humpa <vhumpa@redhat.com>

	dogtail 0.9.11
	==============
	A number of fixes related mainly to python3 and bilingual nature of dogtail.
	Scripts (sniff and scripts/) get /usr/bin/python3 shebangs, so distros can
	consider splitting those to subpackage.

2017-05-01 Vita Humpa <vhumpa@redhat.com>

	dogtail 0.9.10
	==============

	There has been a good deal of fixes and improvements since last year's release. We're not really ready for 1.0
	yet, which is why we release this important cumulative release as 0.9.10. We have also moved our homesite to
	gitlab (fedoraproject has been discontinued). For the list of changes, simply go to:
	https://gitlab.com/dogtail/dogtail/commits/master

2016-01-18 Vita Humpa <vhumpa@redhat.com>

	dogtail 0.9.9
	=============
	A 1.0 pre-release. Contains a big number of fixes and changes done
	since 0.9.0. Most important of these is framework's compatibility with
	Python3. We've modified the code everywhere to run with both Python 2.7
	and 3.3+. This means that from now on we maintain the same codebase and
	are releasing the same tarball, which can be used to package both py2 and
	py3 installations downstream. A complete list of fixes and changes will
	be present here, when we release 1.0 after 0.9.9 has been thouroughly tested.

	Though considered a pre-release, don'worry! 0.9.9 is considered stable and
	have gone through some rigorious testing already. Thanks to newly extended
	unit-test-set, it is actually the most self-tested release so far.

2014-04-16 Vita Humpa <vhumpa@redhat.com>

	dogtail 0.9.0
	=============
	Over the last year we've made a good number of fixes, added some new features
	and got overall stability to the point where we can make a new 'major minor'
	release. With 0.9 we're finally getting only a step away from what we'd like
	to get done with 1.0.


	 * Added a fix for situations when a previously crashed application
	   still registered with at-spi blocks search ('Broken' session problem)
	   Fixed for root.application(), root.applications() and for whenever
	   GeneralPredicate is used (.child()). Also done for Sniff. RHBZ 972257

	 * Added a support for gnome-continuous build-api (#36)

	 * Added a direct lambda support in the findChildren method, that allows
	   using non-predicate lambdas to create search properties. These can be
	   all pure dogtail Node properties (i.e. showing), not limiting to just
	   pyatspi ones as is when using Predicate.

	 * Added a GnomeShell 'helper' class into utils module allowing to work
	   with the new top-panel application menu.

	 * With GTK3.10+ Gdk changes, needed to tune the keyNameToKeyCode function
	   so that it provides valid keySym in as many cases possible - with both
	   pre-GTK3.10 as well as GTK3.11+ having the same behavior in typeText and
	   pressKey

	 * Sniff ui update: the info pane now stays down on resizing

	 * Got rid of some deprecated GObject calls

	 * Several updates to the dogtail-run-headless-next
	    - Any kind of session can now be used in any combination with both gdm/kdm
	      --session can be used to specify any xsession desktop file, 'kde' defaults
	        to 'kde-plasma' too keep pre-updated compatibility; default is now the previous user session
	      --dm - new param to pick either gdm (default) or kdm
	      --session-binary - new param to specify any in-session binary to grab script env from
	                       - to be used with non gnome/kde session (lxde, ubuntu)
	                       - do not confuse with session execs like gnome-session and starkde, that may
	                         actually exit after session loadup; it should be everpresent (kwin, shell...)
	    - Added a --restart switch to force restart the previously running (often left-over) session before proceeding
	    - More logging of script execution (start/stop/PID), and some cleanups

	 * Trap GErrors in findAllDescendants and retry if it occurs: This fixes crashes in findChildren if elements are being added/removed quickly

	 * Unicode handling updates:
	    - Make sure safeDecode is not skipping any strings
	    - Don't crash when logging message contains unicode

	 * Error Handling for Attribute Error

	 * Fixed utils.run issue when having whitespace containing binary by
	   using shlex shell-like parsing split.

	 * Removed an always true if condition in i18n

	 * Log child description when clicking. The log will now print the element description when it will be clicked

	 * Trap TypeError in findAllDescendants: Sometimes pytaspi returns None as a Node if children are being removed too fast.
	   We should retry search in this case

	 * Extended the default TypingDelay from 0.075 to 0.1 seconds (helps working with certain high unicode charactes)

	 * Fixed an bug in sniff discovered by jmolet that made sniff crash when
	   run from /bin/sniff not /usr/bin/sniff

	 * Generate a better script method call for labels

	 * Fix for failing 'focus.application.node' seting

	 * Derive all classes from object explicitely

	 * Changed icons used in sniff that got moved to the gnome-icon-theme-legacy
	   recently for the ones from non-legacy package.

	 * Unified the 'isSth' vs. 'sth' properties for only 'sth' - added 'selected', but also introduced
	   'isChecked' property for 0.7.x compatibility

	 * Added instructions on how to enable accessibility into utils.bailBecauseA11yIsDisabled()

	 * Added a 'retry' option to the tree.root.application()

	 * Fixed the concurrent creation of sniff_refresh lock from both tree and procedural

	 * Switched to use environ value to get user in config. os.getlogin breaks when run scheduled from a testing system with no terminal.

	 * Patched the mouse related rawinput methods to prevent using negative coordinates

	 * Updated and added more unittests

2013-07-09 Vita Humpa <vhumpa@redhat.com>

	dogtail 0.8.2
	=============
	Second update to the 0.8 series containing several fixes and improvements

	 * Added the dogtail-run-headless-next to replace the dogtail-run-headless in future.
	  -next, uses a diplay manager (kdm or gdm) for session management, should be used instead of older
	  headless on systemd systems already

	 * Unittests vastly improved and updated

	 * Fixed a missing reset of FocusWindow to None on application refocus

	 * Fixed the dogtail-logout to use gnome-shell instead of old gnome-panel

2012-09-07 Vita Humpa <vhumpa@redhat.com>

    dogtail 0.8.1
    =============
	A first update to the new GNOME3 / KDE4 compatible release containing several fixes:

	* Sniff's autorefresh made togglable, to help avoid collisions with potential
	  running dogtail scripts. Sniff checks at startup whether some script is running
	  and sets up the autorefresh off if it is.

	* Added a locking mechanism into utils that can be used to solve situations when
	  multiple dogtail processes/thread are running (applied in tree/procedural and sniff
	  already)

	* Removed the deprecated dependency on CORBA

	* Icons no longer use absolute pathing in sniff (thx roignac)

	* Deprecated  .has_key() operator replaced with 'in'.

	* Removed .svg inside sniff's .desktop file


2012-05-30 Vita Humpa <vhumpa@redhat.com>

	dogtail 0.8.0
	=============
	Finally a big release updating dogtail after more than 2 years ! Dogtail
	is developed and maintained now again.

	Simply put, ported to be compatible with the new GNOME 3 and to work well in major
	GNOME 3 (GTK3) distributions.

	We'd like to make the 0.8.x version onward the GNOME 3 compatible branch usable
	for Fedora, RHEL7 and others, while keeping 0.7.x releases for fixes in older GNOME2
	systems.

	--- What was done ---

	Notably, Sniff's UI needed to ported completely to GTK3, yet there are
	also several places in dogtail 'itself' that needed to be rewritten to go ahead
	with the new technologies. Those were all the modules where the old pygtk was
	used for various reasons (rawinput, utils, tree...). Incompatibilites were also
	present due to the new version of pyatspi (notably with the doAction method).

	Release highlights:

	* A great number of fixes everywhere related to GTK/GNOME/At-Spi updates

	* The dogtail-recorder was dropped for now, but might return in RC or 0.8.1

	* Thanks to the qt-at-spi project, dogtail now works out-of-the-box for QT!

	* Headless supports KDE sessions

	* Headless working with full 3D-Accelerated GNOME session (no fallback anymore)

	* Highlight used in sniff completely re-written and made toggleable (of by default)

	* Makefile updated, 'make run' builds packages in homedir/rpmbuld now

	* Several examples fixed for updated gedit

	* Added tree.isChild() convenience method

	* Renamed doAction to doActionNamed due to conflict with doAction inside pyatspi namespace

	* Delay made configurable in absoluteMotion and relativeMotion functions

	* Changed at-spi activation to use DConf instead of GConf

	* A bit of code clean-up and modernization (using @property now etc.)

2009-12-07  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Add a little more error checking to avoid some cases
	where sniff, if left running for long periods of time, would crash.

2009-10-27  Zack Cerza <zcerza@redhat.com>

	* tests/Node.py: Add tests for getting labeler/labelee.

2009-10-27  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Refactor all Node properties, to clean up namespace
	pollution.

2009-10-27  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Rewrite the Node.value property in a way that's
	compatible with python 2.4 while still avoiding namespace pollution.
	Add docstrings for the AccessibleValue-related properties.

2009-10-23  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Rewrite Node.findChildren() using
	pyatspi.utils.findAllDescendants(). It's around 10% faster now and
	allows you to use any kind of predicate you wish.

	* tests/Node.py: Make one of the Node.findChildren() tests use
	non-recursive mode.

2009-10-23  Zack Cerza <zcerza@redhat.com>

	* tests/Node.py: Add another unit test for Node.findChildren(). Add
	docs for the rest.

2009-10-23  Zack Cerza <zcerza@redhat.com>

	* tests/Node.py: Add several unit tests for AccessibleValue-related
	properties, since they were all broken a long time ago without anyone
	noticing.

	* dogtail/tree.py: Fix all the AccessibleValue-related properties.

2009-10-22  Zack Cerza <zcerza@redhat.com>

	* tests/Node.py: Add another unit test for Node.findChildren().

2009-10-22  Zack Cerza <zcerza@redhat.com>

	* tests/Node.py: Add unit test for Node.findChildren(), since I'm
	going to rewrite it using the more-optimized
	pyatspi.utils.findAllDescendants().

2009-10-20  Zack Cerza <zcerza@redhat.com>

	* tests/procedural.py: Add more tests, make miscellaneous tweaks.

	* dogtail/procedural.py: Fix a bug found by unit tests.

2009-10-19  Zack Cerza <zcerza@redhat.com>

	* tests/procedural.py: Add some unit tests for the procedural
	interface.

2009-10-19  Zack Cerza <zcerza@redhat.com>

	* tests/Node.py: Add tests for Node.caretOffset and Node.combovalue;
	minor tweaks to other tests.

2009-10-08  Zack Cerza <zcerza@redhat.com>

	* setup.py, dogtail/__init__.py: Post-release version bump.

2009-10-08  Zack Cerza <zcerza@redhat.com>

	* setup.py, dogtail/__init__.py: Bump version to 0.7.0. Remove
	references to .svn directory. Reflect new site.

2009-10-08  Zack Cerza <zcerza@redhat.com>

	* NEWS, README: Add notes about API docs.

2009-10-08  Zack Cerza <zcerza@redhat.com>

	* NEWS: Update.

2009-10-08  Zack Cerza <zcerza@redhat.com>

	* tests/Node.py: Remove tests for Node.version. This actually comes
	straight from pyatspi, and is just plain not useful. It is also
	inconsistent. For example, on RHEL5 it gives you the gail version,
	while on Fedora 12 it gives you the gtk2 version.

2009-10-06  Zack Cerza <zcerza@redhat.com>

	* dogtail/__init__.py: Don't import pyatspi so early.

2009-10-06  Zack Cerza <zcerza@redhat.com>

	* dogtail/sessions.py: Make sure that binaries (at least those with
	absolute or relative paths specified) exist and are executable long
	before we try to execute them.

2009-10-06  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Catch LookupErrors (e.g. quitting an app)

2009-09-30  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Disable debug logging... again.

2009-09-29  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Remove an unused set object. Trying to stay compatible
	with older pythons...

2009-09-29  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Add Node.contains(), which can be used to determine
	if a given point onscreen lies inside a Node's extents. Also add
	Node.getAccessibleAtPoint(), which tries to find the Node at a given
	point on screen.

	* recorder/dogtail-recorder: Use the new Node methods to reimplement
	most of the click detection; the old method was too expensive and
	fragile. Also turn on pyatspi's caching.

2009-09-24  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Add FocusWindow class, and corresponding
	focus.window() API. I think eventually I want focus.window() calls to
	raise the window to the foreground.

2009-09-23  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Fix a bug in Node.typetext(). Actually, change its
	behavior significantly: if we can't grab keyboard focus, fall back to
	inserting text via the editabletext interface at the current caret
	location. old behavior was to replace contents entirely, which doesn't
	scale at all.

2009-09-11  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Use specific Predicate subclasses where
	available.

2009-09-11  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Keyboard recording had been disabled by
	accident. Reenable it.

2009-09-04  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Simplify Node.click(); add Node.doubleClick().

	* tests/Node.py: Make GtkDemoTest.runDemo() use Node.doubleClick()
	instead of the activate action, since gtk-demo doesn't appear to use
	that action anymore. This will be backward-compatible anyway.

2009-09-04  Zack Cerza <zcerza@redhat.com>

	* tests/Node.py: Look for at-spi instead of gail in testGetVersion
	since Fedora no longer has a package called gail.

2009-09-04  Zack Cerza <zcerza@redhat.com>

	* INSTALL: Update.

2009-09-04  Zack Cerza <zcerza@redhat.com>

	* README: Update.

2009-09-04  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py, dogtail/tree.py: Fix some formatting that epydoc
	doesn't like.

2009-09-04  Zack Cerza <zcerza@redhat.com>

	* NEWS: Update.

2009-08-26  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-run-headless: Tweak usage output.

2009-08-26  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-run-headless: Require a script argument to be run!

2009-08-03  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Refactor eventlistener (de)registration
	code. Also move some logEvent calls.

2009-07-24  Zack Cerza <zcerza@redhat.com>

	* examples/test-events.py: Update to pyatspi. Disable some events as
	they just flood the terminal.

2009-05-08  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-logout: Work with RHEL5.

2009-05-05  Zack Cerza <zcerza@redhat.com>

	* dogtail/sessions.py: Use os.kill() instead of Popen.terminate(),
	since the latter doesn't exist before python 2.6...

2009-05-05  Zack Cerza <zcerza@redhat.com>

	* dogtail/sessions.py: Oops, don't close() the xinitrc object!

2009-05-05  Zack Cerza <zcerza@redhat.com>

	* dogtail/sessions.py: Let scratch files be deleted upon closing. Keep
	Session.xinitrcFileOBj around until its start() method is next called,
	so it can be read in the meantime.

2009-05-05  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-logout: Don't use raw clicks. Also add a little more
	documentation.

2009-05-05  Zack Cerza <zcerza@redhat.com>

	* dogtail/sessions.py: Fix path to dogtail-logout

2009-05-05  Zack Cerza <zcerza@redhat.com>

	* dogtail/sessions.py: Remove/comment some debug output.

2009-05-05  Zack Cerza <zcerza@redhat.com>

	* dogtail/sessions.py: Make scriptCmdList an optional argument to
	Session.init()

2009-05-01  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-run-headless: Fix option application.

2009-05-01  Zack Cerza <zcerza@redhat.com>

	* dogtail/sessions.py: Tweak the way we find the correct environment
	for the script.

2009-05-01  Zack Cerza <zcerza@redhat.com>

	* dogtail/sessions.py, scripts/dogtail-run-headless: Refactor most of
	dogtail.sessions.

2009-04-30  Zack Cerza <zcerza@redhat.com>

	* dogtail/sessions.py: Merge Session and GNOMESession; refactor
	Session; add Script.

2009-04-29  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-logout: Add a note about the script still "working"
	if gnome-session doesn't end up being accessible.

2009-04-29  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-run-headless: Give a choice of X servers.

2009-04-29  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-logout: Add a sleep(1), something's wrong...

2009-04-28  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-run-headless: Actually instantiate the session
	object.

2009-04-28  Zack Cerza <zcerza@redhat.com>

	* dogtail/sessions.py: Properly report exit code.

2009-04-28  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-run-headless: Draft of a rewrite using
	dogtail.sessions

2009-04-28  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-logout: Add a new script, dogtail-logout. This is
	for use with headless sessions. Currently doesn't work yet.

2009-04-28  Zack Cerza <zcerza@redhat.com>

	* dogtail/sessions.py: Add a sessions module. This will become the
	basis for a rewritten dogtail-run-headless.

2009-03-21  Zack Cerza <zcerza@redhat.com>

	* epydoc.conf: Add the Epydoc config file.

2009-03-21  Zack Cerza <zcerza@redhat.com>

	* Makefile: Add proper targets for generating/uploading API docs.
	We're using Epydoc now.

2009-03-21  Zack Cerza <zcerza@redhat.com>

	* dogtail/utils.py: If we're running under pydoc or epydoc, don't bail
	if accessibility is disabled.

2008-12-31  Zack Cerza <zcerza@redhat.com>

	* examples/appstartup.py: Add a new example that launches a given
	application, then checks to see that it started correctly by looking
	for a Node with the given roleName.

2008-08-18  Zack Cerza <zcerza@redhat.com>

	* examples/gedit-test-utf8-procedural-api.py: Actually, handle the
	file chooser's expander widget more gracefully by looking to see if it
	has the 'checked' state before expanding it - apparently 'checked'
	means it is expanded. Go figure.

2008-08-18  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Make Click.__call__() work without arguments
	again.

2008-08-11  Zack Cerza <zcerza@redhat.com>

	* tests/Node.py: Don't import pyatspi unnecessarily.

2008-08-11  Zack Cerza <zcerza@redhat.com>

	* dogtail/rawinput.py: Use config.actionDelay for click().

2008-08-11  Zack Cerza <zcerza@redhat.com>

	* examples/gedit-test-utf8-procedural-api.py: Collapse the file
	chooser's expander widget when we're done using it.

2008-08-11  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Don't log giant messages to the debug log if we're
	setting a Node's text to a very large value. Also, use
	config.actionDelay for Node.click().

2008-08-11  Zack Cerza <zcerza@redhat.com>

	* dogtail/tc.py: Put a timestamp on TCImage's diff.png.

2008-08-08  Zack Cerza <zcerza@redhat.com>

	* dogtail/tc.py: Eliminate double slashes in TCImage.diff. Also remove
	do-nothing TCImage.__init__().

2008-08-08  Zack Cerza <zcerza@redhat.com>

	* dogtail/tc.py: Rewrite TCImage to use PIL instead of ImageMagick.
	Update unit tests to reflect this rewrite.

2008-08-08  Zack Cerza <zcerza@redhat.com>

	* dogtail/tc.py: Make TC a new-style class. No particular reason.

2008-08-08  Zack Cerza <zcerza@redhat.com>

	* dogtail/logging.py: Make ResultsLogger log to a file no matter what.

2008-07-24  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Update to reflect API change in rawinput.

2008-02-19  Zack Cerza <zcerza@redhat.com>

	* dogtail/config.py: Add new parameter: checkForA11y, which defaults
	to True. If set to False, we assume accessibility is enabled.

	* dogtail/utils.py: Don't import gconf until necessary.

	* dogtail/tree.py, sniff/sniff: Don't check for accessibility unless
	config.config.checkForA11y is True.

2008-02-19  Zack Cerza <zcerza@redhat.com>

	* examples/gedit-test-utf8-procedural-api.py: Use click() instead of
	activate().

2008-02-19  Zack Cerza <zcerza@redhat.com>

	* dogtail/tc.py: Add TCBool and TCNode.

2008-02-19  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py, dogtail/dump.py: Allow tree.Node.dump() to output
	to a file instead of stdout.

2008-02-19  Zack Cerza <zcerza@redhat.com>

	* dogtail/utils.py: Use subprocess.Popen() instead of os.spawnvpe().

	* dogtail/procedural.py: Make run() return the PID.

2008-02-19  Zack Cerza <zcerza@redhat.com>

	* dogtail/i18n.py: Add loadAllTranslationsForLanguage().

2008-02-19  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py: Make distribution detection code a little less
	ugly. Remove docstrings from the Distro subclasses. Clean up some other
	documentation.

	* dogtail/i18n.py: Don't import the distro module until we actually
	need it.

	* dogtail/logging.py: Add an optional 'newline' arg to Logger.log(),
	which defaults to True. Passing False will cause the logger to not
	print or write a newline at the end of the message. Also stop catching
	some IOErrors, as that made the code awkward for no good reason.

2008-02-06  Zack Cerza <zcerza@redhat.com>

	* dogtail/dump.py: Properly print Node.actions; ditch "xml" output as
	it was not even really a good start.

	* dogtail/tree.py: Strip some useless information of out
	Action.__str__().

2008-02-06  Zack Cerza <zcerza@redhat.com>

	* dogtail/__init__.py: Fix inconsistent version number.

2008-02-06  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py: Fix minor inconsistency.

2008-01-31  Zack Cerza <zcerza@redhat.com>

	* setup.py, dogtail/__init__.py: Bump version to 0.6.90.

2008-01-31  Zack Cerza <zcerza@redhat.com>

	* Makefile, MANIFEST.in: Remove mentions of debian/ and dogtail.spec.

2008-01-31  Zack Cerza <zcerza@redhat.com>

	* dogtail.spec: Remove; see Fedora CVS for the canonical spec file.

2008-01-31  Zack Cerza <zcerza@redhat.com>

	* debian/: Remove as it's so out-of-date it's probably dangerous, and
	Debian doesn't use it anyway.

2008-01-31  Zack Cerza <zcerza@redhat.com>

	* dogtail/rawinput.py: Refactor keyname <-> keysym conversion code.
	Remove unnecessary code, including the ctypes/xlib-based
	keyStringToKeyCode in favor of the gtk.gdk version. This completely
	removes the ctypes dependency.

2008-01-21  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-run-headless: Use a real GNOME session instead of a
	"fake" one.

2008-01-21  Zack Cerza <zcerza@redhat.com>

	* dogtail/wrapped.py: Add dogtail.wrapped module, with superclasses
	for Node and Application wrappers to use in custom application
	wrappers. We need this because dogtail.tree.{Node,Application} are no
	longer wrapper classes, and thus can't be subclasses directly.

2008-01-15  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Change Node.valueMin and valueMax to Node.minValue
	and maxValue; add minValueIncrement.

2008-01-15  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Remove SniffModel.checkNodes() and
	SniffModel.addDeadNode() as we're not using them now that we have
	events working. While there are applications that don't have proper
	event support, the performance hit on constantly crawling over nodes
	is too large.

2008-01-15  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Make rows in the main TreeView expand/collapse on
	pressing Enter.

2008-01-15  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff, sniff.glade: Add a new tab to the bottom pane that
	lists the present states (just the ones supported by dogtail).

2008-01-14  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff, sniff/sniff.glade: Make the relation buttons only
	visible when a target exists. Also prepare
	SniffController.showRelationTarget() more prepared for when we add
	more relations to dogtail and sniff.

2008-01-14  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Fix a stupid error in the Node.dead check.

2008-01-10  Zack Cerza <zcerza@redhat.com>

	* sniff/glade, sniff/sniff: Split bottom pane into tabs: first is
	name, roleName, description, actions; second is (editable)text; third
	is relations. Currently there are only two relations: labeler and
	labelee. Relations in sniff are currently represented as buttons,
	which, when clicked, call the relation targets' blink() method. Also
	fix a minor bug in SniffController.setUpTable() where sometimes we
	would try to disconnect a signal handler multiple times.

2008-01-10  Zack Cerza <zcerza@redhat.com>

	* NEWS: Add a note about a broken unit test due to #498563.

2008-01-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Add Node.dead property; useful if you're unsure if
	the accessible you're about to poke at is still valid, and don't feel
	like trying to catch 3 or more different exceptions.

2008-01-10  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Call SniffController.setUpTable() inside
	selectionChanged() instead of buttonPress().

2008-01-10  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Instead of processing events synchronously, put them in
	a queue to be processed during an idle function. Rewrite
	SniffModel.getPath().

2007-12-18  Zack Cerza <zcerza@redhat.com>

	* dogtail/logging.py: Remove IconLogger. Make Logger not create
	logfiles until its log() method is called. This means sniff won't be
	creating empty logs all the time.

	* dogtail/config.py: Clean up some cruft and remove IconLogger stuff.

	* dogtail/trayicon.py: Removed.

2007-12-18  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Remove the 'finally' from a try-except-finally, since
	that would be the first time we broke compatibility with python 2.4,
	and it's far from worth it :)

2007-12-17  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Overhaul sniff to use pyatspi events to be notified
	when a node is renamed or gains/loses children. As a result,
	SniffModel does not use its addDeadNode() and checkNodes() methods.
	Those methods have not yet been removed, however. This change will
	result in properly-written applications working far better than before
	in sniff. Improperly-written apps (e.g. Firefox, but they know this)
	will behave better than sniff in 0.6.1; checkNodes() was causing
	serious slowdowns in some cases since it's fairly heavy code that
	needs to be looped continuously. Since sniff now has to do a lot less
	work than it did ever before, it should be somewhat faster in all
	cases.

2007-12-11  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff, sniff/glade: Add 'Set Root' and 'Unset Root' menu items
	to Sniff's View menu. Useful if you want to dig into a single app and
	want to reduce the amount of scrolling around necessary slightly.

2007-12-11  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Improve the removal of dead nodes from SniffModel,
	mainly by removing the highest-level dead node in the case that an
	entire subtree is found to be dead. Thanks to Michal Babej for the
	initial patch. Closes: #503056.

2007-12-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Make Action.__node public (i.e. rename to
	Action.node).

2007-12-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Force Node._getChildren() to return an empty list
	if the node's parent is a hyper link.

2007-12-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Er, fix typo in last commit.

2007-12-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Add AccessibleValue support. Thanks to Pelya for
	submitting a patch before the port was merged.

2007-12-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Fix typo.

2007-12-10  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Show lines interconnecting TreeView rows.

2007-12-10  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Expand the root node of the TreeView on startup.

2007-12-10  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Move SniffModel.getNodeAttr() to SniffController, modify
	it to be specific to the 'name' property of a node. That function is
	now called nameDataFunc(). The behavior of nameDataFunc() has also
	been changed: instead of changing the text of the TreeView cell
	representing a defunct Node to '(broken node)', it now flags the row
	for removal by adding a reference to it to SniffModel.deadNodes. Every
	1000ms SniffModel will prune such rows from itself. In my tests, this
	caused no extra measurable increase in CPU utilization.	Also, remove
	all columns in SniffModel other than the node column, as the rest were
	not being used anyway.

2007-12-10  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Refactor sniff. Organize into 3 classes: SniffApp with
	methods	for setting up the application; SniffModel as a subclass of
	gtk.TreeStore; SniffController for poking at the SniffModel and
	gtk.TreeView instances.

2007-12-07  Zack Cerza <zcerza@redhat.com>

	* dogtail/rawinput.py: Fall back to using a gtk.gdk.Keymap
	implementation of keyStringToKeyCode() if ctypes is not available.
	This will probably become the default implementation.

2007-12-07  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Add a patch from Michal Babej to fix a python 2.4
	compatibility issue. Closes: #502324.

2007-12-06  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Only write the script preamble once.

2007-12-06  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Make the Close button in sniff's About dialog actually
	close the dialog.

2007-11-30  Zack Cerza <zcerza@redhat.com>

	* Makefile: Minor update.

2007-11-30  Zack Cerza <zcerza@redhat.com>

	* NEWS: Add a note about a broken unit test due to #498557.

2007-11-30  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Port Accessible.Hypertext and Hyperlink support.
	tree.Link is now called LinkAnchor and is no longer a subclass of
	Node. The new behavior is now that when a Hypertext interface is found
	on a Node, that node will have one extra child Node per
	Hyperlink/anchor pair. The child Nodes will have a role name of 'hyper
	link' and the 'URL' property. Also, remove much dead code.

2007-10-31  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Add a patch from Cole Robinson to both make
	all focus.*() queries return a Boolean based on their success and to
	make the failure warning more verbose.

	* dogtail/config.py, dogtail/logging.py: Add a patch from Cole
	Robinson to allow the logging of debug information to stdout to be
	disabled via config.logDebugToStdOut. Still enabled by default.

2007-10-22  Zack Cerza <zcerza@redhat.com>

	* examples/gedit-test-utf8-procedural-api.py,
	examples/gedit-test-utf8-tree-api.py: Tweak slightly to work with the
	new dogtail behavior of click() using raw mouse events.

2007-10-22  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Remove all calls to time.sleep().

2007-10-22  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Add some missing doDelay()'s. Also remove a chunk
	of dead code.

2007-10-22  Zack Cerza <zcerza@redhat.com>

	* dogtail/errors.py, dogtail/tc.py: Fix encoding headers.

2007-10-22  Zack Cerza <zcerza@redhat.com>

	* MAINTAINERS: Updated.

2007-08-29  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Update and clean up the toplevel docstring.

2007-08-29  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Rewrite Node.__doc__.

2007-08-29  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Remove some redundant documentation from
	Node.__doc__.

2007-08-23  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Port the Action class over. Mainly needed to get at
	keybindings.

2007-08-23  Zack Cerza <zcerza@redhat.com>

	* dogtail/__init__.py: Make __init__.py import pyatspi.

2007-08-23  Zack Cerza <zcerza@redhat.com>

	* tests/Node.py: Update unit tests with API changes: Node States (from
	the old stateSet) are accessed directly, e.g. node.sensitive;
	read-only attributes now raise AttributeError instead of
	ReadOnlyError; atspi.SpiException has been replaced by
	CORBA.COMM_FAILURE.

	* dogtail/tree.py: Replace ReadOnlyError with AttributeError. Also
	make Node.doAction() raise NotSensitiveError if necessary.

2007-08-23  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Fix Application.window() to not try to initialize
	the Window class.

2007-08-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Port setting of Node.combovalue and additionally
	allow retrieval of the value.

2007-08-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Port Node.caretOffset.

2007-08-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Add most of the rest of the checks from the old
	Node.children into the new one, i.e. children limits and null-child
	filtering. Also, when filtering null children, warn if
	config.debugSearching is True.

2007-07-27  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Handle broken nodes more gracefully.

2007-07-27  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Minor change in how we keep track of
	keyboard press/release events.

2007-07-26  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Port dogtail-recorder to pyatspi. Remove
	some dead code. Add lots of comments. The keyboard modifier processing
	had to be rewritten. As a bonus, things like <Shift><Home> should
	actually get noticed now. Also, the madness that was FakeNode is no
	more.

2007-07-25  Zack Cerza <zcerza@redhat.com>

	* dogtail/i18n.py: Fix duplicate checking in
	loadTranslationsFromPackageMoFiles(). Closes: #452232.

2007-06-22  Zack Cerza <zcerza@redhat.com>

	* dogtail/dump.py: Remove SIGINT handler.

2007-06-22  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Port Selection stuff to pyatspi and convert to use
	normal instance methods and properties.

2007-06-20  Zack Cerza <zcerza@redhat.com>

	* examples/no-help-at-all.py: Add patch from Jan HutaÅ™ to use
	cgi.escape() where necessary.

2007-06-20  Zack Cerza <zcerza@redhat.com>

	* examples/filechooser-stress-test.py: Add patch from Jan HutaÅ™ to add
	i18n support.

2007-05-31  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Fix a minor bug in Node._fastFindChild() that
	caused a non-recursive search to halt completely if a null child was
	encountered.

2007-05-30  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Move some documentation into the new properties.
	Remove some unhelpful documentation. Further clean up bits of
	documentation here and there. Note: not done with docs yet :)

2007-05-29  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Remove actual search code from Node.findChild() and
	use pyatspi.utils.findDescendent, via a new Node._fastFindChild()
	function.

2007-05-29  Zack Cerza <zcerza@redhat.com>

	* dogtail/predicate.py: Turn all predicates' satisfiedByNode() functions
	into pseudo-staticmethods, so we can pass those methods directly to the
	search methods in pyatspi.utils.

2007-05-25  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Port Sniff to pyatspi. It should all work now, but
	there could be a bug or two.

2007-05-25  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Begin port from pyspi to pyatspi. Disable __init__,
	__getattr__, __setattr__, __str__ while their functionality is ported.
	Attributes that were accessed via __[gs]attr__ are now declared as
	properties, to make the code easier to read and document.

2007-05-25  Zack Cerza <zcerza@redhat.com>

	* dogtail/logging.py: Actually obey config.logDebugToFile.

	* dogtail/config.py: Implement runtime changing of logDebugToFile.

2007-05-25  Zack Cerza <zcerza@redhat.com>

	* dogtail/config.py: Fix logic in first unit test.

2007-05-16  Zack Cerza <zcerza@redhat.com>

	* dogtail/rawinput.py: Port from pyspi to pyatspi. Use ctypes and Xlib
	to do the keystring -> keycode keycode conversion.

2007-05-11  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py, recorder/dogtail-recorder,
	scripts/dogtail-run-headless, sniff/sniff: Replace 'except:' with
	'except: Exception', since we don't want KeyboardInterrupt and
	SystemExit to be ignored in any of those cases. See:
	http://www.python.org/dev/peps/pep-0352/. Also catch only ImportError
	in once case inside of dogtail-recorder.

2007-05-03  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Add patch from Michal Babej to correctly reset the
	actions label when a Node with no actions is selected. Closes:
	#432999.

2007-03-16  Zack Cerza <zcerza@redhat.com>

	* setup.py: Add patch from Fernando Herrera to fix building from a
	subversion checkout. Closes: #418923.

2007-02-20  Zack Cerza <zcerza@redhat.com>

	* dogtail/predicate.py: Add unit tests for all predicates.

2007-02-13  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Add patch from Michal Babej to fix
	Node.childLabelled().

2007-02-09  Zack Cerza <zcerza@redhat.com>

	* examples/no-help-at-all.py: Add patch from Michal Babej to use
	cgi.escape() to escape content for SGML.

2007-02-09  Zack Cerza <zcerza@redhat.com>

	* dogtail/tc.py: Add patch from Michal Babej that removes some
	confusion in TCImage.compare(), and also fixes a unit test.

2007-02-08  Daniel Drake  <d.drake@mmm.com>

	* dogtail/tree.py: Fix wrong logic in Node.selectedChildren
	implementation

2007-02-08  Zack Cerza <zcerza@redhat.com>

	* dogtail/utils.py: Make isA11yEnabled() look at $GTK_MODULES, too.

2006-11-28  Zack Cerza <zcerza@redhat.com>

	* dogtail/config.py: When creating the default directories for logs,
	etc. (/tmp/dogtail/*), create them world-writable so that they may be
	shared by multiple users.

2006-11-22  Zack Cerza <zcerza@redhat.com>

	* dogtail/config.py: Add parameter 'childrenLimit', which is an integer
	representing how many children of a Node instance to return at maximum.
	The default is 100.

	* dogtail/tree.py: Only return config.childrenLimit children. Log a
	warning to the debug logger the first time the list is clipped, but
	remain silent on subsequent occurences.

2006-11-17  Zack Cerza <zcerza@redhat.com>

	* examples/test-events.py: Make sure dogtail.tree is imported. Closes:
	#374898. Also add warning that the script is outdated, may do evil, and
	will probably be removed soon.

2006-11-15  David Malcolm  <dmalcolm@redhat.com>

	* dogtail/tree.py: ensure that a Node and a Link's children attribute
	always is a list and hence iteratable (previously returned None for
	Link instances and for Node instances that had __hideChildren set);
	similar fix for the Node.findChildren method

2006-10-23  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Make run() insert a space while concatenating
	the binary name and arguments to pass. Closes: #364553.

2006-10-23  Zack Cerza <zcerza@redhat.com>

	* setup.py, dogtail/__init__.py, NEWS: Post-release version bump.

2006-10-13  Zack Cerza <zcerza@redhat.com>

	* Released 0.6.1.

2006-10-13  Zack Cerza <zcerza@redhat.com>

	* NEWS: Update.

2006-10-13  Zack Cerza <zcerza@redhat.com>

	* examples/data/GNOME-Street1.png, examples/data/GNOME-Street.png,
	examples/data/g-star1.png, examples/data/g-star.png: Remove and
	replace with far smaller test images.

	* examples/data/10b.png, examples/data/10w.png, examples/data/20b.png,
	examples/data/20w.png: Add, to replace older, larger test images.

	* dogtail/tc.py: Update to reflect the change in test images.

2006-10-12  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Keep track of which 'frame' (window) the
	widget we're poking is under. If necessary, write out 'focus.frame()'
	lines for that frame. This should keep us from getting confused about
	which non-dialog window of a given application we care about.

2006-10-12  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Be consistent about what name we use for
	the recorder internally.

2006-10-11  Zack Cerza <zcerza@redhat.com>

	* NEWS: Update with changes since 0.6.0.

2006-10-11  Zack Cerza <zcerza@redhat.com>

	* dogtail/rawinput.py: Make typeText('foo\nbar') work again.

2006-10-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py: Fix up Solaris detection so that an /etc/release
	that does not contain 'Solaris' doesn't prevent the exception from
	being raised.

2006-10-10  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Re-add Dave Malcolm's patch to add syntax
	hilighting to the script view, which was accidentally dropped. Closes:
	#345374.

2006-10-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py: Add patch from Brian Cameron to detect Solaris.
	Closes: #360479. Also, check for Fedora before checking for Red Hat.

2006-10-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/i18n.py: Make TranslatableString.matchedBy() check for
	equality before trying to match via regular expression. This will
	ensure that traditional, exact-string searches will work regardless of
	the presence of any regexy-looking characters. Additionaly escape '('
	and ')', since grouping will never need to be used in this context.
	Closes: #348891.

2006-10-02  Zack Cerza <zcerza@redhat.com>

	* dogtail/utils.py: Fix 'Technolofy' typo :)

2006-09-27  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Add support for recording right clicks.
	It mostly works, but I'm seeing some inconsistency regarding what gets
	focus when a right-click event occurs. For example, when a nautilus
	icon seems to retain focus only about half the times it is
	right-clicked; the other half, the context menu receives the focus.
	Obviously, when that happens, the recorder records the wrong event.

2006-09-26  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder, sniff/sniff: Stop whining if the glade
	file isn't in the current directory.

2006-09-26  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder, recorder/recorder.glade: Implement script
	playback using python's threading module.

2006-09-26  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Make type() and keyCombo() fall back to their
	corresponding function in rawinput if focus.widget.node == None.

2006-09-26  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder, recorder/recorder.glade: Remove Quit button
	and add Play button. The Play button isn't fully implemented yet.

2006-09-26  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder, recorder/recorder.glade: Remove combo box
	since OOScriptWriter needs fixing. Also remove the expander since a
	GTK bug was keeping it from expanding properly.

2006-09-22  Zack Cerza <zcerza@redhat.com>

	* dogtail/rawinput.py: Make pressKey(), which is used by typeText(),
	use UniCharToKeySym(). Now typeText('foo, bar; baz!?!') works again.

2006-09-21  Zack Cerza <zcerza@redhat.com>

	* examples/filechooser-stress-test.py: Apply a patch from Michal Babej
	to correctly look for the u'Open files\u2026' dialog.

	* examples/no-help-at-all.py: Apply a patch from Michal Babej fail
	gracefully if no argument was supplied, and also to start the
	requested app if it is not running.

2006-09-21  Zack Cerza <zcerza@redhat.com>

	* dogtail/logging.py: Refactor logging mechanism. DebugLogger is now
	just Logger, and LogWriter is now a Logger subclass called
	ResultsLogger. Logger can (and will by default) write its output to a
	file in config.logDir. To disable the logging of debug information to
	a file, set config.logDebugToFile to False. ResultsLogger now also
	prints its results to standard out.

	* dogtail/distro.py, dogtail/tree.py, dogtail/utils.py:
	Replace all print statements with calls to the debug logger.

	* dogtail/tc.py: Update to reflect changes in dogtail.logging.

	* dogtail/procedural.py: Don't raise a FocusError if
	config.fatalErrors is False. Instead, spit a warning out via
	dogtail.errors.warn(), which relays to the debug logger.

	* dogtail/errors.py: Add warn(), which is the mechanism by which an
	exception is replaced by a warning if config.fatalErrors is False.
	Uses dogtail.logging.debugLogger, which is a dogtail.logging.Logger
	instance.

	* dogtail/config.py: Add two new parameters: 'fatalErrors', which
	specifies whether errors encountered while using dogtail.procedural
	should be considered fatal; and 'logDebugToFile', which specifies
	whether to write debug output to a file. They default to False and
	True, respectively.

	* dogtail/predicate.py: Give debugNames to all the Predicates that
	were missing them.

	* dogtail/i18n.py: Don't spam warnings and probably-useless tracebacks
	when a broken app spews fake UTF-8.

	* dogtail/__init__.py: Post-release version bump. Add the errors
	module to __all__.

	* NEWS, setup.py: Post-release version bump.

2006-09-13  Zack Cerza <zcerza@redhat.com>

	Released 0.6.0.

2006-09-13  Zack Cerza <zcerza@redhat.com>

	* README: Update.

	* setup.py, dogtail/__init__.py: Bump version numbers.

2006-09-13  Zack Cerza <zcerza@redhat.com>

	* MANIFEST.in: Remove debian directory from tarball.

	* setup.py: Remove references to dogtail.apps.wrappers.

2006-09-13  David Malcolm  <dmalcolm@redhat.com>

	* examples/rhythmbox-test.py: removed

	* examples/nautilus-test-icon-view-collage.py: removed (moved to
	dogtail-tests/nautilus)

	* examples/google-search.py: removed (moved to dogtail-tests/epiphany)

	* examples/gnome-panel-test-starting-every-app.py: removed (moved to
	dogtail-tests/gnome-panel)

	* examples/gcalctool-test-fibonacci.py: removed (moved to
	dogtail-tests/gcalctool)

	* examples/firefox-test-browsing-local-html-file.py: removed

	* examples/evolution-test-switching-components.py:
	* examples/data/CAN-2005-0806.mbox:
	* examples/evolution-test-survives-email-CAN-2005-0806.py:
	* examples/evolution-test-sending-email.py:
	* examples/evolution-test-first-time-wizard.py:
	* examples/evolution-test-configuring-imap-smtp.py:
	* examples/evolution-test-configuring-exchange.py:
	* examples/evolution-test-composing-html.py: removed (moved to
	dogtail-tests/evolution)

	* examples/crack.py: removed (never worked)

	* examples/abiword-test.py: removed (moved to dogtail-tests/abiword)

2006-09-13  David Malcolm  <dmalcolm@redhat.com>

	* dogtail/apps: remove entire subdirectory structure: what remained is now in
	GNOME CVS inside dogtail-tests/appwrappers

2006-09-13  David Malcolm  <dmalcolm@redhat.com>

	* dogtail/apps/wrappers/kicker.py: remove

	* dogtail/apps/wrappers/konqueror.py: remove

	* dogtail/apps/wrappers/mozilla.py: remove

	* dogtail/apps/wrappers/epiphany.py,
	* dogtail/apps/wrappers/evolution.py,
	* dogtail/apps/wrappers/gnomepanel.py,
	* dogtail/apps/wrappers/gnomepanel.py,
	* dogtail/apps/wrappers/yelp.py,
	* dogtail/apps/wrappers/nautilus.py: remove reference to categories

	* dogtail/apps/categories.py: remove

	* dogtail/apps/__init__.py: remove categories

2006-09-13  Zack Cerza <zcerza@redhat.com>

	* NEWS: Update.

2006-09-11  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Replace newlines in node.name values with
	an escaped '\n' in ProceduralScriptWriter.recordClick(). Remove a debug
	statement in EventRecorder.onKeyPress().

2006-09-11  David Malcolm  <dmalcolm@redhat.com>

	* dogtail/apps/wrappers/yelp.py, dogtail/apps/wrappers/mozilla.py,
	* dogtail/apps/wrappers/gnomepanel.py: rename self.version in each app
	wrapper to avoid a naming collision with the synthesized Tree.version
	attribute.

2006-09-11  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff, recorder/dogtail-recorder: Add patch from Tim Lee so
	sniff and dogtail-recorder can find glade files even if they're not
	installed into the /usr prefix. Closes: #353719, #353731.

2006-09-11  Zack Cerza <zcerza@redhat.com>

	* dogtail/utils.py, sniff/sniff, recorder/dogtail-recorder,
	dogtail/tree.py: Add utility functions to check whether accessibility
	is enabled via GConf, and either present a dialog asking to enable it
	(for sniff & dogtail-recorder) or just bail (for scripts).

2006-09-07  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Make sure the recorder can't record
	itself. Also remove some old comments.

2006-09-07  Zack Cerza <zcerza@redhat.com>

	* dogtail/i18n.py: Also use safeDecode() instead of calling any
	string's encode() method directly. Now i18n.py should work exclusively
	with Unicode internally, and the safe conversion means that dogtail
	should never crash because of an invalid Unicode string ever again.

2006-09-07  Zack Cerza <zcerza@redhat.com>

	* dogtail/i18n.py: Add safeDecode(), a function based on the fix
	committed on 2006-08-22. Use it instead of calling any string's
	decode() method directly. Closes: #354515.

2006-09-07  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-run-headless: Fix syntax error, and look for
	gnome-settings-daemon in /usr/libexec before $PATH. Closes: #354518.

2006-09-07  Zack Cerza <zcerza@redhat.com>

	* dogtail/utils.py: Rewrite screenshot() to use GDK instead of
	ImageMagick.

2006-09-06  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py: Add patch from Tim Lee to fix up SuSe support.
	Closes: #353601.

2006-09-05  Zack Cerza <zcerza@redhat.com>

	* dogtail/logging.py: Don't use an IconLogger by default.

	* dogtail/config.py: Add useIconLogger setting, which defaults to
	False. Setting it to True enables the IconLogger immediately. Add
	documentation and a unit test to that effect.

2006-08-28  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Ignore any SpiException, only when trying to access
	root.children. This is so people using broken applications while
	trying to test non-broken applications don't have to suffer.

2006-08-25  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Add patch from Chris Lee to add the 'checked' Node
	attribute, which indicates whether the Node is a check box that is
	currently checked.

2006-08-23  Zack Cerza <zcerza@redhat.com>

	* dogtail/config.py: Add parameter 'typingDelay', defaulting to 0.075.

	* dogtail/rawinput.py: Make typeText() use pressKey(). Add
	keySymAliases for '\t' and '\n'.

2006-08-23  Zack Cerza <zcerza@redhat.com>

	* setup.py, MANIFEST.in: Remove mentions of textinput.glade.

2006-08-22  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Remove the text input UI. Implement actual
	keystroke recording. Add support for the ProceduralScriptWriter to
	write out script calls. The OOScriptWriter is unsupported at this time.
	Also, make exceptions occuring inside AT-SPI-registered callbacks more
	informative by printing their tracebacks before they're lost in the
	marshaling process.

	* recorder/recorder.glade: Remove 'Input Text' button.

	* recorder/textinput.glade: Remove glade file for text input UI.

2006-08-22  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Add type(), which for now just calls
	focus.widget.node.typeText(). Add keyCombo(), which for now just calls
	focus.widget.node.keyCombo().

2006-08-22  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Add new Node attributes: 'focusable' and 'focused'.
	Both are read-only Boolean values. 'focusable' indicates whether the
	Node is able of taking keyboard focus. 'focused' indicates whether the
	Node currently has keyboard focus. Remove Node.rawType() and move its
	functionality to Node.typeText(). In Node.typeText(), if the node is
	focusable and not focused, try to grab its focus with Node.grabFocus
	before using rawtype.typeText() to do the typing. If the node is not
	focusable, just append the string to the node's 'text' property. Add
	Node.keyCombo(), which does a similar thing but cannot have a fallback
	mechanism.

2006-08-22  Zack Cerza <zcerza@redhat.com>

	* dogtail/rawinput.py: Add keyCombo(), which takes a string in the same
	format of gtk.accelerator_parse(), e.g. "<Control><Alt>Delete" and
	generates the appropriate keyboard events to simulate the user pressing
	that combination. Add __buildKeyStringsDict(), which essentially
	generates an inverted version of the keySyms dict. Add
	keySymToUniChar(), which takes a keysym and returns the corresponding
	Unicode character, if one exists. Add uniCharToKeySym(), which does the
	reverse. Also add a few more keysym aliases to the keySymAliases dict.

2006-08-22  Zack Cerza <zcerza@redhat.com>

	* dogtail/i18n.py: If we encounter a UnicodeDecodeError because of an
	invalid string, print the exception plus a warning explanation, and
	contintue by decoding the string and replacing invalid characters with
	question marks.

2006-08-21  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder.desktop: Move to the 'Programming'
	category in the menu.

	* sniff/sniff.desktop: Move to the 'Programming' category in the menu.

2006-08-11  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-run-headless: Use the python GConf bindings.

2006-08-11  Zack Cerza <zcerza@redhat.com>

	* NEWS, setup.py, dogtail/__init__.py, dogtail/apps/__init__.py,
	dogtail/apps/wrappers/__init__.py: Post-release version bump.

2006-08-01  Zack Cerza <zcerza@redhat.com>

	Released 0.5.2.

2006-08-01  Zack Cerza <zcerza@redhat.com>

	* NEWS: Update.

2006-08-01  Zack Cerza <zcerza@redhat.com>

	* tests/Node.py: Put a time.sleep() in GtkDemoTest.tearDown() to let
	gtk-demo actually die before launching another. AT-SPI seems to really
	disapprove of the speed at which it was being hammered.

2006-08-01  Zack Cerza <zcerza@redhat.com>

	* NEWS: Update.

2006-07-31  Zack Cerza <zcerza@redhat.com>

	* dogtail/config.py, dogtail/tree.py: Remove shebang lines.

2006-07-28  David Malcolm  <dmalcom@redhat.com>

	* Makefile: add a working default target ('all') and an install target,
	so that it builds within jhbuild (Fixes: #318535)

2006-07-27  David Malcolm  <dmalcolm@redhat.com>

	* tests/Node.py: added TestExceptions: ensure that when an app dies,
	attempts to contact it result in an exception being raised (even more
	final part of bg #318135)

2006-07-27  David Malcolm  <dmalcolm@redhat.com>

	* sniff/sniff: handle broken communication with nodes (e.g. for a
	crashed app) by displaying "broken node" and an error icon (hopefully
	the final part of bug #318135)

2006-07-24  Zack Cerza <zcerza@redhat.com>

	* dogtail/rawinput.py: Use gtk.kesyms to look up keysyms. Retain
	compatibility with old names via a keySymAliases dict. Also, use only
	one atspi.EventGenerator.

2006-07-21  Zack Cerza <zcerza@redhat.com>

	* dogtail/utils.py: Set GTK_MODULES='gail:atk-bridge' in run() before
	executing the app, to make sure it is accessible. It seems most
	non-GNOME apps need this set.

2006-07-21  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Add a UI for setting the text property of
	a Node instance. While recording, you click 'Input Text', and a dialog
	pops up. Click the node whose text you want to set, then type the text
	into the dialog and press OK. The recorder sets the node's text, then
	writes out lines in the script to do the same.

	* recorder/recorder.glade: Add 'Input Text' button.

	* recorder/textinput.glade: Add new glade file: the text input dialog.

	* MANIFEST.in: Add textinput.glade to tarball.

	* setup.py: Add textinput.glade to packages.

2006-07-19  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Initialize EventRecorder.listeners to an
	empty list, to fix a traceback when the user tries to quit the
	recorder without actually recording anything.

2006-07-14  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Make the script TextView editable at
	all times, so the user can add comments and the like while recording.

2006-07-14  Zack Cerza <zcerza@redhat.com>

	* examples/gedit-test-utf8-tree-api.py: Add patch from Len DiMaggio
	to fix this script. Also make the script search for u'Save As\u2026'
	in addition to 'Save As...' for the dialog title. Closes: #340734.

2006-07-14  Zack Cerza <zcerza@redhat.com>

	* dogtail.spec: Forward-port a fix from the Fedora Extras specfile,
	fixing a broken call to desktop-file-install. Closes: #347322.

2006-07-13  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-run-headless: Rewrite the script in Python. It now
	accepts command line options to specify what session is to be used.
	Currently those are: '--gnome' or '-g' for the old minimal GNOME
	session, and '--none' or '-n' for just metacity. The script also has
	a usage statement and helpful error messages. In general it's more
	featureful, robust and easy to use. Closes: #344902.

	* scripts/dogtail-detect-session: Also exit normally if any apps are
	found at all.

2006-06-30  David Malcolm  <david@localhost.localdomain>

	* tests/Node.py: add unit test for getting bogus attributes of a Node;
	document many of the existing unit tests; add unit tests for writing to
	a read-only attribute of Node; fix some typos in the names of the unit
	tests; check that Node.extents has non-zero size, and that Node.size is
	non-zero

	* dogtail/tree.py: make attempts to write to a read-only attribute of
	Node raise a ReadOnlyError, rather than fall through to an
	AttributeError; remove the old stubbed unit test from the tail of the
	file

2006-06-29  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Add warning not to read without understanding
	the API.

2006-06-27  David Malcolm  <dmalcolm@redhat.com>

	* recorder/dogtail-recorder: use GtkSourceView if available to get
	syntax-highlighting.  Closes: #345374.

	* tests/Node.py: new file: unit tests for the dogtail.Node class.

	* tests: new subdirectory, to hold unit tests for Dogtail itself

2006-06-27  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Make SearchError a proper Exception subclass.

	* dogtail/procedural.py: Prepare module for support for accepting
	regular expressions as 'name' arguments. Use the IsAnApplicationNamed
	predicate in FocusApplication. Remove unused 'description' arguments.

	* dogtail/i18n.py: Add regular expression support to
	TranslatableString.matchedBy(). This means that any 'name' argument
	supports regular expression matching, by virtue of the fact that all
	Predicate subclasses uses TranslatableString.matchedBy() for 'name'
	arguments.

2006-06-16  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Add patch from Dave Malcolm to work around the
	problem where pyspi would essentially just stop working, until the
	user logged out and back in. Closes: #321273.

2006-06-15  Zack Cerza <zcerza@redhat.com>

	* dogtail/config.py: Fix help(dogtail.config.config). Fix outdated
	documentation for dogtail.config.config by reorganizing and documenting
	accidentally-undocumented parameters.

2006-06-02  Zack Cerza <zcerza@redhat.com>

	* dogtail/config.py: Fix unit test that was broken by a commit from
	2005-11-01, which made config.ensureSensitivity default to True. The
	unit test wasn't updated in that commit. The unit test now doesn't
	assume what the default is, and uses the value obtained from
	config.defaults. Thanks to Len DiMaggio for reporting. Closes: #342028.

2006-05-01  Zack Cerza <zcerza@redhat.com>

	* recorder/recorder.glade: Remove the 'Stop' button, and add a 'Clear'
	button.

	* recorder/dogtail-recorder: Make the 'Record' button turn into a
	'Stop' button after it is pressed, and vice versa. Add
	toggleRecording() to RecorderGUI and remove startRecording(). Make
	RecorderGUI.quit() stop the recording before it calls gtk.main_quit().

2006-04-17  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Make ProceduralScriptWriter.recordClick()
	write out correct calls for Node instances that don't have
	action['click'] and instead need, for example, 'activate'. If other
	actions aren't available, use the node's select(). If that doesn't
	work, do a click(raw=True), to spoof raw mouse input. Also, remove
	some old AttributeError handlers from FakeNode.__init__(). Also, make
	EventRecorder stop listening to window:create events, since those are
	just thrown away. Also, refactor and rewrite
	EventRecorder.onMouseButton() to be much more accurate in detecting
	clicks. Reporting the wrong nodes happens far less often, now. There
	is still the problem of clicks getting dropped when the mouse button
	isn't help down for, say, 200ms. Clicks on toolbar buttons tend to get
	dropped too. But there are no more false clicks, e.g. clicking on a
	non-accessible application still recorded a (bogus) action. Also, make
	clicking on table cells work properly, working around the fact that
	mouse:button events are always reported by the table and not the cell,
	by finding the smallest child of the table whose extents the event
	occured inside.

	* dogtail/procedural.py: Add Select, an Action subclass that doesn't
	deal with actions. It lets us have select() and deselect() calls. The
	former is how page tabs are activated.

2006-04-17  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Restore sane default window size.

2006-04-17  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Fix Node.size by using the values from
	Node.__accessible.getExtents() instead of .getSize().

2006-04-13  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Change the way Node reports that attributes
	provided by specialized Accessible interface extensions do not apply.
	For example, for some instance 'foo', trying to access 'foo.text' when
	the AccessibleText interface is not available for that node will now
	return None instead of raising an AttributeError (if it were
	available, and the text was zero-length, it would have returned '').
	Trying to access 'foo.children' will return [] instead of raising an
	AttributeError. The reason for this change is that these conditions
	are not "exceptional". Trying to access
	'foo.thisIsANonexistentAttribute' would be exceptional. Also, add a
	ReadOnlyError exception which is raised when, for example, someone
	tries to set 'foo.text' when 'foo' does not have an
	AccessibleEditableText implementation.

	* sniff/sniff: Update Sniff to reflect the removal of most of Node's
	AttributeErrors.

	* sniff/sniff.glade: Use a GtkWindow instead of a GnomeApp. The latter
	was unnecessary and forced us to use widgets we didn't want.

2006-04-11  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Scroll to the end of the TextView after
	inserting a new line, so you can watch the script as it's written.

2006-04-11  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder, recorder/recorder.glade: Add ComboBox to
	allow selection of ScriptWriter. Make ProceduralScriptWriter default.
	Remove those assertions, because they were evil.

2006-04-11  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Implement ProceduralScriptWriter class.
	It implements recordClick() just like OOScriptWriter, but it also has
	the special method findAncestor(), for deciding whether the script
	will need to do a focus.application() or focus.dialog(). For this, I
	needed to implement a FakeNode.__cmp__(). It only compares the name,
	roleName and description of the FakeNode instances. Bother me if you
	need it to compare more attributes for it to work. Make
	ProceduralScriptWriter the default ScriptWriter for now. Also, add a
	couple assertions in various methods to make sure the node parameter
	is never None.

2006-04-04  Zack Cerza <zcerza@redhat.com>

	* setup.py, dogtail/__init__.py, dogtail/config.py, dogtail/distro.py,
	dogtail/dump.py, dogtail/errors.py, dogtail/i18n.py,
	dogtail/logging.py, dogtail/path.py, dogtail/predicate.py,
	dogtail/procedural.py, dogtail/rawinput.py, dogtail/tc.py,
	dogtail/trayicon.py, dogtail/tree.py, dogtail/utils.py,
	dogtail/version.py, dogtail/apps/categories.py,
	dogtail/apps/wrappers/__init__.py, dogtail/apps/wrappers/epiphany.py,
	dogtail/apps/wrappers/evolution.py,
	dogtail/apps/wrappers/gcalctool.py, dogtail/apps/wrappers/gedit.py,
	dogtail/apps/wrappers/gnomepanel.py, dogtail/apps/wrappers/kicker.py,
	dogtail/apps/wrappers/konqueror.py, dogtail/apps/wrappers/mozilla.py,
	dogtail/apps/wrappers/nautilus.py, dogtail/apps/wrappers/yelp.py,
	examples/abiword-test.py, examples/crack.py,
	examples/evolution-test-switching-components.py,
	examples/filechooser-stress-test.py,
	examples/gcalctool-test-fibonacci.py,
	examples/gedit-test-utf8-procedural-api.py,
	examples/gedit-test-utf8-tree-api.py,
	examples/gnome-panel-test-starting-every-app.py,
	examples/google-search.py, examples/i18n-test.py,
	examples/nautilus-test-icon-view-collage.py,
	examples/no-help-at-all.py, examples/rhythmbox-test.py,
	examples/test-events.py, recorder/dogtail-recorder, sniff/sniff:
	Convert everything to use 4 spaces for indentation, instead of tabs.

	* HACKING: Remove all the notes about forcing editors to use tabs for
	indentation. Closes: #318833.

2006-04-04  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff.desktop: Move to the 'Accessories' category in the menu.

2006-04-04  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder.desktop: Add desktop file for
	dogtail-recorder.

	* MANIFEST.in, setup.py: Ship and install dogtail-recorder.desktop.

2006-04-04  Zack Cerza <zcerza@redhat.com>

	* recorder/recorder.glade: Add gtk.Expander and	gtk.TextView
	to allow viewing and editing a script. Note that when the Expander is
	collapsed, the main window doesn't shrink back to its original size.
	This is a bug.

	* recorder/dogtail-recorder: Make ScriptWriters either store
	the script in a normal Python string, or a gtk.TextView if it's
	available. Continue to print the script to standard out, for
	debugging. Implement saving scripts via the GUI, automatically
	appending a '.py' to the filename if necessary. Also, add some basic
	docstrings to some OOScriptWriter methods (mostly to note that the
	keyboard stuff doesn't work yet).

2006-03-31  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Added support for AccessibleSelection to Node, via
	Node.{de,}select(), Node.{de,}selectAll(), Node.isSelected,
	Node.selectedChildren and Node.indexInParent.. Thanks to Peter
	Johanson and Jose Dapena Paz. Closes: #336562.

2006-03-28  Zack Cerza <zcerza@redhat.com>

	* MANIFEST.in: Add the new recorder files to the tarball.

	* setup.py: Add the new recorder files to packages.

2006-03-28  Zack Cerza <zcerza@redhat.com>

	* recorder/dogtail-recorder: Add GUI with Record, Stop, Save and Quit
	buttons. Add new methods to EventRecorder: startRecording() and
	stopRecording(), and move all the event listener (de)registration and
	and AT-SPI event loop handling into those methods. Remove hack that
	killed the recorder when an Edit menu was clicked, since there is a
	working Stop button. This requires today's pyspi HEAD.

	* recorder/recorder.glade: Add Glade file for dogtail-recorder.

2006-03-28  Zack Cerza <zcerza@redhat.com>

	* examples/recorder.py: Move to recorder/dogtail-recorder.

	* recorder/dogtail-recorder: Move from examples/recorder.py.

2006-03-28  Zack Cerza <zcerza@redhat.com>

	* examples/recorder.py: Remove the Writer class and move its only
	method to the ScriptWriter class. Create a a subclass of
	dogtail.tree.node, called FakeNode, which can wrap a Node instance and
	store certain attributes of it, so AT-SPI calls are not used when
	reading them. This was necessary because events are useless if they
	are received after their source has been destroyed. For example, by
	storing recorder.lastFocusedNode as a FakeNode instead of a Node, if a
	Close button in a dialog is clicked we will still have all the
	information we need to record the event. So, make
	EventRecorder.on{Focus,Select}() store self.last{Focus,Select}edNode
	as FakeNodes. Also, make EventRecorder.onMouseButton() properly dance
	around dogtail.tree's handling of attributes. This will have to be
	fixed in the nearish future, though.

2006-03-21  Zack Cerza <zcerza@redhat.com>

	* examples/recorder.py: s/Focussed/Focused/g. Add lastSelectedNode
	callbacks and event listener registration. s/MouseClick/MouseButton/g.
	Keep track of lastPressedNode and lastReleasedNode. Add code to try to
	detect the "real" source nodes by checking the X and Y coordinates of
	lastFocusedNode and lastSelectedNode. Add a way to exit the recorder -
	currently, clicking on an Edit menu will do it. When the
	OOScriptWriter is initialized, make it spit out "from dogtail.tree
	import *".

2006-03-21  Zack Cerza <zcerza@redhat.com>

	* dogtail/predicate.py: Remove extra quotes from all the script
	generation code.

2006-03-21  Zack Cerza <zcerza@redhat.com>

	* dogtail/__init__.py, dogtail/apps/__init__.py,
	dogtail/apps/wrappers/__init__.py, setup.py, NEWS: Post-release
	version bump.

2006-03-14  Zack Cerza <zcerza@redhat.com>

	Released 0.5.1.

2006-03-14  Zack Cerza <zcerza@redhat.com>

	* examples/recorder.py: Store each EventListener in a list instead of
	initializing it and throwing it away. Add the beginnings of a
	OOScriptWriter.recordKey() method - for when pyspi's DeviceListener
	works properly.

	* NEWS: Updated.

2006-03-14  Zack Cerza <zcerza@redhat.com>

	* dogtail/i18n.py, dogtail/rawinput.py, dogtail/i18n.py,
	dogtail/rawinput.py, dogtail/logging.py, dogtail/utils.py,
	dogtail/path.py: Remove '#!/usr/bin/env python' headers to fix rpmlint
	warnings. The rest apparently can keep them, since they have unit
	tests. Add UTF-8 encoding headers.

2006-02-28  Zack Cerza <zcerza@redhat.com>

	* dogtail/predicate.py: Fix makeCamel() to deal with
	TranslatableString instances properly by calling str() on the
	parameter as a safeguard.

2006-02-24  Zack Cerza <zcerza@redhat.com>

	* setup.py, dogtail/__init__.py, dogtail/apps/__init__.py,
	dogtail/apps/wrappers/__init__.py: Belated post-release version bump.

2006-02-24  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py, dogtail/i18n.py, dogtail/logging.py,
	dogtail/tc.py, dogtail/trayicon.py, dogtail/tree.py,
	dogtail/apps/wrappers/evolution.py: s/  / /g. This will make it easier
	to convert to four-space indentation, since that's all the rage these
	days.

	* dogtail/apps/wrappers/nautilus.py: Fix up indentation; was mixing
	tabs and spaces.

2006-02-24  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Tweak the FocusWidget and FocusDialog
	algorithms so that they store the predicate instance. That way, we can
	give more meaningful FocusErrors by passing the predicate's debugName.

2006-02-14  Zack Cerza <zcerza@redhat.com>

	* Makefile: Split 'rpm' target into 'rpm_prep' and 'rpm'. Add a new
	target, 'srpm', to build just a source RPM. Make it ignore
	BuildRequires. Make 'rpm' target only build binary RPMs. Don't make
	the 'tarball' target depend on the 'clean' target.

2006-02-07  Zack Cerza <zcerza@redhat.com>

	Released 0.5.0.

2006-02-07  Zack Cerza <zcerza@redhat.com>

	* README: Add pointed to gedit-procedural example, and note that it's
	the most frequently updated.

2006-02-03  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Add some error checking to getSelectedNode(), to get
	rid of a (harmless, but scary) traceback on startup.

2006-02-03  Zack Cerza <zcerza@redhat.com>

	* dogtail/logging.py: Update to use new icon path.

2006-02-03  Zack Cerza <zcerza@redhat.com>

	* setup.py, sniff/sniff: Move sniff's application icons from
	/usr/share/pixmaps/ into /usr/share/hicolor/*/apps/.

	* setup.cfg: Remove.

2006-02-03  Zack Cerza <zcerza@redhat.com>

	* README: Add README file. It's a start.

2006-01-31  Zack Cerza <zcerza@redhat.com>

	* dogtail/i18n.py, dogtail/predicate.py dogtail/trayicon.py: Be much
	more intelligent about encodings. This should really, truly fix the
	last remaining blocker on the automatic runtime translation feature.
	Closes: 328652.

2006-01-31  Zack Cerza <zcerza@redhat.com>

	* dogtail/i18n.py: Generalize language detection.

2006-01-31  Zack Cerza <zcerza@redhat.com>

	* dogtail/apps/wrappers/epiphany.py: Update to new Action API.

2006-01-27  Zack Cerza <zcerza@redhat.com>

	* dogtail/i18n.py: Comment out some super-verbose debug statements.

	* examples/gedit-test-utf8-procedural-api.py: Use a proper Unicode
	ellipsis.

2006-01-27  Zack Cerza <zcerza@redhat.com>

	* dogtail/i18n.py: Make sure we filter the list of mo-files so that
	we only get the ones in the target language.

2006-01-26  Zack Cerza <zcerza@redhat.com>

	* dogtail/i18n.py: Fix automatic runtime translation. Stop using
	gettext.dgettext(), and instead use the gettext.GNUTranslations class
	and its member function, ugettext(). This ensures that we always get
	Unicode back. As a consequence, stop caring about "domains" and just
	deal with mo-files. Remove getTranslationDomainsForPackage(). Closes:
	#328652. Also, fix isMoFile()'s regexp matching.

2006-01-24  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Comment out the warning about missing wnck
	bindings, since the functionality is nonworking anyway.

	* NEWS: Add note about the last change to dogtail.tree.

2006-01-17  Zack Cerza <zcerza@redhat.com>

	* examples/gedit-test-utf8-procedural-api.py: Use codecs.open()
	instead of open() for reading the UTF-8 files. open() apparently
	ignores encoding issues, and codecs.open() allows us to specify the
	encoding of the file. Add comments to that effect.

	* dogtail/tc.py: Make a note in TC.compare()'s docstring that
	codecs.open() must be used to open any non-ASCII files that are
	intended to be compared using that function.

2006-01-17  Zack Cerza <zcerza@redhat.com>

	* dogtail/utils.py: Make screenshot() raise a DependencyNotFoundError
	if ImageMagick is not installed.

	* NEWS: Add note about the last change to screenshot().

2006-01-17  Zack Cerza <zcerza@redhat.com>

	* NEWS: Add notes about dogtail.errors and the change to TCImage.

2006-01-17  Zack Cerza <zcerza@redhat.com>

	* dogtail/errors.py: Add errors.py, a module for generalized
	exceptions, i.e. its first exception: DependencyNotFoundError. Other
	exceptions such as distro.PackageNotFoundError and
	procedural.FocusError probably do not belong here.

	* dogtail/tc.py: Give a better error message if TCImage is
	instantiated while ImageMagick is not installed, by raising a
	DependencyNotFoundError.

	* examples/gedit-test-utf8-procedural-api.py: Remove unncessary
	TCImage instantiation. Also, be aware that the naming of the "Save as"
	dialog changed slightly. Try both strings.

2006-01-13  Zack Cerza <zcerza@redhat.com>

	* setup.py: Change author_email to dogtail-list@gnome.org.

2006-01-13  Zack Cerza <zcerza@redhat.com>

	* setup.py, dogtail/__init__.py, dogtail/apps/__init__.py,
	dogtail/apps/wrappers/__init__.py: Bump version numbers.

2006-01-13  Zack Cerza <zcerza@redhat.com>

	* MANIFEST.in: Add NEWS file to tarball.

2006-01-05  Zack Cerza <zcerza@redhat.com>

	* NEWS: Update with changes since 0.4.3.

2006-01-04  Zack Cerza <zcerza@redhat.com>

	* examples/gedit-test-utf8-procedural-api.py: Add comment about how to
	turn on automatic translation.

2005-12-01  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Update to the new Action API.

2005-12-01  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Add patch from David Malcolm to add a single
	shortcut method for Node.doAction('click') - simply Node.click() as a
	compromise. Closes: #321196.

2005-11-27  Zack Cerza <zcerza@redhat.com>

	* dogtail/utils.py: Remove spurious print statement from screenshot().

2005-11-27  Zack Cerza <zcerza@redhat.com>

	* NEWS: Reformat to make more readable.

2005-11-27  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Re-add helper methods that were removed on 11-08.
	Change Action API from "Node.actionName()" to
	"Node.doAction(actionName)" for an action whose name is	'actionName'.

	* dogtail/procedural.py: Update to new Action API.

2005-11-22  Zack Cerza <zcerza@redhat.com>

	* debian/control: Fix typo. Thanks to Alex Roitman for reminding me
	to commit this. Closes: #322169.

2005-11-22  Zack Cerza <zcerza@redhat.com>

	* dogtail/tc.py: Make TCImage.compare() work around a change in
	ImageMagick that broke the method, by comparing its version string
	against the one at which it changed. Closes: #321431.

2005-11-18  Zack Cerza <zcerza@redhat.com>

	* dogtail/config.py: Add config parameter 'blinkOnActions'. The
	parameter defaults to False. Set it to True to watch your scripts
	blinken die lichten!

	* dogtail/tree.py: Make Action.do() call blink() on the associated
	node.

2005-11-18  Zack Cerza <zcerza@redhat.com>

	* dogtail/utils.py: Add Blinker class from sniff/sniff, which, upon
	initialization, blinks a rectangular shape onscreen.

	* dogtail/tree.py: Add Node.blink(), which blinks a rectangle around
	the node's extents (if it has extents). This is intended to help
	debugging situations where, during script writing, the node found in a
	search is not what was expeced.

	* sniff/sniff: Remove Blinker class and blinkExtents(). Make
	selectionChanged() just call node.blink().

2005-11-18  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Move blink interval constant into Blinker class. Make
	Blinker.__init__()'s count argument optional, defaulting to 2.

2005-11-17  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Add Hyperlink and Hypertext support via the Link
	class (subclass of Node). Link objects have a roleName of 'hyper link'
	and a 'jump' action in Epiphany - I haven't tested Firefox yet.

2005-11-17  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Add debug logging to Node.rawClick() and
	Node.rawType().

2005-11-17  David Malcolm <dmalcolm@redhat.com>

	* sniff/sniff: reduce it to a single blink (2 calls of the callback)
	rather than two blinks (4 calls) to avoid visual confusion when
	rapidly changing the selection.

2005-11-17  David Malcolm <dmalcolm@redhat.com>

	* sniff/sniff: implement a selectionChanged callback for the tree
	view; use it to make the extents of the selected node blink, porting
	code from at-poke's src/poke.c (though without the grabs that uses).
	Closes: #321655

2005-11-17  David Malcolm <dmalcolm@redhat.com>

	* sniff/sniff: remove the unused "populate" function

2005-11-16  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Properly catch an AttributeError where an
	AssertionError was previously expected. Closes: #321564:.

2005-11-16  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Make FocusDialog.__call__() pass
	recursive=False to FocusApplication.node.findChild(). Closes: #321624.

2005-11-15  Zack Cerza <zcerza@redhat.com>

	* dogtail/logging.py: Make LogWriter print the name of the logfile
	just before it creates it.

2005-11-15  Zack Cerza <zcerza@redhat.com>

	* dogtail/logging.py: Fix TimeStamp.zeroPad() by defaulting to
	width=2. Fix TimeStamp.fileStamp() by renaming 'long' argument to
	'addTime'.

2005-11-14  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Use {get,set}attr() inside
	FocusBase.__{get,set}attr__() instead of
	FocusBase.node.__{get,set}attr__(), in order to composite attributes
	that aren't dynamically generated.

2005-11-14  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Fix compositing of Node properties into
	FocusBase subclasses.

2005-11-14  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Fix focusing. There are supposed to be three
	different focus 'slots': application, dialog, and widget. Previously
	Actions were not operating on the same nodes as FocusWidget as
	intended. Also remove a couple print statements left over from
	previous debugging.

2005-11-14  Zack Cerza <zcerza@redhat.com>

	* dogtail/rawinput.py: rewrite pressKey() to take as an argument the
	English key name as seen on the keyboard, look its keysym up via a
	dict, and pass that value to AT-SPI to synthesize the event. This
	means each key will have to be added to the keySyms dict explicitly,
	but I think it's worth it for the API to make sense and be portable.
	Add docstrings to pressKey() and typeText().

2005-11-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/logging.py: Fix TimeStamper.zeroPad()'s padding, and note in
	its docstring that it will not truncate.

2005-11-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/predicate.py, dogtail/rawinput.py: Clean up imports.

2005-11-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/rawinput.py: Add typeText() and pressKey(). For now
	pressKey() takes an integer keycode argument, but I'd like to enable
	something like "pressKey('Return')" in the future.

	* dogtail/tree.py: Make Node.grabFocus() get added to the object in
	Node.__init__(), but only of the node wraps a Component. Also add
	Node.rawClick() and Node.rawType().

	* dogtail/procedural.py: Implement click(raw=True).

2005-11-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Make FocusWidget.__call__() actually raise a
	FocusError if it can't find what it's looking for.

2005-11-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Add menu(), Focus.frame(), Focus.window().

2005-11-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Add Node.position, Node.size, and Node.grabFocus()
	for those Nodes wrapping an AccessibleComponent.

2005-11-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/tc.py: Don't initialize TC's self.{baseline,undertest,result} so
	that TC.compare() defaults to failing. Make sure to assign
	self.{baseline,undertest} to the value of the arguments passed to
	compare(). Fix several unit tests to specify their strings as being
	Unicode-encoded. Strings comparisons now fail properly. Thanks to
	Muktha Narayan for reporting the bug and attaching a proposed patch.
	Closes: #321151.

2005-11-10  Zack Cerza <zcerza@redhat.com>

	* dogtail/tc.py: s@scripts/pound@examples/data@g to reflect the
	directory naming that occured a while back.

2005-11-08  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Fix bogus logic in Node.__getattr__() where if, for
	example, a Node had multiple actions such that
	node.actions[0].name == 'activate' and node.actions[1].name == 'menu',
	calling node.menu() would fail.

2005-11-08  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Remove "various wrapper/helper search methods":
	Node.{child, menu, menuItem, textentry, button, childLabelled,
	childNamed, tab}(). Node.menu() conflicted with the other Node.menu(),
	which is needed to execute the AccessibleAction's 'menu' action.

2005-11-08  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Fix "maximum recursion depth exceeded" error
	in FocusBase.__getattr__() when 'help(dogtail.procedural)' is called
	right after 'import dogtail.procedural'.

2005-11-08  Zack Cerza <zcerza@redhat.com>

	* Makefile: Build RPMs as a normal user. Thanks again to Bastien
	Nocera for the patch! Closes: #320983.

2005-11-08  Zack Cerza <zcerza@redhat.com>

	* dogtail.spec: Make __os_install_post macro one line to fix building
	RPMs on RHEL4 and earlier. Thanks to Bastien Nocera for the patch.
	Closes: #320978.

2005-11-03  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py: Add PackageDb.getMoFiles(), returning (mostly)
	all the .mo files in the distro, optionally for just one locale. Move
	all PackageDb subclasses into the top level of the module, and prefix
	their names with a '_' so it is possible to subclass them. Add
	UbuntuAptPackageDb to make it possible for getMoFiles() to search in
	/usr/share/locale and /usr/share/locale-langpack. Add JHBuild class, a
	subclass of Distro, and JhBuildPackageDB class, a subclass of
	PackageDb. JhBuildPackageDB.getFiles() and
	JhBuildPackageDB.getVersion() are not implemented yet, as I haven't
	figured out just how they should work yet.

2005-11-03  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py: Make AptPackageDb only call apt_pkg.GetCache()
	once and save the cache object, to save time in the case where
	multiple calls to getVersion() or getDependencies() need to be made.

2005-11-03  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py: Move *PackageDb class declarations and
	instantiations into their Distro classes' __init__() methods. Remove
	all __make*PackageDb() functions. Make dogtail.distro.packageDb a
	reference to dogtail.distro.distro.packageDb, where the second
	'distro' is the Distro subclass instance to preserve the API.

2005-11-02  Zack Cerza <zcerza@redhat.com>

	* dogtail.spec: Bump version number.

2005-11-02  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-run-headless: Save the value of the GConf key
	/desktop/gnome/interface/accessibility, then set it to true before
	running the test. After the test is run, restore the old value.
	Closes: #320548.

2005-11-02  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-run-headless: Preserve the return code of the script
	being exectued. Closes: #320535.

2005-11-01  David Malcolm <dmalcolm@redhat.com>

	* dogtail/apps/wrappers/evolution.py: added setBogusGConfAccountData()
	function as a way of bypassing the first-time wizard

2005-11-01  Zack Cerza <zcerza@redhat.com>

	* dogtail/config.py: Make config.ensureSensitivity False by default.

	* dogtail/tree.py: Make Action.do() spit out a warning if the Node
	instance is not sensitive and config.ensureSensitivity is False.

2005-11-01  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Implement a proper NotSensitiveError exception.
	Make Action.do() raise it instead of a string literal when the
	action's Node instance is not sensitive, and config.ensureSensitivity
	is True.

2005-11-01  Zack Cerza <zcerza@redhat.com>

	* dogtail/logging.py: Change format of TimeStamp.fileStamp() to
	filename_YYYYMMDD-hhmmss or just filename_YYYYMMDD, controlled by the
	new optional argument 'long'. Fix docstrings of TimeStamp.fileStamp()
	and TimeStamp.entryStamp().

	* dogtail/utils.py: Rewrite most of screenshot(), and add assertions
	that config.scratchDir exists before the screenshot is taken, and that
	the screenshot file exists before the function returns. Generate
	screenshot filenames using logging.TimeStamp.entryStamp() by default.
	A call like "screenshot(file='foo') will name the file
	'foo_YYYYMMDD-hhmmss.png', but the timestamping can be disabled with a
	call like "screenshot(file='foo', timeStamp=False)", naming the file
	just 'foo.png'. Additionally, the file argument may specify an
	extension, e.g. 'foo.png' or 'foo.jpg'. Make screenshot() return the
	full path to the screenshot taken. Clarify screenshot()'s docstring.

2005-10-31  Zack Cerza <zcerza@redhat.com>

	* dogtail/i18n.py: Add URL to bug filed at bugzilla.redhat.com to the
	note about popt making gettext.dgettext() bail.

2005-10-31  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py: Add an Ubuntu subclass of Debian, since Ubuntu in
	some cases does things wildly different. For a good example, see
	dogtail/i18n.py.

	* dogtail/i18n.py: Make automatic translation work on Ubuntu with a
	special-case: If a script needing automatic translation is running on
	Ubuntu, look for translations in the language-pack-gnome-$LANGUAGE
	package before the actual package under test. Note that this makes
	automatic translation significantly slower. Also, remove the
	'dogtail' prefix from references to dogtail.config and dogtail.distro.

2005-10-31  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Only be verbose about setting a Node.text attribute
	if config.debugSearching is turned on.

2005-10-31  Zack Cerza <zcerza@redhat.com>

	* examples/gedit-test-utf8-procedural-api.py: Add automatic
	translation support (it's a one-liner!). Don't set $LANG from inside
	the script. Add a line for config.debugTranslation, but comment both
	debug lines out.

2005-10-28  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py: Implement proper Exceptions PackageNotFoundError
	and DistributionNotSupportedError.

2005-10-28  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py: Implement getFiles() and getDependencies() in
	AptPackageDb.

2005-10-28  David Malcolm <dmalcolm@redhat.com>

	* dogtail/i18n.py: New file, providing i18n facilities.

	* dogtail/config.py: Add debugTranslation boolean

	* examples/i18n-test.py: New example, demonstrating the i18n hooks

	* dogtail/tree.py: Add a getUserVisibleStrings() method to Node

	* dogtail/predicate.py: Rewrite all string matching within predicates to
	use the dogtail.i18n.TranslatableString class, and rewriting as
	necessary.

	* dogtail/apps/wrappers/evolution.py: Use the evolution-connector
	package's translations by default.

	* examples/evolution-test-switching-components.py: Use the evolution
	package's translations

2005-10-28  David Malcolm <dmalcolm@redhat.com>

	* dogtail/distro.py: Use correct exceptions for unimplemented functions.
	Add getFiles and getDependencies methods to PackageDb; implement them
	for RpmPackageDb.   Fix the PATCH_MESSAGE to give the mailing list
	address.

2005-10-27  Zack Cerza <zcerza@redhat.com>

	* dogtail/config.py: Rewrite. Rename the Config class to _Config, and
	provide a singleton instance named config. It is no longer necessary
	to instantiate a _Config instance in any script, whereas previously it
	was necessary to do so if any values needed to be changed. Also rename
	logdir to logDir, scratch to scratchDir, and data to dataDir. When the
	*Dir values are changed, the new directory is created instantly if it
	does not exist.	NOTE: this is an API change. Updating any scripts
	should be as simple as replacing 'Config' with 'config', 'logdir' with
	'logDir', 'scratch' with 'scratchDir', 'data' with 'dataDir' and
	removing any instantiations of the old Config class. Also, the old way
	of loading configuration values from a file is no longer supported.
	The current preferred method is to create a Python file that contains
	something like: "from dogtail.config import config; config.logDir =
	'../logs/'; config.debugSearching = True" and then import that file
	from whatever scripts need it.

	* dogtail/logging.py, dogtail/tc.py, dogtail/tree.py,
	examples/firefox-test-browsing-local-html-file.py,
	examples/gcalctool-test-fibonacci.py,
	examples/gedit-test-utf8-procedural-api.py,
	examples/gnome-panel-test-starting-every-app.py,
	examples/google-search.py,
	examples/nautilus-test-icon-view-collage.py, examples/data/sample.cfg:
	Update to new config API.

	* dogtail/procedural.py: Update to new config API. Also, change "def
	run(application, arguments = None, appName = None):" to "def
	run(application, arguments = '', appName = ''):".

	* dogtail/utils.py: Update to new config API. Also, make run()'s appName
	argument default to "''" instead of "None", just like
	dogtail.procedural.run(). Also, make run() use doDelay() instead of
	sleep() to get logging for free via the config.config.debugSearching
	option.

2005-10-24  Zack Cerza <zcerza@redhat.com>

	* dogtail/utils.py: Don't break if a filename is passed to
	screenshot().

2005-10-24  Zack Cerza <zcerza@redhat.com>

	* dogtail/__init__.py, dogtail/apps/__init__.py,
	dogtail/apps/wrappers/__init__.py, setup.py: Post-release version
	bump.

2005-10-24  Zack Cerza <zcerza@redhat.com>

	Released 0.4.3.

2005-10-24  Zack Cerza <zcerza@redhat.com>

	* NEWS: Created with major changes since 0.4.2.

	* dogtail/__init__.py, dogtail/apps/__init__.py,
	dogtail/apps/wrappers/__init__.py, setup.py: Bump version numbers.

	* dogtail.spec, debian/changelog: Add changelog entries for 0.4.3.

2005-10-24  Zack Cerza <zcerza@redhat.com>

	* icons/dogtail-head-48.png, icons/dogtail-head.svg,
	icons/dogtail-tail-48.png, icons/dogtail-tail.svg: Add icons.

	* MANIFEST.in, setup.py: Add new icons to distribution.

	* dogtail/logging.py: Make IconLogger use the dogtail-tail icon.

	* sniff/sniff: Use the dogtail-head icon for the application. Use the
	theme's	desktop icon for the root node in the TreeView. If the then
	has an icon for any application displayed in the TreeView, use it.

	* sniff/sniff.desktop: Use the dogtail-head icon in the menu.

	* dogtail/trayicon.py: Fix typo.

2005-10-24  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Implement the FocusError exception properly.

2005-10-21  Zack Cerza <zcerza@redhat.com>

	* dogtail/trayicon.py: Instead of totally bailing out if Python is
	older than 2.4, just make TrayIcon useless, as is currently the case
	if TrayIcon._runZenity() fails. What should really happen is for
	TrayIcon to actually work under older Python versions, I think.

2005-10-20  Zack Cerza <zcerza@redhat.com>

	* dogtail/apps/wrappers/epiphany.py: Use the package name
	'epiphany-browser' on Debian-based distributions. Thanks to Andrew
	Beresford for the patch.

2005-10-19  Zack Cerza <zcerza@redhat.com>

	* dogtail.spec, setup.py, debian/changelog, debian/copyright: Correct
	website URL.

2005-10-19  Zack Cerza <zcerza@redhat.com>

	* sniff/icons: Create directory.

	* sniff/*.xpm, sniff/icons/*.xpm: Move icons.

	* MANIFEST.in, setup.py, sniff/sniff: Update the icon locations.

2005-10-19  Zack Cerza <zcerza@redhat.com>

	* MANIFEST.in: Add sniff/*.xpm.

2005-10-19  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Add table() and tableCell() to Action and
	FocusWidget. Allow run() to use utils.run()'s optional 'appName'
	argument, for cases where the application's name is different from the
	binary's name.

2005-10-17  David Malcolm <dmalcolm@redhat.com>

	* dogtail/apps/wrappers/yelp.py: new file, wrapper for Yelp.

2005-10-17  David Malcolm <dmalcolm@redhat.com>

	* dogtail/apps/wrappers/predicate.py: add IsATabNamed class

	* dogtail/tree.py: add Node.tab() method

	* dogtail/apps/wrappers/evolution.py: add Evolution.createMeeting()
	method; add AppointmentWindow and MeetingWindow subclasses

2005-10-14  David Malcolm <dmalcolm@redhat.com>

	* dogtail/apps/wrappers/evolution.py: Refactor createAccount, add
	functions to run the first-time wizard (sharing code with account
	creation). Add a blowAwayEvolution function

	* examples/evolution-test-first-time-wizard.py: New example, testing
	the above. Blows away your evolution configuration, so use with
	caution...

2005-10-14  David Malcolm <dmalcolm@redhat.com>

	* dogtail/apps/wrappers/evolution.py: Fix wrapper so that it does not
	require a window, in preparation for wrapping the first-time assistant.

2005-10-13  Zack Cerza <zcerza@redhat.com>

	* dogtail/trayicon.py: Added from jhbuild's jhbuild/utils/.

	* dogtail/logging.py: Add IconLogger class, a stripped-down version of
	jhbuild's TerminalBuildScript in jhbuild/frontends/terminal.py. Modify
	the DebugLogger class to additionally write messages to the
	IconLogger's tooltip. If zenity is not installed or not working
	properly, the DebugLogger should work exactly as before.

2005-10-13  David Malcolm <dmalcolm@redhat.com>

	* examples/no-help-at-all.py: script which generates parodies of bad
	end-user documentation by simply converting reading the UI back in
	DocBook form.

2005-10-12  David Malcolm <dmalcolm@redhat.com>

	* dogtail/apps/wrappers/gedit.py: Initial version, taken from Paolo
	Borelli's home page.

2005-10-11  David Malcolm <dmalcolm@redhat.com>

	* dogtail/tree.py: Replaced a stray reference to "Search" with
	"Predicate"

2005-10-11  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: rename open() to openItem() to avoid
	namespace collision.

	* scripts/dogtail-run-headless: Ignore errors when restoring
	~/.xinitrc. If there was no previous ~/.xinitrc, make sure the
	temporary one isn't left behind. Increase hardcoded sleep delay.

2005-10-11  Zack Cerza <zcerza@redhat.com>

	* MANIFEST.in: Add scripts/ to tarball distribution.

	* setup.py: Install scripts/* .

	* setup.cfg: Add xorg-x11-Xvfb to requires for RPMs.

	* Makefile: Make 'deb' target run 'fakeroot debian/rules clean' before
	building a package.

	* debian/control: Add xvfb to Recommends for debs.

2005-10-11  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-run-headless: Correct typo.

2005-10-11  Zack Cerza <zcerza@redhat.com>

	* scripts/dogtail-run-headless: Restore the original ~/.xinitrc after
	the X server terminates.

2005-10-11  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Add focus.desktop (just a copy of tree.root).
	Later, I'll probably want to replace it with a FocusDesktop instance,
	but for now it's really just to make FocusApplication not break as
	horribly when there are no applications running.

	* scripts/: Created to hold scripts to be installed into /usr/bin/.

	* scripts/dogtail-detect-session: Add a script to detect if an
	accessibility-enabled session is currently running. Right now it
	obviously only looks for a GNOME session, but KDE support can be added
	when available.

	* scripts/dogtail-run-headless: Add a script to run a given dogtail
	script in a headless setup. Currently launches a minimalistic GNOME
	"session" under Xvfb, calls dogtail-detect-session, and if a session
	is detected, executes the dogtail script. Once the script terminates,
	so does the X server - Boom! Closes: #318537

2005-10-11  Zack Cerza <zcerza@redhat.com>

	* dogtail/procedural.py: Add Focus.icon(). Add open() for opening
	icons on nautilus' desktop.

2005-10-10  David Malcolm <dmalcolm@redhat.com>

	* sniff/sniff: Move initial expansion from main to resetModel, so that
	we get the sane one-deep expansion on a Refresh, as well as when sniff
	starts.

2005-10-10  Zack Cerza <zcerza@redhat.com>

	* examples/filechooser-stress-test.py: Port to procedural API.

2005-10-10  David Malcolm <dmalcolm@redhat.com>

	* examples/filechooser-stress-test.py: New file: repeatedly open and
	close the filechooser, for testing perfomance/profiling

2005-10-09  David Malcolm <dmalcolm@redhat.com>

	* examples/gcalctool-test-fibonacci.py: New file: another test
	example. Drives gcalctool to calculate the Fibonacci series.

	* dogtail/apps/wrappers/gcalctool.py: New file: wrapper to help when
	writing gcalctool tests

2005-10-09  Zack Cerza <zcerza@redhat.com>

	* setup.py: Include sniff/*.xpm in the distribution.

	* sniff/sniff: modify loadIcon() to first search the current
	directory, then /usr/share/dogtail/icons. If distributions need to put
	them elsewhere, we can certainly accommodate them.

2005-10-09  Zack Cerza <zcerza@redhat.com>

	* dogtail/tree.py: Revert API change - rename Action.doThisAction() to
	Action.do(). Add documentation in Node.__getattr__(), the only place
	it is used, to make it clear what is happening.

2005-10-09  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff.glade: Give the TreeView default focus.
	Really remove the Edit menu.

2005-10-09  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Add Dave as an author.
	Correct the website URL and remove the License button in the About box.
	Remove 'Role name and 'Description' fields from the TreeView.
	Change the packing on the TreeView to disable expanding.
	Stop importing pdb without using it.

	* sniff/sniff.glade: Change the 'Snoop' menu item name to 'Sniff' -
	sniff used to be called snoop.
	Add keyboard shortcuts to all menu items.
	Remove Edit menu.

2005-10-09  David Malcolm <dmalcolm@redhat.com>

	* dogtail/tree.py: added role attribute to Node (forgot to commit this
	earlier)

2005-10-09  David Malcolm <dmalcolm@redhat.com>

	* sniff/button.xpm, sniff/checkbutton.xpm, sniff/checkmenuitem.xpm,
	sniff/colorselection.xpm, sniff/combo.xpm, sniff/dialog.xpm,
	sniff/image.xpm, sniff/label.xpm, sniff/menubar.xpm,
	sniff/menuitem.xpm, sniff/notebook.xpm, sniff/scrolledwindow.xpm,
	sniff/spinbutton.xpm, sniff/statusbar.xpm, sniff/table.xpm,
	sniff/text.xpm, sniff/toolbar.xpm, sniff/tree.xpm, sniff/treeitem.xpm,
	sniff/unknown.xpm, sniff/viewport.xpm, sniff/vscrollbar.xpm,
	sniff/vseparator.xpm, sniff/window.xpm: Add icons, copied from at-poke

	* sniff/sniff: add constants to represent the tree model columns; use
	icons for nodes, based on code in at-poke. Requires up-to-date pyspi
	(for the role attribute)

2005-10-08  David Malcolm <dmalcolm@redhat.com>

	* examples/recorder.py: Fix the imports so this works again.

2005-10-08  David Malcolm <dmalcolm@redhat.com>

	* examples/evolution-test-switching-components.py: New example which
	repeatedly cycles through Evolution's components.

2005-10-08  Zack Cerza <zcerza@redhat.com>

	* sniff/sniff: Expand the root node of the TreeView on startup.

2005-10-08  Zack Cerza <zcerza@redhat.com>

	* dogtail.spec: Added, from Jeremy Katz.

	* MANIFEST.in: Add dogtail.spec.

	* Makefile: Rework 'rpm' target to call the 'tarball' target first,
	then build the rpm using dogtail.spec, using sudo if necessary. Also,
	make the 'tarball' target call the 'clean' target.

2005-10-08  Zack Cerza <zcerza@redhat.com>

	* examples/google-search.py: Fix call to findChildren(). Fix reference
	to predicate.GenericPredicate.

2005-10-08  Zack Cerza <zcerza@redhat.com>
	* examples/firefox-test-browsing-local-html-file.py,
	examples/gnome-panel-test-starting-every-app.py,
	examples/google-search.py,
	examples/nautilus-test-icon-view-collage.py:
	s/dogtail\.Config/dogtail.config.Config/

2005-10-17  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py: Add patch from Tim Gerla, adding Conary
	support. Closes: #318224

2005-10-07  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py: Add patch from Brent Smith, adding Gentoo
	support. Closes: #318225

2005-10-07  Zack Cerza <zcerza@redhat.com>

	* ChangeLog: Add history since import, tweak formatting. Also add
	commit times (maybe we don't actually want them though, I'm not sure I
	care).

2005-10-07  David Malcolm <dmalcolm@redhat.com>

	* examples/gedit-test-utf8-tree-api.py: Fix the example against
	changes to the API.

2005-10-07  David Malcolm <dmalcolm@redhat.com>

	* dogtail/tree.py: Provide a better warning for when import wnck
	fails (it's a warning, not an error). Make Root.application() return
	an Application instance, rather than a mere Node.

	* ChangeLog: Created.

2005-10-07  Zack Cerza <zcerza@redhat.com>

	* dogtail/distro.py: Minor indentation fix.

2005-10-06  Zack Cerza <zcerza@redhat.com>

	 Released 0.4.2.

2005-10-06  Zack Cerza <zcerza@redhat.com>

	* setup.py, debian/changelog, dogtail/__init__.py,
	  dogtail/apps/__init__.py, dogtail/apps/wrappers/__init__.py:
	Bump version numbers.

2005-10-06  Zack Cerza <zcerza@redhat.com>

	* MANIFEST.in: add MANIFEST.in. (Why do I have to do this again?)
	* setup.py: Add more examples and example data to distribution.
	* Makefile: Add 'tarball' target. Fix 'deb' target.

2005-10-06  Zack Cerza <zcerza@redhat.com>

	Released 0.4.1.

2005-10-06  Zack Cerza <zcerza@redhat.com>

	* setup.py, debian/changelog, dogtail/__init__.py,
	  dogtail/apps/__init__.py, dogtail/apps/wrappers/__init__.py:
	Bump version numbers.

	* MANIFEST.in: Add missing files.

2005-10-06  Zack Cerza <zcerza@redhat.com>

	Released 0.4.0.

2005-10-06  Zack Cerza <zcerza@redhat.com>

	* setup.py, debian/changelog, dogtail/__init__.py,
	  dogtail/apps/__init__.py, dogtail/apps/wrappers/__init__.py: Minor
	  corrections to version numbers.

2005-10-06  Zack Cerza <zcerza@redhat.com>

	* dogtail/utils.py: Make screenshot() log the filename of the
	screenshot via the debug logger.

2005-10-06  Zack Cerza <zcerza@redhat.com>

	* dogtail/logging.py: Add TimeStamp.zeroPad() to pad integers with
	zeroes to a specified width. Make TimeStamp.{file,entry}Stamp use the
	new zeroPad() function.

2005-10-05  Zack Cerza <zcerza@redhat.com>

	* MAINTAINERS: Created.

2005-10-05  Zack Cerza <zcerza@redhat.com>

	* COPYING, HACKING, INSTALL, MANIFEST.in, Makefile, setup.cfg,
	  setup.py, debian/changelog, debian/compat, debian/control,
	  debian/copyright, debian/python-dogtail.install, debian/rules,
	  dogtail/__init__.py, dogtail/config.py, dogtail/distro.py,
	  dogtail/dump.py, dogtail/path.py, dogtail/predicate.py,
	  dogtail/procedural.py, dogtail/rawinput.py, dogtail/tree.py,
	  dogtail/utils.py, dogtail/version.py, dogtail/logging.py,
	  dogtail/tc.py, dogtail/apps/__init__.py,
	  dogtail/apps/categories.py, dogtail/apps/wrappers/__init__.py,
	  dogtail/apps/wrappers/epiphany.py,
	  dogtail/apps/wrappers/evolution.py,
	  dogtail/apps/wrappers/gnomepanel.py,
	  dogtail/apps/wrappers/kicker.py,
	  dogtail/apps/wrappers/konqueror.py,
	  dogtail/apps/wrappers/mozilla.py,
	  dogtail/apps/wrappers/nautilus.py, examples/COPYING,
	  examples/abiword-test.py, examples/crack.py,
	  examples/evolution-test-composing-html.py,
	  examples/evolution-test-configuring-exchange.py,
	  examples/evolution-test-configuring-imap-smtp.py,
	  examples/evolution-test-sending-email.py,
	  examples/evolution-test-survives-email-CAN-2005-0806.py,
	  examples/firefox-test-browsing-local-html-file.py,
	  examples/gedit-test-utf8-procedural-api.py,
	  examples/gedit-test-utf8-tree-api.py,
	  examples/gnome-panel-test-starting-every-app.py,
	  examples/google-search.py,
	  examples/nautilus-test-icon-view-collage.py,
	  examples/recorder.py, examples/rhythmbox-test.py,
	  examples/test-events.py, examples/data/UTF-8-demo.txt,
	  examples/data/sample.cfg, sniff/sniff, sniff/sniff.desktop,
	  sniff/sniff.glade, examples/data/CAN-2005-0806.mbox,
	  examples/data/g-star.png, examples/data/g-star1.png,
	  examples/data/GNOME-Street.png, examples/data/GNOME-Street1.png:
	Initial Import