Merge pull request #4225 from pypeclub/feature/OP-4632_qtpy-in-module-tools

General: Use qtpy in modules and hosts UIs which are running in OpenPype process
This commit is contained in:
Jakub Trllo 2022-12-16 11:54:25 +01:00 committed by GitHub
commit d62790bf37
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
44 changed files with 72 additions and 71 deletions

View file

@ -10,7 +10,7 @@ from wsrpc_aiohttp import (
WebSocketAsync WebSocketAsync
) )
from Qt import QtCore from qtpy import QtCore
from openpype.lib import Logger from openpype.lib import Logger
from openpype.pipeline import legacy_io from openpype.pipeline import legacy_io

View file

@ -7,7 +7,7 @@ import traceback
import logging import logging
from functools import partial from functools import partial
from Qt import QtWidgets from qtpy import QtWidgets
from openpype.pipeline import install_host from openpype.pipeline import install_host
from openpype.modules import ModulesManager from openpype.modules import ModulesManager

View file

@ -1,6 +1,6 @@
import os import os
from Qt import QtWidgets from qtpy import QtWidgets
import pyblish.api import pyblish.api

View file

@ -10,7 +10,7 @@ from pathlib import Path
from types import ModuleType from types import ModuleType
from typing import Dict, List, Optional, Union from typing import Dict, List, Optional, Union
from Qt import QtWidgets, QtCore from qtpy import QtWidgets, QtCore
import bpy import bpy
import bpy.utils.previews import bpy.utils.previews

View file

@ -1,6 +1,6 @@
import sys import sys
from Qt import QtWidgets, QtCore, QtGui from qtpy import QtWidgets, QtCore, QtGui
from openpype.tools.utils import host_tools from openpype.tools.utils import host_tools
from openpype.style import load_stylesheet from openpype.style import load_stylesheet

View file

@ -6,7 +6,7 @@ import sys
import logging import logging
import pyblish.api import pyblish.api
from Qt import QtCore from qtpy import QtCore
from openpype.lib import ( from openpype.lib import (
Logger, Logger,

View file

@ -1,7 +1,7 @@
import os import os
import sys import sys
from Qt import QtCore from qtpy import QtCore
class PulseThread(QtCore.QThread): class PulseThread(QtCore.QThread):

View file

@ -6,10 +6,10 @@ import importlib
try: try:
from Qt import QtWidgets # noqa: F401 from qtpy import API_NAME
from Qt import __binding__
print(f"Qt binding: {__binding__}") print(f"Qt binding: {API_NAME}")
mod = importlib.import_module(__binding__) mod = importlib.import_module(API_NAME)
print(f"Qt path: {mod.__file__}") print(f"Qt path: {mod.__file__}")
print("Qt library found, nothing to do..") print("Qt library found, nothing to do..")

View file

@ -3,7 +3,7 @@ import sys
import glob import glob
import logging import logging
from Qt import QtWidgets, QtCore from qtpy import QtWidgets, QtCore
import qtawesome as qta import qtawesome as qta

View file

@ -1,4 +1,4 @@
from Qt import QtGui, QtWidgets from qtpy import QtGui, QtWidgets
from openpype.pipeline import InventoryAction from openpype.pipeline import InventoryAction
from openpype import style from openpype import style

View file

@ -1,4 +1,4 @@
from Qt import QtWidgets from qtpy import QtWidgets
import qtawesome import qtawesome
from openpype.hosts.fusion.api import get_current_comp from openpype.hosts.fusion.api import get_current_comp

View file

@ -14,7 +14,7 @@ import json
import signal import signal
import time import time
from uuid import uuid4 from uuid import uuid4
from Qt import QtWidgets, QtCore, QtGui from qtpy import QtWidgets, QtCore, QtGui
import collections import collections
from .server import Server from .server import Server

View file

@ -8,7 +8,7 @@ from wsrpc_aiohttp import (
WebSocketAsync WebSocketAsync
) )
from Qt import QtCore from qtpy import QtCore
from openpype.lib import Logger from openpype.lib import Logger
from openpype.pipeline import legacy_io from openpype.pipeline import legacy_io

View file

@ -3,7 +3,7 @@ import sys
import contextlib import contextlib
import traceback import traceback
from Qt import QtWidgets from qtpy import QtWidgets
from openpype.lib import env_value_to_bool, Logger from openpype.lib import env_value_to_bool, Logger
from openpype.modules import ModulesManager from openpype.modules import ModulesManager

View file

@ -1,5 +1,5 @@
import os import os
from Qt import QtWidgets from qtpy import QtWidgets
import pyblish.api import pyblish.api

View file

@ -1,6 +1,6 @@
import re import re
from Qt import QtWidgets from qtpy import QtWidgets
from openpype.pipeline import create from openpype.pipeline import create
from openpype.hosts.photoshop import api as photoshop from openpype.hosts.photoshop import api as photoshop

View file

@ -6,7 +6,7 @@ import ctypes
import platform import platform
import logging import logging
from Qt import QtWidgets, QtCore, QtGui from qtpy import QtWidgets, QtCore, QtGui
from openpype import style from openpype import style
from openpype.pipeline import install_host from openpype.pipeline import install_host

View file

@ -207,8 +207,8 @@ class CreateRenderlayer(plugin.Creator):
) )
def _ask_user_subset_override(self, instance): def _ask_user_subset_override(self, instance):
from Qt import QtCore from qtpy import QtCore
from Qt.QtWidgets import QMessageBox from qtpy.QtWidgets import QMessageBox
title = "Subset \"{}\" already exist".format(instance["subset"]) title = "Subset \"{}\" already exist".format(instance["subset"])
text = ( text = (

View file

@ -1,5 +1,5 @@
import sys import sys
from Qt import QtWidgets, QtCore, QtGui from qtpy import QtWidgets, QtCore, QtGui
from openpype import ( from openpype import (
resources, resources,

View file

@ -57,7 +57,7 @@ class AvalonModule(OpenPypeModule, ITrayModule):
if not self._library_loader_imported: if not self._library_loader_imported:
return return
from Qt import QtWidgets from qtpy import QtWidgets
# Actions # Actions
action_library_loader = QtWidgets.QAction( action_library_loader = QtWidgets.QAction(
"Loader", tray_menu "Loader", tray_menu
@ -75,7 +75,7 @@ class AvalonModule(OpenPypeModule, ITrayModule):
def show_library_loader(self): def show_library_loader(self):
if self._library_loader_window is None: if self._library_loader_window is None:
from Qt import QtCore from qtpy import QtCore
from openpype.tools.libraryloader import LibraryLoaderWindow from openpype.tools.libraryloader import LibraryLoaderWindow
from openpype.pipeline import install_openpype_plugins from openpype.pipeline import install_openpype_plugins

View file

@ -183,7 +183,7 @@ class ClockifyModule(
# Definition of Tray menu # Definition of Tray menu
def tray_menu(self, parent_menu): def tray_menu(self, parent_menu):
# Menu for Tray App # Menu for Tray App
from Qt import QtWidgets from qtpy import QtWidgets
menu = QtWidgets.QMenu("Clockify", parent_menu) menu = QtWidgets.QMenu("Clockify", parent_menu)
menu.setProperty("submenu", "on") menu.setProperty("submenu", "on")

View file

@ -1,4 +1,4 @@
from Qt import QtCore, QtGui, QtWidgets from qtpy import QtCore, QtGui, QtWidgets
from openpype import resources, style from openpype import resources, style

View file

@ -1,4 +1,4 @@
from Qt import QtWidgets from qtpy import QtWidgets
from openpype.style import load_stylesheet from openpype.style import load_stylesheet

View file

@ -3,9 +3,9 @@ import time
import datetime import datetime
import threading import threading
from Qt import QtCore, QtWidgets, QtGui
import ftrack_api import ftrack_api
from qtpy import QtCore, QtWidgets, QtGui
from openpype import resources from openpype import resources
from openpype.lib import Logger from openpype.lib import Logger
from openpype_modules.ftrack import resolve_ftrack_url, FTRACK_MODULE_DIR from openpype_modules.ftrack import resolve_ftrack_url, FTRACK_MODULE_DIR

View file

@ -1,10 +1,13 @@
import os import os
import requests import requests
from qtpy import QtCore, QtGui, QtWidgets
from openpype import style from openpype import style
from openpype_modules.ftrack.lib import credentials from openpype_modules.ftrack.lib import credentials
from . import login_tools
from openpype import resources from openpype import resources
from Qt import QtCore, QtGui, QtWidgets
from . import login_tools
class CredentialsDialog(QtWidgets.QDialog): class CredentialsDialog(QtWidgets.QDialog):

View file

@ -222,7 +222,7 @@ class ITrayAction(ITrayModule):
pass pass
def tray_menu(self, tray_menu): def tray_menu(self, tray_menu):
from Qt import QtWidgets from qtpy import QtWidgets
if self.admin_action: if self.admin_action:
menu = self.admin_submenu(tray_menu) menu = self.admin_submenu(tray_menu)
@ -247,7 +247,7 @@ class ITrayAction(ITrayModule):
@staticmethod @staticmethod
def admin_submenu(tray_menu): def admin_submenu(tray_menu):
if ITrayAction._admin_submenu is None: if ITrayAction._admin_submenu is None:
from Qt import QtWidgets from qtpy import QtWidgets
admin_submenu = QtWidgets.QMenu("Admin", tray_menu) admin_submenu = QtWidgets.QMenu("Admin", tray_menu)
admin_submenu.menuAction().setVisible(False) admin_submenu.menuAction().setVisible(False)
@ -279,7 +279,7 @@ class ITrayService(ITrayModule):
@staticmethod @staticmethod
def services_submenu(tray_menu): def services_submenu(tray_menu):
if ITrayService._services_submenu is None: if ITrayService._services_submenu is None:
from Qt import QtWidgets from qtpy import QtWidgets
services_submenu = QtWidgets.QMenu("Services", tray_menu) services_submenu = QtWidgets.QMenu("Services", tray_menu)
services_submenu.menuAction().setVisible(False) services_submenu.menuAction().setVisible(False)
@ -294,7 +294,7 @@ class ITrayService(ITrayModule):
@staticmethod @staticmethod
def _load_service_icons(): def _load_service_icons():
from Qt import QtGui from qtpy import QtGui
ITrayService._failed_icon = QtGui.QIcon( ITrayService._failed_icon = QtGui.QIcon(
resources.get_resource("icons", "circle_red.png") resources.get_resource("icons", "circle_red.png")
@ -325,7 +325,7 @@ class ITrayService(ITrayModule):
return ITrayService._failed_icon return ITrayService._failed_icon
def tray_menu(self, tray_menu): def tray_menu(self, tray_menu):
from Qt import QtWidgets from qtpy import QtWidgets
action = QtWidgets.QAction( action = QtWidgets.QAction(
self.label, self.label,

View file

@ -1,4 +1,4 @@
from Qt import QtWidgets, QtCore, QtGui from qtpy import QtWidgets, QtCore, QtGui
from openpype import style from openpype import style
from openpype.modules.kitsu.utils.credentials import ( from openpype.modules.kitsu.utils.credentials import (

View file

@ -22,7 +22,7 @@ class LogViewModule(OpenPypeModule, ITrayModule):
# Definition of Tray menu # Definition of Tray menu
def tray_menu(self, tray_menu): def tray_menu(self, tray_menu):
from Qt import QtWidgets from qtpy import QtWidgets
# Menu for Tray App # Menu for Tray App
menu = QtWidgets.QMenu('Logging', tray_menu) menu = QtWidgets.QMenu('Logging', tray_menu)

View file

@ -1,4 +1,4 @@
from Qt import QtWidgets, QtCore from qtpy import QtWidgets, QtCore
from .widgets import LogsWidget, OutputWidget from .widgets import LogsWidget, OutputWidget
from openpype import style from openpype import style

View file

@ -1,5 +1,5 @@
import collections import collections
from Qt import QtCore, QtGui from qtpy import QtCore, QtGui
from openpype.lib import Logger from openpype.lib import Logger

View file

@ -1,5 +1,5 @@
import html import html
from Qt import QtCore, QtWidgets from qtpy import QtCore, QtWidgets
import qtawesome import qtawesome
from .models import LogModel, LogsFilterProxy from .models import LogModel, LogsFilterProxy

View file

@ -53,7 +53,7 @@ class MusterModule(OpenPypeModule, ITrayModule):
# Definition of Tray menu # Definition of Tray menu
def tray_menu(self, parent): def tray_menu(self, parent):
"""Add **change credentials** option to tray menu.""" """Add **change credentials** option to tray menu."""
from Qt import QtWidgets from qtpy import QtWidgets
# Menu for Tray App # Menu for Tray App
menu = QtWidgets.QMenu('Muster', parent) menu = QtWidgets.QMenu('Muster', parent)

View file

@ -1,5 +1,4 @@
import os from qtpy import QtCore, QtGui, QtWidgets
from Qt import QtCore, QtGui, QtWidgets
from openpype import resources, style from openpype import resources, style

View file

@ -5,7 +5,7 @@ import collections
from code import InteractiveInterpreter from code import InteractiveInterpreter
import appdirs import appdirs
from Qt import QtCore, QtWidgets, QtGui from qtpy import QtCore, QtWidgets, QtGui
from openpype import resources from openpype import resources
from openpype.style import load_stylesheet from openpype.style import load_stylesheet

View file

@ -1,5 +1,5 @@
import os import os
from Qt import QtCore, QtWidgets, QtGui from qtpy import QtCore, QtWidgets, QtGui
from openpype import style from openpype import style
from openpype import resources from openpype import resources

View file

@ -1,7 +1,7 @@
import os import os
import webbrowser import webbrowser
from Qt import QtWidgets from qtpy import QtWidgets
from openpype.modules.shotgrid.lib import credentials from openpype.modules.shotgrid.lib import credentials
from openpype.modules.shotgrid.tray.credential_dialog import ( from openpype.modules.shotgrid.tray.credential_dialog import (

View file

@ -1244,7 +1244,7 @@ class SyncServerModule(OpenPypeModule, ITrayModule):
if not self.enabled: if not self.enabled:
return return
from Qt import QtWidgets from qtpy import QtWidgets
"""Add menu or action to Tray(or parent)'s menu""" """Add menu or action to Tray(or parent)'s menu"""
action = QtWidgets.QAction(self.label, parent_menu) action = QtWidgets.QAction(self.label, parent_menu)
action.triggered.connect(self.show_widget) action.triggered.connect(self.show_widget)

View file

@ -1,4 +1,4 @@
from Qt import QtWidgets, QtCore, QtGui from qtpy import QtWidgets, QtCore, QtGui
from openpype.tools.settings import style from openpype.tools.settings import style

View file

@ -1,5 +1,5 @@
import os import os
from Qt import QtCore, QtWidgets, QtGui from qtpy import QtCore, QtWidgets, QtGui
from openpype.lib import Logger from openpype.lib import Logger

View file

@ -3,8 +3,7 @@ import attr
from bson.objectid import ObjectId from bson.objectid import ObjectId
import datetime import datetime
from Qt import QtCore from qtpy import QtCore
from Qt.QtCore import Qt
import qtawesome import qtawesome
from openpype.tools.utils.delegates import pretty_timestamp from openpype.tools.utils.delegates import pretty_timestamp
@ -79,16 +78,16 @@ class _SyncRepresentationModel(QtCore.QAbstractTableModel):
def columnCount(self, _index=None): def columnCount(self, _index=None):
return len(self._header) return len(self._header)
def headerData(self, section, orientation, role=Qt.DisplayRole): def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole):
if section >= len(self.COLUMN_LABELS): if section >= len(self.COLUMN_LABELS):
return return
if role == Qt.DisplayRole: if role == QtCore.Qt.DisplayRole:
if orientation == Qt.Horizontal: if orientation == QtCore.Qt.Horizontal:
return self.COLUMN_LABELS[section][1] return self.COLUMN_LABELS[section][1]
if role == HEADER_NAME_ROLE: if role == HEADER_NAME_ROLE:
if orientation == Qt.Horizontal: if orientation == QtCore.Qt.Horizontal:
return self.COLUMN_LABELS[section][0] # return name return self.COLUMN_LABELS[section][0] # return name
def data(self, index, role): def data(self, index, role):
@ -123,7 +122,7 @@ class _SyncRepresentationModel(QtCore.QAbstractTableModel):
return item.status == lib.STATUS[2] and \ return item.status == lib.STATUS[2] and \
item.remote_progress < 1 item.remote_progress < 1
if role in (Qt.DisplayRole, Qt.EditRole): if role in (QtCore.Qt.DisplayRole, QtCore.Qt.EditRole):
# because of ImageDelegate # because of ImageDelegate
if header_value in ['remote_site', 'local_site']: if header_value in ['remote_site', 'local_site']:
return "" return ""
@ -146,7 +145,7 @@ class _SyncRepresentationModel(QtCore.QAbstractTableModel):
if role == STATUS_ROLE: if role == STATUS_ROLE:
return item.status return item.status
if role == Qt.UserRole: if role == QtCore.Qt.UserRole:
return item._id return item._id
@property @property
@ -409,7 +408,7 @@ class _SyncRepresentationModel(QtCore.QAbstractTableModel):
""" """
for i in range(self.rowCount(None)): for i in range(self.rowCount(None)):
index = self.index(i, 0) index = self.index(i, 0)
value = self.data(index, Qt.UserRole) value = self.data(index, QtCore.Qt.UserRole)
if value == id: if value == id:
return index return index
return None return None
@ -917,7 +916,7 @@ class SyncRepresentationSummaryModel(_SyncRepresentationModel):
if not self.can_edit: if not self.can_edit:
return return
repre_id = self.data(index, Qt.UserRole) repre_id = self.data(index, QtCore.Qt.UserRole)
representation = get_representation_by_id(self.project, repre_id) representation = get_representation_by_id(self.project, repre_id)
if representation: if representation:
@ -1353,7 +1352,7 @@ class SyncRepresentationDetailModel(_SyncRepresentationModel):
if not self.can_edit: if not self.can_edit:
return return
file_id = self.data(index, Qt.UserRole) file_id = self.data(index, QtCore.Qt.UserRole)
updated_file = None updated_file = None
representation = get_representation_by_id(self.project, self._id) representation = get_representation_by_id(self.project, self._id)

View file

@ -3,8 +3,7 @@ import subprocess
import sys import sys
from functools import partial from functools import partial
from Qt import QtWidgets, QtCore, QtGui from qtpy import QtWidgets, QtCore, QtGui
from Qt.QtCore import Qt
import qtawesome import qtawesome
from openpype.tools.settings import style from openpype.tools.settings import style
@ -260,7 +259,7 @@ class _SyncRepresentationWidget(QtWidgets.QWidget):
self._selected_ids = set() self._selected_ids = set()
for index in idxs: for index in idxs:
self._selected_ids.add(self.model.data(index, Qt.UserRole)) self._selected_ids.add(self.model.data(index, QtCore.Qt.UserRole))
def _set_selection(self): def _set_selection(self):
""" """
@ -291,7 +290,7 @@ class _SyncRepresentationWidget(QtWidgets.QWidget):
self.table_view.openPersistentEditor(index) self.table_view.openPersistentEditor(index)
return return
_id = self.model.data(index, Qt.UserRole) _id = self.model.data(index, QtCore.Qt.UserRole)
detail_window = SyncServerDetailWindow( detail_window = SyncServerDetailWindow(
self.sync_server, _id, self.model.project, parent=self) self.sync_server, _id, self.model.project, parent=self)
detail_window.exec() detail_window.exec()
@ -615,7 +614,7 @@ class SyncRepresentationSummaryWidget(_SyncRepresentationWidget):
table_view.setSelectionBehavior( table_view.setSelectionBehavior(
QtWidgets.QAbstractItemView.SelectRows) QtWidgets.QAbstractItemView.SelectRows)
table_view.horizontalHeader().setSortIndicator( table_view.horizontalHeader().setSortIndicator(
-1, Qt.AscendingOrder) -1, QtCore.Qt.AscendingOrder)
table_view.setAlternatingRowColors(True) table_view.setAlternatingRowColors(True)
table_view.verticalHeader().hide() table_view.verticalHeader().hide()
table_view.viewport().setAttribute(QtCore.Qt.WA_Hover, True) table_view.viewport().setAttribute(QtCore.Qt.WA_Hover, True)
@ -773,7 +772,8 @@ class SyncRepresentationDetailWidget(_SyncRepresentationWidget):
QtWidgets.QAbstractItemView.ExtendedSelection) QtWidgets.QAbstractItemView.ExtendedSelection)
table_view.setSelectionBehavior( table_view.setSelectionBehavior(
QtWidgets.QTableView.SelectRows) QtWidgets.QTableView.SelectRows)
table_view.horizontalHeader().setSortIndicator(-1, Qt.AscendingOrder) table_view.horizontalHeader().setSortIndicator(
-1, QtCore.Qt.AscendingOrder)
table_view.horizontalHeader().setSortIndicatorShown(True) table_view.horizontalHeader().setSortIndicatorShown(True)
table_view.setAlternatingRowColors(True) table_view.setAlternatingRowColors(True)
table_view.verticalHeader().hide() table_view.verticalHeader().hide()

View file

@ -1,5 +1,5 @@
import time import time
from Qt import QtCore from qtpy import QtCore
from pynput import mouse, keyboard from pynput import mouse, keyboard
from openpype.lib import Logger from openpype.lib import Logger

View file

@ -1,4 +1,4 @@
from Qt import QtCore, QtGui, QtWidgets from qtpy import QtCore, QtGui, QtWidgets
from openpype import resources, style from openpype import resources, style

View file

@ -3,7 +3,7 @@ from aiohttp import web
import json import json
import logging import logging
from concurrent.futures import CancelledError from concurrent.futures import CancelledError
from Qt import QtWidgets from qtpy import QtWidgets
from openpype.modules import ITrayService from openpype.modules import ITrayService