Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Piker pin - PlotItem overlays #1

Open
wants to merge 99 commits into
base: master
Choose a base branch
from
Open

Piker pin - PlotItem overlays #1

wants to merge 99 commits into from

Conversation

goodboy
Copy link

@goodboy goodboy commented Jan 25, 2022

clearly @guilledk and I forgot about this bit 😂

This patchset is needed to run latest piker master.

pijyoi and others added 29 commits December 5, 2021 15:21
this is probably also fixing a bug:
the code was using np.empty() but was not filling up all the elements.
transpose texture coords instead of image data

this doesn't alter the displayed image's orientation.
This fixes an issue that came up in PySide6 6.2.2 where calls to
GraphicsObject.parentChanged were passed to
QGraphicsObject.parentChanged instead of GraphicsItem.parentChanged. In
addition, this fix handles the case of ScaleBar.parentChanged as well,
where specifying the specific parent class was insufficient.

Thanks to @pijyoi for identifying this fix.
avoid PyOpenGL automatic array conversion
Not sure how I made it this far without noticing... Forwarding changing signals from checklist children show "true"/"false" as changing values, not self's value. This fixes the problem.

Also, "value" should represent the stored `self.opts['value']` instead of the transient widget value. I fixed this with a separate `childrenValue` function which contains the transient widget value
Fire correct signal type for checklist value changing
…h#2086)

* Use GroupParameter instead of popup button for PenParameter

* Move PenPreviewLabel to `widgets` folder

* More pen parameter refactoring
- Better internal variable names
- Use 'valueChanging' instead of 'changed' logic

* Pen preview refactoring
- Show 'changing' instead of 'changed' values
- Add 'C' indicator for cosmetic pen

* Don't listen for 'color' valueChanging
…pyqtgraph#2101)

* change colors for the GroupParameterItem to address issue in darkmode on macos

* handle qdarkstyle stylesheet

* Add and apply palette matching QDarkStyle when OS is in darkMode.

* revert changes to Qt/__init__.py and apply dynamic palette in basetypes.py

* replace palette.background() with palette.window()

* Update the palette detection in basetypes.py and add fix for when the os color theme is changed while the app is running.

* Add palette.py and update groupItem color selection method
Added method in `pg/__init__.py` to apply app palette based on user input - meant to be used with QDarkStyle

* implement changes based on review

* update import in palette.py and add colors/__init__.py

* add a pointSize method and clean up updateDepth method in basetypes.py

* Remove unused import in basetypes.py
Python 3.10 no longer allows automatically converting some floats to ints, see
the fourth point here:
https://docs.python.org/3/whatsnew/3.10.html#other-language-changes
Fix automatic int-casting code for Python 3.10 compatibility
Also change the docs of `TargetItem` to point to `ScatterPlotItem.setSymbol()`
in reference to what symbols are accepted, since the documentation for this
method lists all the symbols.
…format

Fix formatting on minimum value of GradientLegend.
If the signals are blocked externally, keep the state. Before the patch, the block got released unconditionally. There has been a `blockIfUnchanged` decorator for this, but its code has been re-used with a logical error, so the decorator couldn't have worked.
campagnola and others added 20 commits April 8, 2022 10:52
Fix : QPoint() no longer accepts float arguments
add support for PySide6 6.3.0 QOverrideCursorGuard
Fix UFuncTypeError when plotting integer data on windows
* Improve performance of PlotCurveItem

* Hide chunksize in private method and comment it
* Add glow example

* Add new line at the end of the file

* Fix nb_lines issue.
Reduce curves amplitude.
Used the power of `blockIfUnchanged` decorator
* Handle/remove unused variables

All found via CodeQL

* Errors that cropped up as a result of initial errors being fixed

* Even more things that were only used in now removed statements

* Update comment to reflect code change

* Undo profiler removals, add comment about GC behavior
`QtGui.QPixmap().width() == 0`
Fixed division by zero when no pixmap is loaded
Added possibility to use custom dock labels
This is still very much a WIP/testing patch but on my current use case
(real time updates to a 40k+ datums set at around display rate) results
in approximately a 2x speedup according to the profiler output included
here.
If we don't reuse the `QPainterPath` that is be "reserved" (i.e. by
calling `.reserve()` on it to avoid re-allocating memory and using
`.clear()` instead of generating a new path) the mem allocs will be
somewhat pointless. Instead make it possible to pass in a previously
generated path, clear it, and rewrite to the reserved space.

Relevant docs:
- https://doc.qt.io/qt-5/qpainterpath.html#reserve
- https://doc.qt.io/qt-5/qpainterpath.html#clear
This is a more explicit input argument name which we assign to an
internal `._mt` instance var. This patch also includes some improvements
for recursive profiling, see below.

Further this commit makes some larger alterations:
- drops the class variable `._msgs` since it was causing issues on
  nested profiler use. My presumption is that this code was written with
  the expectation that stacks could unwind (per thread) out of order?
  I don't see why else you'd have `.flush()` only print on a `._depth
  < 1` condition..
- drops `.flush()`, since `.finish()` is the only place this method is
  called (even when scanning the rest of the code base) thus dropping
  a call frame.
- formatting adjustments around this `class` as per `flake8` linter.

Details, in order from bullets above:
- when a top level (aka `._depth == 0`) profiler was deleted by the GC,
  all messages from all underling (aka recursive) profilers were also
  wiped, meaning you'd get a weird case where only the "Exit" msg was
  showing. Now we instead expect each instance to clear it's own msg
  set. There should also be no further reason for the `._depth < 1`
  check since each instance unwinds and emits it's own messages,
  presumably as the call stack unwinds via the GC.
- I see no reason to have the `.flush()` when it was a trivial method
  that can be inlined to `.finish()` and I doubt there's much of a use
  case for "incrementally flushing" unless the user is using one "god
  profiler" throughout their entire stack..
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.