[vtkusers] How to make vtkChartXY non-interactive?

Elvis Stansvik elvis.stansvik at orexplore.com
Wed Jun 14 14:29:54 EDT 2017


2017-06-14 17:01 GMT+02:00 Marcus D. Hanwell <marcus.hanwell at kitware.com>:

> 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.
>

Alright, I filed issues #17066 [1] and #17067 [2].

Elvis

[1] https://gitlab.kitware.com/vtk/vtk/issues/17066
[2] https://gitlab.kitware.com/vtk/vtk/issues/17067

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/41be8492/attachment.html>


More information about the vtkusers mailing list