# -*- coding: utf-8 -*-
"""
Author: Virgil
Date: 2020/6/13 13:40
"""
from PySide2 import QtCore
from PySide2 import QtGui
from PySide2 import QtWidgets
from shiboken2 import wrapInstance
import maya.OpenMayaUI as omui
import maya.cmds as cmds
import maya.mel as mel
def maya_main_window():
"""
Return the Maya main window widget as a Python object
"""
main_window_ptr = omui.MQtUtil.mainWindow()
return wrapInstance(long(main_window_ptr), QtWidgets.QWidget)
class TextEditor(QtWidgets.QPlainTextEdit):
def __init__(self, parent=None):
super(TextEditor, self).__init__(parent)
def set_drop_enabled(self, enabled):
self.setAcceptDrops(enabled)
print("TODO: Implement set_drop_enabled()")
def open_file(self, file_path):
print("TODO: open_file()")
if file_path:
file_info = QtCore.QFileInfo(file_path)
if file_info.exists() and file_info.isFile():
f = QtCore.QFile(file_info.absoluteFilePath())
if f.open(QtCore.QFile.ReadOnly | QtCore.QFile.Text):
text_stream = QtCore.QTextStream(f)
text_stream.setCodec("UTF-8")
text = text_stream.readAll()
f.close()
self.setPlainText(text)
def dragEnterEvent(self, event):
print("Enter Event")
mime_data = event.mimeData()
# if mime_data.hasFormat("text/plain") or mime_data.hasFormat("text/uri-list"):
if mime_data.hasText() or mime_data.hasUrls():
event.acceptProposedAction()
def dragLeaveEvent(self, event):
print("Leave Event")
def dragMoveEvent(self, event):
print("Move Event")
# event.setAccepted(event.pos().x() < 100)
def dropEvent(self, event):
print("Drop Event")
if event.mimeData().hasUrls():
urls = event.mimeData().urls()
file_path = urls[0].toLocalFile()
self.open_file(file_path)
return
super(TextEditor, self).dropEvent(event)
class TextEditDialog(QtWidgets.QDialog):
WINDOW_TITLE = "Drag and Drop Example"
def __init__(self, parent=maya_main_window()):
super(TextEditDialog, self).__init__(parent)
self.setWindowTitle(self.WINDOW_TITLE)
self.setMinimumSize(600, 400)
self.setWindowFlags(self.windowFlags() ^ QtCore.Qt.WindowContextHelpButtonHint)
self.create_widgets()
self.create_layout()
self.create_connections()
def create_widgets(self):
self.editor = TextEditor()
self.drop_enabled_cb = QtWidgets.QCheckBox("Drop Enabled")
self.drop_enabled_cb.setChecked(True)
self.clear_bttn = QtWidgets.QPushButton("Clear")
self.close_bttn = QtWidgets.QPushButton("Close")
def create_layout(self):
button_layout = QtWidgets.QHBoxLayout()
button_layout.setSpacing(4)
button_layout.addWidget(self.drop_enabled_cb)
button_layout.addStretch()
button_layout.addWidget(self.clear_bttn)
button_layout.addWidget(self.close_bttn)
main_layout = QtWidgets.QVBoxLayout(self)
main_layout.setContentsMargins(5, 5, 5, 5)
main_layout.addWidget(self.editor)
main_layout.addLayout(button_layout)
def create_connections(self):
self.drop_enabled_cb.toggled.connect(self.set_drop_enabled)
self.clear_bttn.clicked.connect(self.clear_editor)
self.close_bttn.clicked.connect(self.close)
def set_drop_enabled(self, enabled):
self.editor.set_drop_enabled(enabled)
def clear_editor(self):
self.editor.clear()
def showWindow():
global dialog
try:
dialog.close()
dialog.deleteLater()
except:
pass
dialog = TextEditDialog()
dialog.show()
if __name__ == "__main__":
try:
dialog.close()
dialog.deleteLater()
except:
pass
dialog = TextEditDialog()
dialog.show()
DragAndDrop(1)
最新推荐文章于 2022-03-08 09:37:27 发布