-
Notifications
You must be signed in to change notification settings - Fork 96
/
CHANGES.txt
1216 lines (958 loc) · 43 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
Traits UI Changelog
===================
Release 8.0.0
-------------
This is a major release that provides support for PySide 6.4 and 6.5 as well
as Python 3.11. It includes a number of backwards-incompatible changes
following the example of Pyface 8.0.0, most notable is moving the
`traitsui.qt4.*` modules to `traitsui.qt.*`. As with Pyface 8.0 we include
a backwards-compatibility mode which allows importing from the 'qt4' namespace
via:
- setting the ETS toolkit to `"qt4"`
- setting the ETS_QT4_IMPORTS environment variable
- manually adding appropriate finders to sys.meta_path
This release also removes a number of features deprecated since TraitsUI 7.0.
Thanks To
---------
* David Baddeley
* Mark Dickinson
* Dominik Gresch
* hopeful0
* Chengyu Liu
* Orion Poplawski
* Corran Webster
Features
--------
* Be strict about 'handler.init()' return values (#2008)
* Move 'traitsui.qt4.*' to 'traitsui.qt.*' (#2004)
* Remove deprecated 'format' trait (#2002)
* Deprecate imports from traitsui.editors (use traitsui.editors.api) (#2000)
* Remove backwards-compatibility mode in undo/redo code (#1999)
* Support for Python 3.11 and PySide 6.4+ (#1994)
Fixes
-----
* Fix uses of None in date range editor (#2019)
* Add comments for Wx-only examples (#2011, #2020)
* Replace uses of "fast_ui" dispatch with "ui" dispatch (#2009)
* Fix FileDialog selection actions (#2003)
* Fix regression in Wx version of FileEditor (#1993)
* Fix missing attribute of InstanceFactoryChocie (#1989)
Test suite
----------
* Replace some relative imports in tests (#1985)
Release 7.4.3
-------------
This is a small bugfix release which resolves some bugs that have come to light
as we get more experience with PySide 6, together with changes to run CI on
more recent Python versions and current Github infrastructure.
Thanks To
---------
* Mark Dickinson
* Matt Reay
* Corran Webster
* John Wiggins
Fixes
-----
* Fix rendering of dragged tree nodes on Qt6 (#1960)
* Add explicit allow_none in Datetime traits (#1964)
* Generate extra TableEditor menus dynamically (#1966)
* Display the selected date in the DateEditor in custom style (#1967)
* Guard Qt TreeEditor against destroyed QTreeViewItems (#1973)
Test suite
----------
* Update CI for EDM Python 3.8 (#1972)
Release 7.4.2
-------------
This is a small bug fix release which resolves a couple of bugs in the
RangeEditor and TreeEditor. It also pins the PySide6 version to < 6.4.0 due
to incompatibilities with the new enum system, which should improve the install
experience.
Thanks To
---------
* Aaron Ayres
* hopeful0
* Corran Webster
Fixes
-----
* Fix RangeTextEditor handling of None for low/high (#1950)
* Pin PySide6 to < 6.4 (#1951)
* Fix issues with shared "New" context menu in TreeEditor (#1953)
Release 7.4.1
-------------
This is a bug fix release which resolves an issue with RangeEditor not handling
None for either the high or low value, as well as an issue with ProgressColumn
rendering.
Thanks To
---------
* Steve Allen
* Chris Angell
* Aaron Ayres
* Maxwell Grady
* Johannes Loibl
* Rahul Poruri
* Corran Webster
* Hai Yan
Fixes
-----
* Fix issue with progress column rendering on Linux and Windows. (#1937)
* Fix typos in docstrings (#1935)
* Fix range text editor bug (#1931)
* Fix issue where file editor filters were not used in simple editor (#1930)
Release 7.4.0
-------------
This is a minor release which fixes a number of bugs and adds a couple of
small features. The most significant changes are the ability to add separators
to EnumEditor comboboxes, the ability to use Pyface action Schemas for menu bars
and toolbars in Views, and getting the VideoEditor working against the new
QtMultimedia APIs in Qt6.
Thanks To
~~~~~~~~~
* Aaron Ayres
* Mark Dickinson
* Rahul Poruri
* PyHannes
* Prabhu Ramachandran
* Ioannis Tziakos
* Corran Webster
* John Wiggins
* Hai Yan
Features
~~~~~~~~
* Separators in Combobox EnumEditors. (#1885)
* Allow the use of Pyface Schemas for View menus and toolbars. (#1827)
Fixes
~~~~~
* Delay imports which force toolkit selection (#1883)
* Fix ImageEditor paintEvent when image is None. (#1907)
* Fix VideoEditor for Qt6 (#1908)
* Fix the ImageEnumEditor on Qt5+ (#1910)
* Fix some height and width calls for Qt and Python 3.10+ (#1911)
* Fix a crash on PyQt5 when a Group has no content (#1914)
* Numerous fixes for tests and CI (#1897, #1893, #1889, #1894, #1898, #1899,
#1990, #1902, #1903)
Documentation changes
~~~~~~~~~~~~~~~~~~~~~
* Add a copy button to code blocks in documentation (#1904)
Release 7.3.1
-------------
TraitsUI 7.3.1 is a bugfix release that resolves a couple of critical errors in
some Editors.
Thanks To
~~~~~~~~~
* Mark Dickinson
* Steven Kern
* Orion Poplawski
* Rahul Poruri
* Corran Webster
Fixes
~~~~~
* Fix an issue with KeyBindingsEditor double-click and dark mode colors (#1864)
* Fix an issue with integer division in ImageEnumEditor (#1862)
* Fix an attribute name and type error in the FileEditor (#1860)
Release 7.3.0
-------------
TraitsUI 7.3.0 is a minor release which includes numerous bug fixes,
documentation improvements, code maintenance changes, and enhancements.
Highlights of this release
~~~~~~~~~~~~~~~~~~~~~~~~~~
* The most important new features are experimental support for Qt6, both for
PySide6 and PyQt6 (although the latter is less complete).
* Qt4 is deprecated and is no longer being tested in CI. Support will be
removed in the next major release.
* The new Pyface Font and Color classes can now be used with the TraitsUI
Color and Font traits.
* The image editor can now use any Pyface IImage instance, allowing simple
dynamic image editing.
* Numerous bugfixes and small improvements to existing editors.
Thanks To
~~~~~~~~~
* Chris Angell
* Aaron Ayres
* Per A. Brodtkorb
* Mark Dickinson
* Petr Kungurtsev
* Eric Larson
* Nicola De Mitri
* Rahul Poruri
* PyHannes
* Diego Ramirez
* Pedro Rivotti
* Corran Webster
Features
~~~~~~~~
* Expose TreeEditor actions and IconSize in traitsui.editors.api (#1690)
* Add UITester support for qt TableEditor (#1707)
* Add UITester DirectoryEditor support (#1710)
* Add an expand_all method to TreeEditor (#1726)
* Used Black to ensure a uniform codestyle for TraitsUI (#1760)
* Allow per-row tooltips in the ListStrEditor's adapter (#1766)
* PySide6 support (#1803)
* Add support for Pyface Color and standaize color names (#1812)
* Pyface Fonts can be used with TraitsUI Font traits (#1819)
* Add ListStrAdapter to traitsui.api (#1823)
* Remove uses of the archaic `property_depends_on` decorator (#1832)
* Require Pyface 7.4.1 (#1840)
Fixes
~~~~~
* Call HasPrivateTraits.__init__() in GroupEditor.__init__ (#1674)
* Add RangeEditor support for format_func and deprecate ``format`` trait on
RangeEditor factory / toolkit specific Editor implementations (#1684)
* Fix Dynamic EnumEditor on qt (#1719)
* Fix ProgressColumn bars overlapping with PyQt5 and PySide2 (#1721)
* Fix selectable InstanceEditor combobox updates (#1725)
* Fix Qt InstanceEditor appearance when None selected (#1728)
* Prevent RangeTextEditor from allowing values outside range (#1731)
* Fix droppable InstanceEditor (#1733)
* Fix double error dialogs (#1734)
* Convert ``traitsui.instance_choice.InstanceChoiceItem`` into an instance of
``traits.api.ABCHasStrictTraits`` to avoid users from instantiating the
object directly (#1738)
* Fix issue with incorrect items added via context menu in a TreeEditor (#1745)
* Fix name errors and refactor flake8 config to reduce the chance of future errors. (#1754)
* Fix NotebookEditor initial `selected` (#1791)
* Convert Qt Enums to be compatible with PyQt6 (#1798)
* Fix SimpleSpinEditor "enter set" on qt (#1804)
* Fix issue with ImageEditor not updating for all IImage implementations. (#1810)
* Fix issues with KeyBindings. (#1817)
* Fix the KeyBindingEditor. (#1820)
* Improve error colors for dark mode on Qt. (#1821)
Documentation changes
~~~~~~~~~~~~~~~~~~~~~
* Move "array_editor" to "StandardEditors" contributed examples (#1691)
Test suite
~~~~~~~~~~
* Stop testing against pyqt4 on CI (#1686)
* Remove tests and examples that depend on Chaco and Enable. (#1833)
Release 7.2.1
-------------
TraitsUI 7.2.1 is a bugfix release which updates TraitsUI to explicitly require
Traits 6.2+ and Pyface 7.3+.
Build and continuous integration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Explicitly require traits 6.2 and pyface 7.3 (#1666, #1668)
Release 7.2.0
-------------
TraitsUI 7.2.0 is a minor release which includes numerous bug fixes,
documentation improvements, code maintenance changes, and enhancements.
Highlights of this release
~~~~~~~~~~~~~~~~~~~~~~~~~~
* The migration from ``on_trait_change`` to ``observe`` is underway. As a
result, TraitsUI now requires Traits >= 6.2.
* New display-only VideoEditor (currently only on Qt backend).
* Exapnsion of features for the new ``UITester`` including the ability to
inspect UI object visibility / enabledness. Also documentation for testing
has been updated.
Notes on upgrading
~~~~~~~~~~~~~~~~~~
* This release of TraitsUI now depends on Traits 6.2+ and pyface 7.2+. Also,
deprecated code / modules have been removed. Namely, the
:mod:`traitsui.image <traitsui.image>` module which was moved to
``pyface.image``, ``editors_gen`` modules, Editor and EditorFactory factory
methods on Toolkit objects, and more. For a complete list, see PRs in the
"Removals" section below. These were all generally unused / deprecated for
sometime. Also, importing directly from ``traitsui.editors`` has been
deprecated. Please update imports to import directly from :mod:`traitsui.api`
or :mod:`traitsui.editors.api`.
Detailed changes
~~~~~~~~~~~~~~~~
Thanks to:
* Aaron Ayres
* Kit Yan Choi
* Mark Dickinson
* Rahul Poruri
* Corran Webster
Enhancements
~~~~~~~~~~~~
* Open links externally instead of in the html editor in etsdemo application (#1446)
* Hide demo tab when the demo is None (#1456)
* Extract an interface from TargetRegistry to allow wider testing support for IsEnabled (#1490)
* Expose clearButtonEnabled for Qt TextEditor (#1516)
* Extend / document secret TreeNode api for passing tuples into add list trait (#1527)
* Add 'IsVisible` query class for UI Tester (#1552)
* Extend button editor to allow dynamically changing button image (#1566)
* Support testing with simple FileEditor (without dialog) (#1571)
* Qt VideoEditor (#745, #1609, #1621)
* Add item_factory callable for specifying creation of new list items (#1634)
Fixes
~~~~~
* Support HTMLEditor.open_externally on QtWebEngine (#1451)
* Qt InstanceEditor button should never be the default (#1498)
* Propagate UI errors to the UI's parent (#1503)
* Fix resizable readonly enum editor (#1532)
* StartStyling API changed for new Wx version (#1536)
* Don't use html for a variable name when using html module from standard library (#1540)
* Label {visible/enabled}_when (#1544)
* manually set the text format to plain text in error (#1546)
* Fix RGBColor hex int to tuple color conversion (#1554)
* Make Scrollable group respect visible_when (#1555)
* Use correct source_path in example (#1433)
* Move EnumEditor import in table_filter into the methods that need it (#1616)
Documentation
~~~~~~~~~~~~~
* Add a module docstring to the api modules (#1441)
* Use viewcode sphinx extension (#1443)
* Add links to API docs in a etsdemo examples for traitsui standard editors (#1445)
* Clarify which of traitsui.api and traitsui.editors.api is recommended (#1471)
* traitsui.testing documentation updates (#1482, #1483, #1485, #1486, #1487, #1488)
* Fix link label to the documentation home page (#1489)
* Document enabled_when / visible_when better (#1537)
* Document entries parameter not supported qt for FileEditor/DirectoryEditor (#1557
* Add script to regenerate screenshots of editors for documentation (#1574)
* Remove unused images in docs (#1584)
* replace # with #: to document traits in traitsui.editors.* (#1596)
* User facing docs for VideoEditor (#1630)
* Format code examples in the user documentation (#1640)
Build and continuous integration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Fix cron job not installing additional dependencies (#1427)
* Remove job on Travis for testing against Traits 6.0 (#1430)
* Drop Python 3.5 support in TraitsUI (#1436)
* Declare Python 3.5 not supported for ets-demo (#1437)
* Fix link for installing wxPython on CI (for etsdemo) (#1491)
* Add GitHub Actions to test against EDM (#1492)
* Add GitHub Actions workflow for testing ets-demo (#1496)
* Use EDM 3.2.3 instead of EDM 3.2.1 (#1548)
* Drop support for PyQt < 4.3.2 (#1607)
* Remove CI test against Traits 6.0 (#1637)
* explicitly install swig 3.0.12 for cron job (#1652)
Test suite
~~~~~~~~~~
* Refactor and extend tests for Qt HTMLEditor handling of opening links (#1465)
* Update new test_editor_error_msg (#1553)
* Unskip "EnumEditor" tests that were failing earlier on windows (#1615)
* skip video editor test without numpy / move numpy import to when it is needed
/ list numpy as test dependency (#1639)
* skip test if no QtWebkit or QtWebEngine (#1649)
* skip a couple wx test failures (#1656)
Maintenance and code organization
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Add pygments to etsdemo's etstool.py (#1453)
* Add help aliases to etsdemo etstool module (#1457)
* Fix/Update copyright headers (#1467, #1486)
* work towards flake8 clean codebase (#1469, #1562, #1563)
* Remove meaningless comments from an outdated coding style. (#1472)
* Remove clause that deviates from PEP8 backward compatibility convention in the testing package (#1481)
* Formal editor interface for tooltips (#1493
* Add instance choice classes to traitsui.api (#1495)
* Undo/Redo cleanup (#1510)
* start on_trait_change to observe migration (#1519, #1520, #1523, #1525, #1545, #1622, #1644)
* Refactor TreeEditor _new_actions and _menu_new_node to avoid hacky eval (#1524)
* Refactor _add_items method of _GroupPanel object (#1549)
* Add new trait to eventually replace scroll_to_row_hint (#1560)
* Add 'default': True to the etsdemo eam metadata (#1568)
* update "super" usage (#1583, #1587, #1588, #1589, #1604)
* Use "str.capitalize" directly instead of an alias (#1598)
* Use "PrefixList" from traits >= 6.1 (#1599)
* Update use of deprecated "Thread.setDaemon" (#1601)
* Replace deprecated "wx.ListItemAttr" with "wx.ItemAttr" (#1602)
* Adds "traitsui.toolkit.toolkit_object" to "traitsui.api" (#1603)
* Import "TraitFactory" from "traits.api" (#1606)
* Rename editor factory classes (#1610)
* Cleanup imports in "traitsui.editors.*" (#1619)
Removals
~~~~~~~~
* Remove deprecated classes/modules (#1594)
* remove traitsui.image submodule (#1595)
* Remove Editor and EditorFactory factory methods on Toolkit objects (#1600)
* Remove backwards compatibility toolkit factory imports (#1608)
* Remove unused "Item.full_size" trait (#1613)
* Remove code handling old/outdated versions of wx (#1614)
* Remove unused editors_gen modules (#1626)
Release 7.1.1
-------------
This is a bugfix release that fixes a number of issues since the 7.1.0 release.
Thanks to Corran Webster and Kit Choi for the patches.
Fixes
~~~~~
- Fix ``scrollable`` trait of a Group not being implemented on Qt (#1406)
- Fix icon button's clickable area too small for FileEditor and RangeEditor on
Qt and OSX (#1383)
- Fix missing minimize and maximize buttons for dialogs opened on certain
Linux platforms (#1409)
Release 7.1.0
-------------
TraitsUI 7.1.0 is a minor feature release which introduces a new testing library
and a number of significant fixes. Demo examples are also distributed as
package data such that they are visible via the "etsdemo" GUI application (to
be installed separately).
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 TraitsUI will
stop supporting Traits 6.0.
Highlights of this release
~~~~~~~~~~~~~~~~~~~~~~~~~~
* A new :mod:`traitsui.testing.api` module has been introduced for testing
GUI applications built using TraitsUI. See
:ref:`testing-traitsui-applications` for an introduction. Builtin support
has been added for testing several TraitsUI editors. More support will be
added in the future.
* On OSX and Qt, there have been reports of missing UI view updates after
a push button is clicked. While this is suspected to be a Qt issue, changes
have been made to ButtonEditor, SetEditor and ImageEnumEditor to mitigate the
situation.
* The internal logic for disposing an instance of :class:`~traitsui.ui.UI` is
changed as an attempt to resolve AttributeError that occurs while a nested
UI is removed.
Notes on upgrading
~~~~~~~~~~~~~~~~~~
* On the issue about Qt button not causing views to update on OSX, projects
that have been working around the issue by adding ``GUI().process_events()``
(or similar) in their applications may now try to remove those workarounds.
However, the change that mitigates the issue in a production environment has
implications for tests: The button's click slot is no longer invoked
immediately but always invoked by the Qt GUI event loop. Tests that used to
call the Qt button ``click`` method directly and rely on the event to happen
immediately will now need to update their tests to ensure that the click slot
is processed by the Qt GUI event loop in the same order as before. Consider
using the new testing library which automatically runs the GUI event loop
after each interaction (e.g. mouse click).
Future removals
~~~~~~~~~~~~~~~
* :mod:`traitsui.image <traitsui.image>` has been moved to ``pyface.image`` more than 3 years
ago and has since been deprecated. Previously it was scheduled to be removed
in TraitsUI 6.0. This planned removal is now deferred to TraitsUI 7.2.
Detailed changes
~~~~~~~~~~~~~~~~
More than 100 PRs went into this release. Thanks to:
* Aaron Ayres
* Ieva Cerny
* Kit Yan Choi
* Mark Dickinson
* James Johnson
* Eric Larson
* Rahul Poruri
* Jonathan Rocher
* Kuya Takami
* Ioannis Tziakos
* Corran Webster
Note that the following list is not exhaustive. Many more PRs references have
been omitted.
Features
~~~~~~~~
* Add :class:`~traitsui.testing.ui_tester.UITester` for testing TraitsUI
applications (#1107, #1157, #1171, #1175, #1179, #1201, #1207, #1269)
Fixes
~~~~~
* Fix AttributeError when a nested UI is disposed (#1286)
* Fix wx error due to use of alignment flag wxEXPAND (#1095)
* Fix ButtonEditor not causing other widgets to update on OSX and Qt (#1303)
* Fix ImageEnumEditor button not causing other updates on OSX (#1326)
* Fix SetEditor on Qt and OSX not updating view after button clicks (#1325)
* Fix for menu actions with on_perform being performed twice (#1199)
* Fix deprecation warnings from Traits 6.1 due to the use of PrefixList (#1053)
* Fix deprecation warnings from using HasTraits.trait_get (#1062)
* Fix deprecation warnings from using QDesktopWidget.availableGeometry (#1311)
* Fix deprecation warnings from using logging.warn (#1165)
* Fix deprecation warnings from using ABC in collections (#1103, #1129)
Documentation
~~~~~~~~~~~~~
* Make demo examples as package data (#1088)
* Add UITester documentation in User Manual (#1263)
* Add Developer Guide with internals on the testing package (#1314)
* Fix warnings in demo examples documentation (#1378)
* Generate API documentation automatically (#1368)
Build and continuous integration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Add a CI job for testing against traits 6.0 (#1108)
* Move MacOS CI build from Travis to Appveyor (#1160)
* Add flake8 task to CI with exclusions (#1222)
* Explicitly declare additional dependencies for demo examples (#1147)
* Explicitly require a minimum version for Traits (#1323)
Maintenance and code organization
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Relax constraint on PySide2 version (#1146)
* Update edm version in travis and appveyor config files (#1049)
* Resolve warnings in tests from QItemSelectionModel with Qt5 (#1041)
* Improve how we capture and re-raise errors in GUI tests (#1099)
* Replace screen metrics code with Pyface implementation (#1322)
* Fix deprecation warnings from certain usage of QDateTime in tests (#1310)
* Add a new shell command to etstool.py (#1244)
Release 7.0.1
-------------
This is a bugfix release that fixes a number of issues since the 7.0.0 release.
It includes fixes to various editors, improvements to tests and fixes to the
demo application.
Thanks to Ieva Cerny, Kit Choi, Mark Dickinson, Robert Kern, Eric Larson,
Federico Miorelli, Joris Vankerschaver, Corran Webster.
Fixes
~~~~~
* Fix error from true division of integers for Qt RangeEditor and BoundsEditor
(#999, #1000)
* Fix handling of minimum and maximum datetimes in Qt DatetimeEditor (#803)
* Fix error in wx TabularEditor (#969)
* Fix wx panel error due to alignments (#829)
* Fix various issues in the demo application (#799, #808)
* Fix format_func not used when EnumEditor is initialized with static values
(#848)
* Fix demo application description (#850)
* Fix auto-add functionality in ListStrModel (#860)
* Fix segmentation fault for TabularModel (#871, #873)
* Fix event handling in ListStrEditor and TabularEditor for adding and removing
items (#875)
* Fix TabularAdapter crashes when column number reduces (#897)
* Fix theme pickling issue (#915)
* Fix error from example's tutor.py script (#813)
Documentation
~~~~~~~~~~~~~
* Add links from TabularEditor and TreeEditor to adapter documentation (#917)
Tests
~~~~~
* Rewrite nose tests to unittest (#809)
* Use unittest discover instead of nose.core (#810)
* Add more tests for EnumEditor (#836)
* Add CheckListEditor tests (#837)
* Add SetEditor tests (#838)
* Add ImageEnumEditor tests (#845)
* Add more ListStrEditor tests (#869)
* Add more TabularEditor tests (#874)
* Make sure all UI in tests are disposed (#865)
* Add tests for layout and labels using any non-null toolkits (#846)
Release 7.0.0
-------------
TraitsUI 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, particularly Per Brodtkorb. It also
updates the code to use new features of Traits 6, and just like Traits 6,
this release drops support for Python 2.
In addition to the modernization, this code fixes many bugs and adds some
useful new features, including:
- a DatetimeEditor to go with the new Datetime trait in Traits 6
- an API to add placeholder text to a TextEditor
- support for the LEDEditor in Qt
Finally, the documentation has been improved, adding sections about some
of the internals of the TraitsUI mechanisms. Additionally, the Examples,
Demos and Tutorials have been improved and cleaned-up, including fixing and
unifying the demo viewer codebase.
Thanks to Per Brodtkorb, Christian Brodbeck, Kit Choi, Mark Dickinson, Matt
Hancock, Sandhya Govindaraju, Midhun Madhusoodanan, Rob McMullen, Shoeb
Mohammed, Eric Olsen, Roberto Preste, reckoner, Jonathan Rocher, Scott
Talbert, Corran Webster.
Enhancements
~~~~~~~~~~~~
* Documentation improvements (#720, #724, #723, #778)
* WxPython 4 compatibility and support (#708, #736, #762, #772, #775, #776)
* Traits 6 compatibility and enhancements (#689, #690, #693, #695, #713, #727, #770)
* Style improvements (#648, #771)
* Add placeholder text option for TextEditor (#735)
* Examples clean-up and unification (#697, #702, #703, #705, #711, #712, #777)
* Add a DatetimeEditor (#719, #730)
* Refactor and clean-up of base Editor class (#685, #686, #688)
* Remove use of Category classes from TraitsUI (#654)
* Add LEDEditor for Qt (#635)
* Add 'docs' command to etstool.py (#624)
* Add TabularAdapter to traitsui.api (#627)
* Enhancements to CI and testing (#683, #714, #740)
Fixes
~~~~~
* Documentation fixes (#546, #766)
* Fix cgi.escape for Python 3.8 (#780)
* Log exceptions in table sorting (#751)
* Use TupleEditor for traits derived from BaseTuple (#747)
* Fixes for Undo/Redo (#733)
* Add explicit redraw for TableEditor selection (#721)
* Fixes for Qt5 support (#709)
* Fix bugs in color functions (#707, #744)
* Fix importing of ProgressColumn and EditColumn (#691)
* Set initial focus item correctly in Qt (#602)
* Fix text elision test on some platforms (#644)
* Fix a bug with TableEditor column clicking (#669)
* Fix typo in progress column exception (#662)
Release 6.1.3
-------------
A bugfix release that fixes a number of issues discovered since the
6.1.2 release. In particular this fixes a number of issues around the
TableEditor and TabularEditor for the Qt toolkit which didn't match
the advertised behaviour in the documentation.
Thanks to Qi Chen, Vladimir Chukharev, Mark Dickinson, Sandhya Govindaraju,
Maxwell Grady, Scott Maddox, Sean Parsons, Rahul Poruri, Corran Webster.
Fixes
~~~~~
* Add "bool" to allowed types for TableColumn (#656)
* Fix tabular editor column widths (#652)
* Fix setting valus in DataFrameEditor (#651)
* Allow '...' in addition to ellipsis in text elision (#644)
* Handle invalid values in RangeEditor better (#637)
* Fix multi-select in Qt TabularEditor (#633)
* Fix call to Bind in Wx FileEditor (#628)
* Fixes to doc links in tutorial (#619)
* Remove 3.5 from test matrix (#615)
* Ensure etstool.py has consistent default Python versions (#614)
* Fix typos in comments for table editor (#610)
* Comprehensive tests for the base Editor object (#609)
* Fix ContextValue __init__ method (#607)
* Fix tutor.py in examples for Python 3 (#603)
* Set initial item focus correctly on Qt (#602)
* Make View and UI icons an Image trait (#600)
* Fix TableEditor styling for Qt (#597)
Release 6.1.2
-------------
A bugfix release that fixes a number of issues discovered since the
6.1.1 release. In particular this fixes a couple of issues that impacted
the usability of Mayavi.
Thanks to Mark Dickinson, Maxwell Grady, Prabhu Ramachandran, Matt Reay,
Ajeet Vivekanandan, Corran Webster, John Wiggins.
Fixes
~~~~~
* Fix tree node copy failure to copy (#590)
* Fix/scroll to row preserve column (#588)
* Call correct object on label change for TreeNodeObject (#586)
* Remove uses of etsdevtools (#577)
* Fix modal view application (#574)
* Remove unicode usage (#572)
* Update Travis CI configuration to be compatible with Ubuntu Xenial. (#569)
* Build CI on maintenance branches (#567)
* Fix an erroneous handler removal (#566)
* Fix the sizeHint() default for TreeItemDelegate (#565).
* Update unittest import (#564)
Release 6.1.1
-------------
A bugfix release to correct some critical issues with the TreeEditor.
Fixes
~~~~~
* Fix TreeNodeObject listener cache (#558).
* Fix tree node insertion (#561).
Release 6.1.0
-------------
This is an incremental release without many new features, but with
significant improvements in the code base and numerous small bugfixes.
Probably the most significant change, but one not obvious to most users
is that we have moved away from using 2to3 for Python 3 support to using
a single codebase with the six library to patch over the differences.
This significantly enhances maintainability and development speed, and
gives a better path forward for future Python versions.
Additionally, this release introduces experimental support for PySide2
(also known as "Qt for Python"). Pyside2 was enabled as a potential
backend in 6.0.0 but there was no testing being performed. As of this
release PySide2 is now tested as part of the CI system with tests passing
on Linux and OS X using the 5.11 release. There are currently issues with
the 5.12 release which have yet to be fully investigated.
The one significant new feature that has been added to this release is the
ability to completely replace the rendering of TreeEditorNodes with custom
rendering code on Qt (due to the limitations of the Wx tree control, this
is unlikely to be extended to Wx). An example showing the drawing of
sparkline plots in TreeEditor cells has been added to the code demos.
There has been a long-standing issue with the way that the Qt TableEditor
handled selections, and this release fixes this, matching the behaviour of
the Wx backend and the documentation. It is possible that this may break
code that was written expecting the buggy behaviour.
Finally, there are a large number of minor bug fixes
Thanks to:
Martin Bergtholdt, Stefano Borini, Alex Chabot, Kit Choi, Mark Dickinson,
Kevin Duff, Matthew Evans, Matt Hancock, Robert Kern, Fede Miorelli,
Rahul Poruri, Jenni Portman, Prabhu Ramachandran, @ransonr, Jonathan Rocher,
Roger Serwy, Ajeet Vivekanandan, Corran Webster, John Wiggins.
Enhancemenrs
~~~~~~~~~~~~
* Switch to using six instead of 2to3 (#482, #484, #486, #498, #531).
* Experimental Pyside2 support (#451, #500, #504).
* Allow arbitrary rendering of tree nodes in Qt backend (#499, #502, #527).
* Use tooltip metadata on a trait instead of desc, if available (#473).
* Enable scroll to column for TabularEditor (#547)
* Add demo for tabular editor with context menu (#460).
* Allow the use of extended trait names in TreeNodes where possible (#500, #528).
* Allow drag move and drag copy modes on Qt TabularEditor (#363).
Fixes
~~~~~
* Fixes to README (#478).
* Documentation fixes (#471, #508).
* Fixes to setup.py (#549).
* Fix an attribute error on Qt TextRangeEditor (#540).
* Use SimpleEditor for Qt TextEditor's "text" style (#535).
* Fix handling of Range traits with a mix of constant and named bounds (#533).
* Fix display selection on Wx backend (#534).
* Fixes for Qt TableEditor selections (#275).
* Fix deprecation warnings for inspect.getargspec (#530).
* Fixes to etstool (#526).
* Fix TreeEditor unhashable type errors (#525).
* Fix crash when TabularEditor has no columns (#521).
* Clone editor factories so they don't share traits (#519).
* Avoid creation of dummy traits by springy items (#515).
* Fix drag and drop crash in Python 3 (#516).
* Fix Undo/Redo for readonly items and error handling (#510).
* Fix source parsing in demo app (#501).
* Fix signature of close() method of Qt modal dialog (#506).
* Fix incorrect code in Wx ColorEditor (#479).
* Fix incorrect code in Wx ProgressEditor (#513).
* Remove uses of deprecated HasTraits.set() calls (#457).
* Fix rendering of CheckboxColumn on OS X and Qt (#456).
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.
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.
As part of the latter work, support for TraitsUI Themes have been removed. This
was a feature that was only available under WxPython, was slow, was never used
in production code, and was not supported for over a decade. Some of the
codebase remains as it is still used by the Pyface Dock infrastructure and
several editors, but ther long-term intention is to remove this completely.
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 "traitsui.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.
The entire TraitsUI codebase has been run through the AutoPEP8, assisted with
some customized fixups and occasional drive-by cleanups of code, which means
that the codebase is generally easier to read and follows modern Python
conventions.
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 Martin Bergtholdt, Alex Chabot, Kit Choi, Mark Dickinson, Robin Dunn,
Pradyun Gedam, Robert Kern, Marika Murphy, Pankaj Pandey, Steve Peak,
Prabhu Ramachandran, Jonathan Rocher, John Thacker, Gregor Thalhammer,
Senganal Thirunavukkarasu, John Tyree, Ioannis Tziakos, Alona Varshal,
Corran Webster, John Wiggins
Enhancements
~~~~~~~~~~~~
* Support for Qt5 (#347, #352, #350, #433)
* Remove TraitsUI Themes (#342)
* Improve Toolkit selection and handling (#425, #429)
* API Documentation (#438)
* Adapter documentation (#340)
* Support multi-selection in DataFrameEditor (#413)
* DataFrameEditor demo (#444)
* Common BasePanel class for toolkits (#392)
* Labels honor enable_when values (#401)
* Better error messages when toolkit doesn't implement methods (#391)
* Improve TraitsUI Action handling (#384)
* ListEditor UI improvements (#338, #396, #395)
* Remove old style signals and slots for Qt backend (#330, #346, #347, #403)
* Expose a "refresh" trait for the DataFrameEditor (#288)
* Use Enthought Deployment Manager to automate CI and testing (#321, #357)
* Continuous integration on OS X (#322)
* Reduce circular dependencies of Pyface on TraitsUI (#304)
* PEP8-compliant formatting of source (#290)
* Add progress bar column for TableEditor (#287)
* Add codecov coverage reports (#285, #328)
Fixes
~~~~~
* Fix some issues for newer WxPython (#418)
* Fix Wx simple FileEditor (#426)
* Fixes for DataFrameEditor (#415)
* Fixes for preferences state saving under Qt (#410, #447)
* Fix panel state after setting preferences (#253)
* Fix TableEditor ColorColumn (#399)
* Prevent loopback from slider in Qt RangeEditor (#400)
* Fix Action buttons under Qt (#393, #394)
* Fix ValueEditor icons (#386)
* Fix bug in update_object (#379)
* Avoid reading Event trait values in sync_value (#375)
* Fix raise_to_debug calls (#362, #372)
* Fix errors during garbage collection (#359)
* Remove unused argument in wx.hook_events (#360)
* Fix button label updates (#358)
* Fix TreeEditor label updates (#335)
* Proper InstanceEditor dialog lifecycle (#332)
* Don't explicitly destroy child widgets under Qt (#283)
* Test fixes and improvements (#329, #369, #371, #327)
* Fixes for demos and examples (#320, #445)
* Fix CheckListEditor string comparison (#318)
* Remove some spurious print statements (#305)
* Documentation fixes (#301, #326, #380, #438, #443)
* Fixes for Python 3 compatibility (#295, #300, #165, #311, #410)
* Fix error with Qt table model mimetype (#296)
* Fixes for continuous integration (#299, #345, #365, #397, #420, #427)
* Fix offset issue when dragging from Qt TreeEditor (#293)
* Fix Wx kill-focus event issues (#291)
* Fix readthedocs build (#281)
Release 5.2.0
-------------
Enhancements
~~~~~~~~~~~~
* Add support for multi-select in the DataFrameEditor (#413).
Release 5.1.0
-------------
Enhancements
~~~~~~~~~~~~
* Enthought Sphinx Theme Support (#219)
* Allow hiding groups in split layouts on Qt (#246)
* Allow subclass of Controller to set a default model (#255)
* Add toolbar in Qt UI panel (#263)
Fixes
~~~~~
* Fix Qt TableEditor segfault on editing close (#277)
* Update tree nodes when adding children to am empty tree (#251)
* Change default backend from Wx to Qt (#254, #256)
* Improve toolkit selection (#259)
* Fix capturing the mouse and click events on Wx (#265, #266)
* Remove duplicated traits in NotebookEditor (#268)
* Fix exception during disposal of ListStrEditor (#270)
* Version number in documentation (#273)
Release 5.0.0
-------------
This release features experimental 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
last-minute 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 Pyface 5.0 or greater.
In addition, this release includes fixes to support wxPython 3.0 and deprecates
wxPython 2.6. Thanks to Robin Dunn for providing these improvements.
This release also introduces a DataFrameEditor which provides a tabular
view of a Pandas DataFrame, similar to the existing ArrayViewEditor.
There are also a number of bug fixes and minor improvements 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.
New Features
~~~~~~~~~~~~
* Experimental Python 3 support (#230)
* A DataFrameEditor for Pandas DataFrames, similar to the ArrayViewEditor
(#196)