PythonQwt 0.10.2__py2.py3-none-any.whl → 0.10.4__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. {PythonQwt-0.10.2.dist-info → PythonQwt-0.10.4.dist-info}/METADATA +74 -72
  2. PythonQwt-0.10.4.dist-info/RECORD +78 -0
  3. {PythonQwt-0.10.2.dist-info → PythonQwt-0.10.4.dist-info}/WHEEL +1 -1
  4. PythonQwt-0.10.4.dist-info/entry_points.txt +5 -0
  5. qwt/__init__.py +3 -2
  6. qwt/_math.py +0 -2
  7. qwt/plot.py +7 -18
  8. qwt/plot_canvas.py +14 -5
  9. qwt/plot_marker.py +1 -1
  10. qwt/plot_renderer.py +1 -3
  11. qwt/qthelpers.py +24 -2
  12. qwt/scale_engine.py +1 -3
  13. qwt/symbol.py +4 -4
  14. qwt/tests/__init__.py +1 -303
  15. qwt/tests/conftest.py +9 -0
  16. qwt/tests/data/PythonQwt.svg +484 -0
  17. qwt/tests/data/bodedemo.png +0 -0
  18. qwt/tests/data/cartesian.png +0 -0
  19. qwt/tests/data/cpudemo.png +0 -0
  20. qwt/tests/data/curvebenchmark1.png +0 -0
  21. qwt/tests/data/curvebenchmark2.png +0 -0
  22. qwt/tests/data/curvedemo1.png +0 -0
  23. qwt/tests/data/curvedemo2.png +0 -0
  24. qwt/tests/data/data.png +0 -0
  25. qwt/tests/data/errorbar.png +0 -0
  26. qwt/tests/data/eventfilter.png +0 -0
  27. qwt/tests/data/image.png +0 -0
  28. qwt/tests/data/loadtest.png +0 -0
  29. qwt/tests/data/logcurve.png +0 -0
  30. qwt/tests/data/mapdemo.png +0 -0
  31. qwt/tests/data/multidemo.png +0 -0
  32. qwt/tests/data/simple.png +0 -0
  33. qwt/tests/data/stylesheet.png +0 -0
  34. qwt/tests/data/testlauncher.png +0 -0
  35. qwt/tests/data/vertical.png +0 -0
  36. qwt/tests/{bodedemo.py → test_bodedemo.py} +8 -6
  37. qwt/tests/{cartesian.py → test_cartesian.py} +8 -3
  38. qwt/tests/{cpudemo.py → test_cpudemo.py} +8 -3
  39. qwt/tests/{curvebenchmark1.py → test_curvebenchmark1.py} +9 -6
  40. qwt/tests/{curvebenchmark2.py → test_curvebenchmark2.py} +8 -4
  41. qwt/tests/{curvedemo1.py → test_curvedemo1.py} +8 -3
  42. qwt/tests/{curvedemo2.py → test_curvedemo2.py} +8 -3
  43. qwt/tests/{data.py → test_data.py} +8 -3
  44. qwt/tests/{errorbar.py → test_errorbar.py} +8 -3
  45. qwt/tests/{eventfilter.py → test_eventfilter.py} +8 -3
  46. qwt/tests/{image.py → test_image.py} +8 -3
  47. qwt/tests/{loadtest.py → test_loadtest.py} +8 -4
  48. qwt/tests/{logcurve.py → test_logcurve.py} +8 -3
  49. qwt/tests/{mapdemo.py → test_mapdemo.py} +8 -3
  50. qwt/tests/{multidemo.py → test_multidemo.py} +8 -3
  51. qwt/tests/{simple.py → test_simple.py} +8 -3
  52. qwt/tests/test_stylesheet.py +28 -0
  53. qwt/tests/{vertical.py → test_vertical.py} +8 -3
  54. qwt/tests/utils.py +308 -0
  55. qwt/text.py +1 -19
  56. PythonQwt-0.10.2.dist-info/RECORD +0 -73
  57. PythonQwt-0.10.2.dist-info/entry_points.txt +0 -6
  58. {PythonQwt-0.10.2.dist-info → PythonQwt-0.10.4.dist-info}/LICENSE +0 -0
  59. {PythonQwt-0.10.2.dist-info → PythonQwt-0.10.4.dist-info}/top_level.txt +0 -0
