From 57aadc181796ed4d1c6ff70200f2dff9fe7cbe39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 30 Oct 2018 11:48:48 +0100 Subject: [PATCH] Attract: added 'open project in browser' button The button was added to the video sequence editor panel. --- blender_cloud/attract/__init__.py | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/blender_cloud/attract/__init__.py b/blender_cloud/attract/__init__.py index 887e4b2..ea3a027 100644 --- a/blender_cloud/attract/__init__.py +++ b/blender_cloud/attract/__init__.py @@ -202,6 +202,7 @@ class ATTRACT_PT_tools(AttractPollMixin, Panel): layout.operator('attract.shot_relink') else: layout.operator(ATTRACT_OT_submit_all.bl_idname) + layout.operator(ATTRACT_OT_project_open_in_browser.bl_idname, icon='WORLD') def _draw_attractstrip_buttons(self, context, strip): """Draw buttons when selected strips are Attract shots.""" @@ -909,6 +910,37 @@ class ATTRACT_OT_copy_id_to_clipboard(AttractOperatorMixin, Operator): return {'FINISHED'} +class ATTRACT_OT_project_open_in_browser(Operator): + bl_idname = 'attract.project_open_in_browser' + bl_label = 'Open Project in Browser' + bl_description = 'Opens a webbrowser to show the project in Attract' + + project_id = bpy.props.StringProperty(name='Project ID', default='') + + def execute(self, context): + import webbrowser + import urllib.parse + + import pillarsdk + from ..pillar import sync_call + from ..blender import PILLAR_WEB_SERVER_URL, preferences + + if not self.project_id: + self.project_id = preferences().project.project + + project = sync_call(pillarsdk.Project.find, self.project_id, {'projection': {'url': True}}) + + if log.isEnabledFor(logging.DEBUG): + import pprint + log.debug('found project: %s', pprint.pformat(project.to_dict())) + + url = urllib.parse.urljoin(PILLAR_WEB_SERVER_URL, f'attract/{project.url}') + webbrowser.open_new_tab(url) + self.report({'INFO'}, 'Opened a browser at %s' % url) + + return {'FINISHED'} + + def draw_strip_movie_meta(self, context): strip = active_strip(context) if not strip: