-
Notifications
You must be signed in to change notification settings - Fork 55
/
CHANGES.txt
1011 lines (752 loc) · 34 KB
/
CHANGES.txt
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
================
Pyface Changelog
================
Release 8.0.0
=============
Highlights of this release
--------------------------
This is a major release which removes a number of things which have been
deprecated for a number of years. The most significant change in this release
is that the Qt toolkit backend has been moved from the ``pyface.ui.qt4``
package to the ``pyface.ui.qt`` package. The "qt4" namespace had been an
ongoing source of confusion as Qt5 and Qt6 became the most popular versions of
Qt in use. Because this change has the potential to cause significant backwards
compatibility issues, this release includes import hooks to continue to support
imports from ``pyface.ui.qt4...`` which can be enabled by:
- using "qt4" for the `ETS_TOOLKIT` or `ETSConfig.toolkit` values.
- setting the `ETS_QT4_IMPORT` environment variable to a non-empty value
- explicitly adding the import hooks to `sys.meta_path`
In particular the environment variables allow users of ETS-based applications
such as Mayavi to continue to use those applications with newer versions of
Pyface until there is time to update their code to the new import locations.
Additionally this release uses the module-level ``__getattr__`` system
introduced in Python 3.7 to delay imports from the ``api`` modules which have
side-effects, particularly toolkit selection. This means that you can, for
example, import ``pyface.api`` and toolkit selection will be deferred until
you actually request a class or object which is toolkit-dependent. Part of
this included adding formal interfaces for ``ActionManager`` and its subclasses
In addition this release:
- adds support for Python 3.11 and drops support for Python 3.6
- adds support for PySide 6.4+ and the new enum system
- removes code supporting PyQt4, and supports more modern imports from
`pyface.qt`, such as `pyface.qt.QtWidgets`.
- removes many things flagged as deprecated in Pyface 7
- consistently add interface classes to ``api`` modules.
- adds new Field subclasses, including an ImageField and LabelField
- moves to a pyproject.toml-based packaging solution, removing setup.py
Detailed changes
----------------
Thanks to:
* Mark Dickinson
* Dominik Gresch
* JaRoSchm
* Rahul Poruri
* Corran Webster
Features
* Refactor IField and add IImageField and ILabelField Field classes (#1234)
* Move ``pyface.ui.qt4`` to ``pyface.ui.qt`` (#1223, #1228)
* Delayed imports with side-effects in ``api`` modules; new interfaces for
``ActionManager`` and its subclasses (#1229)
Enhancements
* Better handling of sizes for multiple (or no) screens (#1237)
* More arguments for the ``confirm`` function (#1221)
* Expose interfaces in ``api`` modules and other improvemnts to ``api`` modules
(#1220, #1222, #1229)
* remove deprecated modules and code (#1209, #1215)
* PySide 6.5 support (#1238)
* Python 3.11 and PySide 6.4 support (#1210)
Fixes
* Always use a no-delay timer for ``GUI`` ``invoke_later`` and
``set_trait_later`` on Qt (#1226)
* Work arounds for some end-of-process segfaults on PySide < 6.4.3 (#1214)
* Use ``exec`` instead of ``exec_`` where possible (#1208)
* Emit a warning rather than asserting in SplitTabWidget (#1192)
* Remove required parent argument in Wx StatusBarManager (#1192)
* Use integer division in DockSplitter.draw (#1190)
Documentation
* general updates and enhancements (#1238)
* update copyright dates (#1191)
CI
* remove ``setup.py`` and use ``pyproject.toml`` (#1203, #1214)
Release 7.4.4
=============
Highlights of this release
--------------------------
This is a quick bugfix release that resolves some issues with the 7.4.3 release
on CI for downstream projects. The issues were on testing code, and so
shouldn't impact application code or behaviour.
Detailed changes
----------------
Thanks to:
* Corran Webster
Fixes
* Don't raise ConditionTimeoutError if test doesn't time out (#1182)
CI
* get CI working again with ubuntu-current on GitHub (#1186)
Release 7.4.3
=============
Highlights of this release
--------------------------
This is a bugfix release that collects a number of additional issues discovered
and fixed since the 7.4.2 release. Among the fixes, this pins PySide6 to less than
6.4.0, as 6.4 has breaking changes in it.
Detailed changes
----------------
Thanks to:
* Alex Chabot-Leclerc
* Mark Dickinson
* Eric Larson
* Steven Kern
* Corran Webster
Fixes
* Fix code editor gutter widget on recent Python versions (#1176)
* fix issues with FileDialog and DirectoryDialog close method on Linux (#1175)
* update setup.py metadata (#1173)
* restrict to PySide versions before 6.4.0 (#1169)
* don't do unneccessary evaluations of conditions in EventLoopHelper (#1168)
* fix a deleted object error in PyQt5 (#1161)
* better reporting of toolkit errors (#1157)
Documentation
* fix some Python 2 style print statements in documentation (#1157)
Release 7.4.2
=============
Highlights of this release
--------------------------
This is a bugfix release that collects a number of additional issues discovered
and fixed since the 7.4.1 release.
Detailed changes
----------------
Thanks to:
* Eric Anderson
* Mark Dickinson
* Robert Kern
* Orion Poplawski
* Rahul Poruri
* PyHannes
* Corran Webster
Fixes
* fixes for Qt workbench backend (#1149)
* fix ConsoleWidget PySide6 issues (#1146, #1147)
* fix default AboutDialog image (#1142)
* remove reference cycle for actions on clean-up (#1143)
* status bar manager not cleaned up properly (#1141)
* expose QOpenGLWidget in a consistent place in pyface.qt (#1138)
* map popup menu coordinates to global (#1137)
* fix issues with last window close on Qt6 (#1136)
* font size and stretch are ints at the toolkit level (#1118)
Documentation
* add copy buttons for example code (#1134)
CI
* add a publish to PyPI Github action (#1126)
Release 7.4.1
=============
Highlights of this release
--------------------------
This is a bugfix release that fixes an issue that was causing memory
corruption and occasional segfaults when using the new ArrayImage and
PILImage classes on Windows with PySide2.
Detailed changes
----------------
Thanks to:
* Mark Dickinson
* Rahul Poruri
* Corran Webster
* John Wiggins
Fixes
* fix segfaults and memory corruption from dropped QImage references (#1108)
Release 7.4.0
=============
Highlights of this release
--------------------------
This release features some significant refactoring and reorganisation of the
Pyface API aimed at making it generally more coherent. Specific changes
include:
* adding intermediate interfaces and classes to collect common roles and
behaviours.
* adding hooks to control widget sizing behaviour within layouts/sizers.
* deprecating behavior where a class creates the underlying toolkit widget in
the __init__ method. This was done by a small minority of Widget classes,
now all widgets are able to use two-step creation (first the
instance, then the toolkit object via the create() method).
* creating Qt versions of some widgets, and filling in some gaps in widget
types (particularly for Fields)
* providing image classes that wrap PIL images and NumPy arrays that allow
dynamic images and icons in addition to the resource-based versions.
* providing a toolkit-independent Font class and corresponding trait that
supports similar use-cases to the existing TraitsUI Font trait.
* extracting the menu and toolbar Schema system from Tasks and making it more
generally useable.
All changes should be backwards compatible, and deprecated APIs have a clear
path forward.
Additionally, this release adds experimental support for Qt 6 in the pyface.qt
API. Downstream packages can use the "pyqt6" and "pyside6" values for
``QT_API`` and CI is being run and passing with PySide6. We generally plan to
move the default development environment to Python 3.8 and PySide6 over the
next few months.
Corresponding to this, PyQt4 support is deprecated, CI is no longer being run
for PyQt4 (which has been at end-of-life since 2015) and remaining support for
PyQt4 will be removed in the next major release.
Detailed changes
----------------
Thanks to:
* Aaron Ayres
* Kit Choi
* Nicola Di Mitri
* Mark Dickinson
* Rahul Poruri
* Diego Ramirez
* Palash Vishnani
* Corran Webster
Enhancements
* Make Action Schemas a generic feature, not specific to Tasks (#1076, #1079)
* Add a FontDialog class (#1067)
* Allow experimental use of Qt6 backends (#1050, #1057, #1059)
* Add DropHandler classes to public API (#1049)
* Make Color and Font traits available in pyface.ui_traits and no longer import
them from traits.api (#1043)
* Add multi-file selection for IFileDialog (#1031)
* Support widgets and context menus for any concrete widget (#1019, #1020,
#1066)
* Add an ILayoutWidget interface and LayoutWidget base class for widgets which
can be used as layout/sizer items and refactor appropriate classes to use
it (#1016, #1018)
* Add an _initialize_control method to base IWidget interface (#1013)
* Deprecate creation of widgets in __init__, use separate create call (#993)
* Add ILayeredPanel and Qt implementation of LayeredPanel (#982)
* Improvements to PythonEditor and PythonWidget classes (#980)
* Improvements to SplitWidget widget (#977)
* Improvements to HeadingText widget (#976)
* Add toggle field widget classes (#962)
* Improvements to image support allowing dynamic images from PIL, NumPy (#693,
#959, #960, #970, #997, #1002, #1004)
* Further conversion to use observe system (#954, #963, #985, #1005, #1026)
* Replace use of pkg_resources by importlib (#943, #991, #994, #1000)
* Remove code branches for unsupported toolkit versions (#938, #939)
* Replace uses of sys.exc_traceback with sys.exc_info()[2] (#936)
* Replace old trait handlers with the new equivalents (#931, #1041, #1043)
* Add a text_format argument to MessageDialogs for Qt (#907)
* Add an enum type for DataViews (#782)
* Add a ColorDialog class (#711, #1065, #1066)
* Add a toolkit-independent Font class and associated traits (#609, #1066)
* Add a TimeField widget class (#507)
Fixes
* Support for PyQt6-style enums (#1098)
* Fix an issue with circular references in EventFilters (#1093)
* Select colors from palettes for better dark mode support (#1089)
* Fix an issue with undocked dock panes not updating (#1044)
* Remove uses of old trait constructors such as Either and Trait() (#728,
#1041)
* Fix SplitEditorAreaPane tab label and tooltip update bugs (#1038)
* Fix broken local imports (#1034, #1036)
* Fix active_task observer (#1026)
* Fixes to make examples work (#988)
* Better support for newer Python and Qt versions (#958, #964, #965)
* Fix use of wx.StyledTextControl (#951)
* Fix sizing of ImageButton when image changes (#932)
* Fixes for observe integration (#915)
* Code quality improvements (#914, #919, #920, #921, #922, #923, #935, #945,
#946, #947, #920, #921, #922, #923, #1007, #1008, #1046, #1048, #1070, #1072,
#1074)
* Fix DockItem trait definitions (#902)
Documentation
* Update discussion of toolkit support (#1101)
* Documentation for standard dialogs (#1053)
* Improvments to GUITestAssistant documenation (#1047)
* Clean up unused links (#1012)
* Documentation for ImageLibrary system (#1001)
* Documentation for GuiTestAssistant and ModalDialogTester (#933)
* Add documentation for contents of API modules (#903)
Build, Tests and Continuous Integration
* Ensure tests run cleanly in Python 3.8 and when some packages missing (#1090)
* Flake8 style check in CI (#1073)
* Use most recent EDM version (#1058)
* Support MacOS Big Sur in CI (#1056)
* Add flake8 command to etstool.py (#1027)
* Rename "master" branch to "main" (#1011)
* Tests for ImageLibrary system (#1003)
* Allow manual triggering of cron CI jobs (#975)
* Generic modules for testing classes (#926, #956)
* Move CI to github actions (#950, #961, #967, #1056)
* Drop PyQt4 from CI (#949, #955)
* Improvements to CI (#908)
Release 7.3.0
=============
The most significant change introduced in this minor release is the
replacement of Traits ``on_trait_change``-based listeners with the new Traits
observation framework.
This release is only compatible with Traits >= 6.2.0 i.e. the most recent
version of Traits.
Highlights of this release
--------------------------
* Replace use of Traits ``on_trait_change`` with ``observe``.
Detailed changes
----------------
Thanks to:
* Aaron Ayres
* Kit Yan Choi
* Rahul Poruri
* Corran Webster
Fixes
* Fix undo/redo merge bugs. (#885)
* Fix importing QtWebEngine after toolkit selection. (#853)
Documentation
* Improve api documentation for ``pyface.tasks`` submodules. (#844)
* Improve api documentation for ``pyface.undo`` and
``pyface.undo.action`` submodules. (#847)
* Improve api documentation for ``pyface.action`` and
``pyface.tasks.action`` submodules. (#843)
* Use viewcode sphinx extension. (#851)
* Address a few sphinx warnings. (#846)
Build, Tests and Continuous Integration
* Stop running CI on traits 6.0. (#865)
* Skip test if wx is not installed. (#867)
* Declare ``python_requires`` to support Python >= 3.6. (#850)
Maintenance and code reorganization
* Replace use of ``traits`` ``on_trait_change`` with ``observe``. (#892, #882,
#881, #880, #870, #864)
* Import from ``traits.api`` where possible. (#866)
* Expose keyboard focus on Widgets. (#862)
* Remove support for PySide. (#861)
* Remove Python 2 sip configuration for Qt toolkit backends. (#860)
* Remove coverage reporting on PRs. (#855)
* Update year range in copyright headers. (#854)
Release 7.2.0
=============
Pyface 7.2.0 is a minor release which introduces a variety of bug fixes,
documentation updates, and other code maintenance. The most significant change
introduced by this release is the addition of undo/redo functionality from the
undo subpackage copied from apptools.
This release should still be compatible with Traits 6.0+. Users are encouraged
to upgrade to Traits 6.1+ to stay current as future releases of Pyface will
stop supporting Traits 6.0.
Highlights of this release
--------------------------
* New :mod:`undo <pyface.undo>` subpackage that has been copied over from
apptools (soon to be deprecated in apptools)
Detailed changes
----------------
Thanks to:
* Aaron Ayres
* Mark Dickinson
* Kit Yan Choi
* Rahul Poruri
* Corran Webster
Features
* Copy Undo over from apptools (#813)
Fixes
* Add wx_id parameter to __init__ for Tree to avoid errors (#810)
* Fix Qt widget visibility (#807)
* Fix sporadic Timer test failure on OSX + Qt (#799)
* Fix invalid escape sequence deprecation warning at compile time (#788)
Build and continuous integration
* Remove macOS builds from Travis CI configuration (#820)
* Run pip install with no deps (#792)
* Don't install traitsui from git source (#787)
Documentation
* Add installation instruction on README (#797)
* Fix code formatting in timers docs (#794)
* Rename version folders for built documentation (#783)
Maintenance and code organization
* Delete unused requirements file (#817)
* Dont include ALL txt files from root directory (#816)
* Log debug message if import PythonShell and PythonEditor fail in api.py (#801)
* Make pygments optional for pyface.api (#796)
* Use importlib_resources instead of pkg_resources for resource files (#791)
* Use importlib_metadata instead of pkg_resources for toolkit entry points (#790)
Release 7.1.0
=============
Pyface 7.1.0 introduces a few new features and fixes to deprecation warnings.
There are also internal cleanups to Qt signal connection logic that
should be invisible to users.
This release should be compatible with Traits 6.0+. Users are encouraged to
upgrade to Traits 6.1+ to stay current as future releases of Pyface will stop
supporting Traits 6.0.
Highlights of this release
--------------------------
* A new :mod:`data_view <pyface.data_view>` subpackage has been introduced to
support visualization of hierarchical and non-hierarchical tabular data. See
:ref:`data-view` section of the user manual for an introduction. Additional
examples are also added to the source distribution. Please note that as of
this release the API is provisional.
* A new :class:`Color <pyface.color.Color>` class and a corresponding
:class:`PyfaceColor <pyface.ui_traits.PyfaceColor>` trait type have been
introduced to support representing colors via a toolkit independent API. See
:ref:`ui-trait-types` section of the user manual for further details.
Detailed changes
----------------
More than 70 PRs went into this release. Thanks to:
* Aaron Ayres
* Ieva Cernyte
* Mark Dickinson
* Kit Yan Choi
* Rahul Poruri
* Corran Webster
Note that the following list is not exhaustive. Some PRs references have been
omitted.
Features
* Add :mod:`data_view <pyface.data_view>` subpackage for visualizing
hierarchical and non-hierarchical data. (#619, #661, #682, #683, #694, #709)
* Add :class:`Color <pyface.color.Color>` and
:class:`PyfaceColor <pyface.ui_traits.PyfaceColor>` trait type.
(#608, #710, #703)
Fixes
* Use availableGeometry for screen size in Qt to match TraitsUI behavior (#727)
* Fix deprecation warnings from Qt SystemMetrics (#719)
* Fix QFontMetrics.width deprecation warning. (#715)
* Remove border for heading text in Qt. (#692)
* Replacing ListItemAttr with ItemAttr to avoid deprecation warning. (#670)
* Fix wx/linux clipboard test failures. (#676)
Build and continuous integration
* Add CI job targeting traits 6.0. (#656)
* Fix extras_requires for PyQt5. (#659)
* Updated edm version in travis and appveyor config files. (#618)
Documentation
* Add documentation for the new PyfaceColor trait and Color class. (#710)
* Add documentation for DataView. (#543, #574, #763)
* Remove all enaml examples. (#652)
* Fix some Sphinx warnings while building documentation. (#769)
Maintenance and code organization
* Disconnect slots to Qt signals when cleaning up widgets. (#536, #542, #540)
* Disconnect trait change handlers when cleaning up ApplicationWindow widgets.
(#541)
* Remove conditionals on python version. (#635)
* Remove a print call in test. (#657)
* Remove all of the u prefix on strings. (#604)
* Use collections.abc instead of collections. (#477)
* Use unittest discover for running tests. (#515)
Release 7.0.1
=============
This is a bugfix release which fixes a number of minor issues with the 7.0.0
release.
Thanks to:
Aaron Ayres, Kit Choi, Rahul Poruri, Pedro Rivotti, Corran Webster.
Change summary
--------------
Fixes
* Fix copyright header in AboutDialog. (#573)
* Fix dock pane layout on Qt5. (#545)
* Fix errors from incorrect QImage memory management. (#546)
* Fix CodeWidget handling of parsed tokens which caused TraitsUI CodeEditor to
fail when a different lexer was chosen (#566).
Release 7.0.0
=============
Pyface 7.0.0 is a major release which focuses on modernization of the
codebase. This release includes updating the WxPython backend to support
WxPython 4, an effort led by Rob McMullen's first cut at support, with
help from a number of other people. It also updates the code to use new
features of Traits 6, and just like Traits 6, this release drops support
for Python 2.
The release includes many bugfixes and a number of smaller incremental
enhancements. Other than the changed dependencies, Pyface 6 code should
largely work unmodified under Pyface 7.
Thanks to:
David Baddeley, Mark Dickinson, Matt Hancock, Petr Kungurtsev, Midhun
Madhusoodanan, Rob McMullen, Shoeb Mohammed, Rahul Poruri, Roberto Preste,
reckoner, Jan von Rickenbach, Chiranth Siddappa, Joris Vankerschaver,
Corran Webster.
Change summary
--------------
Enhancements
* Use Traits 6 features (#480, #494)
* WxPython 4 support (#469, #473, #497, #499)
* Remove six and other Python 2 code (#493)
* Add utility functions for Qt images (#498)
* Allow live update of Action images (#484)
* Add Qt Multimedia APIs to pyface.qt (#485)
* Allow additional copyright notices in the AboutDialog class (#467)
* Replace default AboutDialog and Splashscreen images with Python logo (#454)
* Allow etstool.py to run in non EDM environments (#443)
* Add assertEventuallyTrueInGui method to GuiTestAssistant (#419)
Fixes
* Avoid imports of Wx in interface classes (#500)
* Code style cleanup (#490, #491)
* Documentation fixes (#468)
* SplitEditorAreaPane context menu cleanup (#435)
* Remove deprecated Traits features (#457, #460)
* Better Python 3 compatibility (#438, #455, #461, #477, #479)
* Improved Qt support (#452)
* Fix relative imports for Wx tasks (#448)
* Ensure close button and escape key close message dialogs in Qt (#441)
* Don't show context help button in Windows dialogs (#440)
* Test improvements (#436)
Release 6.1.2
=============
This is a bugfix release which fixes a number of minor issues with the 6.1.1 release.
Thanks to:
Mark Dickinson, Prabhu Ramachandran, Corran Webster.
Change summary
--------------
Fixes
* Don't try to open directories in PythonEditorTask (#428)
* Regression test for split editor area merge messages (#424)
* Fix some comments that should be Traits doc-comments. (#426)
* Fix some occurrences of PyFace (should be Pyface) (#420)
* Use decorator form of classmethod and staticmethod. (#417)
* Use equality rather than is when checking orientation. (#422)
* Fix timer issues. (#409, #414, #415)
* Remove use of etsdevtools in an example file. (#413)
* Fix a questionable version check. (#411)
* Fix error during tab completion on shell. (#410)
Release 6.1.1
=============
This is a bugfix release which fixes a number of minor issues with the 6.1.0 release.
Thanks to:
David Baddeley, Christian Brodbeck, Mark Dickinson, Rahul Poruri, Corran Webster.
Change summary
--------------
Fixes
* Remove use of deprecated Traits get() method (#403)
* Fix pyqt5 webkit imports (#396)
* Remove use of cmp in fix_introspection_bug (#395)
* Update CI infrastructure (#394, #399)
* Update unittest imports (#391)
* Fix bug in argspec usage (#393)
* Fix regression in DoLaterTimer API (#389)
Release 6.1.0
=============
This release introduces a number of new features and bugfixes. The most
prominent of these is a set of Application classes designed to smooth the
transition between Tasks applications which use only Pyface, and those that
take advantage of the Envisage plug-in framework. Developers can now write
a Pyface TasksApplication and then easily transition to an Envisage
TasksApplication as the needs of their codebase grows. This feature has been
a few years in development, and thanks is due to Jonathan Rocher for helping
push this through to completion.
This release also includes a complete re-write of the Pyface timer code to
make it easier to use and to provide a consistent and more Pythonic API
shared by the different back-ends. A backwards compatible API is still
available, but users of the Pyface timer code are encouraged to update to
the new API.
ToolBars can now embed simple widgets, such as text fields, integer spinners,
and comboboxes, as well as simple TraitsUI views. This is provided via a
new "widget" style for Actions as well as the utility subclasses FieldAction
and TraitsUIWidgetAction.
Although not visible to most users of Pyface, this release removes the use
of 2to3 and now uses a unified codebase supported by the six library. Thanks
to Rahul Poruri for performing this transformation. This should help
significantly with ongoing development work in the coming years.
We also include experimental support for PySide2 (also called "Qt for Python").
We are running CI tests using the 5.11 release of PySide2 with success on OS X
and Linux for Python 3, but are experiencing failures with the 5.12 release.
Finally, this release includes a number of bugfixes and minor enhancements
which should improve the reliability and utility of the codebase.
Thanks to:
Martin Bergtholdt, Mark Dickinson, Robert Kern, Eric Larson, Gregory Lee,
Eric McDonald, Rahul Poruri, Jonathan Rocher, Hamdi Sahloul, Roger Serwy,
Brian Teague, Corran Webster, John Wiggins.
Apologies to any contributors that have been omitted.
Change summary
--------------
Enhancements
* Application classes (#334, #355, #345)
* New API for Timers (#340, #365)
* Support simple widgets in toolbars (#359, #360, #368)
* Experimental support of Pyside2 (#318, #335, #358)
* Support single codebase for Python 2 and 3 (#322, #351, #369, #370)
* Support ui dispatch for Traits even if TraitsUI not available (#363)
Fixes
* Fix context menu behaviour (#356)
* Remove TraitsUI dependency in GuiTestAssistant (#366)
* Fixes for ProgressDialog (#357)
* Fixes for toolbar and statusbar life cycles (#332)
* Fixes for CI (#342)
* Fix usages of event_loop() in tests (#336)
* Fix SplitEditorAreaPane tab dragging on Qt5 (#327)
* Fix resource warnings in test suite from un-closed files (#326)
* Remove uses of deprecated HasTraits.set() method (#320)
* Add Qt5 support for deprecated Qt Style options that Mayavi needs (#323)
* Various fixes around Qt API selection (#319, #344, #347, #371, #376, #381)
* Fixes for setup.py (#380)
Release 6.0.0
=============
This release introduces preliminary support for Qt5 via PyQt5, thanks to the
work of Gregor Thalhammer which got the ball rolling. Qt5 support is
not yet robustly tested in deployed applications, so there may yet be bugs to
find. As part of this effort all occurences of old-style signals and slots
have been removed; and this has greatly improved stability under Qt.
In addition, thanks to the dedicated work of Rob McMullen, we now have Tasks
support for wxPython.
This release also features a great deal of work at the API level to disentangle
the two-way dependencies between Pyface and TraitsUI. This has involved moving
a number of sub-packages between the two libraries, most notably the zipped
image resource support and a number of trait definitions. We have endeavored
to keep backwards compatibility via stub modules in the original locations,
but we can't guarantee that there will be no issues with third party code
caused by the change in locations. We haven't been able to remove all
dependencies, but as of this release on the dock and workbench submodules have
required dependencies on TraitsUI.
Another long-desired feature was the ability to write toolkit backends for
Pyface and TraitsUI that are not part of the main codebase. This is now
possible by contributing new toolkit backends to the "pyface.toolkit"
pkg_resources entry point in a setup.py. This work was accompanied by an
overhaul of the toolkit discovery and loading infrastructure; in particular
Pyface and TraitsUI now share the same code for performing these searches
and loading the backends.
Finally, the testing infrastructure has been overhauled to provide a one-stop
location to run tests in self-contained environments using Enthought's EDM
package management tool. Tests can be run from any python environment with the
"edm" command available and the "click" library installed with the "etstool.py"
script at the top level of the repository. In particular::
python etstool.py test_all
will run all relevant tests for all available toolkits in all supported
python versions. The TravisCI and Appveyor continuous integration tools have
been updated to make use of these facilities as well.
Thanks to Florian Bender, Kit Choi, Mark Dickinson, Simon Jagoe, Robert Kern,
Rob McMullen, @nprksh, Prabhu Ramachandran, Gregor Thalhammer, Senganal
Thirunavukkarasu, Ioannis Tziakos, Joris Vankerscharver, and Corran Webster.
Apologies to any contributors that have been omitted.
Change summary
--------------
Enhancements
* Tasks support for wxPython (#223, #247)
* Qt5 Support (#170, #256, #264, #265, #268, #271, #279, #292)
* Disentangling Pyface and TraitsUI (#221, #250)
* EDM-based test runner (#243, #296, #298)
* Improved toolkit selection (#259, #260, #276, #304, #305)
* Move wxPython-specific code to pyface.wx (#261)
* Single choice dialog for Qt toolkit (was already in wx toolkit) (#217)
* Add 'detail' and 'informative' to window dialog helpers (#181)
* Code coverage reporting (#214)
* All Pyface widgets now have visible and enabled traits (#284)
* Allow "qt" as a synonym for "qt4" (#304)
* PythonShell widget history exposed via the API (#314)
* Experimental PySide2 support (#303)
Fixes
* Documentation fixes (#220, #231)
* Testing and CI fixes (#224, #226, #239, #248, #252, #253, #257, #267, #270,
#277, #278, #281, #283)
* Fix bug updating Tasks window titles (#225)
* Python 3 compatibility fixes (#228)
* Remove use of cmp in the AdvancedEditorAreaPane (#237)
* AutoPEP8 of Pyface codebase (#241)
* Minor WxPython fixes (#230, #269, #275, #294)
* Don't use sendPostedEvents in Qt GUI.do_trait_later (#273)
* Fix ordering of items when appending to an ActionManager default group (#290)
* Explicit life-cycle for Qt event filters on Widgets (#300)
* Fixes to ensure demos and examples work (#308)
Release 5.1.0
=============
Change summary since 5.0.0
--------------------------
Enhancements
* Added documentation on toolkit selection (#197)
* Clarify the purpose of LayoutContainer construction args (#189)
* Improve ETSConfig toolkit selection (#187)
Fixes
* Fix restoring show_editor_area from saved perspective(#207)
* Fix WorkbenchWindowLayout in Python 3 (#206)
* Update SplitEditorAreaPane's active editor when focus changes under Qt (#203, #204)
* Read-only CodeEditor should not allow adding newlines in View (#200)
* Fix exception when closing all docks in a workbench window (#199)
* Fix extended trait change description in qt dock pane (#194)
* Fix Qt Workbench dock widget control in a workbench window (#192)
* Fix double UnInit of AUI in ApplicationWindow under Wx (#184, #185)
* Fix IPythonWidget syntax error (#178, #186)
* Fix ProgressDialog timer labels #(183)
* Fix Qt CodeWidget when focus goes out of a widget (#176, #177)
* Fix Qt and Wx ProgressDialog for updating message (#176, #177)
Release 5.0.0
=============
This release introduces preliminary support for Python 3 with the Qt toolkit!
This is based in large part on the work of Yves Delley and Pradyun Gedam, but
also owes a lot to Ioannis Tziakos for implementing container-based continuous
integration and Prabhu Ramachandran and Corran Webster for tracking down the
few remaining bugs. Python 3 support is probably not yet ready for production
use, but feedback and bug reports are welcome, and all future pull requests
will be expected to work with Python 3.4 and later. Python 3 support requires
Traits 4.5 or greater, and TraitsUI 5.0 or greater.
This release also bring support for wxPython 3.0, while dropping support for
wxPython 2.6 and earlier. There are also a couple of minor bug fixes detailed
below.
Finally, this release changes the default GUI toolkit from Wx to Qt. This
changes the behaviour of the library in the case where both WxPython and
PyQt/PySide are installed and the user or code doesn't specify the toolkit to
use explicitly.
Change summary since 4.5.2
--------------------------
Features
* Experimental support for Python 3 (#160, #161, #162, #163).
* Experimental support for wxPython 3 (#168).
Enhancements
* Make Qt 4 the default GUI toolkit (#172).
Fixes
* Fix issue with reading unicode text from Qt clipboard (#159).
* Remove usage of `logging.warn` in favour of `logger.warning` (#167).
Release 4.5.2
=============
This release includes a large number of additions to the test suite that
provide at least basic smoke-test coverage of the core of the library. There
has also been work done to improve the continuous integration testing of
the library. Much more work needs to be done on this front, but the situation
is improving.
The process of adding these tests also discovered a number of minor bugs
which have been fixed.
Finally, this release warns that as of Pyface 5.0 the default GUI toolkit
will switch from Wx to Qt. This future update will change the behaviour of
the library in the case where both WxPython and PyQt/PySide are installed and
the user or code doesn't specify the toolkit to use explicitly.
Change summary since 4.5.1
--------------------------
Enhancements
* Added many tests, increasing test coverage by about 10% (PR#147)
* Add continuous integration support for Windows and Qt via Appveyor (PR #154)
* Use Travis CI's container infrastructure (PR #153)
Fixes
* Stop TaskWindow layout running after window control destroyed (PR#156).
* Fix file execution for PythonShell on Windows with Qt backend (PR#147).
* Fix Group objects setting wrong trait when naming new Actions (PR#147).
* Fix ActionItem change handler for `visible` trait (PR#147).
* Fix failure to release application window from AUIManager in Wx (PR#147).
* Fix missing import for qt4 confirmation dialog (PR#147).
* Deprecate Wx as the default toolkit choice for Pyface (PR#150).
* Improve error handling in toolkit imports; fix some import errors which
made the Qt PythonEditor unavailable; and make pygments a formal requirement
rather than implicit (PR#144).
Release 4.5.1
=============
Change summary since 4.5.0
--------------------------
Fixes
* fix MANIFEST.in (PR#131).
* Fix incompatibility with Pygments 2.x, which was causing tracebacks
during syntax highlighting (PR#136).
Release 4.5.0
=============
Change summary since 4.4.0
--------------------------
Enhancements
* Add testing assistants (Qt) (PR#118).
* Support menus in toolbars (Qt) (PR#104).
* keybindings update for other editor area classes (PR#103).
* Change advanced editor area tab switching shortcut to Ctrl+PgUp/Down (PR#99).
* ToolBar: Listen to Action name changes for toolbar actions (PR#90).
Fixes
* Fix reference to attribute (PR#112).
* Fixed wx 2.9 incompatibility bug in ProgressDialog (PR#106).
* Qt CodeEditor pygments monkeypatch conflict with ipython (PR#100).
* Documentation fix (PR#95).
* Tooltip for first editor of SplitEditorAreaPane was broken (PR#108)
Release 4.4.0
=============
This is a bug fix release. The biggest change in this release is support for the
new adaptation mechanism in Traits 4.4.0.
Change summary since 4.3.0
--------------------------
New features
* Support Enaml 0.8 (PR#92)
Enhancements
* Improvements to SplitEditorAreaPane (PR#83).
Fixes
* Fixed split editor area pane focus (PR#89).
* Fixed bug when a VSplitter contains an HSplitter (PR#88, issue#87)
TraitsGUI 3.1.0 (July 15, 2009)
===============================
Enhancements
------------
* Removed Theming support from DockWindows. Borders and tabs are now drawn using lines instead of stretching images.
* Changed default font to use the system font