Commit Graph

2951 Commits

Author SHA1 Message Date
Israel Brewster
949df4da16
Fix aspectRatio and zoom range issues when zooming (#1093)
* Check and enforce view limits in the setRange function

* Check limits when setting aspectRatio

- This change is required due to moving the limit checking out of the updateViewRange function.
- If the original logic remained, aspect ratio could be lost due to "squshing" the requested view into the viewBox

* Add tests for ViewBox zooming limits and aspect ratio

* - Move test code to proper location and fix instantiation of QApplication

Co-authored-by: Israel Brewster <ijbrewster@alaska.edu>
2020-05-30 13:09:09 -07:00
Ogi Moore
2ac1eefeb5
Merge pull request #1173 from 2xB/fix-1136-2
GraphicsLayout: Always call layout.activate() after adding items
2020-05-30 13:04:37 -07:00
Ogi Moore
3020613b91
Merge pull request #1217 from pyqtgraph/rtd
Get docs version and copyright year dynamically
2020-05-30 13:02:44 -07:00
2xB
7672b5b725
Fix: Parameter tree ignores user-set 'expanded' state (#1175)
* Fix: Parameter tree ignores user-set 'expanded' state

When setting the 'expanded' state of parameters, this change is not applied
in the graphically visible tree. This commit changes that behaviour by
adding a clause in `ParameterItem.optsChanged` to react to that.

Fixes #1130

* ParameterTree: Add option to synchronize "expanded" state

As seen in #1130, there is interest in synchronizing the "expanded" state
of `Parameter`s in `ParameterTree`s. As a default, this would lead to
users being forced to always have multiple `ParameterTree`s to be
expanded in the exact same way. Since that might not be desirable, this
commit adds an option to customize whether synchronization
of the "expanded" state should happen.

* Fix: Sync Parameter options "renamable" and "removable" with ParameterTrees

Currently, `Parameter` options `renamable` and `removable` are only considered
when building a new `ParameterTree`. This commit makes changes in those
options reflected in the corresponding `ParameterItem`s.

* ParameterTree: Reflect changes in Parameter option 'tip'

* Parameter: When setting "syncExpanded", update "expanded" state directly

Co-authored-by: 2xB <2xB@users.noreply.github.com>
2020-05-30 13:01:39 -07:00
Ogi Moore
03b8385e62
Merge pull request #1218 from campagnola/ptree-fix
Fix ParameterTree.clear()
2020-05-30 13:00:10 -07:00
Luke Campagnola
7d979bcf94 Check for missing ptree widget before accessing 2020-05-30 09:30:36 -07:00
Kenneth Lyons
6c61e2445e Get docs version and copyright year dynamically 2020-05-30 09:09:01 -07:00
Christian Clauss
2a6f3f0193
import numpy as np for lines 44 and 51 (#1161)
* import numpy as np for lines 44 and 51
2020-05-30 08:09:25 -07:00
Ogi Moore
b03de3be9c
Merge pull request #1216 from erikmansson/add-maprectfromview-cache
Add cache for mapRectFromView
2020-05-30 08:07:07 -07:00
Erik Månsson
55e1f2c520 Add cache for mapRectFromView 2020-05-30 16:25:43 +02:00
Ogi Moore
401054a0a8
Merge pull request #1215 from j9ac9k/remove-text_pg_exit
Skipping this test on python 5.9 configs
2020-05-30 07:25:36 -07:00
Ogi
dfe83dc1c8 Skipping this test on python 5.9 configs 2020-05-30 07:15:46 -07:00
Luke Campagnola
9d1fbb6a3e Add warning about PySide 5.14, avoid a confusing error message that would appear with 5.14 2020-05-29 23:42:35 -07:00
patricev
3f6424cc57
Update Data.py (#1071)
* Update Data.py

Python eval not working with python 3 - bug fix with the exec() part
2020-05-29 23:38:03 -07:00
christuart
ddb597a3dd
Fix selection of FlowchartWidget input/output nodes from issue #808 (#809)
Co-authored-by: Chris Stuart <chris.stuart@ukaea.uk>
2020-05-29 23:35:58 -07:00
Ogi Moore
be6f28b03c
Merge pull request #1090 from paulmueller/export-dialog-improvements
dump ExportDialog.exporterParameters
2020-05-29 23:11:46 -07:00
Daniel Hrisca
6194245322
improve SymbolAtlas.getSymbolCoords and ScatterPlotItem.plot performance (#1198) 2020-05-29 23:08:40 -07:00
Ogi Moore
99c43613f3
Merge pull request #1174 from Ma-Shell/develop
Fixed a possible race condition with linked views
2020-05-29 23:00:10 -07:00
Ogi Moore
b83563408c
Merge pull request #1206 from markobausch/develop
Added context menu option to parametertree
2020-05-29 22:55:19 -07:00
Luke Campagnola
2d59ce8532
Merge pull request #1212 from erikmansson/fix-pv-cache
Fix PixelVectors cache
2020-05-29 10:23:41 -07:00
Ogi Moore
6e2df00394
Merge pull request #1214 from j9ac9k/fix-linux-CI
Pin PyVirtualDisplay Version
2020-05-28 19:55:48 -07:00
Ogi
50099613d5 Pin PyVirtualDisplay Version 2020-05-28 19:31:49 -07:00
Erik Månsson
369d7a11d2 Fix PixelVectors cache 2020-05-28 23:10:00 +02:00
Luke Campagnola
d1c384876c Remove junk code 2020-05-28 13:32:24 -07:00
Luke Campagnola
6a76f40869 Add support for running pyside2-uic binary to dynamically compile ui files 2020-05-28 11:59:31 -07:00
Ogi Moore
35128d404a
Merge pull request #1168 from 2xB/fix-788
GroupParameterItem: Did not pass changed options to ParameterItem
2020-05-27 07:32:17 -07:00
Marko Bausch
4052f0dd11 Added context menu option to paramtree 2020-05-22 16:05:52 +02:00
Megan Kratz
ca2e5849c2 better conditional handling so as not to break something that was working before 2020-05-19 15:25:15 -06:00
Megan Kratz
360bcad47b fix for mismatched axis exception when imageAxisOrder='row-major' 2020-05-19 15:12:09 -06:00
Megan Kratz
c349c3665b fix for roi getting wrong data when imageAxisOrder='row-major' 2020-05-19 15:11:11 -06:00
Ogi Moore
c715c5ac28
Merge pull request #1201 from pyqtgraph/rtd_build
Get readthedocs working
2020-05-18 14:58:05 -07:00
Kenneth Lyons
8b66d0e20f Updated README with readthedocs link and badge 2020-05-18 14:53:41 -07:00
Kenneth Lyons
9d844f3a42 Mock dependencies that aren't strictly needed for docs build 2020-05-17 20:10:47 -07:00
Kenneth Lyons
54ade7dfb8 Add readthedocs config file as recommended 2020-05-17 16:06:00 -07:00
Kenneth Lyons
ae8fc195da Disable inherited docstrings 2020-05-16 10:14:52 -07:00
Kenneth Lyons
5353acdb1c Static paths not used for docs. Fix malformed table in docstring 2020-05-16 10:12:33 -07:00
Chris Billington
9a9be68d90
mkQApp: Use sys.argv if non-empty and always set given name (#1199)
Always pass `sys.argv`, if non-empty, to `QApplication` constructor.
This allows code to continue to rely on the fact that the application
name is by default set from `sys.argv[0]`, which is important for
example on Linux where this determines the WM_CLASS X attribute used by
desktop environments to match applications to their launchers.

If `sys.argv` is empty, as it is in an interactive Python session, pass
`["pyqtgraph"]` in its place as a sensible default for the application
name, which causes issues if not set (issue #1165).

If a `name` is given, set it using `setApplicationName()` instead of via
the argument list. This ensures it will be set even if the singleton
`QApplication` already existed prior to calling `mkQApp()`.
2020-05-15 11:31:42 -07:00
Kenneth Lyons
f2e91d1b9a Add matplotlib and pyopengl to docs dependencies 2020-05-11 20:45:25 -07:00
Kenneth Lyons
10cb80a2ae Add dependencies for docs build 2020-05-11 20:23:10 -07:00
Kyle Sunden
fb56d3eaa9
Merge pull request #801 from ales-erjavec/remove-address-cache
Remove use of GraphicsScene._addressCache in translateGraphicsItem
2020-05-11 10:38:39 -05:00
Maxim Millen
14075e6223
Added support for plot curve to handle both fill and connect args. (#1188) 2020-05-10 08:42:04 -07:00
Kenneth Lyons
5bebf697b0
Disable remove ROI menu action in handle context menu (#1197) 2020-05-10 08:39:17 -07:00
2xB
720fa5f3c2
DateAxisItem: AxisItem unlinking tests and doc fixed (#1179)
* Added test_AxisItem by @mliberty1

As found in https://github.com/pyqtgraph/pyqtgraph/pull/917

* test_AxisItem: Fit to current implementation

* DateAxisItem: Fix documentation to zoomLevels

zoomLevels is not intended to be set by the user (see discussion in converstation from
https://github.com/pyqtgraph/pyqtgraph/pull/1154/files#diff-aefdb23660d0963df0dff3a116baded8
). Also, `zoomLevelWidths` does currently not exist.
This commit adapts the documentation to reflect that.

* DateAxisItem: Do not publish ZoomLevel

* DateAxisItem testing: Removed unnecessary monkeypatch fixture

Co-authored-by: 2xB <2xB@users.noreply.github.com>
2020-05-05 09:16:07 -07:00
2xB
96be1bd23f
Fix: AxisItem tickFont is defined in two places while only one is used (#1180)
To set the tick font of `AxisItem`s, there are two options:
`setStyle({"tickFont":...})` and `setTickFont(...)`.
The first option sets `AxisItem.style['tickFont']`, the second
sets `self.tickFont`. Only `self.tickFont` is actually used.
This PR replaces all occurrences of the second variable with the first
variable, so both options work again. Also, documentation from
`setStyle` is copied to `setTickFont`.

Co-authored-by: 2xB <2xB@users.noreply.github.com>
2020-05-04 14:58:29 -07:00
Daniel Hrisca
f7364f52b3
improve SymbolAtlas.getSymbolCoords performance (#1184)
* remote legacy work-around for old numpy errors

* forgot to remove the numpy_fix import

* require numyp >= 1.8.0

* improve performance of updateData PlotCurveItem (saves about 2us per call)

* improve ScatterPlotItem performance
2020-05-04 13:42:03 -07:00
Ales Erjavec
02b7532706 Remove use of GraphicsScene._addressCache in translateGraphicsItem
Use QGraphicsItem.toQGrapicsObject on the item instead.

This probably is not even needed since PyQt 4.9
2020-05-01 13:05:51 +02:00
Lev Maximov
a76d9daec2
Date axis item (#1154)
* Add DateAxisItem

* Change style to camelCase

* Fix missing first tick for negative timestamps

* Add ms precision, auto skipping

Auto skipping allows a zoom level to skip ticks automatically if the
maximum number of ticks/pt is exceeded

* fixes suggested by @goetzc

* workaround for negative argument to utcfromtimestamp on windows

* attachToPlotItem method

* default date axis orientation

* Use new DateAxisItem in Plot Customization example

* attachToPlotItem bugfix

* examples of DateAxisItem

* modified description of customPlot example

* added descriptions to the new examples, reformatted their code, included the first one into utils.py

* typo

* Refactored code for setting axis items into new function

Replaces "DateAxisItem.attachToPlotItem"

* Fix string comparison with ==

* Doc: Slightly more text for DateAxisItem, small improvement for PlotItem

* Make PlotWidget.setAxisItems official

* Fix typo in docstring

* renamed an example

* merge bug fix

* Revert "merge bug fix"

This reverts commit 876b5a7cdb.

* Real bug fix

* support for dates upto -1e13..1e13

* Automatically limit DateAxisItem to a range from -1e12 to 1e12 years

Very large years (|y|>1e13) cause infinite loop, and since nobody
needs time 100 times larger than the age of the universe anyways,
this constrains it to 1e12.

Following suggestion by @axil:
https://github.com/pyqtgraph/pyqtgraph/pull/1154#issuecomment-612662168

* Also catch ValueErrors occuring on Linux before OverfloeErrors

While zooming out, before hitting OverflowErrors, utctimestamp
produces ValueErrors (at least on my Linux machine), so they
are also catched.

* Fix: Timestamp 0 corresponds to year 1970

For large years, x axis labels jump by 1970 years if it is not
accounted for timestamp 0 to be equal to year 1970.

* Fix: When zooming into extreme dates, OSError occurs

This commit catches the OSError like the other observed errors

* Disable stepping below years for dates outside *_REGULAR_TIMESTAMP

2 reasons: First: At least on my Linux machine, zooming into
those dates creates infinite loops. Second: Nobody needs
sub-year-precision for those extreme years anyways.

* Adapt zoom level sizes based on current font size and screen resolution

This is somewhat experimental. With this commit, no longer 60 px are
assumed as width for all zoom levels, but the current font and
display resolution are considered to calculate the width of ticks in
each zoom level. See the new function `updateZoomLevels` for
details.
Before calling this function, overridden functions `paint` and
`generateDrawSpecs` provide information over the current display
and font via `self.fontScaleFactor` and `self.fontMetrics`.

* Meaningful error meassage when adding axis to multiple PlotItems

As @axil noted in the DateAxisItem PR, currently users get a
segmentation fault when one tries to add an axis to multiple
PlotItems. This commit adds a meaningful RuntimeError message
for that case.

* setZoomLevelForDensity: Refactoring and calculating optimal spacing on the fly

* DateTimeAxis Fix: 1970 shows when zooming far out

* Refactoring: Make zoomLevels a customizable dict again

* updated the dateaxisitem example

* Fix: Get screen resolution in a way that also works for Qt 4

This is both a simplification in code and an improvement in backwards compatibility with Qt 4.

* DateAxisItem Fix: Also resolve time below 0.5 seconds

* unix line endings in examples

* DateTimeAxis Fix: For years < 1 and > 9999, stepping broke

Stepping was off by 1970 years for years < 1 and > 9999,
resulting in a gap in ticks visible when zooming out. Fixed by
subtracting the usual 1970 years.

* DateTimeAxis Fix: Zooming out too far causes infinite loop

Fixed by setting default limits to +/- 1e10 years. Should still
be enough.

* improved second dateaxisitem example

* 1..9999 years limit

* DateTimeAxis: Use OrderedDict to stay compatible with Python < 3-6

* DateAxisItem: Use font height to determine spacing for vertical axes

* window title

* added dateaxisitem.rst

* updated index.rst

Co-authored-by: Lukas Heiniger <lukas.heiniger@sed.ethz.ch>
Co-authored-by: Lev Maximov <lev.maximov@gmail.com>
Co-authored-by: 2xB <2xB@users.noreply.github.com>
2020-04-27 11:43:22 -07:00
Marcel Schumacher
a697b5584a Fixed a possible race condition with linked views 2020-04-14 17:24:54 +02:00
2xB
ec66c34fc9 GraphicsLayout: Always call layout.activate() after adding items
Items added to a `GraphicsLayout` only learn their size information
after the internal `QGraphicsGridLayout` recalculates the layout.
This is happening as a slot in the Qt event queue.
Not having updated geometry bounds directly after adding an item
leads to multiple issues when not executing the Qt event loop
in time (see below). This commit fixes that by always calling
`layout.activate()` after adding items, updating item sizes
directly.

This is a follow-up to PR #1167, where introducing a direct call to
`processEvents` was suspected to be able to cause side effects.

Notifying @j9ac9k and @campagnola, as they were involved in #1167.

Fixes #8
Fixes #1136
2020-04-14 02:00:49 +02:00
Ogi Moore
a2053b13d0
Merge pull request #1169 from ixjlyons/mkqapp-default-arg
Replace default list arg with None
2020-04-11 21:16:47 -07:00