From 3e9d5776b47decc4801e2b004c38e3f941308a2a Mon Sep 17 00:00:00 2001 From: Liam Hoflay Date: Wed, 5 Jun 2019 10:17:47 +0100 Subject: [PATCH] Making all signal connections use partials rather than lambdas to work with katana (cherry picked from commit c2153bb74c8ab18a39328b7ddb5c9df195030f92) --- .../tk_multi_loader/loader_action_manager.py | 24 +++++++++---------- .../open_publish_action_manager.py | 4 ++-- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/python/tk_multi_loader/loader_action_manager.py b/python/tk_multi_loader/loader_action_manager.py index 822d40b5..ef32de7d 100644 --- a/python/tk_multi_loader/loader_action_manager.py +++ b/python/tk_multi_loader/loader_action_manager.py @@ -10,6 +10,7 @@ import sgtk import datetime +from functools import partial import os import sys from sgtk.platform.qt import QtCore, QtGui @@ -229,11 +230,8 @@ def get_actions_for_publishes(self, sg_data_list, ui_area): ] # Bind all the action params to a single invocation of the _execute_hook. - a.triggered[()].connect( - lambda qt_action=a, actions=actions: self._execute_hook( - qt_action, actions - ) - ) + cb = partial(self._execute_hook, a, actions) + a.triggered[()].connect(cb) a.setData(actions) qt_actions.append(a) @@ -358,11 +356,8 @@ def get_actions_for_folder(self, sg_data): ] # Bind all the action params to a single invocation of the _execute_hook. - a.triggered[()].connect( - lambda qt_action=a, actions=actions: self._execute_hook( - qt_action, actions - ) - ) + cb = partial(self._execute_hook, a, actions) + a.triggered[()].connect(cb) a.setData(actions) qt_actions.append(a) @@ -371,15 +366,18 @@ def get_actions_for_folder(self, sg_data): # Add the action only when there are some paths. if paths: fs = QtGui.QAction("Show in the file system", None) - fs.triggered[()].connect(lambda f=paths: self._show_in_fs(f)) + cb = partial(self._show_in_fs, paths) + fs.triggered[()].connect(cb) qt_actions.append(fs) sg = QtGui.QAction("Show details in Shotgun", None) - sg.triggered[()].connect(lambda f=sg_data: self._show_in_sg(f)) + cb = partial(self._show_in_sg, sg_data) + sg.triggered[()].connect(cb) qt_actions.append(sg) sr = QtGui.QAction("Show in Media Center", None) - sr.triggered[()].connect(lambda f=sg_data: self._show_in_sr(f)) + cb = partial(self._show_in_sr, sg_data) + sr.triggered[()].connect(cb) qt_actions.append(sr) return qt_actions diff --git a/python/tk_multi_loader/open_publish_action_manager.py b/python/tk_multi_loader/open_publish_action_manager.py index a3338f19..1181398f 100644 --- a/python/tk_multi_loader/open_publish_action_manager.py +++ b/python/tk_multi_loader/open_publish_action_manager.py @@ -12,7 +12,7 @@ A specialisation of the main ActionManager class for the open publish version of the loader UI. """ - +from functools import partial from sgtk.platform.qt import QtCore, QtGui from .action_manager import ActionManager @@ -68,7 +68,7 @@ def get_default_action_for_publish(self, sg_data, ui_area): # connect the default action so that the default_action_triggered # is emitted: - default_action_cb = lambda sg=sg_data: self.default_action_triggered.emit(sg) + default_action_cb = partial(self.default_action_triggered.emit, sg_data) action.triggered[()].connect(default_action_cb) return action