Thanks for your answer Justin,
I tried to install the event filter directly on the perspective view panel
using snippet below. Got the same result, key press events captured but not
the drop. I guess that means that the event is processed "higher up"
I will continue to look for a solution, but if anyone have any ideas that
would be great!
Best,
Johan
ptr = MQtUtil.findControl('modelPanel4')
model_panel_4 = wrapInstance(long(ptr), QtWidgets.QWidget)
my_filter = MyEventFilter()
model_panel_4.installEventFilter(my_filter)
On Friday, February 3, 2017 at 11:18:05 PM UTC+1, Justin Israel wrote:
>
> If you search the forum you will see previous questions about adding a
> drag and drop handler to Maya.
>
> https://groups.google.com/d/topic/python_inside_maya/Auiy06xVqLo/discussion
>
> This one in particular shows an approach that works in 2015 for sure, but
> possibly not anymore in 2017 under PySide2. But it may be because of
> changes to Maya and which widgets are handling events. If in the past, the
> viewport never directly handled the drops, then it would make sense to be
> able to catch them on the main window. But if Maya has changed to where the
> event is handled on the viewport or some child widget of the main window,
> then you won't be able to catch it from the main window. It would have to
> be installed on the viewport widget.
>
> Events work by first going through the QApplication, and then getting sent
> directly to the target widget for the event. If the target widget decides
> not to handle it, then it bubbles up to parents, which is why you can catch
> things on the main window like a viewport drag and drop I'm Maya 2015
>
> Here is the qt 4.8 reference about how the event system works:
> http://doc.qt.io/qt-4.8/eventsandfilters.html
>
> Justin
>
>
> On Sat, Feb 4, 2017, 6:06 AM johan Borgström <[email protected]
> <javascript:>> wrote:
>
>> Hi,
>>
>> I am trying to install an event filter on the main maya window to process
>> a drop event. In the snippet below I can get the key press event, but the
>> DragEnter and Drop event never gets called. Instead a function called
>> "performFileDropAction" gets called.
>>
>> How would I do this?
>>
>> Thanks,
>> / J
>>
>> from PySide2 import QtGui, QtCore, QtWidgets
>> from maya import OpenMayaUI as omui
>> from shiboken2 import wrapInstance
>>
>>
>> class MyEventFilter(QtCore.QObject):
>>
>> def eventFilter(self, obj, event):
>>
>> if event.type() is event.KeyPress:
>> print("Ate key press", event.key())
>> event.accept()
>> return True
>>
>> elif event.type() is event.DragEnter:
>> print('DragEnter')
>> event.accept()
>>
>> elif event.type() is event.Drop:
>> print('Drop')
>> event.accept()
>>
>> else:
>> # standard event processing
>> return QtCore.QObject.eventFilter(self, obj, event)
>>
>> main_win = wrapInstance(long(omui.MQtUtil.mainWindow()),
>> QtWidgets.QWidget)
>> my_filter = MyEventFilter()
>> main_win.installEventFilter(my_filter)
>> #main_win.removeEventFilter(my_filter)
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Python Programming for Autodesk Maya" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected] <javascript:>.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/python_inside_maya/180b8d68-8f17-4dd2-a96e-068027de2e77%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/python_inside_maya/180b8d68-8f17-4dd2-a96e-068027de2e77%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
--
You received this message because you are subscribed to the Google Groups
"Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/python_inside_maya/a8a12ecb-4104-4454-a0ce-3d73e42b0da9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.