116 lines
4.8 KiB
Python
116 lines
4.8 KiB
Python
# Ref WM_MT_splash https://projects.blender.org/blender/blender/src/commit/5a9fe638dedb179050c4929ea8fcdec80d221af2/scripts/startup/bl_operators/wm.py#L3296
|
|
# Ref TOPBAR_MT_file_new https://projects.blender.org/blender/blender/src/commit/5a9fe638dedb179050c4929ea8fcdec80d221af2/scripts/startup/bl_ui/space_topbar.py#L286
|
|
from .. import __package__ as base_package
|
|
from .draw import draw_templates
|
|
import bpy
|
|
# Clone of the WM_MT_splash (the section under the image of the Splash)
|
|
# It's edited (only in #Templates part) to add a menu in the New File section
|
|
# to switch between blender's original templates and Custom Templates.
|
|
# If you have no custom templates, the default templates are displayed
|
|
class WM_MT_splash(bpy.types.Menu):
|
|
bl_label="Splash"
|
|
|
|
def draw(self, context):
|
|
layout = self.layout
|
|
prefs = context.preferences.addons[base_package].preferences
|
|
layout.operator_context = 'EXEC_DEFAULT'
|
|
layout.emboss = 'PULLDOWN_MENU'
|
|
split = layout.split()
|
|
|
|
# Templates
|
|
col1 = split.column()
|
|
ct_split = col1.split(factor=0.9)
|
|
colA = ct_split.column()
|
|
if prefs.override_splash and len(prefs.projects) > 0:
|
|
colA.label(text="Custom Templates")
|
|
col1.operator_context = 'INVOKE_DEFAULT'
|
|
draw_templates(col1, context, True)
|
|
else:
|
|
colA.label(text="New File")
|
|
# Call original code
|
|
bpy.types.TOPBAR_MT_file_new.draw_ex(col1, context, use_splash=True)
|
|
colB = ct_split.column()
|
|
colB.menu("CT_MT_splash_mode", icon='DOWNARROW_HLT', text="")
|
|
|
|
# Recent
|
|
col2 = split.column()
|
|
col2_title = col2.row()
|
|
|
|
found_recent = col2.template_recent_files()
|
|
|
|
if found_recent:
|
|
col2_title.label(text="Recent Files")
|
|
else:
|
|
# Links if no recent files.
|
|
col2_title.label(text="Getting Started")
|
|
|
|
col2.operator("wm.url_open_preset", text="Manual", icon='URL').type = 'MANUAL'
|
|
col2.operator("wm.url_open", text="Tutorials", icon='URL').url = "https://www.blender.org/tutorials/"
|
|
col2.operator("wm.url_open", text="Support", icon='URL').url = "https://www.blender.org/support/"
|
|
col2.operator("wm.url_open", text="User Communities", icon='URL').url = "https://www.blender.org/community/"
|
|
col2.operator("wm.url_open_preset", text="Blender Website", icon='URL').type = 'BLENDER'
|
|
|
|
layout.separator()
|
|
|
|
split = layout.split()
|
|
|
|
col1 = split.column()
|
|
sub = col1.row()
|
|
sub.operator_context = 'INVOKE_DEFAULT'
|
|
sub.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER')
|
|
col1.operator("wm.recover_last_session", icon='RECOVER_LAST')
|
|
|
|
col2 = split.column()
|
|
|
|
col2.operator("wm.url_open_preset", text="Donate", icon='FUND').type = 'FUND'
|
|
col2.operator("wm.url_open_preset", text="What's New", icon='URL').type = 'RELEASE_NOTES'
|
|
|
|
layout.separator()
|
|
|
|
if (not bpy.app.online_access) and bpy.app.online_access_override:
|
|
self.layout.label(text="Running in Offline Mode", icon='INTERNET_OFFLINE')
|
|
|
|
layout.separator()
|
|
|
|
class CT_MT_splash_mode(bpy.types.Menu):
|
|
bl_idname = "CT_MT_splash_mode"
|
|
bl_label = "Custom Templates Switch"
|
|
bl_description = "Swtich between Blender's default and your Custom Templates"
|
|
|
|
def draw(self, context):
|
|
layout = self.layout
|
|
prefs = context.preferences.addons[base_package].preferences
|
|
def_check = 'NONE'
|
|
ct_check = 'NONE'
|
|
if prefs.override_splash:
|
|
ct_check = "CHECKMARK"
|
|
else:
|
|
def_check = "CHECKMARK"
|
|
|
|
layout.operator("ct.open_preferences", text="Manage templates")
|
|
layout.separator()
|
|
layout.operator("ct.splash_custom", text="Use Custom Templates", icon=ct_check)
|
|
layout.operator("ct.splash_default", text="Use Blender's Default", icon=def_check)
|
|
|
|
class CT_OT_splash_default(bpy.types.Operator):
|
|
bl_idname = "ct.splash_default"
|
|
bl_label = "Display default Blender's templates"
|
|
bl_description = "Use Blender's default templates in the Splash Screen"
|
|
|
|
def execute(self, context):
|
|
prefs = context.preferences.addons[base_package].preferences
|
|
prefs.override_splash = False
|
|
context.preferences.is_dirty = True
|
|
return {'FINISHED'}
|
|
|
|
class CT_OT_splash_custom(bpy.types.Operator):
|
|
bl_idname = "ct.splash_custom"
|
|
bl_label = "Display your custom templates"
|
|
bl_description = "Use your custom templates in the Splash Screen (limited to first 5)"
|
|
|
|
def execute(self, context):
|
|
prefs = context.preferences.addons[base_package].preferences
|
|
prefs.override_splash = True
|
|
context.preferences.is_dirty = True
|
|
return {'FINISHED'}
|
|
|