def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(750, 598) self.verticalLayout = QtGui.QVBoxLayout(Dialog) self.verticalLayout.setObjectName("verticalLayout") self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.left_browser = ShotgunBrowserWidget(Dialog) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.left_browser.sizePolicy().hasHeightForWidth()) self.left_browser.setSizePolicy(sizePolicy) self.left_browser.setObjectName("left_browser") self.horizontalLayout.addWidget(self.left_browser) self.verticalLayout_2 = QtGui.QVBoxLayout() self.verticalLayout_2.setObjectName("verticalLayout_2") spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_2.addItem(spacerItem) self.pushButton = QtGui.QPushButton(Dialog) self.pushButton.setText("") icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/res/checkout.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.pushButton.setIcon(icon) self.pushButton.setIconSize(QtCore.QSize(64, 64)) self.pushButton.setFlat(True) self.pushButton.setObjectName("pushButton") self.verticalLayout_2.addWidget(self.pushButton) self.pushButton_2 = QtGui.QPushButton(Dialog) self.pushButton_2.setText("") icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/res/checkin.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.pushButton_2.setIcon(icon1) self.pushButton_2.setIconSize(QtCore.QSize(64, 64)) self.pushButton_2.setFlat(True) self.pushButton_2.setObjectName("pushButton_2") self.verticalLayout_2.addWidget(self.pushButton_2) spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_2.addItem(spacerItem1) self.horizontalLayout.addLayout(self.verticalLayout_2) self.right_browser = FilesystemBrowserWidget(Dialog) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.right_browser.sizePolicy().hasHeightForWidth()) self.right_browser.setSizePolicy(sizePolicy) self.right_browser.setObjectName("right_browser") self.horizontalLayout.addWidget(self.right_browser) self.verticalLayout.addLayout(self.horizontalLayout) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog)
def __setup_ui(self, callback): """ Starts a QApplication and initializes the UI. """ from tank.platform.qt import QtCore, QtGui # we got QT capabilities. Start a QT app and fire the command into the app tk_shotgun = self.import_module("tk_shotgun") t = tk_shotgun.Task(self, callback) # start up our QApp now qt_application = QtGui.QApplication([]) qt_application.setWindowIcon(QtGui.QIcon(self.icon_256)) self._initialize_dark_look_and_feel() # when the QApp starts, initialize our task code QtCore.QTimer.singleShot(0, t.run_command) # and ask the main app to exit when the task emits its finished signal t.finished.connect(qt_application.quit) # start the application loop. This will block the process until the task # has completed - this is either triggered by a main window closing or # byt the finished signal being called from the task class above. qt_application.exec_()
def start_app(engine): """ Run the QApplication for the given tk-desktop engine """ if engine.has_ui: from tank.platform.qt import QtGui app = QtGui.QApplication([]) app.setQuitOnLastWindowClosed(False) app.setApplicationName("%s Python" % engine.context.project["name"]) # set default icon python_icon = os.path.realpath( os.path.join(os.path.dirname(__file__), "..", "..", "resources", "python_icon.png")) app.setWindowIcon(QtGui.QIcon(python_icon)) # Let the engine know we've created the app engine.register_qapplication(app) # use the toolkit look and feel engine._initialize_dark_look_and_feel() result = 0 while True: # loop until we are signaled to close, in case an app accidentally quits the app result = app.exec_() if not engine.connected: # we have been signaled to quit rather than waiting for more commands break return result else: # not engine.has_ui # wait for the engine communication channel to shut down engine.msg_server.join() return 0
def start_qt_app_and_show_modal(title, engine, widget_class, *args, **kwargs): """ Wrapper around the engine.show_modal() call that first starts a QApplication, then shows the window, then quits the QApplication. :param title: Window title :param engine: Engine object to associate with :param widget_class: UI class to create :param args/kwargs: parameters to pass to the UI :returns: The modal dialog return value """ t = QtTask(title, engine, widget_class, args, kwargs) # start up our QApp now qt_application = QtGui.QApplication([]) qt_application.setWindowIcon(QtGui.QIcon(engine.icon_256)) engine._initialize_dark_look_and_feel() # when the QApp starts, initialize our task code QtCore.QTimer.singleShot(0, t.run_command) # and ask the main app to exit when the task emits its finished signal t.finished.connect(qt_application.quit) # start the application loop. This will block the process until the task # has completed - this is either triggered by a main window closing or # by the finished signal being called from the task class above. qt_application.exec_() return t.get_return_data()
def clear_out_rv_roles(self): rows = self._tray_frame.tray_model.rowCount() for x in range(0,rows): index = self._tray_frame.tray_model.index(x, 0) self._tray_frame.tray_delegate.update_rv_role(index, None) # _CUT_THUMB_ROLE is the icon from the original query # _ORIGINAL_THUMBNAIL is a path to the cache. #thumb = index.data(self._CUT_THUMB_ROLE) orig_tn = index.data(self._ORIGINAL_THUMBNAIL) filtered_tn = index.data(self._FILTER_THUMBNAIL) if filtered_tn: self._tray_frame.tray_model.setData(index, None, self._FILTER_THUMBNAIL) if orig_tn: thumb = QtGui.QIcon(orig_tn) self._tray_frame.tray_model.setData(index, thumb, self._CUT_THUMB_ROLE) item = self._tray_frame.tray_model.itemFromIndex(index) item.setIcon(thumb) self._tray_frame.tray_model.notify_filter_data_refreshed(True) self._tray_frame.tray_list.repaint()
def execute_command(self, cmd_key, args): """ Executes a given command. """ cb = self.commands[cmd_key]["callback"] # make sure the number of parameters to the command are correct cb_arg_spec = inspect.getargspec(cb) cb_arg_list = cb_arg_spec[0] cb_var_args = cb_arg_spec[1] if hasattr(cb, "__self__"): # first argument to cb will be class instance: cb_arg_list = cb_arg_list[1:] # ensure the correct/minimum number of arguments have been passed: have_expected_args = False if cb_var_args: have_expected_args = (len(args) >= len(cb_arg_list)) else: have_expected_args = (len(args) == len(cb_arg_list)) if not have_expected_args: expected_args = list(cb_arg_list) if cb_var_args: expected_args.append("*%s" % cb_var_args) raise TankError( "Cannot run command! Expected command arguments (%s)" % ", ".join(expected_args)) if not self._has_qt: # QT not available - just run the command straight return cb(*args) else: from tank.platform.qt import QtCore, QtGui # we got QT capabilities. Start a QT app and fire the command into the app tk_shell = self.import_module("tk_shell") t = tk_shell.Task(self, cb, args) # start up our QApp now qt_application = QtGui.QApplication([]) qt_application.setWindowIcon(QtGui.QIcon(self.icon_256)) self._initialize_dark_look_and_feel() # now we have a working UI! self._has_ui = True # when the QApp starts, initialize our task code QtCore.QTimer.singleShot(0, t.run_command) # and ask the main app to exit when the task emits its finished signal t.finished.connect(qt_application.quit) # start the application loop. This will block the process until the task # has completed - this is either triggered by a main window closing or # byt the finished signal being called from the task class above. qt_application.exec_()
def __init__(self, parent=None): QtGui.QPushButton.__init__(self, parent) # cache the icons for collapsed/expanded self.down_arrow = QtGui.QIcon(":tk-desktop/down_arrow.png") self.right_arrow = QtGui.QIcon(":tk-desktop/right_arrow.png") # adjust the button look self.setFlat(True) self.setStyleSheet(""" text-align: left; font-size: 14px; background-color: transparent; border: none; """) # default is to be expanded self.setIcon(self.down_arrow)
def setupUi(self, WorkAreaDialog): WorkAreaDialog.setObjectName("WorkAreaDialog") WorkAreaDialog.resize(443, 467) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/tk_multi_infopanel/rings.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) WorkAreaDialog.setWindowIcon(icon) self.verticalLayout = QtGui.QVBoxLayout(WorkAreaDialog) self.verticalLayout.setObjectName("verticalLayout") self.top_frame = QtGui.QFrame(WorkAreaDialog) self.top_frame.setFrameShape(QtGui.QFrame.StyledPanel) self.top_frame.setFrameShadow(QtGui.QFrame.Raised) self.top_frame.setObjectName("top_frame") self.horizontalLayout = QtGui.QHBoxLayout(self.top_frame) self.horizontalLayout.setObjectName("horizontalLayout") self.icon = QtGui.QLabel(self.top_frame) self.icon.setMinimumSize(QtCore.QSize(40, 40)) self.icon.setMaximumSize(QtCore.QSize(40, 40)) self.icon.setText("") self.icon.setPixmap( QtGui.QPixmap(":/tk_multi_infopanel/pin_large.png")) self.icon.setScaledContents(True) self.icon.setObjectName("icon") self.horizontalLayout.addWidget(self.icon) self.top_text = QtGui.QLabel(self.top_frame) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.top_text.sizePolicy().hasHeightForWidth()) self.top_text.setSizePolicy(sizePolicy) self.top_text.setObjectName("top_text") self.horizontalLayout.addWidget(self.top_text) self.verticalLayout.addWidget(self.top_frame) self.task_list = QtGui.QListWidget(WorkAreaDialog) self.task_list.setObjectName("task_list") self.verticalLayout.addWidget(self.task_list) self.horizontalLayout_2 = QtGui.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_2.addItem(spacerItem) self.cancel = QtGui.QPushButton(WorkAreaDialog) self.cancel.setObjectName("cancel") self.horizontalLayout_2.addWidget(self.cancel) self.ok = QtGui.QPushButton(WorkAreaDialog) self.ok.setObjectName("ok") self.horizontalLayout_2.addWidget(self.ok) self.verticalLayout.addLayout(self.horizontalLayout_2) self.retranslateUi(WorkAreaDialog) QtCore.QObject.connect(self.cancel, QtCore.SIGNAL("clicked()"), WorkAreaDialog.reject) QtCore.QObject.connect(self.ok, QtCore.SIGNAL("clicked()"), WorkAreaDialog.accept) QtCore.QMetaObject.connectSlotsByName(WorkAreaDialog)
def run(self, splash=None, version=None): """ Run the engine. This method is called from the GUI bootstrap to setup the application and to run the Qt event loop. """ self.app_version = version # Initialize Qt app from tank.platform.qt import QtGui app = QtGui.QApplication.instance() if app is None: app = QtGui.QApplication(sys.argv) # update the app icon icon = QtGui.QIcon(":tk-desktop/default_systray_icon") app.setWindowIcon(icon) splash.set_message("Building UI") # setup the global look and feel self._engine._initialize_dark_look_and_feel() # load custom font QtGui.QFontDatabase.addApplicationFont( ":/tk-desktop/fonts/OpenSans-Bold.ttf") QtGui.QFontDatabase.addApplicationFont( ":/tk-desktop/fonts/OpenSans-Regular.ttf") QtGui.QFontDatabase.addApplicationFont( ":/tk-desktop/fonts/OpenSans-CondLight.ttf") QtGui.QFontDatabase.addApplicationFont( ":/tk-desktop/fonts/OpenSans-Light.ttf") # merge in app specific look and feel css_file = os.path.join(self._engine.disk_location, "resources", "desktop_dark.css") f = open(css_file) css = app.styleSheet() + "\n\n" + f.read() f.close() app.setStyleSheet(css) # initialize System Tray self.desktop_window = desktop_window.DesktopWindow() # make sure we close down our rpc threads app.aboutToQuit.connect(self._engine.destroy_engine) # hide the splash if it exists if splash is not None: splash.hide() # and run the app result = app.exec_() return result
def Icon(icon = ''): """ @param icon: The name of the icon to use eg refresh.png @type icon: String """ iconPath = "T:/software/lsapipeline/config/icons/" fullPath = '%s%s' % (iconPath, icon) icon = QtGui.QIcon(fullPath) return icon
def __init__(self, parent=None): QtGui.QSystemTrayIcon.__init__(self, parent) # configure the system tray icon icon = QtGui.QIcon(":/tk-desktop/default_systray_icon") self.setIcon(icon) self.setToolTip("Shotgun") # connect up signal handlers self.activated.connect(self.__activated)
def setupUi(self, TaskWidget): TaskWidget.setObjectName("TaskWidget") TaskWidget.resize(338, 36) self.verticalLayout = QtGui.QVBoxLayout(TaskWidget) self.verticalLayout.setSpacing(0) self.verticalLayout.setContentsMargins(2, 2, 2, 2) self.verticalLayout.setObjectName("verticalLayout") self.frame = QtGui.QFrame(TaskWidget) self.frame.setMinimumSize(QtCore.QSize(0, 32)) self.frame.setFrameShape(QtGui.QFrame.StyledPanel) self.frame.setFrameShadow(QtGui.QFrame.Raised) self.frame.setObjectName("frame") self.horizontalLayout = QtGui.QHBoxLayout(self.frame) self.horizontalLayout.setSpacing(8) self.horizontalLayout.setContentsMargins(8, 2, 2, 2) self.horizontalLayout.setObjectName("horizontalLayout") self.icon = QtGui.QLabel(self.frame) self.icon.setMinimumSize(QtCore.QSize(18, 18)) self.icon.setMaximumSize(QtCore.QSize(18, 18)) self.icon.setPixmap(QtGui.QPixmap(":/tk_multi_publish2/shotgun.png")) self.icon.setScaledContents(True) self.icon.setAlignment(QtCore.Qt.AlignCenter) self.icon.setObjectName("icon") self.horizontalLayout.addWidget(self.icon) self.header = QtGui.QLabel(self.frame) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.header.sizePolicy().hasHeightForWidth()) self.header.setSizePolicy(sizePolicy) self.header.setMinimumSize(QtCore.QSize(1, 1)) self.header.setAccessibleName("") self.header.setObjectName("header") self.horizontalLayout.addWidget(self.header) self.status = QtGui.QToolButton(self.frame) self.status.setMinimumSize(QtCore.QSize(30, 22)) self.status.setMaximumSize(QtCore.QSize(30, 22)) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/tk_multi_publish2/status_publish.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.status.setIcon(icon) self.status.setIconSize(QtCore.QSize(16, 16)) self.status.setObjectName("status") self.horizontalLayout.addWidget(self.status) self.checkbox = QtGui.QCheckBox(self.frame) self.checkbox.setObjectName("checkbox") self.horizontalLayout.addWidget(self.checkbox) self.verticalLayout.addWidget(self.frame) self.retranslateUi(TaskWidget) QtCore.QMetaObject.connectSlotsByName(TaskWidget)
def setupUi(self, ProgressDetailsWidget): ProgressDetailsWidget.setObjectName("ProgressDetailsWidget") ProgressDetailsWidget.resize(370, 233) self.verticalLayout = QtGui.QVBoxLayout(ProgressDetailsWidget) self.verticalLayout.setSpacing(0) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.progress_frame = QtGui.QFrame(ProgressDetailsWidget) self.progress_frame.setFrameShape(QtGui.QFrame.StyledPanel) self.progress_frame.setFrameShadow(QtGui.QFrame.Raised) self.progress_frame.setObjectName("progress_frame") self.verticalLayout_2 = QtGui.QVBoxLayout(self.progress_frame) self.verticalLayout_2.setObjectName("verticalLayout_2") self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.progress_label = QtGui.QLabel(self.progress_frame) self.progress_label.setObjectName("progress_label") self.horizontalLayout.addWidget(self.progress_label) self.copy_log_button = QtGui.QToolButton(self.progress_frame) self.copy_log_button.setMinimumSize(QtCore.QSize(105, 0)) self.copy_log_button.setToolButtonStyle(QtCore.Qt.ToolButtonTextOnly) self.copy_log_button.setObjectName("copy_log_button") self.horizontalLayout.addWidget(self.copy_log_button) self.close = QtGui.QToolButton(self.progress_frame) self.close.setMinimumSize(QtCore.QSize(30, 30)) self.close.setMaximumSize(QtCore.QSize(30, 30)) self.close.setText("") icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/tk_multi_publish2/cross.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.close.setIcon(icon) self.close.setIconSize(QtCore.QSize(30, 30)) self.close.setObjectName("close") self.horizontalLayout.addWidget(self.close) self.verticalLayout_2.addLayout(self.horizontalLayout) self.log_tree = QtGui.QTreeWidget(self.progress_frame) self.log_tree.setHorizontalScrollMode( QtGui.QAbstractItemView.ScrollPerItem) self.log_tree.setUniformRowHeights(True) self.log_tree.setWordWrap(True) self.log_tree.setColumnCount(2) self.log_tree.setObjectName("log_tree") self.log_tree.headerItem().setText(0, "1") self.log_tree.headerItem().setText(1, "2") self.log_tree.header().setVisible(False) self.log_tree.header().setStretchLastSection(False) self.verticalLayout_2.addWidget(self.log_tree) self.verticalLayout.addWidget(self.progress_frame) self.retranslateUi(ProgressDetailsWidget) QtCore.QMetaObject.connectSlotsByName(ProgressDetailsWidget)
def start_app(engine): """ Run the QApplication for the given tk-desktop engine. """ # If we're running the new engine that knows how to start the app, delegate the # task to it if hasattr(engine, "start_app"): return engine.start_app() # Otherwise run the legacy code. if engine.has_ui: # NOTE # The following code is meant to run for very old verions of tk-desktop. It # should not be edited to support newer features. from tank.platform.qt import QtGui app = QtGui.QApplication([]) app.setQuitOnLastWindowClosed(False) app.setApplicationName("%s Python" % engine.context.project["name"]) # set default icon python_icon = os.path.realpath( os.path.join( os.path.dirname(__file__), "..", "..", "resources", "python_icon.png" ) ) app.setWindowIcon(QtGui.QIcon(python_icon)) # Let the engine know we've created the app engine.register_qapplication(app) # use the toolkit look and feel engine._initialize_dark_look_and_feel() result = 0 while True: # loop until we are signaled to close, in case an app accidentally quits the app result = app.exec_() if not engine.connected: # we have been signaled to quit rather than waiting for more commands break return result else: # not engine.has_ui # wait for the engine communication channel to shut down engine.msg_server.join() return 0
def _add_menu_item(self, name, parent_menu, callback, properties=None): action = QtGui.QAction(name, parent_menu) parent_menu.addAction(action) action.triggered.connect(callback) if properties: if "tooltip" in properties: action.setTooltip(properties["tooltip"]) action.setStatustip(properties["tooltip"]) if "enable_callback" in properties: action.setEnabled(properties["enable_callback"]()) if "icon" in properties: action.setIcon(QtGui.QIcon(properties["icon"])) return action
def _initialize_application(self): from tank.platform.qt import QtGui app = QtGui.QApplication([]) # We may launch multiple UI apps, do not quit as soon as the last one closes. app.setQuitOnLastWindowClosed(False) # Make the name pretty for the tray and the task manager. app.setApplicationName("%s Python" % self._engine.context.project["name"]) # set default icon python_icon = os.path.join(self._engine.disk_location, "icon_bg_python.png") app.setWindowIcon(QtGui.QIcon(python_icon)) self.register_qapplication(app) # use the toolkit look and feel self._engine._initialize_dark_look_and_feel() return app
def _add_menu_item(self, name, parent_menu, callback, properties=None): action = QtGui.QAction(name, parent_menu) parent_menu.addAction(action) if callback: action.triggered.connect(Callback(callback)) if properties: self._engine.log_debug(properties) if "tooltip" in properties: action.setToolTip(properties["tooltip"]) action.setStatusIip(properties["tooltip"]) elif "description" in properties: action.setToolTip(properties["description"]) action.setStatusTip(properties["description"]) if "enable_callback" in properties: action.setEnabled(properties["enable_callback"]()) if "checkable" in properties: action.setCheckable(True) action.setChecked(properties.get("checkable")) if "icon" in properties: action.setIcon(QtGui.QIcon(properties["icon"])) return action
def __setup_ui(self, callback): """ Starts a QApplication and initializes the UI. """ from tank.platform.qt import QtCore, QtGui # we got QT capabilities. Start a QT app and fire the command into the app tk_shotgun = self.import_module("tk_shotgun") t = tk_shotgun.Task(self, callback) # We need to clear Qt library paths on Linux if KDE is the active environment. # This resolves issues with mismatched Qt libraries between the OS and the # application being launched if it is a DCC that comes with a bundled Qt. if sys.platform == "linux2" and os.environ.get( "KDE_FULL_SESSION") is not None: QtGui.QApplication.setLibraryPaths([]) # start up our QApp now qt_application = QtGui.QApplication([]) qt_application.setWindowIcon(QtGui.QIcon(self.icon_256)) # make sure we have a dark theme self._initialize_dark_look_and_feel() # now we have a working UI! self._has_ui = True # when the QApp starts, initialize our task code QtCore.QTimer.singleShot(0, t.run_command) # and ask the main app to exit when the task emits its finished signal t.finished.connect(qt_application.quit) # start the application loop. This will block the process until the task # has completed - this is either triggered by a main window closing or # byt the finished signal being called from the task class above. qt_application.exec_()
def _initialize_application(self): from tank.platform.qt import QtGui if sgtk.util.is_macos(): # If we are on Mac with PySide2, then starting a QApplication even with no Windows # will steal focus from any currently focused application. # So we need to use AppKit if available to stop it from stealing focus. try: import AppKit info = AppKit.NSBundle.mainBundle().infoDictionary() info["LSUIElement"] = "1" except ImportError: # Since AppKit is bundled with the Desktop installer, it's possible we are using # an older version of the installer that doesn't contain this package. In which # case just move on silently. pass app = QtGui.QApplication([]) # We may launch multiple UI apps, do not quit as soon as the last one closes. app.setQuitOnLastWindowClosed(False) # Make the name pretty for the tray and the task manager. app.setApplicationName("%s Python" % self._engine.context.project["name"]) # set default icon python_icon = os.path.join(self._engine.disk_location, "icon_bg_python.png") app.setWindowIcon(QtGui.QIcon(python_icon)) self.register_qapplication(app) # use the toolkit look and feel self._engine._initialize_dark_look_and_feel() return app
def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(836, 487) self.horizontalLayout = QtGui.QHBoxLayout(Dialog) self.horizontalLayout.setObjectName("horizontalLayout") self.context_overview_tab_widget = QtGui.QTabWidget(Dialog) self.context_overview_tab_widget.setTabPosition(QtGui.QTabWidget.South) self.context_overview_tab_widget.setObjectName( "context_overview_tab_widget") self.tab = QtGui.QWidget() self.tab.setObjectName("tab") self.verticalLayout_4 = QtGui.QVBoxLayout(self.tab) self.verticalLayout_4.setObjectName("verticalLayout_4") self.context_browser = ContextBrowserWidget(self.tab) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.context_browser.sizePolicy().hasHeightForWidth()) self.context_browser.setSizePolicy(sizePolicy) self.context_browser.setMinimumSize(QtCore.QSize(380, 0)) self.context_browser.setObjectName("context_browser") self.verticalLayout_4.addWidget(self.context_browser) self.label_4 = QtGui.QLabel(self.tab) self.label_4.setWordWrap(True) self.label_4.setObjectName("label_4") self.verticalLayout_4.addWidget(self.label_4) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/res/icon_task.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.context_overview_tab_widget.addTab(self.tab, icon, "") self.tab_2 = QtGui.QWidget() self.tab_2.setObjectName("tab_2") self.verticalLayout_2 = QtGui.QVBoxLayout(self.tab_2) self.verticalLayout_2.setObjectName("verticalLayout_2") self.app_browser = AppBrowserWidget(self.tab_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.app_browser.sizePolicy().hasHeightForWidth()) self.app_browser.setSizePolicy(sizePolicy) self.app_browser.setMinimumSize(QtCore.QSize(380, 0)) self.app_browser.setObjectName("app_browser") self.verticalLayout_2.addWidget(self.app_browser) self.label_2 = QtGui.QLabel(self.tab_2) self.label_2.setWordWrap(True) self.label_2.setObjectName("label_2") self.verticalLayout_2.addWidget(self.label_2) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/res/logo_color_16.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.context_overview_tab_widget.addTab(self.tab_2, icon1, "") self.tab_3 = QtGui.QWidget() self.tab_3.setObjectName("tab_3") self.verticalLayout_3 = QtGui.QVBoxLayout(self.tab_3) self.verticalLayout_3.setObjectName("verticalLayout_3") self.environment_browser = EnvironmentBrowserWidget(self.tab_3) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.environment_browser.sizePolicy().hasHeightForWidth()) self.environment_browser.setSizePolicy(sizePolicy) self.environment_browser.setMinimumSize(QtCore.QSize(380, 0)) self.environment_browser.setObjectName("environment_browser") self.verticalLayout_3.addWidget(self.environment_browser) self.label_3 = QtGui.QLabel(self.tab_3) self.label_3.setWordWrap(True) self.label_3.setObjectName("label_3") self.verticalLayout_3.addWidget(self.label_3) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(":/res/cog_white.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.context_overview_tab_widget.addTab(self.tab_3, icon2, "") self.horizontalLayout.addWidget(self.context_overview_tab_widget) self.verticalLayout = QtGui.QVBoxLayout() self.verticalLayout.setSpacing(5) self.verticalLayout.setObjectName("verticalLayout") self.label = QtGui.QLabel(Dialog) self.label.setText("") self.label.setPixmap(QtGui.QPixmap(":/res/tank_logo.png")) self.label.setObjectName("label") self.verticalLayout.addWidget(self.label) self.jump_to_fs = QtGui.QPushButton(Dialog) self.jump_to_fs.setObjectName("jump_to_fs") self.verticalLayout.addWidget(self.jump_to_fs) self.reload_apps = QtGui.QPushButton(Dialog) self.reload_apps.setObjectName("reload_apps") self.verticalLayout.addWidget(self.reload_apps) self.support = QtGui.QPushButton(Dialog) self.support.setObjectName("support") self.verticalLayout.addWidget(self.support) spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem) self.close = QtGui.QPushButton(Dialog) self.close.setObjectName("close") self.verticalLayout.addWidget(self.close) self.horizontalLayout.addLayout(self.verticalLayout) self.retranslateUi(Dialog) self.context_overview_tab_widget.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(Dialog)
def setupUi(self, NoteInputWidget): NoteInputWidget.setObjectName("NoteInputWidget") NoteInputWidget.resize(363, 203) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( NoteInputWidget.sizePolicy().hasHeightForWidth()) NoteInputWidget.setSizePolicy(sizePolicy) self.verticalLayout_5 = QtGui.QVBoxLayout(NoteInputWidget) self.verticalLayout_5.setSpacing(0) self.verticalLayout_5.setContentsMargins(0, 0, 0, 0) self.verticalLayout_5.setObjectName("verticalLayout_5") self.stacked_widget = QtGui.QStackedWidget(NoteInputWidget) self.stacked_widget.setObjectName("stacked_widget") self.note_editor_page = QtGui.QWidget() self.note_editor_page.setObjectName("note_editor_page") self.verticalLayout_2 = QtGui.QVBoxLayout(self.note_editor_page) self.verticalLayout_2.setSpacing(0) self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) self.verticalLayout_2.setObjectName("verticalLayout_2") self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.text_entry = NoteEditor(self.note_editor_page) self.text_entry.setFocusPolicy(QtCore.Qt.ClickFocus) self.text_entry.setObjectName("text_entry") self.horizontalLayout.addWidget(self.text_entry) self.thumbnail = QtGui.QLabel(self.note_editor_page) self.thumbnail.setEnabled(True) self.thumbnail.setMinimumSize(QtCore.QSize(96, 75)) self.thumbnail.setMaximumSize(QtCore.QSize(96, 75)) self.thumbnail.setText("") self.thumbnail.setPixmap( QtGui.QPixmap(":/tk_framework_qtwidgets/rect_512x400.png")) self.thumbnail.setScaledContents(True) self.thumbnail.setAlignment(QtCore.Qt.AlignBottom | QtCore.Qt.AlignHCenter) self.thumbnail.setObjectName("thumbnail") self.horizontalLayout.addWidget(self.thumbnail) self.button_layout_right = QtGui.QVBoxLayout() self.button_layout_right.setSpacing(3) self.button_layout_right.setContentsMargins(5, -1, -1, -1) self.button_layout_right.setObjectName("button_layout_right") self.close = QtGui.QToolButton(self.note_editor_page) icon = QtGui.QIcon() icon.addPixmap( QtGui.QPixmap( ":/tk_framework_qtwidgets.note_input_widget/close.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.close.setIcon(icon) self.close.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly) self.close.setAutoRaise(True) self.close.setObjectName("close") self.button_layout_right.addWidget(self.close) spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.button_layout_right.addItem(spacerItem) self.attach = QtGui.QToolButton(self.note_editor_page) icon1 = QtGui.QIcon() icon1.addPixmap( QtGui.QPixmap( ":/tk_framework_qtwidgets.note_input_widget/paper_clip.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.attach.setIcon(icon1) self.attach.setAutoRaise(True) self.attach.setObjectName("attach") self.button_layout_right.addWidget(self.attach) self.screenshot = QtGui.QToolButton(self.note_editor_page) icon2 = QtGui.QIcon() icon2.addPixmap( QtGui.QPixmap( ":/tk_framework_qtwidgets.note_input_widget/camera_hl.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.screenshot.setIcon(icon2) self.screenshot.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly) self.screenshot.setAutoRaise(True) self.screenshot.setObjectName("screenshot") self.button_layout_right.addWidget(self.screenshot) self.submit = QtGui.QToolButton(self.note_editor_page) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.submit.sizePolicy().hasHeightForWidth()) self.submit.setSizePolicy(sizePolicy) self.submit.setText("") icon3 = QtGui.QIcon() icon3.addPixmap( QtGui.QPixmap( ":/tk_framework_qtwidgets.note_input_widget/tick.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.submit.setIcon(icon3) self.submit.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly) self.submit.setAutoRaise(True) self.submit.setObjectName("submit") self.button_layout_right.addWidget(self.submit) self.horizontalLayout.addLayout(self.button_layout_right) self.verticalLayout_2.addLayout(self.horizontalLayout) self.hint_label = QtGui.QLabel(self.note_editor_page) self.hint_label.setObjectName("hint_label") self.verticalLayout_2.addWidget(self.hint_label) self.stacked_widget.addWidget(self.note_editor_page) self.preview_page = QtGui.QWidget() self.preview_page.setObjectName("preview_page") self.verticalLayout_3 = QtGui.QVBoxLayout(self.preview_page) self.verticalLayout_3.setSpacing(0) self.verticalLayout_3.setContentsMargins(0, 0, 0, 0) self.verticalLayout_3.setObjectName("verticalLayout_3") self.new_note_frame = QtGui.QFrame(self.preview_page) self.new_note_frame.setStyleSheet("") self.new_note_frame.setFrameShape(QtGui.QFrame.StyledPanel) self.new_note_frame.setFrameShadow(QtGui.QFrame.Raised) self.new_note_frame.setObjectName("new_note_frame") self.verticalLayout_4 = QtGui.QVBoxLayout(self.new_note_frame) self.verticalLayout_4.setObjectName("verticalLayout_4") self.new_note_placeholder = QtGui.QLabel(self.new_note_frame) self.new_note_placeholder.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.new_note_placeholder.setObjectName("new_note_placeholder") self.verticalLayout_4.addWidget(self.new_note_placeholder) self.verticalLayout_3.addWidget(self.new_note_frame) self.stacked_widget.addWidget(self.preview_page) self.attachments_page = QtGui.QWidget() self.attachments_page.setObjectName("attachments_page") self.horizontalLayout_2 = QtGui.QHBoxLayout(self.attachments_page) self.horizontalLayout_2.setSpacing(0) self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.horizontalLayout_3 = QtGui.QHBoxLayout() self.horizontalLayout_3.setSpacing(3) self.horizontalLayout_3.setContentsMargins(0, -1, -1, -1) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.attachment_list = QtGui.QWidget(self.attachments_page) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.attachment_list.sizePolicy().hasHeightForWidth()) self.attachment_list.setSizePolicy(sizePolicy) self.attachment_list.setObjectName("attachment_list") self.attachments_list_layout = QtGui.QVBoxLayout(self.attachment_list) self.attachments_list_layout.setSpacing(0) self.attachments_list_layout.setContentsMargins(0, 0, 0, 0) self.attachments_list_layout.setContentsMargins(0, 0, 0, 0) self.attachments_list_layout.setObjectName("attachments_list_layout") self.attachment_list_tree = QtGui.QTreeWidget(self.attachment_list) self.attachment_list_tree.setSelectionMode( QtGui.QAbstractItemView.ExtendedSelection) self.attachment_list_tree.setRootIsDecorated(False) self.attachment_list_tree.setItemsExpandable(False) self.attachment_list_tree.setHeaderHidden(True) self.attachment_list_tree.setExpandsOnDoubleClick(False) self.attachment_list_tree.setObjectName("attachment_list_tree") self.attachment_list_tree.headerItem().setText(0, "1") self.attachments_list_layout.addWidget(self.attachment_list_tree) self.horizontalLayout_4 = QtGui.QHBoxLayout() self.horizontalLayout_4.setSpacing(3) self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.add_button = QtGui.QToolButton(self.attachment_list) icon4 = QtGui.QIcon() icon4.addPixmap( QtGui.QPixmap( ":/tk_framework_qtwidgets.note_input_widget/plus.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.add_button.setIcon(icon4) self.add_button.setAutoRaise(True) self.add_button.setObjectName("add_button") self.horizontalLayout_4.addWidget(self.add_button) self.remove_button = QtGui.QToolButton(self.attachment_list) icon5 = QtGui.QIcon() icon5.addPixmap( QtGui.QPixmap( ":/tk_framework_qtwidgets.note_input_widget/minus.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.remove_button.setIcon(icon5) self.remove_button.setAutoRaise(True) self.remove_button.setObjectName("remove_button") self.horizontalLayout_4.addWidget(self.remove_button) spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_4.addItem(spacerItem1) self.attachments_list_layout.addLayout(self.horizontalLayout_4) self.horizontalLayout_3.addWidget(self.attachment_list) self.attachment_buttons = QtGui.QVBoxLayout() self.attachment_buttons.setSpacing(3) self.attachment_buttons.setContentsMargins(5, -1, -1, -1) self.attachment_buttons.setObjectName("attachment_buttons") self.close_attachments = QtGui.QToolButton(self.attachments_page) self.close_attachments.setIcon(icon) self.close_attachments.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly) self.close_attachments.setAutoRaise(True) self.close_attachments.setObjectName("close_attachments") self.attachment_buttons.addWidget(self.close_attachments) spacerItem2 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.attachment_buttons.addItem(spacerItem2) self.add_attachments = QtGui.QToolButton(self.attachments_page) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.add_attachments.sizePolicy().hasHeightForWidth()) self.add_attachments.setSizePolicy(sizePolicy) self.add_attachments.setText("") self.add_attachments.setIcon(icon3) self.add_attachments.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly) self.add_attachments.setAutoRaise(True) self.add_attachments.setObjectName("add_attachments") self.attachment_buttons.addWidget(self.add_attachments) self.horizontalLayout_3.addLayout(self.attachment_buttons) self.horizontalLayout_2.addLayout(self.horizontalLayout_3) self.stacked_widget.addWidget(self.attachments_page) self.verticalLayout_5.addWidget(self.stacked_widget) self.retranslateUi(NoteInputWidget) self.stacked_widget.setCurrentIndex(1) QtCore.QMetaObject.connectSlotsByName(NoteInputWidget)
def run(self, splash, version, **kwargs): """ Run the engine. This method is called from the GUI bootstrap to setup the application and to run the Qt event loop. :param splash: Splash screen widget we can display messages on. :param version: Version of the Shotgun Desktop installer code. :param startup_version: Version of the Desktop Startup code. """ self.app_version = version # Startup version will not be set if we have an old installer invoking # this engine. self.startup_version = kwargs.get("startup_version") if self.uses_legacy_authentication(): self._migrate_credentials() # We need to initialize current login # We know for sure there is a default user, since either the migration was done # or we logged in as an actual user with the new installer. human_user = ShotgunAuthenticator( # We don't want to get the script user, but the human user, so tell the # CoreDefaultsManager manager that we are not interested in the script user. Do not use # the regular shotgun_authentication.DefaultsManager to get this user because it will # not know about proxy information. sgtk.util.CoreDefaultsManager(mask_script_user=True) ).get_default_user() # Cache the user so we can refresh the credentials before launching a background process self._user = human_user # Retrieve the current logged in user information. This will be used when creating # event log entries. self._current_login = self._engine.sgtk.shotgun.find_one( "HumanUser", [["login", "is", human_user.login]], ["id", "login"] ) # Initialize Qt app from tank.platform.qt import QtGui app = QtGui.QApplication.instance() if app is None: app = QtGui.QApplication(sys.argv) # update the app icon icon = QtGui.QIcon(":tk-desktop/default_systray_icon") app.setWindowIcon(icon) splash.set_message("Building UI") # setup the global look and feel self._engine._initialize_dark_look_and_feel() # load custom font QtGui.QFontDatabase.addApplicationFont(":/tk-desktop/fonts/OpenSans-Bold.ttf") QtGui.QFontDatabase.addApplicationFont(":/tk-desktop/fonts/OpenSans-Regular.ttf") QtGui.QFontDatabase.addApplicationFont(":/tk-desktop/fonts/OpenSans-CondLight.ttf") QtGui.QFontDatabase.addApplicationFont(":/tk-desktop/fonts/OpenSans-Light.ttf") # merge in app specific look and feel css_file = os.path.join(self._engine.disk_location, "resources", "desktop_dark.css") f = open(css_file) css = app.styleSheet() + "\n\n" + f.read() f.close() app.setStyleSheet(css) # desktop_window needs to import shotgun_authentication globally. However, doing so # can cause a crash when running Shotgun Desktop installer 1.02 code. We used to # not restart Desktop when upgrading the core, which caused the older version of core # to be kept in memory and the newer core to not be used until the app was reloaded. # # Since pre 0.16 cores didn't have a shotgun_authentication module, we # would have crashed if this had been imported at init time. Note that earlier # in this method we forcefully restarted the application if we noticed # that the core was upgraded without restarting. Which means that if we # end up here, it's now because we're in a good state. from . import desktop_window # initialize System Tray self.desktop_window = desktop_window.DesktopWindow() # make sure we close down our rpc threads app.aboutToQuit.connect(self._engine.destroy_engine) # hide the splash if it exists if splash is not None: splash.hide() # and run the app result = app.exec_() return result
def trigger_register_command(self, name, properties, groups): """ GUI side handler for the add_command call. """ from tank.platform.qt import QtGui self._engine.log_debug("register_command(%s, %s)", name, properties) command_type = properties.get("type") command_icon = properties.get("icon") command_tooltip = properties.get("description") icon = None if command_icon is not None: if os.path.exists(command_icon): icon = QtGui.QIcon(command_icon) else: self._engine.log_error( "Icon for command '%s' not found: '%s'" % (name, command_icon)) title = properties.get("title", name) if command_type == "context_menu": # Add the command to the project menu action = QtGui.QAction(self.desktop_window) if icon is not None: action.setIcon(icon) if command_tooltip is not None: action.setToolTip(command_tooltip) action.setText(title) def action_triggered(): # make sure to pass in that we are not expecting a response # Especially for the engine restart command, the connection # itself gets reset and so there isn't a channel to get a # response back. self.refresh_user_credentials() self.proxy.call_no_response("trigger_callback", "__commands", name) action.triggered.connect(action_triggered) self.desktop_window.add_to_project_menu(action) else: # Default is to add an icon/label for the command # figure out what the button should be labeled # default is that the button has no menu and is labeled # the display name of the command menu_name = None button_name = title for collapse_rule in self._collapse_rules: template = DisplayNameTemplate(collapse_rule["match"]) match = template.match(title) if match is not None: self._engine.log_debug("matching %s against %s" % (title, collapse_rule["match"])) if collapse_rule["menu_label"] == "None": menu_name = None else: menu_name = string.Template(collapse_rule["menu_label"]).safe_substitute(match) button_name = string.Template(collapse_rule["button_label"]).safe_substitute(match) break self.desktop_window._project_command_model.add_command( name, button_name, menu_name, icon, command_tooltip, groups) self.desktop_window._project_command_proxy.invalidate()
def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(737, 615) self.verticalLayout_7 = QtGui.QVBoxLayout(Dialog) self.verticalLayout_7.setSpacing(0) self.verticalLayout_7.setContentsMargins(0, 0, 0, 0) self.verticalLayout_7.setObjectName("verticalLayout_7") self.main_stack = QtGui.QStackedWidget(Dialog) self.main_stack.setObjectName("main_stack") self.large_drop_area_frame = QtGui.QWidget() self.large_drop_area_frame.setObjectName("large_drop_area_frame") self.verticalLayout_3 = QtGui.QVBoxLayout(self.large_drop_area_frame) self.verticalLayout_3.setObjectName("verticalLayout_3") self.large_drop_area = DropAreaFrame(self.large_drop_area_frame) self.large_drop_area.setFrameShape(QtGui.QFrame.StyledPanel) self.large_drop_area.setFrameShadow(QtGui.QFrame.Raised) self.large_drop_area.setObjectName("large_drop_area") self.gridLayout_2 = QtGui.QGridLayout(self.large_drop_area) self.gridLayout_2.setObjectName("gridLayout_2") spacerItem = QtGui.QSpacerItem(20, 98, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.gridLayout_2.addItem(spacerItem, 0, 1, 1, 1) spacerItem1 = QtGui.QSpacerItem(166, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.gridLayout_2.addItem(spacerItem1, 1, 0, 1, 1) self.horizontalLayout_6 = QtGui.QHBoxLayout() self.horizontalLayout_6.setObjectName("horizontalLayout_6") self.label_5 = QtGui.QLabel(self.large_drop_area) self.label_5.setMinimumSize(QtCore.QSize(150, 150)) self.label_5.setMaximumSize(QtCore.QSize(150, 150)) self.label_5.setText("") self.label_5.setPixmap( QtGui.QPixmap(":/tk_multi_publish2/icon_256.png")) self.label_5.setScaledContents(True) self.label_5.setAlignment(QtCore.Qt.AlignCenter) self.label_5.setObjectName("label_5") self.horizontalLayout_6.addWidget(self.label_5) self.verticalLayout = QtGui.QVBoxLayout() self.verticalLayout.setSpacing(8) self.verticalLayout.setObjectName("verticalLayout") spacerItem2 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem2) self.large_drop_area_label = QtGui.QLabel(self.large_drop_area) self.large_drop_area_label.setStyleSheet("QLabel {\n" " font-size: 24px;\n" "}") self.large_drop_area_label.setAlignment(QtCore.Qt.AlignCenter) self.large_drop_area_label.setObjectName("large_drop_area_label") self.verticalLayout.addWidget(self.large_drop_area_label) self.label = QtGui.QLabel(self.large_drop_area) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.verticalLayout.addWidget(self.label) self.horizontalLayout_3 = QtGui.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") spacerItem3 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem3) self.drop_area_browse = QtGui.QPushButton(self.large_drop_area) self.drop_area_browse.setMinimumSize(QtCore.QSize(0, 0)) self.drop_area_browse.setFocusPolicy(QtCore.Qt.NoFocus) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/tk_multi_publish2/browse_white.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.drop_area_browse.setIcon(icon) self.drop_area_browse.setIconSize(QtCore.QSize(32, 32)) self.drop_area_browse.setObjectName("drop_area_browse") self.horizontalLayout_3.addWidget(self.drop_area_browse) spacerItem4 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem4) self.verticalLayout.addLayout(self.horizontalLayout_3) spacerItem5 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem5) self.verticalLayout.setStretch(0, 3) self.verticalLayout.setStretch(2, 1) self.verticalLayout.setStretch(4, 3) self.horizontalLayout_6.addLayout(self.verticalLayout) self.gridLayout_2.addLayout(self.horizontalLayout_6, 1, 1, 1, 1) spacerItem6 = QtGui.QSpacerItem(179, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.gridLayout_2.addItem(spacerItem6, 1, 2, 1, 1) spacerItem7 = QtGui.QSpacerItem(20, 213, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.gridLayout_2.addItem(spacerItem7, 2, 1, 1, 1) self.verticalLayout_3.addWidget(self.large_drop_area) self.main_stack.addWidget(self.large_drop_area_frame) self.main_ui_frame = QtGui.QWidget() self.main_ui_frame.setObjectName("main_ui_frame") self.verticalLayout_4 = QtGui.QVBoxLayout(self.main_ui_frame) self.verticalLayout_4.setSpacing(2) self.verticalLayout_4.setObjectName("verticalLayout_4") self.main_frame = QtGui.QWidget(self.main_ui_frame) self.main_frame.setObjectName("main_frame") self.verticalLayout_9 = QtGui.QVBoxLayout(self.main_frame) self.verticalLayout_9.setSpacing(0) self.verticalLayout_9.setContentsMargins(0, 0, 0, 0) self.verticalLayout_9.setContentsMargins(0, 0, 0, 0) self.verticalLayout_9.setObjectName("verticalLayout_9") self.splitter = QtGui.QSplitter(self.main_frame) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.splitter.sizePolicy().hasHeightForWidth()) self.splitter.setSizePolicy(sizePolicy) self.splitter.setOrientation(QtCore.Qt.Horizontal) self.splitter.setObjectName("splitter") self.frame = DropAreaFrame(self.splitter) self.frame.setFrameShape(QtGui.QFrame.StyledPanel) self.frame.setFrameShadow(QtGui.QFrame.Raised) self.frame.setObjectName("frame") self.verticalLayout_2 = QtGui.QVBoxLayout(self.frame) self.verticalLayout_2.setSpacing(0) self.verticalLayout_2.setContentsMargins(2, 2, 2, 2) self.verticalLayout_2.setObjectName("verticalLayout_2") self.items_tree = PublishTreeWidget(self.frame) self.items_tree.setAcceptDrops(True) self.items_tree.setDragEnabled(True) self.items_tree.setDragDropMode(QtGui.QAbstractItemView.InternalMove) self.items_tree.setSelectionMode( QtGui.QAbstractItemView.ExtendedSelection) self.items_tree.setObjectName("items_tree") self.items_tree.headerItem().setText(0, "1") self.items_tree.header().setVisible(False) self.verticalLayout_2.addWidget(self.items_tree) self.text_below_item_tree = QtGui.QLabel(self.frame) self.text_below_item_tree.setAlignment(QtCore.Qt.AlignCenter) self.text_below_item_tree.setObjectName("text_below_item_tree") self.verticalLayout_2.addWidget(self.text_below_item_tree) self.details_frame = QtGui.QFrame(self.splitter) self.details_frame.setObjectName("details_frame") self.verticalLayout_5 = QtGui.QVBoxLayout(self.details_frame) self.verticalLayout_5.setSpacing(0) self.verticalLayout_5.setContentsMargins(0, 0, 0, 0) self.verticalLayout_5.setObjectName("verticalLayout_5") self.details_stack = QtGui.QStackedWidget(self.details_frame) self.details_stack.setObjectName("details_stack") self.details_item = QtGui.QWidget() self.details_item.setObjectName("details_item") self.verticalLayout_6 = QtGui.QVBoxLayout(self.details_item) self.verticalLayout_6.setObjectName("verticalLayout_6") self.horizontalLayout_2 = QtGui.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.item_icon = QtGui.QLabel(self.details_item) self.item_icon.setMinimumSize(QtCore.QSize(60, 60)) self.item_icon.setMaximumSize(QtCore.QSize(60, 60)) self.item_icon.setText("") self.item_icon.setScaledContents(True) self.item_icon.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignTop) self.item_icon.setObjectName("item_icon") self.horizontalLayout_2.addWidget(self.item_icon) self.verticalLayout_12 = QtGui.QVBoxLayout() self.verticalLayout_12.setSpacing(0) self.verticalLayout_12.setObjectName("verticalLayout_12") self.item_name = ElidedLabel(self.details_item) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.item_name.sizePolicy().hasHeightForWidth()) self.item_name.setSizePolicy(sizePolicy) self.item_name.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) self.item_name.setObjectName("item_name") self.verticalLayout_12.addWidget(self.item_name) self.item_type = QtGui.QLabel(self.details_item) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.item_type.sizePolicy().hasHeightForWidth()) self.item_type.setSizePolicy(sizePolicy) self.item_type.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) self.item_type.setObjectName("item_type") self.verticalLayout_12.addWidget(self.item_type) self.verticalLayout_12.setStretch(0, 1) self.verticalLayout_12.setStretch(1, 2) self.horizontalLayout_2.addLayout(self.verticalLayout_12) self.horizontalLayout_2.setStretch(1, 10) self.verticalLayout_6.addLayout(self.horizontalLayout_2) self.item_divider_1 = QtGui.QFrame(self.details_item) self.item_divider_1.setFrameShape(QtGui.QFrame.HLine) self.item_divider_1.setFrameShadow(QtGui.QFrame.Sunken) self.item_divider_1.setObjectName("item_divider_1") self.verticalLayout_6.addWidget(self.item_divider_1) self.context_widget = ContextWidget(self.details_item) self.context_widget.setObjectName("context_widget") self.verticalLayout_6.addWidget(self.context_widget) self.gridLayout_3 = QtGui.QGridLayout() self.gridLayout_3.setObjectName("gridLayout_3") self.item_description_label = QtGui.QLabel(self.details_item) self.item_description_label.setObjectName("item_description_label") self.gridLayout_3.addWidget(self.item_description_label, 0, 1, 1, 1) self.item_thumbnail_label = QtGui.QLabel(self.details_item) self.item_thumbnail_label.setObjectName("item_thumbnail_label") self.gridLayout_3.addWidget(self.item_thumbnail_label, 0, 0, 1, 1) self.item_comments = QtGui.QPlainTextEdit(self.details_item) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.item_comments.sizePolicy().hasHeightForWidth()) self.item_comments.setSizePolicy(sizePolicy) self.item_comments.setMinimumSize(QtCore.QSize(0, 90)) self.item_comments.setMaximumSize(QtCore.QSize(16777215, 90)) self.item_comments.setObjectName("item_comments") self.gridLayout_3.addWidget(self.item_comments, 1, 1, 1, 1) self.item_thumbnail = Thumbnail(self.details_item) self.item_thumbnail.setMinimumSize(QtCore.QSize(160, 90)) self.item_thumbnail.setMaximumSize(QtCore.QSize(160, 90)) self.item_thumbnail.setText("") self.item_thumbnail.setScaledContents(False) self.item_thumbnail.setAlignment(QtCore.Qt.AlignCenter) self.item_thumbnail.setObjectName("item_thumbnail") self.gridLayout_3.addWidget(self.item_thumbnail, 1, 0, 1, 1) self.verticalLayout_6.addLayout(self.gridLayout_3) self.item_summary_label = QtGui.QLabel(self.details_item) self.item_summary_label.setAlignment(QtCore.Qt.AlignBottom | QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft) self.item_summary_label.setObjectName("item_summary_label") self.verticalLayout_6.addWidget(self.item_summary_label) self.scrollArea = QtGui.QScrollArea(self.details_item) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollAreaWidgetContents = QtGui.QWidget() self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 420, 100)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.verticalLayout_10 = QtGui.QVBoxLayout( self.scrollAreaWidgetContents) self.verticalLayout_10.setSpacing(0) self.verticalLayout_10.setContentsMargins(0, 0, 0, 0) self.verticalLayout_10.setObjectName("verticalLayout_10") self.item_summary = QtGui.QLabel(self.scrollAreaWidgetContents) self.item_summary.setText("") self.item_summary.setWordWrap(True) self.item_summary.setObjectName("item_summary") self.verticalLayout_10.addWidget(self.item_summary) self.expander_label = QtGui.QLabel(self.scrollAreaWidgetContents) self.expander_label.setText("") self.expander_label.setObjectName("expander_label") self.verticalLayout_10.addWidget(self.expander_label) self.verticalLayout_10.setStretch(1, 1) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.verticalLayout_6.addWidget(self.scrollArea) self.item_settings_label = QtGui.QLabel(self.details_item) self.item_settings_label.setAlignment(QtCore.Qt.AlignBottom | QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft) self.item_settings_label.setObjectName("item_settings_label") self.verticalLayout_6.addWidget(self.item_settings_label) self.item_settings = SettingsWidget(self.details_item) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.item_settings.sizePolicy().hasHeightForWidth()) self.item_settings.setSizePolicy(sizePolicy) self.item_settings.setObjectName("item_settings") self.verticalLayout_6.addWidget(self.item_settings) self.verticalLayout_6.setStretch(0, 1) self.verticalLayout_6.setStretch(1, 1) self.verticalLayout_6.setStretch(2, 1) self.verticalLayout_6.setStretch(3, 1) self.verticalLayout_6.setStretch(4, 1) self.verticalLayout_6.setStretch(5, 5) self.verticalLayout_6.setStretch(6, 1) self.verticalLayout_6.setStretch(7, 5) self.details_stack.addWidget(self.details_item) self.details_task = QtGui.QWidget() self.details_task.setObjectName("details_task") self.verticalLayout_11 = QtGui.QVBoxLayout(self.details_task) self.verticalLayout_11.setObjectName("verticalLayout_11") self.horizontalLayout_4 = QtGui.QHBoxLayout() self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.task_icon = QtGui.QLabel(self.details_task) self.task_icon.setMinimumSize(QtCore.QSize(60, 60)) self.task_icon.setMaximumSize(QtCore.QSize(60, 60)) self.task_icon.setText("") self.task_icon.setScaledContents(True) self.task_icon.setObjectName("task_icon") self.horizontalLayout_4.addWidget(self.task_icon) self.task_name = QtGui.QLabel(self.details_task) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.task_name.sizePolicy().hasHeightForWidth()) self.task_name.setSizePolicy(sizePolicy) self.task_name.setObjectName("task_name") self.horizontalLayout_4.addWidget(self.task_name) self.verticalLayout_11.addLayout(self.horizontalLayout_4) self.scrollArea_2 = QtGui.QScrollArea(self.details_task) self.scrollArea_2.setWidgetResizable(True) self.scrollArea_2.setObjectName("scrollArea_2") self.scrollAreaWidgetContents_2 = QtGui.QWidget() self.scrollAreaWidgetContents_2.setGeometry( QtCore.QRect(0, 0, 420, 202)) self.scrollAreaWidgetContents_2.setObjectName( "scrollAreaWidgetContents_2") self.verticalLayout_13 = QtGui.QVBoxLayout( self.scrollAreaWidgetContents_2) self.verticalLayout_13.setSpacing(0) self.verticalLayout_13.setContentsMargins(0, 0, 0, 0) self.verticalLayout_13.setObjectName("verticalLayout_13") self.task_description = QtGui.QLabel(self.scrollAreaWidgetContents_2) self.task_description.setText("") self.task_description.setWordWrap(True) self.task_description.setOpenExternalLinks(True) self.task_description.setObjectName("task_description") self.verticalLayout_13.addWidget(self.task_description) self.expander_label_2 = QtGui.QLabel(self.scrollAreaWidgetContents_2) self.expander_label_2.setText("") self.expander_label_2.setObjectName("expander_label_2") self.verticalLayout_13.addWidget(self.expander_label_2) self.verticalLayout_13.setStretch(1, 1) self.scrollArea_2.setWidget(self.scrollAreaWidgetContents_2) self.verticalLayout_11.addWidget(self.scrollArea_2) self.task_settings_label = QtGui.QLabel(self.details_task) self.task_settings_label.setObjectName("task_settings_label") self.verticalLayout_11.addWidget(self.task_settings_label) self.task_settings = SettingsWidget(self.details_task) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.task_settings.sizePolicy().hasHeightForWidth()) self.task_settings.setSizePolicy(sizePolicy) self.task_settings.setObjectName("task_settings") self.verticalLayout_11.addWidget(self.task_settings) self.details_stack.addWidget(self.details_task) self.details_please_select = QtGui.QWidget() self.details_please_select.setObjectName("details_please_select") self.verticalLayout_8 = QtGui.QVBoxLayout(self.details_please_select) self.verticalLayout_8.setObjectName("verticalLayout_8") self.please_select_an_item = QtGui.QLabel(self.details_please_select) self.please_select_an_item.setAlignment(QtCore.Qt.AlignCenter) self.please_select_an_item.setObjectName("please_select_an_item") self.verticalLayout_8.addWidget(self.please_select_an_item) self.details_stack.addWidget(self.details_please_select) self.verticalLayout_5.addWidget(self.details_stack) self.verticalLayout_9.addWidget(self.splitter) self.verticalLayout_4.addWidget(self.main_frame) self.progress_bar = QtGui.QProgressBar(self.main_ui_frame) self.progress_bar.setMaximumSize(QtCore.QSize(16777215, 10)) self.progress_bar.setProperty("value", 0) self.progress_bar.setTextVisible(False) self.progress_bar.setObjectName("progress_bar") self.verticalLayout_4.addWidget(self.progress_bar) self.bottom_frame = QtGui.QFrame(self.main_ui_frame) self.bottom_frame.setMaximumSize(QtCore.QSize(16777215, 50)) self.bottom_frame.setFrameShape(QtGui.QFrame.StyledPanel) self.bottom_frame.setFrameShadow(QtGui.QFrame.Raised) self.bottom_frame.setObjectName("bottom_frame") self.horizontalLayout = QtGui.QHBoxLayout(self.bottom_frame) self.horizontalLayout.setSpacing(2) self.horizontalLayout.setContentsMargins(2, 0, 2, 2) self.horizontalLayout.setObjectName("horizontalLayout") self.browse = QtGui.QToolButton(self.bottom_frame) self.browse.setMaximumSize(QtCore.QSize(32, 32)) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/tk_multi_publish2/browse.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.browse.setIcon(icon1) self.browse.setIconSize(QtCore.QSize(32, 32)) self.browse.setObjectName("browse") self.horizontalLayout.addWidget(self.browse) self.refresh = QtGui.QToolButton(self.bottom_frame) self.refresh.setMaximumSize(QtCore.QSize(32, 32)) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(":/tk_multi_publish2/refresh.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.refresh.setIcon(icon2) self.refresh.setIconSize(QtCore.QSize(32, 32)) self.refresh.setObjectName("refresh") self.horizontalLayout.addWidget(self.refresh) self.delete_items = QtGui.QToolButton(self.bottom_frame) self.delete_items.setMaximumSize(QtCore.QSize(32, 32)) icon3 = QtGui.QIcon() icon3.addPixmap(QtGui.QPixmap(":/tk_multi_publish2/trash.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.delete_items.setIcon(icon3) self.delete_items.setIconSize(QtCore.QSize(32, 32)) self.delete_items.setObjectName("delete_items") self.horizontalLayout.addWidget(self.delete_items) self.expand_all = QtGui.QToolButton(self.bottom_frame) self.expand_all.setMaximumSize(QtCore.QSize(32, 32)) icon4 = QtGui.QIcon() icon4.addPixmap(QtGui.QPixmap(":/tk_multi_publish2/expand.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.expand_all.setIcon(icon4) self.expand_all.setIconSize(QtCore.QSize(32, 32)) self.expand_all.setObjectName("expand_all") self.horizontalLayout.addWidget(self.expand_all) self.collapse_all = QtGui.QToolButton(self.bottom_frame) self.collapse_all.setMaximumSize(QtCore.QSize(32, 32)) icon5 = QtGui.QIcon() icon5.addPixmap(QtGui.QPixmap(":/tk_multi_publish2/contract.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.collapse_all.setIcon(icon5) self.collapse_all.setIconSize(QtCore.QSize(32, 32)) self.collapse_all.setObjectName("collapse_all") self.horizontalLayout.addWidget(self.collapse_all) self.help = QtGui.QToolButton(self.bottom_frame) self.help.setMinimumSize(QtCore.QSize(32, 32)) self.help.setMaximumSize(QtCore.QSize(32, 32)) icon6 = QtGui.QIcon() icon6.addPixmap(QtGui.QPixmap(":/tk_multi_publish2/help.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.help.setIcon(icon6) self.help.setIconSize(QtCore.QSize(32, 32)) self.help.setObjectName("help") self.horizontalLayout.addWidget(self.help) spacerItem8 = QtGui.QSpacerItem(10, 10, QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem8) self.progress_status_icon = QtGui.QLabel(self.bottom_frame) self.progress_status_icon.setMinimumSize(QtCore.QSize(20, 20)) self.progress_status_icon.setMaximumSize(QtCore.QSize(20, 20)) self.progress_status_icon.setText("") self.progress_status_icon.setPixmap( QtGui.QPixmap(":/tk_multi_publish2/status_success.png")) self.progress_status_icon.setScaledContents(True) self.progress_status_icon.setObjectName("progress_status_icon") self.horizontalLayout.addWidget(self.progress_status_icon) self.progress_message = ProgressStatusLabel(self.bottom_frame) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.progress_message.sizePolicy().hasHeightForWidth()) self.progress_message.setSizePolicy(sizePolicy) self.progress_message.setObjectName("progress_message") self.horizontalLayout.addWidget(self.progress_message) self.stop_processing = QtGui.QToolButton(self.bottom_frame) icon7 = QtGui.QIcon() icon7.addPixmap(QtGui.QPixmap(":/tk_multi_publish2/cross.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.stop_processing.setIcon(icon7) self.stop_processing.setIconSize(QtCore.QSize(20, 20)) self.stop_processing.setObjectName("stop_processing") self.horizontalLayout.addWidget(self.stop_processing) self.validate = QtGui.QPushButton(self.bottom_frame) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.validate.sizePolicy().hasHeightForWidth()) self.validate.setSizePolicy(sizePolicy) self.validate.setObjectName("validate") self.horizontalLayout.addWidget(self.validate) self.publish = QtGui.QPushButton(self.bottom_frame) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.publish.sizePolicy().hasHeightForWidth()) self.publish.setSizePolicy(sizePolicy) self.publish.setObjectName("publish") self.horizontalLayout.addWidget(self.publish) self.close = QtGui.QPushButton(self.bottom_frame) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.close.sizePolicy().hasHeightForWidth()) self.close.setSizePolicy(sizePolicy) self.close.setObjectName("close") self.horizontalLayout.addWidget(self.close) self.verticalLayout_4.addWidget(self.bottom_frame) self.main_stack.addWidget(self.main_ui_frame) self.verticalLayout_7.addWidget(self.main_stack) self.retranslateUi(Dialog) self.main_stack.setCurrentIndex(1) self.details_stack.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(Dialog) Dialog.setTabOrder(self.item_comments, self.validate) Dialog.setTabOrder(self.validate, self.publish) Dialog.setTabOrder(self.publish, self.items_tree) Dialog.setTabOrder(self.items_tree, self.refresh) Dialog.setTabOrder(self.refresh, self.delete_items) Dialog.setTabOrder(self.delete_items, self.expand_all) Dialog.setTabOrder(self.expand_all, self.collapse_all) Dialog.setTabOrder(self.collapse_all, self.help) Dialog.setTabOrder(self.help, self.close) Dialog.setTabOrder(self.close, self.stop_processing) Dialog.setTabOrder(self.stop_processing, self.scrollArea) Dialog.setTabOrder(self.scrollArea, self.scrollArea_2)
def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(412, 648) self.verticalLayout_23 = QtGui.QVBoxLayout(Dialog) self.verticalLayout_23.setSpacing(0) self.verticalLayout_23.setContentsMargins(0, 0, 0, 0) self.verticalLayout_23.setObjectName("verticalLayout_23") self.main_stack = QtGui.QStackedWidget(Dialog) self.main_stack.setObjectName("main_stack") self.main_page = QtGui.QWidget() self.main_page.setObjectName("main_page") self.verticalLayout_17 = QtGui.QVBoxLayout(self.main_page) self.verticalLayout_17.setSpacing(4) self.verticalLayout_17.setContentsMargins(4, 4, 4, 4) self.verticalLayout_17.setObjectName("verticalLayout_17") self.top_group = QtGui.QFrame(self.main_page) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.top_group.sizePolicy().hasHeightForWidth()) self.top_group.setSizePolicy(sizePolicy) self.top_group.setFrameShape(QtGui.QFrame.StyledPanel) self.top_group.setFrameShadow(QtGui.QFrame.Raised) self.top_group.setObjectName("top_group") self.verticalLayout_18 = QtGui.QVBoxLayout(self.top_group) self.verticalLayout_18.setSpacing(4) self.verticalLayout_18.setContentsMargins(6, 6, 6, 6) self.verticalLayout_18.setObjectName("verticalLayout_18") self.header_stack = QtGui.QStackedWidget(self.top_group) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.header_stack.sizePolicy().hasHeightForWidth()) self.header_stack.setSizePolicy(sizePolicy) self.header_stack.setMinimumSize(QtCore.QSize(0, 42)) self.header_stack.setMaximumSize(QtCore.QSize(16777215, 42)) self.header_stack.setObjectName("header_stack") self.page = QtGui.QWidget() self.page.setObjectName("page") self.verticalLayout_24 = QtGui.QVBoxLayout(self.page) self.verticalLayout_24.setSpacing(2) self.verticalLayout_24.setContentsMargins(2, 0, 2, 0) self.verticalLayout_24.setObjectName("verticalLayout_24") self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setSpacing(0) self.horizontalLayout.setContentsMargins(-1, -1, 4, -1) self.horizontalLayout.setObjectName("horizontalLayout") self.navigation_home = QtGui.QToolButton(self.page) self.navigation_home.setMinimumSize(QtCore.QSize(30, 30)) self.navigation_home.setMaximumSize(QtCore.QSize(30, 30)) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/tk_multi_infopanel/home.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.navigation_home.setIcon(icon) self.navigation_home.setIconSize(QtCore.QSize(30, 30)) self.navigation_home.setObjectName("navigation_home") self.horizontalLayout.addWidget(self.navigation_home) self.navigation_prev = QtGui.QToolButton(self.page) self.navigation_prev.setMinimumSize(QtCore.QSize(30, 30)) self.navigation_prev.setMaximumSize(QtCore.QSize(30, 30)) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/tk_multi_infopanel/left_arrow.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.navigation_prev.setIcon(icon1) self.navigation_prev.setIconSize(QtCore.QSize(30, 30)) self.navigation_prev.setObjectName("navigation_prev") self.horizontalLayout.addWidget(self.navigation_prev) self.navigation_next = QtGui.QToolButton(self.page) self.navigation_next.setMinimumSize(QtCore.QSize(30, 30)) self.navigation_next.setMaximumSize(QtCore.QSize(30, 30)) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(":/tk_multi_infopanel/right_arrow.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.navigation_next.setIcon(icon2) self.navigation_next.setIconSize(QtCore.QSize(30, 30)) self.navigation_next.setObjectName("navigation_next") self.horizontalLayout.addWidget(self.navigation_next) self.details_text_header = QtGui.QLabel(self.page) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.details_text_header.sizePolicy().hasHeightForWidth()) self.details_text_header.setSizePolicy(sizePolicy) self.details_text_header.setMinimumSize(QtCore.QSize(0, 30)) self.details_text_header.setMaximumSize(QtCore.QSize(16777215, 30)) self.details_text_header.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter) self.details_text_header.setWordWrap(False) self.details_text_header.setObjectName("details_text_header") self.horizontalLayout.addWidget(self.details_text_header) self.set_context = WorkAreaButton(self.page) self.set_context.setMinimumSize(QtCore.QSize(30, 30)) self.set_context.setMaximumSize(QtCore.QSize(30, 30)) icon3 = QtGui.QIcon() icon3.addPixmap(QtGui.QPixmap(":/tk_multi_infopanel/pin.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) icon3.addPixmap(QtGui.QPixmap(":/tk_multi_infopanel/pin_white.png"), QtGui.QIcon.Disabled, QtGui.QIcon.Off) self.set_context.setIcon(icon3) self.set_context.setIconSize(QtCore.QSize(30, 30)) self.set_context.setObjectName("set_context") self.horizontalLayout.addWidget(self.set_context) self.search = QtGui.QToolButton(self.page) self.search.setMinimumSize(QtCore.QSize(30, 30)) self.search.setMaximumSize(QtCore.QSize(30, 30)) icon4 = QtGui.QIcon() icon4.addPixmap(QtGui.QPixmap(":/tk_multi_infopanel/search.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.search.setIcon(icon4) self.search.setIconSize(QtCore.QSize(30, 30)) self.search.setObjectName("search") self.horizontalLayout.addWidget(self.search) self.label_3 = QtGui.QLabel(self.page) self.label_3.setMinimumSize(QtCore.QSize(10, 0)) self.label_3.setMaximumSize(QtCore.QSize(10, 16777215)) self.label_3.setText("") self.label_3.setObjectName("label_3") self.horizontalLayout.addWidget(self.label_3) self.current_user = QtGui.QToolButton(self.page) self.current_user.setMinimumSize(QtCore.QSize(30, 30)) self.current_user.setMaximumSize(QtCore.QSize(30, 30)) self.current_user.setFocusPolicy(QtCore.Qt.NoFocus) icon5 = QtGui.QIcon() icon5.addPixmap(QtGui.QPixmap(":/tk_multi_infopanel/default_user_thumb.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.current_user.setIcon(icon5) self.current_user.setIconSize(QtCore.QSize(30, 30)) self.current_user.setObjectName("current_user") self.horizontalLayout.addWidget(self.current_user) self.verticalLayout_24.addLayout(self.horizontalLayout) self.header_stack.addWidget(self.page) self.page_2 = QtGui.QWidget() self.page_2.setObjectName("page_2") self.horizontalLayout_2 = QtGui.QHBoxLayout(self.page_2) self.horizontalLayout_2.setSpacing(2) self.horizontalLayout_2.setContentsMargins(2, 0, 2, 0) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.label = QtGui.QLabel(self.page_2) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) self.label.setSizePolicy(sizePolicy) self.label.setMinimumSize(QtCore.QSize(30, 30)) self.label.setMaximumSize(QtCore.QSize(30, 30)) self.label.setText("") self.label.setPixmap(QtGui.QPixmap(":/tk_multi_infopanel/search.png")) self.label.setScaledContents(True) self.label.setObjectName("label") self.horizontalLayout_2.addWidget(self.label) self.search_input = GlobalSearchWidget(self.page_2) self.search_input.setObjectName("search_input") self.horizontalLayout_2.addWidget(self.search_input) self.cancel_search = QtGui.QPushButton(self.page_2) self.cancel_search.setObjectName("cancel_search") self.horizontalLayout_2.addWidget(self.cancel_search) self.header_stack.addWidget(self.page_2) self.verticalLayout_18.addWidget(self.header_stack) self.line = QtGui.QFrame(self.top_group) self.line.setFrameShape(QtGui.QFrame.HLine) self.line.setFrameShadow(QtGui.QFrame.Sunken) self.line.setObjectName("line") self.verticalLayout_18.addWidget(self.line) self.horizontalLayout_4 = QtGui.QHBoxLayout() self.horizontalLayout_4.setSpacing(0) self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.verticalLayout_7 = QtGui.QVBoxLayout() self.verticalLayout_7.setSpacing(0) self.verticalLayout_7.setContentsMargins(-1, 4, -1, -1) self.verticalLayout_7.setObjectName("verticalLayout_7") self.details_thumb = ShotgunPlaybackLabel(self.top_group) self.details_thumb.setMinimumSize(QtCore.QSize(96, 75)) self.details_thumb.setMaximumSize(QtCore.QSize(96, 75)) self.details_thumb.setText("") self.details_thumb.setPixmap(QtGui.QPixmap(":/tk_multi_infopanel/rect_512x400.png")) self.details_thumb.setScaledContents(True) self.details_thumb.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) self.details_thumb.setObjectName("details_thumb") self.verticalLayout_7.addWidget(self.details_thumb) spacerItem = QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Ignored) self.verticalLayout_7.addItem(spacerItem) self.verticalLayout_7.setStretch(1, 1) self.horizontalLayout_4.addLayout(self.verticalLayout_7) self.details_text_middle = QtGui.QLabel(self.top_group) self.details_text_middle.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) self.details_text_middle.setWordWrap(True) self.details_text_middle.setObjectName("details_text_middle") self.horizontalLayout_4.addWidget(self.details_text_middle) self.verticalLayout_22 = QtGui.QVBoxLayout() self.verticalLayout_22.setSpacing(0) self.verticalLayout_22.setContentsMargins(-1, -1, 6, -1) self.verticalLayout_22.setObjectName("verticalLayout_22") self.action_button = QtGui.QPushButton(self.top_group) self.action_button.setMaximumSize(QtCore.QSize(16, 16)) self.action_button.setFocusPolicy(QtCore.Qt.NoFocus) self.action_button.setObjectName("action_button") self.verticalLayout_22.addWidget(self.action_button) self.label_2 = QtGui.QLabel(self.top_group) self.label_2.setText("") self.label_2.setObjectName("label_2") self.verticalLayout_22.addWidget(self.label_2) self.verticalLayout_22.setStretch(1, 1) self.horizontalLayout_4.addLayout(self.verticalLayout_22) self.horizontalLayout_4.setStretch(1, 1) self.verticalLayout_18.addLayout(self.horizontalLayout_4) self.verticalLayout_17.addWidget(self.top_group) self.page_stack = QtGui.QStackedWidget(self.main_page) self.page_stack.setObjectName("page_stack") self.entity_page = QtGui.QWidget() self.entity_page.setObjectName("entity_page") self.verticalLayout = QtGui.QVBoxLayout(self.entity_page) self.verticalLayout.setSpacing(0) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.entity_tab_widget = QtGui.QTabWidget(self.entity_page) self.entity_tab_widget.setFocusPolicy(QtCore.Qt.NoFocus) self.entity_tab_widget.setObjectName("entity_tab_widget") self.verticalLayout.addWidget(self.entity_tab_widget) self.page_stack.addWidget(self.entity_page) self.note_page = QtGui.QWidget() self.note_page.setObjectName("note_page") self.verticalLayout_5 = QtGui.QVBoxLayout(self.note_page) self.verticalLayout_5.setSpacing(0) self.verticalLayout_5.setContentsMargins(0, 0, 0, 0) self.verticalLayout_5.setObjectName("verticalLayout_5") self.note_reply_widget = ReplyListWidget(self.note_page) self.note_reply_widget.setObjectName("note_reply_widget") self.verticalLayout_5.addWidget(self.note_reply_widget) self.page_stack.addWidget(self.note_page) self.verticalLayout_17.addWidget(self.page_stack) self.main_stack.addWidget(self.main_page) self.verticalLayout_23.addWidget(self.main_stack) self.retranslateUi(Dialog) self.main_stack.setCurrentIndex(0) self.header_stack.setCurrentIndex(0) self.page_stack.setCurrentIndex(0) self.entity_tab_widget.setCurrentIndex(-1) QtCore.QMetaObject.connectSlotsByName(Dialog)
def run(self, splash, version, **kwargs): """ Run the engine. This method is called from the GUI bootstrap to setup the application and to run the Qt event loop. :param splash: Splash screen widget we can display messages on. Can be ``None`` :param version: Version of the Shotgun Desktop installer code. :param startup_version: Version of the Desktop Startup code. Can be omitted. :param startup_descriptor: Descriptor of the Desktop Startup code. Can be omitted. """ self.app_version = version # Startup version will not be set if we have an old installer invoking # this engine. self.startup_version = kwargs.get("startup_version") self.startup_descriptor = kwargs.get("startup_descriptor") server = kwargs.get("server") try: # Log usage statistics about the Shotgun Desktop executable and the desktop startup. # # First we update `host_info` property so subsequent metrics can benefit # having the updated information. A special case is made for for Desktop # as we do want both versiond but don't want to create another metric field. # We are then combining both versions into single version string. self._engine._host_info["version"] = "%s / %s" % ( self.app_version, self.startup_version) # Actually log the metric self._engine.log_metric("Launched Software") except Exception as e: logger.exception("Unexpected error logging a metric") # DO NOT raise exception. It's reasonnable to log an error about it but # we don't want to break normal execution for metric related logging. if self.uses_legacy_authentication(): self._migrate_credentials() # We need to initialize current login # We know for sure there is a default user, since either the migration was done # or we logged in as an actual user with the new installer. human_user = ShotgunAuthenticator( # We don't want to get the script user, but the human user, so tell the # CoreDefaultsManager manager that we are not interested in the script user. Do not use # the regular shotgun_authentication.DefaultsManager to get this user because it will # not know about proxy information. sgtk.util.CoreDefaultsManager(mask_script_user=True )).get_default_user() # Cache the user so we can refresh the credentials before launching a background process self._user = human_user # Retrieve the current logged in user information. This will be used when creating # event log entries. self._current_login = self._engine.sgtk.shotgun.find_one( "HumanUser", [["login", "is", human_user.login]], ["id", "login"]) # Initialize Qt app from tank.platform.qt import QtGui app = QtGui.QApplication.instance() if app is None: app = QtGui.QApplication(sys.argv) # update the app icon icon = QtGui.QIcon(":tk-desktop/default_systray_icon") app.setWindowIcon(icon) if splash: splash.set_message("Building UI") # setup the global look and feel self._engine._initialize_dark_look_and_feel() # load custom font QtGui.QFontDatabase.addApplicationFont( ":/tk-desktop/fonts/OpenSans-Bold.ttf") QtGui.QFontDatabase.addApplicationFont( ":/tk-desktop/fonts/OpenSans-Regular.ttf") QtGui.QFontDatabase.addApplicationFont( ":/tk-desktop/fonts/OpenSans-CondLight.ttf") QtGui.QFontDatabase.addApplicationFont( ":/tk-desktop/fonts/OpenSans-Light.ttf") # merge in app specific look and feel css_file = os.path.join(self._engine.disk_location, "resources", "desktop_dark.css") f = open(css_file) css = app.styleSheet() + "\n\n" + f.read() f.close() app.setStyleSheet(css) # If server is passed down to this method, it means we are running an older version of the # desktop startup code, which runs its own browser integration. # # Sadly, we can't tear down the previous server and restart it. Attempting to tear_down() and # instantiate a new server will raise an error.ReactorNotRestartable exception. So we'll start # our websocket integration only if there is no server running from the desktop startup. # Note that the server argument is set regardless of whether the server launched or crashed, # so we have to actually get its value instead of merely checking for existence. if server is None: # Initialize all of this after the style-sheet has been applied so any prompt are also # styled after the Shotgun Desktop's visual-style. if splash: splash.set_message("Initializing browser integration.") try: desktop_server_framework = sgtk.platform.get_framework( "tk-framework-desktopserver") desktop_server_framework.launch_desktop_server( self._user.host, self._current_login["id"], parent=splash) except Exception: logger.exception( "Unexpected error while trying to launch the browser integration:" ) else: logger.debug("Browser integration was launched successfully.") # hide the splash if it exists if splash is not None: splash.hide() # desktop_window needs to import shotgun_authentication globally. However, doing so # can cause a crash when running Shotgun Desktop installer 1.02 code. We used to # not restart Desktop when upgrading the core, which caused the older version of core # to be kept in memory and the newer core to not be used until the app was reloaded. # # Since pre 0.16 cores didn't have a shotgun_authentication module, we # would have crashed if this had been imported at init time. Note that earlier # in this method we forcefully restarted the application if we noticed # that the core was upgraded without restarting. Which means that if we # end up here, it's now because we're in a good state. from . import desktop_window # initialize System Tray self.desktop_window = desktop_window.DesktopWindow() # We need for the dialog to exist for messages to get to the UI console. if kwargs.get("server") is not None: logger.warning( "You are running an older version of the Shotgun Desktop which is not fully compatible " "with the Shotgun Integrations. Please install the latest version." ) # run the commands that are configured to be executed at startup self._run_startup_commands() # make sure we close down our rpc threads app.aboutToQuit.connect(self._engine.destroy_engine) # and run the app result = app.exec_() return result
def setupUi(self, ItemWidget): ItemWidget.setObjectName("ItemWidget") ItemWidget.resize(290, 45) ItemWidget.setMinimumSize(QtCore.QSize(0, 45)) self.verticalLayout = QtGui.QVBoxLayout(ItemWidget) self.verticalLayout.setSpacing(0) self.verticalLayout.setContentsMargins(2, 2, 2, 2) self.verticalLayout.setObjectName("verticalLayout") self.frame = QtGui.QFrame(ItemWidget) self.frame.setFrameShape(QtGui.QFrame.StyledPanel) self.frame.setFrameShadow(QtGui.QFrame.Raised) self.frame.setObjectName("frame") self.horizontalLayout = QtGui.QHBoxLayout(self.frame) self.horizontalLayout.setSpacing(8) self.horizontalLayout.setContentsMargins(4, 2, 2, 2) self.horizontalLayout.setObjectName("horizontalLayout") self.expand_placeholder = QtGui.QWidget(self.frame) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.expand_placeholder.sizePolicy().hasHeightForWidth()) self.expand_placeholder.setSizePolicy(sizePolicy) self.expand_placeholder.setMinimumSize(QtCore.QSize(16, 16)) self.expand_placeholder.setMaximumSize(QtCore.QSize(16, 16)) self.expand_placeholder.setObjectName("expand_placeholder") self.horizontalLayout.addWidget(self.expand_placeholder) self.expand_indicator = QtGui.QToolButton(self.frame) self.expand_indicator.setMinimumSize(QtCore.QSize(16, 16)) self.expand_indicator.setMaximumSize(QtCore.QSize(16, 16)) self.expand_indicator.setText("") icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/tk_multi_publish2/down_arrow.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.expand_indicator.setIcon(icon) self.expand_indicator.setObjectName("expand_indicator") self.horizontalLayout.addWidget(self.expand_indicator) self.icon = QtGui.QLabel(self.frame) self.icon.setMinimumSize(QtCore.QSize(32, 32)) self.icon.setMaximumSize(QtCore.QSize(30, 30)) self.icon.setText("") self.icon.setScaledContents(True) self.icon.setObjectName("icon") self.horizontalLayout.addWidget(self.icon) self.header = QtGui.QLabel(self.frame) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.header.sizePolicy().hasHeightForWidth()) self.header.setSizePolicy(sizePolicy) self.header.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) self.header.setObjectName("header") self.horizontalLayout.addWidget(self.header) self.handle_stack = QtGui.QStackedWidget(self.frame) self.handle_stack.setMinimumSize(QtCore.QSize(22, 22)) self.handle_stack.setMaximumSize(QtCore.QSize(22, 22)) self.handle_stack.setObjectName("handle_stack") self.drag = QtGui.QWidget() self.drag.setObjectName("drag") self.horizontalLayout_2 = QtGui.QHBoxLayout(self.drag) self.horizontalLayout_2.setSpacing(0) self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.drag_handle = QtGui.QLabel(self.drag) self.drag_handle.setMinimumSize(QtCore.QSize(16, 16)) self.drag_handle.setMaximumSize(QtCore.QSize(16, 16)) self.drag_handle.setCursor(QtCore.Qt.OpenHandCursor) self.drag_handle.setText("") self.drag_handle.setPixmap( QtGui.QPixmap(":/tk_multi_publish2/drag_handle.png")) self.drag_handle.setScaledContents(True) self.drag_handle.setObjectName("drag_handle") self.horizontalLayout_2.addWidget(self.drag_handle) self.handle_stack.addWidget(self.drag) self.lock = QtGui.QWidget() self.lock.setObjectName("lock") self.horizontalLayout_3 = QtGui.QHBoxLayout(self.lock) self.horizontalLayout_3.setSpacing(0) self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.locked_handle = QtGui.QLabel(self.lock) self.locked_handle.setMinimumSize(QtCore.QSize(16, 16)) self.locked_handle.setMaximumSize(QtCore.QSize(16, 16)) self.locked_handle.setText("") self.locked_handle.setScaledContents(True) self.locked_handle.setObjectName("locked_handle") self.horizontalLayout_3.addWidget(self.locked_handle) self.handle_stack.addWidget(self.lock) self.horizontalLayout.addWidget(self.handle_stack) self.status = QtGui.QToolButton(self.frame) self.status.setMinimumSize(QtCore.QSize(30, 30)) self.status.setMaximumSize(QtCore.QSize(30, 30)) icon1 = QtGui.QIcon() icon1.addPixmap( QtGui.QPixmap(":/tk_multi_publish2/status_validate.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.status.setIcon(icon1) self.status.setIconSize(QtCore.QSize(24, 24)) self.status.setObjectName("status") self.horizontalLayout.addWidget(self.status) self.checkbox = QtGui.QCheckBox(self.frame) self.checkbox.setText("") self.checkbox.setObjectName("checkbox") self.horizontalLayout.addWidget(self.checkbox) self.horizontalLayout.setStretch(3, 10) self.verticalLayout.addWidget(self.frame) self.retranslateUi(ItemWidget) self.handle_stack.setCurrentIndex(1) QtCore.QMetaObject.connectSlotsByName(ItemWidget)
def add_command_to_menu(self, menu, enabled=True, icon=None): """ Adds the command to the menu. :param menu: A handle to the menu to add the command to. :param enabled: Whether the command is to be enabled once it is added to the menu. Defaults to True. :param icon: The path to an image to use as the icon for the command. """ icon = icon or self.properties.get("icon") action = menu.addAction(self.name) action.setEnabled(enabled) if icon: from sgtk.platform.qt import QtGui action.setIcon(QtGui.QIcon(icon)) def handler(): # Populate special action context, which is read by apps and hooks. # In hiero, the sender parameter for hiero.core.events.EventType.kShowContextMenu # is supposed to always of class binview: # # http://docs.thefoundry.co.uk/hiero/10/hieropythondevguide/api/api_ui.html?highlight=sender#hiero.ui.BinView # # In reality, however, it seems it returns the following items: # ui.Hiero.Python.TimelineEditor object at 0x11ab15248 # ui.Hiero.Python.SpreadsheetView object at 0x11ab152d8> # ui.Hiero.Python.BinView # # These objects all have a selection property that returns a list of objects. # We extract the selected objects and set the engine "last clicked" state: # Set the engine last clicked selection state. if self.sender: self.engine._last_clicked_selection = self.sender.selection() else: # Main menu. self.engine._last_clicked_selection = [] # Set the engine last clicked selection area. if self.event_type == "kBin": self.engine._last_clicked_area = self.engine.HIERO_BIN_AREA elif self.event_type == "kTimeline": self.engine._last_clicked_area = self.engine.HIERO_TIMELINE_AREA elif self.event_type == "kSpreadsheet": self.engine._last_clicked_area = self.engine.HIERO_SPREADSHEET_AREA else: self.engine._last_clicked_area = None self.engine.logger.debug("") self.engine.logger.debug( "--------------------------------------------") self.engine.logger.debug("A menu item was clicked!") self.engine.logger.debug("Event Type: %s / %s", self.event_type, self.event_subtype) self.engine.logger.debug("Selected Objects:") for x in self.engine._last_clicked_selection: self.engine.logger.debug("- %r", x) self.engine.logger.debug( "--------------------------------------------") # Fire the callback. self.callback() action.triggered.connect(handler)
def execute_command(self, cmd_key, args): """ Executes a given command. """ cb = self.commands[cmd_key]["callback"] # make sure the number of parameters to the command are correct cb_arg_spec = inspect.getargspec(cb) cb_arg_list = cb_arg_spec[0] cb_var_args = cb_arg_spec[1] if hasattr(cb, "__self__"): # first argument to cb will be class instance: cb_arg_list = cb_arg_list[1:] # ensure the correct/minimum number of arguments have been passed: have_expected_args = False if cb_var_args: have_expected_args = (len(args) >= len(cb_arg_list)) else: have_expected_args = (len(args) == len(cb_arg_list)) if not have_expected_args: expected_args = list(cb_arg_list) if cb_var_args: expected_args.append("*%s" % cb_var_args) raise TankError( "Cannot run command! Expected command arguments (%s)" % ", ".join(expected_args)) if not self._has_qt: # QT not available - just run the command straight return cb(*args) else: from tank.platform.qt import QtCore, QtGui # we got QT capabilities. Start a QT app and fire the command into the app tk_shell = self.import_module("tk_shell") t = tk_shell.Task(self, cb, args) # start up our QApp now, if none is already running qt_application = None if not QtGui.qApp: # We need to clear Qt library paths on Linux if KDE is the active environment. # This resolves issues with mismatched Qt libraries between the OS and the # application being launched if it is a DCC that comes with a bundled Qt. if sys.platform == "linux2" and os.environ.get( "KDE_FULL_SESSION") is not None: QtGui.QApplication.setLibraryPaths([]) qt_application = QtGui.QApplication([]) qt_application.setWindowIcon(QtGui.QIcon(self.icon_256)) self._initialize_dark_look_and_feel() # if we didn't start the QApplication here, let the responsability # to run the exec loop and quit to the initial creator of the QApplication if qt_application: # when the QApp starts, initialize our task code QtCore.QTimer.singleShot(0, t.run_command) # and ask the main app to exit when the task emits its finished signal t.finished.connect(qt_application.quit) # start the application loop. This will block the process until the task # has completed - this is either triggered by a main window closing or # byt the finished signal being called from the task class above. qt_application.exec_() else: # we can run the command now, as the QApp is already started t.run_command()
def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(479, 800) self.verticalLayout_17 = QtGui.QVBoxLayout(Dialog) self.verticalLayout_17.setObjectName("verticalLayout_17") self.top_group = QtGui.QFrame(Dialog) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.top_group.sizePolicy().hasHeightForWidth()) self.top_group.setSizePolicy(sizePolicy) self.top_group.setFrameShape(QtGui.QFrame.StyledPanel) self.top_group.setFrameShadow(QtGui.QFrame.Raised) self.top_group.setObjectName("top_group") self.verticalLayout_18 = QtGui.QVBoxLayout(self.top_group) self.verticalLayout_18.setSpacing(4) self.verticalLayout_18.setContentsMargins(6, 6, 6, 6) self.verticalLayout_18.setObjectName("verticalLayout_18") self.header_stack = QtGui.QStackedWidget(self.top_group) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.header_stack.sizePolicy().hasHeightForWidth()) self.header_stack.setSizePolicy(sizePolicy) self.header_stack.setObjectName("header_stack") self.navigation_page = QtGui.QWidget() self.navigation_page.setObjectName("navigation_page") self.horizontalLayout = QtGui.QHBoxLayout(self.navigation_page) self.horizontalLayout.setSpacing(2) self.horizontalLayout.setContentsMargins(2, 0, 2, 0) self.horizontalLayout.setObjectName("horizontalLayout") self.navigation_home = QtGui.QToolButton(self.navigation_page) self.navigation_home.setMinimumSize(QtCore.QSize(30, 30)) self.navigation_home.setMaximumSize(QtCore.QSize(30, 30)) self.navigation_home.setObjectName("navigation_home") self.horizontalLayout.addWidget(self.navigation_home) self.navigation_prev = QtGui.QToolButton(self.navigation_page) self.navigation_prev.setMinimumSize(QtCore.QSize(30, 30)) self.navigation_prev.setMaximumSize(QtCore.QSize(30, 30)) self.navigation_prev.setObjectName("navigation_prev") self.horizontalLayout.addWidget(self.navigation_prev) self.navigation_next = QtGui.QToolButton(self.navigation_page) self.navigation_next.setMinimumSize(QtCore.QSize(30, 30)) self.navigation_next.setMaximumSize(QtCore.QSize(30, 30)) self.navigation_next.setObjectName("navigation_next") self.horizontalLayout.addWidget(self.navigation_next) self.details_text_header = QtGui.QLabel(self.navigation_page) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.details_text_header.sizePolicy().hasHeightForWidth()) self.details_text_header.setSizePolicy(sizePolicy) self.details_text_header.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) self.details_text_header.setWordWrap(False) self.details_text_header.setObjectName("details_text_header") self.horizontalLayout.addWidget(self.details_text_header) self.search = QtGui.QToolButton(self.navigation_page) self.search.setMinimumSize(QtCore.QSize(30, 30)) self.search.setMaximumSize(QtCore.QSize(30, 30)) self.search.setObjectName("search") self.horizontalLayout.addWidget(self.search) self.current_user = QtGui.QPushButton(self.navigation_page) self.current_user.setMinimumSize(QtCore.QSize(30, 30)) self.current_user.setMaximumSize(QtCore.QSize(30, 30)) self.current_user.setFocusPolicy(QtCore.Qt.NoFocus) icon = QtGui.QIcon() icon.addPixmap( QtGui.QPixmap(":/tk_multi_infopanel/default_user_thumb.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.current_user.setIcon(icon) self.current_user.setIconSize(QtCore.QSize(30, 30)) self.current_user.setAutoDefault(False) self.current_user.setFlat(False) self.current_user.setObjectName("current_user") self.horizontalLayout.addWidget(self.current_user) self.header_stack.addWidget(self.navigation_page) self.search_page = QtGui.QWidget() self.search_page.setObjectName("search_page") self.horizontalLayout_3 = QtGui.QHBoxLayout(self.search_page) self.horizontalLayout_3.setSpacing(2) self.horizontalLayout_3.setContentsMargins(2, 0, 2, 0) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.label = QtGui.QLabel(self.search_page) self.label.setText("") self.label.setPixmap(QtGui.QPixmap(":/tk_multi_infopanel/search.png")) self.label.setObjectName("label") self.horizontalLayout_3.addWidget(self.label) self.search_input = GlobalSearchWidget(self.search_page) self.search_input.setObjectName("search_input") self.horizontalLayout_3.addWidget(self.search_input) self.cancel_search = QtGui.QPushButton(self.search_page) self.cancel_search.setObjectName("cancel_search") self.horizontalLayout_3.addWidget(self.cancel_search) self.header_stack.addWidget(self.search_page) self.verticalLayout_18.addWidget(self.header_stack) self.line = QtGui.QFrame(self.top_group) self.line.setFrameShape(QtGui.QFrame.HLine) self.line.setFrameShadow(QtGui.QFrame.Sunken) self.line.setObjectName("line") self.verticalLayout_18.addWidget(self.line) self.horizontalLayout_4 = QtGui.QHBoxLayout() self.horizontalLayout_4.setSpacing(0) self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.verticalLayout_7 = QtGui.QVBoxLayout() self.verticalLayout_7.setSpacing(0) self.verticalLayout_7.setContentsMargins(-1, 4, -1, -1) self.verticalLayout_7.setObjectName("verticalLayout_7") self.details_thumb = ShotgunPlaybackLabel(self.top_group) self.details_thumb.setMinimumSize(QtCore.QSize(96, 75)) self.details_thumb.setMaximumSize(QtCore.QSize(96, 75)) self.details_thumb.setText("") self.details_thumb.setPixmap( QtGui.QPixmap(":/tk_multi_infopanel/rect_512x400.png")) self.details_thumb.setScaledContents(True) self.details_thumb.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.details_thumb.setObjectName("details_thumb") self.verticalLayout_7.addWidget(self.details_thumb) spacerItem = QtGui.QSpacerItem(0, 0, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Ignored) self.verticalLayout_7.addItem(spacerItem) self.verticalLayout_7.setStretch(1, 1) self.horizontalLayout_4.addLayout(self.verticalLayout_7) self.details_text_middle = QtGui.QLabel(self.top_group) self.details_text_middle.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.details_text_middle.setWordWrap(True) self.details_text_middle.setObjectName("details_text_middle") self.horizontalLayout_4.addWidget(self.details_text_middle) self.verticalLayout_22 = QtGui.QVBoxLayout() self.verticalLayout_22.setSpacing(0) self.verticalLayout_22.setContentsMargins(-1, -1, 6, -1) self.verticalLayout_22.setObjectName("verticalLayout_22") self.action_button = QtGui.QPushButton(self.top_group) self.action_button.setMaximumSize(QtCore.QSize(16, 16)) self.action_button.setFocusPolicy(QtCore.Qt.NoFocus) self.action_button.setObjectName("action_button") self.verticalLayout_22.addWidget(self.action_button) self.label_2 = QtGui.QLabel(self.top_group) self.label_2.setText("") self.label_2.setObjectName("label_2") self.verticalLayout_22.addWidget(self.label_2) self.verticalLayout_22.setStretch(1, 1) self.horizontalLayout_4.addLayout(self.verticalLayout_22) self.horizontalLayout_4.setStretch(1, 1) self.verticalLayout_18.addLayout(self.horizontalLayout_4) self.verticalLayout_17.addWidget(self.top_group) self.page_stack = QtGui.QStackedWidget(Dialog) self.page_stack.setObjectName("page_stack") self.entity_page = QtGui.QWidget() self.entity_page.setObjectName("entity_page") self.verticalLayout = QtGui.QVBoxLayout(self.entity_page) self.verticalLayout.setSpacing(0) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.entity_tab_widget = QtGui.QTabWidget(self.entity_page) self.entity_tab_widget.setFocusPolicy(QtCore.Qt.NoFocus) self.entity_tab_widget.setObjectName("entity_tab_widget") self.entity_activity_tab = QtGui.QWidget() self.entity_activity_tab.setObjectName("entity_activity_tab") self.verticalLayout_16 = QtGui.QVBoxLayout(self.entity_activity_tab) self.verticalLayout_16.setContentsMargins(0, 0, 0, 0) self.verticalLayout_16.setObjectName("verticalLayout_16") self.entity_activity_stream = ActivityStreamWidget( self.entity_activity_tab) self.entity_activity_stream.setObjectName("entity_activity_stream") self.verticalLayout_16.addWidget(self.entity_activity_stream) self.entity_tab_widget.addTab(self.entity_activity_tab, "") self.entity_note_tab = QtGui.QWidget() self.entity_note_tab.setObjectName("entity_note_tab") self.verticalLayout_2 = QtGui.QVBoxLayout(self.entity_note_tab) self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) self.verticalLayout_2.setObjectName("verticalLayout_2") self.entity_note_view = QtGui.QListView(self.entity_note_tab) self.entity_note_view.setVerticalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.entity_note_view.setHorizontalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.entity_note_view.setUniformItemSizes(True) self.entity_note_view.setObjectName("entity_note_view") self.verticalLayout_2.addWidget(self.entity_note_view) self.entity_tab_widget.addTab(self.entity_note_tab, "") self.entity_version_tab = QtGui.QWidget() self.entity_version_tab.setObjectName("entity_version_tab") self.verticalLayout_3 = QtGui.QVBoxLayout(self.entity_version_tab) self.verticalLayout_3.setContentsMargins(0, 0, 0, 0) self.verticalLayout_3.setObjectName("verticalLayout_3") self.entity_version_view = QtGui.QListView(self.entity_version_tab) self.entity_version_view.setVerticalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.entity_version_view.setHorizontalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.entity_version_view.setUniformItemSizes(True) self.entity_version_view.setObjectName("entity_version_view") self.verticalLayout_3.addWidget(self.entity_version_view) self.pending_versions_only = QtGui.QCheckBox(self.entity_version_tab) self.pending_versions_only.setObjectName("pending_versions_only") self.verticalLayout_3.addWidget(self.pending_versions_only) self.entity_tab_widget.addTab(self.entity_version_tab, "") self.entity_publish_tab = QtGui.QWidget() self.entity_publish_tab.setObjectName("entity_publish_tab") self.verticalLayout_4 = QtGui.QVBoxLayout(self.entity_publish_tab) self.verticalLayout_4.setContentsMargins(0, 0, 0, 0) self.verticalLayout_4.setObjectName("verticalLayout_4") self.entity_publish_view = QtGui.QListView(self.entity_publish_tab) self.entity_publish_view.setVerticalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.entity_publish_view.setHorizontalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.entity_publish_view.setUniformItemSizes(True) self.entity_publish_view.setObjectName("entity_publish_view") self.verticalLayout_4.addWidget(self.entity_publish_view) self.latest_publishes_only = QtGui.QCheckBox(self.entity_publish_tab) self.latest_publishes_only.setChecked(True) self.latest_publishes_only.setObjectName("latest_publishes_only") self.verticalLayout_4.addWidget(self.latest_publishes_only) self.entity_tab_widget.addTab(self.entity_publish_tab, "") self.entity_tasks_tab = QtGui.QWidget() self.entity_tasks_tab.setObjectName("entity_tasks_tab") self.verticalLayout_8 = QtGui.QVBoxLayout(self.entity_tasks_tab) self.verticalLayout_8.setContentsMargins(0, 0, 0, 0) self.verticalLayout_8.setObjectName("verticalLayout_8") self.entity_task_view = QtGui.QListView(self.entity_tasks_tab) self.entity_task_view.setVerticalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.entity_task_view.setHorizontalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.entity_task_view.setUniformItemSizes(True) self.entity_task_view.setObjectName("entity_task_view") self.verticalLayout_8.addWidget(self.entity_task_view) self.entity_tab_widget.addTab(self.entity_tasks_tab, "") self.entity_info_tab = QtGui.QWidget() self.entity_info_tab.setObjectName("entity_info_tab") self.verticalLayout_9 = QtGui.QVBoxLayout(self.entity_info_tab) self.verticalLayout_9.setContentsMargins(0, 0, 0, 0) self.verticalLayout_9.setObjectName("verticalLayout_9") self.entity_info_widget = AllFieldsWidget(self.entity_info_tab) self.entity_info_widget.setObjectName("entity_info_widget") self.verticalLayout_9.addWidget(self.entity_info_widget) self.entity_tab_widget.addTab(self.entity_info_tab, "") self.verticalLayout.addWidget(self.entity_tab_widget) self.page_stack.addWidget(self.entity_page) self.publish_page = QtGui.QWidget() self.publish_page.setObjectName("publish_page") self.verticalLayout_6 = QtGui.QVBoxLayout(self.publish_page) self.verticalLayout_6.setSpacing(0) self.verticalLayout_6.setContentsMargins(0, 0, 0, 0) self.verticalLayout_6.setObjectName("verticalLayout_6") self.publish_tab_widget = QtGui.QTabWidget(self.publish_page) self.publish_tab_widget.setFocusPolicy(QtCore.Qt.NoFocus) self.publish_tab_widget.setObjectName("publish_tab_widget") self.publish_history_tab = QtGui.QWidget() self.publish_history_tab.setObjectName("publish_history_tab") self.verticalLayout_15 = QtGui.QVBoxLayout(self.publish_history_tab) self.verticalLayout_15.setContentsMargins(0, 0, 0, 0) self.verticalLayout_15.setObjectName("verticalLayout_15") self.publish_history_view = QtGui.QListView(self.publish_history_tab) self.publish_history_view.setVerticalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.publish_history_view.setHorizontalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.publish_history_view.setUniformItemSizes(True) self.publish_history_view.setObjectName("publish_history_view") self.verticalLayout_15.addWidget(self.publish_history_view) self.publish_tab_widget.addTab(self.publish_history_tab, "") self.publish_upstream_tab = QtGui.QWidget() self.publish_upstream_tab.setObjectName("publish_upstream_tab") self.verticalLayout_13 = QtGui.QVBoxLayout(self.publish_upstream_tab) self.verticalLayout_13.setContentsMargins(0, 0, 0, 0) self.verticalLayout_13.setObjectName("verticalLayout_13") self.publish_upstream_view = QtGui.QListView(self.publish_upstream_tab) self.publish_upstream_view.setVerticalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.publish_upstream_view.setHorizontalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.publish_upstream_view.setUniformItemSizes(True) self.publish_upstream_view.setObjectName("publish_upstream_view") self.verticalLayout_13.addWidget(self.publish_upstream_view) self.publish_tab_widget.addTab(self.publish_upstream_tab, "") self.publish_downstream_tab = QtGui.QWidget() self.publish_downstream_tab.setObjectName("publish_downstream_tab") self.verticalLayout_14 = QtGui.QVBoxLayout(self.publish_downstream_tab) self.verticalLayout_14.setContentsMargins(0, 0, 0, 0) self.verticalLayout_14.setObjectName("verticalLayout_14") self.publish_downstream_view = QtGui.QListView( self.publish_downstream_tab) self.publish_downstream_view.setVerticalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.publish_downstream_view.setHorizontalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.publish_downstream_view.setUniformItemSizes(True) self.publish_downstream_view.setObjectName("publish_downstream_view") self.verticalLayout_14.addWidget(self.publish_downstream_view) self.publish_tab_widget.addTab(self.publish_downstream_tab, "") self.publish_info_tab = QtGui.QWidget() self.publish_info_tab.setObjectName("publish_info_tab") self.verticalLayout_19 = QtGui.QVBoxLayout(self.publish_info_tab) self.verticalLayout_19.setContentsMargins(0, 0, 0, 0) self.verticalLayout_19.setObjectName("verticalLayout_19") self.publish_info_widget = AllFieldsWidget(self.publish_info_tab) self.publish_info_widget.setObjectName("publish_info_widget") self.verticalLayout_19.addWidget(self.publish_info_widget) self.publish_tab_widget.addTab(self.publish_info_tab, "") self.verticalLayout_6.addWidget(self.publish_tab_widget) self.page_stack.addWidget(self.publish_page) self.version_page = QtGui.QWidget() self.version_page.setObjectName("version_page") self.verticalLayout_10 = QtGui.QVBoxLayout(self.version_page) self.verticalLayout_10.setSpacing(0) self.verticalLayout_10.setContentsMargins(0, 0, 0, 0) self.verticalLayout_10.setObjectName("verticalLayout_10") self.version_tab_widget = QtGui.QTabWidget(self.version_page) self.version_tab_widget.setFocusPolicy(QtCore.Qt.NoFocus) self.version_tab_widget.setObjectName("version_tab_widget") self.version_activity_tab = QtGui.QWidget() self.version_activity_tab.setObjectName("version_activity_tab") self.verticalLayout_20 = QtGui.QVBoxLayout(self.version_activity_tab) self.verticalLayout_20.setContentsMargins(0, 0, 0, 0) self.verticalLayout_20.setObjectName("verticalLayout_20") self.version_activity_stream = ActivityStreamWidget( self.version_activity_tab) self.version_activity_stream.setObjectName("version_activity_stream") self.verticalLayout_20.addWidget(self.version_activity_stream) self.version_tab_widget.addTab(self.version_activity_tab, "") self.version_note_tab = QtGui.QWidget() self.version_note_tab.setObjectName("version_note_tab") self.verticalLayout_11 = QtGui.QVBoxLayout(self.version_note_tab) self.verticalLayout_11.setContentsMargins(0, 0, 0, 0) self.verticalLayout_11.setObjectName("verticalLayout_11") self.version_note_view = QtGui.QListView(self.version_note_tab) self.version_note_view.setVerticalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.version_note_view.setHorizontalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.version_note_view.setUniformItemSizes(True) self.version_note_view.setObjectName("version_note_view") self.verticalLayout_11.addWidget(self.version_note_view) self.version_tab_widget.addTab(self.version_note_tab, "") self.version_publish_tab = QtGui.QWidget() self.version_publish_tab.setObjectName("version_publish_tab") self.verticalLayout_12 = QtGui.QVBoxLayout(self.version_publish_tab) self.verticalLayout_12.setContentsMargins(0, 0, 0, 0) self.verticalLayout_12.setObjectName("verticalLayout_12") self.version_publish_view = QtGui.QListView(self.version_publish_tab) self.version_publish_view.setVerticalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.version_publish_view.setHorizontalScrollMode( QtGui.QAbstractItemView.ScrollPerPixel) self.version_publish_view.setUniformItemSizes(True) self.version_publish_view.setObjectName("version_publish_view") self.verticalLayout_12.addWidget(self.version_publish_view) self.version_tab_widget.addTab(self.version_publish_tab, "") self.version_info_tab = QtGui.QWidget() self.version_info_tab.setObjectName("version_info_tab") self.verticalLayout_21 = QtGui.QVBoxLayout(self.version_info_tab) self.verticalLayout_21.setContentsMargins(0, 0, 0, 0) self.verticalLayout_21.setObjectName("verticalLayout_21") self.version_info_widget = AllFieldsWidget(self.version_info_tab) self.version_info_widget.setObjectName("version_info_widget") self.verticalLayout_21.addWidget(self.version_info_widget) self.version_tab_widget.addTab(self.version_info_tab, "") self.verticalLayout_10.addWidget(self.version_tab_widget) self.page_stack.addWidget(self.version_page) self.note_page = QtGui.QWidget() self.note_page.setObjectName("note_page") self.verticalLayout_5 = QtGui.QVBoxLayout(self.note_page) self.verticalLayout_5.setSpacing(0) self.verticalLayout_5.setContentsMargins(0, 0, 0, 0) self.verticalLayout_5.setObjectName("verticalLayout_5") self.note_reply_widget = ReplyListWidget(self.note_page) self.note_reply_widget.setObjectName("note_reply_widget") self.verticalLayout_5.addWidget(self.note_reply_widget) self.page_stack.addWidget(self.note_page) self.verticalLayout_17.addWidget(self.page_stack) self.retranslateUi(Dialog) self.header_stack.setCurrentIndex(0) self.page_stack.setCurrentIndex(0) self.entity_tab_widget.setCurrentIndex(2) self.publish_tab_widget.setCurrentIndex(3) self.version_tab_widget.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(Dialog)