@@ -1,72 +1,74 @@
1
- Metadata-Version: 2.1
2
- Name: PythonQwt
3
- Version: 0.10.2
4
- Summary: Qt plotting widgets for Python
5
- Home-page: https://github.com/PierreRaybaut/PythonQwt
6
- Author: Pierre Raybaut
7
- Author-email: pierre.raybaut@gmail.com
8
- License: UNKNOWN
9
- Platform: Any
10
- Classifier: Development Status :: 5 - Production/Stable
11
- Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)
12
- Classifier: License :: OSI Approved :: MIT License
13
- Classifier: Topic :: Scientific/Engineering :: Visualization
14
- Classifier: Topic :: Software Development :: Widget Sets
15
- Classifier: Operating System :: MacOS
16
- Classifier: Operating System :: Microsoft :: Windows
17
- Classifier: Operating System :: OS Independent
18
- Classifier: Operating System :: POSIX
19
- Classifier: Operating System :: Unix
20
- Classifier: Programming Language :: Python :: 3
21
- License-File: LICENSE
22
- Requires-Dist: NumPy (>=1.5)
23
- Requires-Dist: QtPy (>=1.3)
24
- Provides-Extra: doc
25
- Requires-Dist: Sphinx (>=1.1) ; extra == 'doc'
26
-
27
- PythonQwt: Qt plotting widgets for Python
28
- =========================================
29
-
30
- .. image:: https://raw.githubusercontent.com/PierreRaybaut/PythonQwt/master/qwt/tests/data/testlauncher.png
31
-
32
- The ``PythonQwt`` package is a 2D-data plotting library using Qt graphical
33
- user interfaces for the Python programming language. It is compatible with
34
- ``PyQt4``, ``PyQt5``, ``PyQt6`` and ``PySide6``.
35
-
36
- The ``PythonQwt`` project was initiated to solve -at least temporarily- the
37
- obsolescence issue of `PyQwt` (the Python-Qwt C++ bindings library) which is
38
- no longer maintained. The idea was to translate the original Qwt C++ code to
39
- Python and then to optimize some parts of the code by writing new modules
40
- based on NumPy and other libraries.
41
-
42
- The ``PythonQwt`` package consists of a single Python package named `qwt`
43
- which is a pure Python implementation of Qwt C++ library with some
44
- limitations: efforts were concentrated on basic plotting features, leaving
45
- higher level features to the `guiqwt` library.
46
-
47
- See `README`_ and documentation (`online`_ or `PDF`_) for more details on the library and `changelog`_ for recent history of changes.
48
-
49
- The following example is a good starting point to see how to set up a simple plot widget::
50
-
51
- from qtpy import QtWidgets as QW
52
- import qwt
53
- import numpy as np
54
-
55
- app = QW.QApplication([])
56
- x = np.linspace(-10, 10, 500)
57
- plot = qwt.QwtPlot("Trigonometric functions")
58
- plot.insertLegend(qwt.QwtLegend(), qwt.QwtPlot.BottomLegend)
59
- qwt.QwtPlotCurve.make(x, np.cos(x), "Cosinus", plot, linecolor="red", antialiased=True)
60
- qwt.QwtPlotCurve.make(x, np.sin(x), "Sinus", plot, linecolor="blue", antialiased=True)
61
- plot.resize(600, 300)
62
- plot.show()
63
- app.exec_()
64
-
65
- .. image:: https://raw.githubusercontent.com/PierreRaybaut/PythonQwt/master/doc/images/QwtPlot_example.png
66
-
67
- .. _README: https://github.com/PierreRaybaut/PythonQwt/blob/master/README.md
68
- .. _online: https://pythonqwt.readthedocs.io/en/latest/
69
- .. _PDF: https://pythonqwt.readthedocs.io/_/downloads/en/latest/pdf/
70
- .. _changelog: https://github.com/PierreRaybaut/PythonQwt/blob/master/CHANGELOG.md
71
-
72
-
1
+ Metadata-Version: 2.1
2
+ Name: PythonQwt
3
+ Version: 0.10.4
4
+ Summary: Qt plotting widgets for Python
5
+ Home-page: https://github.com/PlotPyStack/PythonQwt
6
+ Author: Pierre Raybaut
7
+ Author-email: pierre.raybaut@gmail.com
8
+ Platform: Any
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Topic :: Scientific/Engineering :: Visualization
13
+ Classifier: Topic :: Software Development :: Widget Sets
14
+ Classifier: Operating System :: MacOS
15
+ Classifier: Operating System :: Microsoft :: Windows
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Operating System :: POSIX
18
+ Classifier: Operating System :: Unix
19
+ Classifier: Programming Language :: Python :: 3
20
+ License-File: LICENSE
21
+ Requires-Dist: NumPy (>=1.5)
22
+ Requires-Dist: QtPy (>=1.3)
23
+ Provides-Extra: doc
24
+ Requires-Dist: Sphinx (>=1.1) ; extra == 'doc'
25
+ Provides-Extra: test
26
+ Requires-Dist: coverage ; extra == 'test'
27
+ Requires-Dist: pytest ; extra == 'test'
28
+ Requires-Dist: pytest-qt ; extra == 'test'
29
+ Requires-Dist: pytest-cov ; extra == 'test'
30
+
31
+ PythonQwt: Qt plotting widgets for Python
32
+ =========================================
33
+
34
+ .. image:: https://raw.githubusercontent.com/PierreRaybaut/PythonQwt/master/qwt/tests/data/testlauncher.png
35
+
36
+ The ``PythonQwt`` package is a 2D-data plotting library using Qt graphical
37
+ user interfaces for the Python programming language. It is compatible with
38
+ ``PyQt4``, ``PyQt5``, ``PyQt6`` and ``PySide6``.
39
+
40
+ The ``PythonQwt`` project was initiated to solve -at least temporarily- the
41
+ obsolescence issue of `PyQwt` (the Python-Qwt C++ bindings library) which is
42
+ no longer maintained. The idea was to translate the original Qwt C++ code to
43
+ Python and then to optimize some parts of the code by writing new modules
44
+ based on NumPy and other libraries.
45
+
46
+ The ``PythonQwt`` package consists of a single Python package named `qwt`
47
+ which is a pure Python implementation of Qwt C++ library with some
48
+ limitations: efforts were concentrated on basic plotting features, leaving
49
+ higher level features to the `guiqwt` library.
50
+
51
+ See `README`_ and documentation (`online`_ or `PDF`_) for more details on the library and `changelog`_ for recent history of changes.
52
+
53
+ The following example is a good starting point to see how to set up a simple plot widget::
54
+
55
+ from qtpy import QtWidgets as QW
56
+ import qwt
57
+ import numpy as np
58
+
59
+ app = QW.QApplication([])
60
+ x = np.linspace(-10, 10, 500)
61
+ plot = qwt.QwtPlot("Trigonometric functions")
62
+ plot.insertLegend(qwt.QwtLegend(), qwt.QwtPlot.BottomLegend)
63
+ qwt.QwtPlotCurve.make(x, np.cos(x), "Cosinus", plot, linecolor="red", antialiased=True)
64
+ qwt.QwtPlotCurve.make(x, np.sin(x), "Sinus", plot, linecolor="blue", antialiased=True)
65
+ plot.resize(600, 300)
66
+ plot.show()
67
+ app.exec_()
68
+
69
+ .. image:: https://raw.githubusercontent.com/PierreRaybaut/PythonQwt/master/doc/_static/QwtPlot_example.png
70
+
71
+ .. _README: https://github.com/PlotPyStack/PythonQwt/blob/master/README.md
72
+ .. _online: https://pythonqwt.readthedocs.io/en/latest/
73
+ .. _PDF: https://pythonqwt.readthedocs.io/_/downloads/en/latest/pdf/
74
+ .. _changelog: https://github.com/PlotPyStack/PythonQwt/blob/master/CHANGELOG.md
@@ -0,0 +1,78 @@
1
+ qwt/__init__.py,sha256=KtaS7yoAuV0dieZcZhp7CxEUCiTsTUoJpFP1-t4I474,5800
2
+ qwt/_math.py,sha256=Xut9qwwwnzykC5YV2H3h9F4W9z8jv61ckPtMt941hVQ,1584
3
+ qwt/color_map.py,sha256=LkeEyZcZ60rfceZ-G6YwuY6ljjBoDfYr9NDJtX_hqGE,11824
4
+ qwt/column_symbol.py,sha256=gY57VFgmLo0JwT-7AK7ITli61WzUAdQptQTcYHQbUdo,5720
5
+ qwt/dyngrid_layout.py,sha256=QHbyVX1Y4YAuTaPhlxL2AXluLD8-L521N-Y22bzfY-M,13367
6
+ qwt/graphic.py,sha256=hPnjRF08foEsUW1i1UVe-t_jDIqjWWL7No5_c_ebH3M,28446
7
+ qwt/interval.py,sha256=PMrCQxV9NXGk2JG0MNjJ3zGTNTSSRfa_noxbpm-Okns,12287
8
+ qwt/legend.py,sha256=N455HProPp7mbFrBls5bqCP0q2qblSg4NxM6hU5E6i4,31082
9
+ qwt/null_paintdevice.py,sha256=09zYxGLCkdlRhP4hbNIUz4RzEr1Rteso2Ex55PqOEWA,9136
10
+ qwt/painter.py,sha256=E3QeJwrn7cS5aCS5mV9QrkwHqv5U_ZYZcnrhur4I-0k,19343
11
+ qwt/painter_command.py,sha256=WMHeAWn5ngsmX8hoIVgICTaD1YPYWzGnfUvy0OVO9wA,6955
12
+ qwt/plot.py,sha256=y-rF3x_ulwAvI6k1amJ0-2tpvOMlCt8_AfHFVFp803g,76213
13
+ qwt/plot_canvas.py,sha256=eXFnJ26e_Bbo6jf1qwRRShRqUo16rDgOmGDcIBErvhM,30850
14
+ qwt/plot_curve.py,sha256=6B3MAPN9-aethy8eqZo4ADtlSBrQO9ggY1z0JkvoKxQ,37270
15
+ qwt/plot_directpainter.py,sha256=TrgiFLdHu2DH-V_aOfH4DQawTaZUaS3EZxTQ-eWRyJc,10537
16
+ qwt/plot_grid.py,sha256=w4bJhR5VDvoXF0dwjcejYIF6t5nZz7vG1Jdq5g3h_1c,16563
17
+ qwt/plot_layout.py,sha256=FhQVYDtvsuvJJqhUAcBbGUt4uUBQZ_N7UrZEvJUrzjk,45829
18
+ qwt/plot_marker.py,sha256=ADrdoYaaRqTiyHt3ypAX_9CQvRPyE6GV3Vrm-6K2m88,21272
19
+ qwt/plot_renderer.py,sha256=Tf5aHc3mCs7YlClBEsyXozoMAMenxtt24MHJ7gOUklQ,26663
20
+ qwt/plot_series.py,sha256=H-fUfw-0Edfrn8PIpaRQ1T1yqrHMuMDcNJffrM61aHE,11043
21
+ qwt/qthelpers.py,sha256=koM5xFt2WQCG4JZyu96AdSB4END_CoFn4ivd1rVXcnU,1585
22
+ qwt/scale_div.py,sha256=pZmsg-PIof3yAeLTfiFMC3tMvNSSMHomkYWnAe3eEjw,9276
23
+ qwt/scale_draw.py,sha256=V2sYXOdMN7PF-6oYpJs6XDt8fgXsApj3YUswE-cjGfA,37720
24
+ qwt/scale_engine.py,sha256=2eA491abgPpcIBarszCFSk3IQTy8vGvATDzjzRm6ewo,29070
25
+ qwt/scale_map.py,sha256=pw3FHwrxilof9kdkPSHmrbp_HA96eRWF7apZlPwSPvM,9576
26
+ qwt/scale_widget.py,sha256=XPD0hvB91pQGkRH9czd-YFhuZiNAC7Q1MdhSmjdx-U4,26978
27
+ qwt/symbol.py,sha256=Op-8_A7FpwIncsORTsbmV8abLhovzYN9AV9dIIeCiN4,41434
28
+ qwt/text.py,sha256=MenZcme72HH_7O5fsYqdlFJGyNmUGDBXhugGtgH2_EA,41977
29
+ qwt/toqimage.py,sha256=XBd1qYgv_FqqmP7BNIWP_5pGDqIwQLUa7Giuj1voEmg,1725
30
+ qwt/transform.py,sha256=XgKuvG5odsjBObwDaPYOnM1QVidFFIPaKDPiCl_fg1E,6001
31
+ qwt/tests/__init__.py,sha256=hdqKy7NmYU1UX6Nv0-WNLeq84BjglHtAWdtnd2K5U28,1117
32
+ qwt/tests/comparative_benchmarks.py,sha256=unAmhNvIo-BexOX0UfsJo7v5_SrBXlEyCJ6SRfgZP6E,1883
33
+ qwt/tests/conftest.py,sha256=JHMXAgmHphJ8hWXjqVBBLxe0XlRb3rKOu9GRKVbcr_A,272
34
+ qwt/tests/test_bodedemo.py,sha256=s_rd0OTTQGWhXyQjmNZXaDgxB1xfPxOsClVt04JmTmg,9304
35
+ qwt/tests/test_cartesian.py,sha256=8rA4CgZ8M73-AmOgLDERuW9-3rjD8jVumcV96LPhSbM,3966
36
+ qwt/tests/test_cpudemo.py,sha256=uT6KRnDupH3LAC9U0CM6yUf346VH_CGX6xPpLpjwogo,13196
37
+ qwt/tests/test_curvebenchmark1.py,sha256=8dmfLznqbSvTP0eNKpBwgwMdyjEgt6fHErDO3UcYXkc,6075
38
+ qwt/tests/test_curvebenchmark2.py,sha256=NrrJTuCGXgtfiUxciT0j3ZbsNVT_kmoqgs0BYTTssmQ,2888
39
+ qwt/tests/test_curvedemo1.py,sha256=P_Dz4ZaH_Nw7cO2EHKz2NKiuGuBGfBtCr22W8N82uc8,4311
40
+ qwt/tests/test_curvedemo2.py,sha256=xh25WN3Wayh8QF2Rh4GCSVI6M3Q50QqymgkEB5XdF78,4233
41
+ qwt/tests/test_data.py,sha256=Qj_sNJHd0o3UF6CI_d-jo5KWLt2bEJzpwF7SRyPm98M,3255
42
+ qwt/tests/test_errorbar.py,sha256=WRGm3YqyuC0P8OlC77Zpk1-v6HlgTkNTAyfQREJYrd8,11021
43
+ qwt/tests/test_eventfilter.py,sha256=hzjZhms1pDg_7RTMXj9O7uYW9Qy1ec_9qVRyX0fi83Q,16927
44
+ qwt/tests/test_image.py,sha256=1lgyBRmy98RYCFh4IR4Z2Wxe0f5l6H-UiKtI2hO2Amo,6755
45
+ qwt/tests/test_loadtest.py,sha256=4Ge0-S70v_0eBX4CJYky3-IPjm97Tm4iLZUAoUuc8D8,1845
46
+ qwt/tests/test_logcurve.py,sha256=oPmaqSWmAvO38aXUAuvWI7SeWqAGNdXYE2l7mJ6iPvQ,1169
47
+ qwt/tests/test_mapdemo.py,sha256=Dilldf16_PToTUgsvLV2oBetCPsriGoSNQa8ceueIPk,3529
48
+ qwt/tests/test_multidemo.py,sha256=FqPB8GKALwon42_EifyB5Fa7nQkawKkGh0Jb2Tkrx7Q,2611
49
+ qwt/tests/test_simple.py,sha256=jHIGqQltIs2EZj8bAooJ-VrHf9EHyMwpo6cHVSo2CwM,1934
50
+ qwt/tests/test_stylesheet.py,sha256=xpb5S3PLjOTFy1xq94RYIpUqWvfoIr5Qt1o5oEcmiMA,764
51
+ qwt/tests/test_vertical.py,sha256=15ohX935KDB1Ze7QpDiJcusnMVc1wOiLMKBEA7Dd3s8,4183
52
+ qwt/tests/utils.py,sha256=p09KDxZC4zM6iTPLf2ifpzY9kgp_neVy1l_UgqFgbJo,10496
53
+ qwt/tests/data/PythonQwt.svg,sha256=t-NYdVPqz7BcqtXNWCJvo8udrRmtGh57ksSYWUl1h4o,15232
54
+ qwt/tests/data/bodedemo.png,sha256=8jP1YLE6HdwjEmrQyJclLxiYI4Zs4t0z0BoN1JT3GPQ,24414
55
+ qwt/tests/data/cartesian.png,sha256=Cwbn5Jy3VT-OisFHxzMCVbfdbJacUMZ9uGCD9sCxA-Q,51094
56
+ qwt/tests/data/cpudemo.png,sha256=1sy4hkiT3J7rs0FHQoFNnHtqEzFsP888Cfq27GY-pJI,30241
57
+ qwt/tests/data/curvebenchmark1.png,sha256=a6skUJGNEFhL0kbJAM2Mhs6NpTKav1gJbcsRx4NSfbQ,40992
58
+ qwt/tests/data/curvebenchmark2.png,sha256=L9vgabmzewWLCtlsHg1zzoEylHxpJ6bbz3yj2_4nTuI,126537
59
+ qwt/tests/data/curvedemo1.png,sha256=PPYNtnxWdoqsxK3QXo615H-aRTYb71zLyuMEAsZhooc,13908
60
+ qwt/tests/data/curvedemo2.png,sha256=1rnIMEEJCFjYic1wNGP1oyATUt_8VirB7O4PyHPeUfw,8909
61
+ qwt/tests/data/data.png,sha256=NNPnE0PZfRC7dNse1Ia4P3n1rM_ADRfCvXA4I10nLOk,15940
62
+ qwt/tests/data/errorbar.png,sha256=zqD2aPwPqTm18VuoLAUQPUnSgJfr-NTviPJXm4oLwco,13696
63
+ qwt/tests/data/eventfilter.png,sha256=CUgvSZcoADX_DwW5Lmq_iSMNc7L4Jfk16tXsNexG3ew,9199
64
+ qwt/tests/data/image.png,sha256=Pdz4mMGzzAOTbdKQBwnBscc4JwJxr3dWlUX4yOUCGjg,57728
65
+ qwt/tests/data/loadtest.png,sha256=PmeAPBsKx38rKeHjuyF4CDM7pg4CcI4F_juKv_BBFL8,128560
66
+ qwt/tests/data/logcurve.png,sha256=aH9grJlKXUjOjgGO0PVrzTpvXA9Kb6DtU-EL_O8ia_U,16633
67
+ qwt/tests/data/mapdemo.png,sha256=S2xvGNvoTgukvrqWTOIpPQQVtAsWeyFbUkoG4-Wq_TU,19713
68
+ qwt/tests/data/multidemo.png,sha256=1nthNyuxz6H_SIKjLdoyS-X-mxOWlW_nxRzRe2V2M5A,8805
69
+ qwt/tests/data/simple.png,sha256=78MdmZfA4F4tyjnvEw0jWD5wh5OEK1LjUb_Mxo7QHok,15709
70
+ qwt/tests/data/stylesheet.png,sha256=ZjWURAS_eYB5cyLmkQrUg7bTSv-V3uIm6q8FGQjGnFc,13160
71
+ qwt/tests/data/testlauncher.png,sha256=lb6rUnlpY1Q-rezdG6gAtWMWwY5PX58Zuq6338bI8kY,110858
72
+ qwt/tests/data/vertical.png,sha256=EvyG6q6rZm6pTT08Y_nzdBYCnqmoX1QDuEQtp2pyGlw,34076
73
+ PythonQwt-0.10.4.dist-info/LICENSE,sha256=qjEk8TRuXmFS7QC-omINvD1UPGqWaOs6CzcCZoMEhdI,33457
74
+ PythonQwt-0.10.4.dist-info/METADATA,sha256=UF-RXk3Z0zncgGNjCOtluEU6ZXXeKen7oHyNAYGJfnI,3317
75
+ PythonQwt-0.10.4.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
76
+ PythonQwt-0.10.4.dist-info/entry_points.txt,sha256=wSH-OHXrA7c0ymhYRcBFLhBsMqOiw9gofXVe_5UIBYA,107
77
+ PythonQwt-0.10.4.dist-info/top_level.txt,sha256=KB1IBdWRWnaItyJMaECwZiEi1jWt3IvqCrRVVhMjTu8,4
78
+ PythonQwt-0.10.4.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.37.0)
2
+ Generator: bdist_wheel (0.40.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any
@@ -0,0 +1,5 @@
1
+ [console_scripts]
2
+ PythonQwt-tests = qwt.tests:run [Tests]
3
+
4
+ [gui_scripts]
5
+ PythonQwt = qwt.tests:run [Tests]
qwt/__init__.py CHANGED
@@ -24,9 +24,10 @@ External resources:
24
24
 
25
25
  .. _PyPI: https://pypi.python.org/pypi/PythonQwt
26
26
  .. _GitHubPage: http://pierreraybaut.github.io/PythonQwt
27
- .. _GitHub: https://github.com/PierreRaybaut/PythonQwt
27
+ .. _GitHub: https://github.com/PlotPyStack/PythonQwt
28
28
  """
29
- __version__ = "0.10.2"
29
+
30
+ __version__ = "0.10.4"
30
31
  QWT_VERSION_STR = "6.1.5"
31
32
 
32
33
  import warnings
qwt/_math.py CHANGED
@@ -5,8 +5,6 @@
5
5
  # Copyright (c) 2015 Pierre Raybaut, for the Python translation/optimization
6
6
  # (see LICENSE file for more details)
7
7
 
8
- from __future__ import division
9
-
10
8
  from qtpy.QtCore import qFuzzyCompare
11
9
 
12
10
  import math
qwt/plot.py CHANGED
@@ -217,7 +217,7 @@ class AxisData(object):
217
217
  self.scaleWidget = None # QwtScaleWidget
218
218
 
219
219
 
220
- class QwtPlot(QFrame, QwtPlotDict):
220
+ class QwtPlot(QwtPlotDict, QFrame):
221
221
  """
222
222
  A 2-D plotting widget
223
223
 
@@ -249,7 +249,7 @@ class QwtPlot(QFrame, QwtPlotDict):
249
249
  plot.resize(600, 300)
250
250
  plot.show()
251
251
 
252
- .. image:: /images/QwtPlot_example.png
252
+ .. image:: /_static/QwtPlot_example.png
253
253
 
254
254
  .. py:class:: QwtPlot([title=""], [parent=None])
255
255
 
@@ -361,17 +361,6 @@ class QwtPlot(QFrame, QwtPlotDict):
361
361
 
362
362
  qwtEnableLegendItems(self, True)
363
363
 
364
- def __del__(self):
365
- self.setAutoReplot(False)
366
- # XXX Is is really necessary in Python? (pure transcription of C++)
367
- # The following line have been commented to avoid crashing Python
368
- # when exiting interpreter (Python 3 only)
369
-
370
- # self.detachItems(QwtPlotItem.Rtti_PlotItem, self.autoDelete())
371
- # self.__data.layout = None
372
- # self.deleteAxesData()
373
- # self.__data = None
374
-
375
364
  def setFlatStyle(self, state):
376
365
  """
377
366
  Set or reset the flatStyle option
@@ -585,7 +574,7 @@ class QwtPlot(QFrame, QwtPlotDict):
585
574
  :py:meth:`qwt.scale_engine.QwtScaleEngine.divideScale()`
586
575
  """
587
576
  if self.axisValid(axisId):
588
- return self.axisWidget(axisId).maxMajor
577
+ return self.__axisData[axisId].maxMajor
589
578
  else:
590
579
  return 0
591
580
 
@@ -600,7 +589,7 @@ class QwtPlot(QFrame, QwtPlotDict):
600
589
  :py:meth:`qwt.scale_engine.QwtScaleEngine.divideScale()`
601
590
  """
602
591
  if self.axisValid(axisId):
603
- return self.axisWidget(axisId).maxMinor
592
+ return self.__axisData[axisId].maxMinor
604
593
  else:
605
594
  return 0
606
595
 
@@ -641,7 +630,7 @@ class QwtPlot(QFrame, QwtPlotDict):
641
630
  :py:meth:`qwt.scale_engine.QwtScaleEngine.divideScale()`
642
631
  """
643
632
  if self.axisValid(axisId):
644
- return self.axisWidget(axisId).stepSize
633
+ return self.__axisData[axisId].stepSize
645
634
  else:
646
635
  return 0
647
636
 
@@ -991,8 +980,8 @@ class QwtPlot(QFrame, QwtPlotDict):
991
980
  # Otherwise, when tick labels are large enough, the ticks
992
981
  # may not be aligned with canvas grid.
993
982
  # See the following issues for more details:
994
- # https://github.com/PierreRaybaut/guiqwt/issues/57
995
- # https://github.com/PierreRaybaut/PythonQwt/issues/30
983
+ # https://github.com/PlotPyStack/guiqwt/issues/57
984
+ # https://github.com/PlotPyStack/PythonQwt/issues/30
996
985
  startDist, endDist = scaleWidget.getBorderDistHint()
997
986
  scaleWidget.setBorderDist(startDist, endDist)
998
987
 
qwt/plot_canvas.py CHANGED
@@ -32,7 +32,7 @@ from qtpy.QtGui import (
32
32
  QPolygonF,
33
33
  )
34
34
  from qtpy.QtWidgets import QFrame, QStyleOption, QStyle
35
- from qtpy.QtCore import Qt, QSizeF, QEvent, QPointF, QRectF
35
+ from qtpy.QtCore import Qt, QSizeF, QEvent, QPointF, QRectF, QRect
36
36
  from qtpy import QtCore as QC
37
37
 
38
38
 
@@ -81,8 +81,17 @@ class QwtStyleSheetRecorder(QwtNullPaintDevice):
81
81
  self.__origin = state.brushOrigin()
82
82
 
83
83
  def drawRects(self, rects, count):
84
- for i in range(count):
85
- self.border.rectList += [rects[i]]
84
+ if QT_API.startswith("pyside"):
85
+ # Pyside
86
+ if isinstance(rects, (QRect, QRectF)):
87
+ self.border.list = [rects]
88
+ else:
89
+ for i in range(count):
90
+ self.border.rectList += [rects.getRect().index(i)]
91
+ else:
92
+ # PyQt
93
+ for i in range(count):
94
+ self.border.rectList += [rects[i]]
86
95
 
87
96
  def drawPath(self, path):
88
97
  rect = QRectF(QPointF(0.0, 0.0), self.__size)
@@ -756,9 +765,9 @@ class QwtPlotCanvas(QFrame):
756
765
  opt.midLineWidth = self.midLineWidth()
757
766
  else:
758
767
  opt.lineWidth = self.frameWidth()
759
- if frameShadow == self.Sunken:
768
+ if frameShadow == QFrame.Sunken:
760
769
  opt.state |= QStyle.State_Sunken
761
- elif frameShadow == self.Raised:
770
+ elif frameShadow == QFrame.Raised:
762
771
  opt.state |= QStyle.State_Raised
763
772
  self.style().drawControl(QStyle.CE_ShapedFrame, opt, painter, self)
764
773
 
qwt/plot_marker.py CHANGED
@@ -316,7 +316,7 @@ class QwtPlotMarker(QwtPlotItem):
316
316
  alignPos.setX(canvasRect.center().x())
317
317
  else:
318
318
  if self.__data.symbol and self.__data.symbol.style() != QwtSymbol.NoSymbol:
319
- symbolOff = self.__data.symbol.size() + QSizeF(1, 1)
319
+ symbolOff = QSizeF(self.__data.symbol.size()) + QSizeF(1, 1)
320
320
  symbolOff /= 2
321
321
  pw2 = self.__data.pen.widthF() / 2.0
322
322
  if pw2 == 0.0:
qwt/plot_renderer.py CHANGED
@@ -13,8 +13,6 @@ QwtPlotRenderer
13
13
  :members:
14
14
  """
15
15
 
16
- from __future__ import division
17
-
18
16
  from qwt.painter import QwtPainter
19
17
  from qwt.plot import QwtPlot
20
18
  from qwt.plot_layout import QwtPlotLayout
@@ -358,7 +356,7 @@ class QwtPlotRenderer(QObject):
358
356
  invtrans, _ok = transform.inverted()
359
357
  layoutRect = invtrans.mapRect(plotRect)
360
358
  if not (self.__data.discardFlags & self.DiscardBackground):
361
- left, top, right, bottom = plot.layout().getContentsMargins()
359
+ left, top, right, bottom = plot.getContentsMargins()
362
360
  layoutRect.adjust(left, top, -right, -bottom)
363
361
 
364
362
  layout = plot.plotLayout()
qwt/qthelpers.py CHANGED
@@ -6,8 +6,15 @@
6
6
 
7
7
  """Qt helpers"""
8
8
 
9
+ import os.path as osp
10
+ import os
11
+
9
12
  from qtpy import QtGui as QG
10
- from qtpy.QtCore import Qt
13
+ from qtpy import QtWidgets as QW
14
+ from qtpy import QtCore as QC
15
+
16
+
17
+ QT_API = os.environ["QT_API"]
11
18
 
12
19
 
13
20
  def qcolor_from_str(color, default):
@@ -25,7 +32,7 @@ def qcolor_from_str(color, default):
25
32
  return default
26
33
  elif isinstance(color, str):
27
34
  try:
28
- return getattr(Qt, color)
35
+ return getattr(QC.Qt, color)
29
36
  except AttributeError:
30
37
  raise ValueError("Unknown Qt color %r" % color)
31
38
  else:
@@ -33,3 +40,18 @@ def qcolor_from_str(color, default):
33
40
  return QG.QColor(color)
34
41
  except TypeError:
35
42
  raise TypeError("Invalid color %r" % color)
43
+
44
+
45
+ def take_screenshot(widget, path, size=None, quit=True):
46
+ """Take screenshot of widget"""
47
+ if size is not None:
48
+ widget.resize(*size)
49
+ widget.show()
50
+ QW.QApplication.processEvents()
51
+ if QT_API in ("pyqt4", "pyside2"):
52
+ pixmap = QG.QPixmap.grabWidget(widget)
53
+ else:
54
+ pixmap = widget.grab()
55
+ pixmap.save(path)
56
+ if quit:
57
+ QC.QTimer.singleShot(0, QW.QApplication.instance().quit)
qwt/scale_engine.py CHANGED
@@ -25,8 +25,6 @@ QwtLogScaleEngine
25
25
  :members:
26
26
  """
27
27
 
28
- from __future__ import division
29
-
30
28
  from qwt.interval import QwtInterval
31
29
  from qwt.scale_div import QwtScaleDiv
32
30
  from qwt.transform import QwtLogTransform
@@ -466,7 +464,7 @@ class QwtScaleEngine(object):
466
464
 
467
465
 
468
466
  class QwtLinearScaleEngine(QwtScaleEngine):
469
- """
467
+ r"""
470
468
  A scale engine for linear scales
471
469
 
472
470
  The step size will fit into the pattern
qwt/symbol.py CHANGED
@@ -693,7 +693,7 @@ class QwtSymbol(object):
693
693
 
694
694
  app.exec_()
695
695
 
696
- .. image:: /images/symbol_path_example.png
696
+ .. image:: /_static/symbol_path_example.png
697
697
 
698
698
  :param QPainterPath path: Painter path
699
699
 
@@ -1208,9 +1208,9 @@ class QwtSymbol(object):
1208
1208
  pinPointTranslation = True
1209
1209
  elif self.__data.style == QwtSymbol.Pixmap:
1210
1210
  if self.__data.size.isEmpty():
1211
- rect.setSize(self.__data.pixmap.pixmap.size())
1211
+ rect.setSize(QSizeF(self.__data.pixmap.pixmap.size()))
1212
1212
  else:
1213
- rect.setSize(self.__data.size)
1213
+ rect.setSize(QSizeF(self.__data.size))
1214
1214
  pinPointTranslation = True
1215
1215
  elif self.__data.style == QwtSymbol.Graphic:
1216
1216
  rect = qwtScaleBoundingRect(self.__data.graphic.graphic, self.__data.size)
@@ -1227,7 +1227,7 @@ class QwtSymbol(object):
1227
1227
  rect = transform.mapRect(rect)
1228
1228
  pinPointTranslation = True
1229
1229
  else:
1230
- rect.setSize(self.__data.size)
1230
+ rect.setSize(QSizeF(self.__data.size))
1231
1231
  rect.moveCenter(QPointF(0.0, 0.0))
1232
1232
  if pinPointTranslation:
1233
1233
  pinPoint = QPointF(0.0, 0.0)