ayon-core/pype/modules/user/widget_user.py

88 lines
2.5 KiB
Python

from Qt import QtCore, QtGui, QtWidgets
from avalon import style
from pype.api import resources
class UserWidget(QtWidgets.QWidget):
MIN_WIDTH = 300
def __init__(self, module):
super(UserWidget, self).__init__()
self.module = module
# Style
icon = QtGui.QIcon(resources.pype_icon_filepath())
self.setWindowIcon(icon)
self.setWindowTitle("Username Settings")
self.setMinimumWidth(self.MIN_WIDTH)
self.setStyleSheet(style.load_stylesheet())
self.setWindowFlags(
QtCore.Qt.WindowCloseButtonHint |
QtCore.Qt.WindowMinimizeButtonHint
)
self.setLayout(self._main())
def show(self, *args, **kwargs):
super().show(*args, **kwargs)
# Move widget to center of active screen on show
screen = QtWidgets.QApplication.desktop().screen()
screen_center = lambda self: (
screen.rect().center() - self.rect().center()
)
self.move(screen_center(self))
def _main(self):
main_layout = QtWidgets.QVBoxLayout()
form_layout = QtWidgets.QFormLayout()
form_layout.setContentsMargins(10, 15, 10, 5)
label_username = QtWidgets.QLabel("Username:")
label_username.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
label_username.setTextFormat(QtCore.Qt.RichText)
input_username = QtWidgets.QLineEdit()
input_username.setPlaceholderText(
QtCore.QCoreApplication.translate("main", "e.g. John Smith")
)
form_layout.addRow(label_username, input_username)
btn_save = QtWidgets.QPushButton("Save")
btn_save.clicked.connect(self.click_save)
btn_cancel = QtWidgets.QPushButton("Cancel")
btn_cancel.clicked.connect(self.close)
btn_group = QtWidgets.QHBoxLayout()
btn_group.addStretch(1)
btn_group.addWidget(btn_save)
btn_group.addWidget(btn_cancel)
main_layout.addLayout(form_layout)
main_layout.addLayout(btn_group)
self.input_username = input_username
return main_layout
def set_user(self, username):
self.input_username.setText(username)
def click_save(self):
# all what should happen - validations and saving into appsdir
username = self.input_username.text()
self.module.change_credentials(username)
self._close_widget()
def closeEvent(self, event):
event.ignore()
self._close_widget()
def _close_widget(self):
self.hide()