[vtkusers] How to make vtkChartXY non-interactive?

Marcus D. Hanwell marcus.hanwell at kitware.com
Wed Jun 14 11:01:45 EDT 2017


On Wed, Jun 14, 2017 at 2:37 AM, Elvis Stansvik <
elvis.stansvik at orexplore.com> wrote:

> Den 13 juni 2017 5:53 em skrev "Marcus D. Hanwell" <
> marcus.hanwell at kitware.com>:
> >
> > On Tue, Jun 13, 2017 at 9:16 AM, Elvis Stansvik <
> elvis.stansvik at orexplore.com> wrote:
> >>
> >> 2017-06-13 15:10 GMT+02:00 Elvis Stansvik <elvis.stansvik at orexplore.com
> >:
> >>>
> >>> I'm using a
> >>>
> >>>    vtkChartXY
> >>>    vtkColorTransferControlPointsItem
> >>>    vtkColorTransferFunctionItem
> >>>
> >>> trio for editing a vtkColorTransferFunction.
> >>>
> >>> I'm now trying to make it non-editable (I want this for system
> "built-in" color functions). I've tried calling SetInteractive(false) on
> all three of them. I even tried hiding the control points item, but still I
> can interact with the points using the mouse.
> >>>
> >>> How can I make it non-interactive?
> >>>
> >>> I'm using VTK 8.0.0.rc1.
> >>
> >>
> >> I know I could always override and swallow mouse events, but that seems
> like the wrong approach?
> >>
> >> I'm only interested in disabling interaction with the control points
> item. Even hiding it as well would be OK.
> >>
> > So I would use the SetActionToButton method in vtkChart, and set each
> action to -1 (no button).
>
> Ah thanks, I'll take a look at that.
>
> > Looking at the vtkControlPointsItem the press event is not configurable,
> and so you would really have to derive from it, and override it that way as
> far as I can see. It could be modified, but that ability doesn't appear to
> be present. I am trying to remember how we propagate mouse events from the
> containing chart, but am a little rusty on that logic.
> >
> > We don't have the equivalent of an event filter as far as I am aware,
> but in the Qt world I would use that to intercept events before they get to
> the chart.
>
> Alright, thanks a lot for the info.
>
> What surprised me most was that neither SetInteractive(false) on the
> control points item, nor hiding it with SetVisible(false) would prevent
> interaction with the points. Should either of those be considered bugs?
>
Yes, I think these are bugs, and we should try and get them fixed up.

> The heavy-handed approach I came up with yesterday was to simply remove
> the  control points item from the chart temporarily when I want to disable
> interaction. This was OK for me since having the points also disappear was
> actually my ultimate goal. Just thought SetVisible(false) would be enough.
>
Agreed, I think it should be, although reading through the code it is clear
that is not supported.

Marcus
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20170614/95ea68c4/attachment.html>


More information about the vtkusers mailing list