Commit: 7234c363dbf874dc8b20d88d5bc02187871e10aa Author: Julian Eisel Date: Tue Oct 18 18:26:50 2022 +0200 Branches: blender-projects-basics https://developer.blender.org/rB7234c363dbf874dc8b20d88d5bc02187871e10aa
Hide UI behind experimental option =================================================================== M release/scripts/startup/bl_ui/space_topbar.py M release/scripts/startup/bl_ui/space_userpref.py M source/blender/blenkernel/intern/blendfile.c M source/blender/blenloader/intern/writefile.cc M source/blender/editors/project/project_ops.cc M source/blender/makesdna/DNA_userdef_types.h M source/blender/makesrna/intern/rna_screen.c M source/blender/makesrna/intern/rna_userdef.c =================================================================== diff --git a/release/scripts/startup/bl_ui/space_topbar.py b/release/scripts/startup/bl_ui/space_topbar.py index 180050c7aa5..b6c22f2acd7 100644 --- a/release/scripts/startup/bl_ui/space_topbar.py +++ b/release/scripts/startup/bl_ui/space_topbar.py @@ -273,13 +273,14 @@ class TOPBAR_MT_file(Menu): layout.operator_context = 'INVOKE_AREA' layout.menu("TOPBAR_MT_file_new", text="New", text_ctxt=i18n_contexts.id_windowmanager, icon='FILE_NEW') - layout.operator("wm.open_mainfile", text="Open File...", icon='FILE_FOLDER') + layout.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER') layout.menu("TOPBAR_MT_file_open_recent") layout.operator("wm.revert_mainfile") layout.menu("TOPBAR_MT_file_recover") - props = layout.operator("project.new", text="Set up Project...") - props.open_settings_after = True + if context.preferences.experimental.use_blender_projects: + props = layout.operator("project.new", text="Set up Project...") + props.open_settings_after = True layout.separator() @@ -627,7 +628,8 @@ class TOPBAR_MT_edit(Menu): layout.separator() - layout.operator("screen.project_settings_show", text="Project Settings...") + if context.preferences.experimental.use_blender_projects: + layout.operator("screen.project_settings_show", text="Project Settings...") layout.operator("screen.userpref_show", text="Preferences...", icon='PREFERENCES') @@ -734,7 +736,7 @@ class TOPBAR_MT_help(Menu): class TOPBAR_MT_file_context_menu(Menu): bl_label = "File Context Menu" - def draw(self, _context): + def draw(self, context): layout = self.layout layout.operator_context = 'INVOKE_AREA' @@ -753,7 +755,8 @@ class TOPBAR_MT_file_context_menu(Menu): layout.separator() - layout.operator("screen.project_settings_show", text="Project Settings...") + if context.preferences.experimental.use_blender_projects: + layout.operator("screen.project_settings_show", text="Project Settings...") layout.operator("screen.userpref_show", text="Preferences...", icon='PREFERENCES') diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index e57820d47d4..7223c750f32 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -1234,6 +1234,10 @@ class ThemeGenericClassGenerator: if theme_area.identifier in {'USER_INTERFACE', 'STYLE', 'BONE_COLOR_SETS'}: continue + prefs = bpy.context.preferences + if not prefs.experimental.use_blender_projects and theme_area.identifier == 'PROJECT_SETTINGS': + continue + panel_id = "USERPREF_PT_theme_" + theme_area.identifier.lower() # Generate panel-class from theme_area yield type(panel_id, (PreferenceThemeSpacePanel, ThemePanel, Panel), { @@ -2285,6 +2289,7 @@ class USERPREF_PT_experimental_prototypes(ExperimentalPanel, Panel): ({"property": "use_full_frame_compositor"}, "T88150"), ({"property": "enable_eevee_next"}, "T93220"), ({"property": "use_draw_manager_acquire_lock"}, "T98016"), + ({"property": "use_blender_projects"}, None), ), ) diff --git a/source/blender/blenkernel/intern/blendfile.c b/source/blender/blenkernel/intern/blendfile.c index d8e3183447e..e39c8756d96 100644 --- a/source/blender/blenkernel/intern/blendfile.c +++ b/source/blender/blenkernel/intern/blendfile.c @@ -448,6 +448,9 @@ static void setup_app_blend_file_data(bContext *C, static void setup_app_project_data(BlendFileData *bfd, const struct BlendFileReadParams *params) { + if (!U.experimental.use_blender_projects) { + return; + } if ((params->skip_flags & BLO_READ_SKIP_DATA) == 0) { BKE_project_active_load_from_path(bfd->main->filepath); } diff --git a/source/blender/blenloader/intern/writefile.cc b/source/blender/blenloader/intern/writefile.cc index 6b049278f8b..01a729732a1 100644 --- a/source/blender/blenloader/intern/writefile.cc +++ b/source/blender/blenloader/intern/writefile.cc @@ -1442,7 +1442,9 @@ bool BLO_write_file(Main *mainvar, } /* Update active project information based on the new file location. */ - BKE_project_active_load_from_path(filepath); + if (U.experimental.use_blender_projects) { + BKE_project_active_load_from_path(filepath); + } /* actual file writing */ const bool err = write_file_handle( diff --git a/source/blender/editors/project/project_ops.cc b/source/blender/editors/project/project_ops.cc index 797b4fd3f56..b9398aa9e95 100644 --- a/source/blender/editors/project/project_ops.cc +++ b/source/blender/editors/project/project_ops.cc @@ -39,6 +39,15 @@ static bool has_active_project_poll(bContext *C) /** \name New project operator * \{ */ +static bool new_project_poll(bContext *C) +{ + if (!U.experimental.use_blender_projects) { + CTX_wm_operator_poll_msg_set(C, "Experimental project support is not enabled"); + return false; + } + return true; +} + static int new_project_exec(bContext *C, wmOperator *op) { const Main *bmain = CTX_data_main(C); @@ -89,6 +98,7 @@ static void PROJECT_OT_new(wmOperatorType *ot) ot->invoke = new_project_invoke; ot->exec = new_project_exec; /* omit window poll so this can work in background mode */ + ot->poll = new_project_poll; WM_operator_properties_filesel(ot, FILE_TYPE_FOLDER, diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 44a5bf5a20d..5a6c7992a3e 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -647,7 +647,8 @@ typedef struct UserDef_Experimental { char use_sculpt_texture_paint; char use_draw_manager_acquire_lock; char use_realtime_compositor; - char _pad[7]; + char use_blender_projects; + char _pad[6]; /** `makesdna` does not allow empty structs. */ } UserDef_Experimental; diff --git a/source/blender/makesrna/intern/rna_screen.c b/source/blender/makesrna/intern/rna_screen.c index a65bd613ecf..2051045cd73 100644 --- a/source/blender/makesrna/intern/rna_screen.c +++ b/source/blender/makesrna/intern/rna_screen.c @@ -186,6 +186,10 @@ static const EnumPropertyItem *rna_Area_ui_type_itemf(bContext *C, continue; } + if (!U.experimental.use_blender_projects && (item_from->value == SPACE_PROJECT_SETTINGS)) { + continue; + } + SpaceType *st = item_from->identifier[0] ? BKE_spacetype_from_id(item_from->value) : NULL; int totitem_prev = totitem; if (st && st->space_subtype_item_extend != NULL) { diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 0c873ef1997..2fed4e3f4a3 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -6369,6 +6369,12 @@ static void rna_def_userdef_experimental(BlenderRNA *brna) RNA_def_property_ui_text( prop, "Override Templates", "Enable library override template in the python API"); + prop = RNA_def_property(srna, "use_blender_projects", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_ui_text(prop, + "Blender Projects", + "Enable support for Blender project directories, consisting out of " + "multiple .blend files and dedicated project settings"); + prop = RNA_def_property(srna, "enable_eevee_next", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "enable_eevee_next", 1); RNA_def_property_ui_text(prop, "EEVEE Next", "Enable the new EEVEE codebase, requires restart"); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs