[Bf-blender-cvs] [3ad67152659] blender-projects-basics: Cleanup: Move project operators closer together

Julian Eisel noreply at git.blender.org
Thu Oct 6 17:45:22 CEST 2022


Commit: 3ad67152659e745748a8a286213021ceaf85ed83
Author: Julian Eisel
Date:   Thu Oct 6 17:39:53 2022 +0200
Branches: blender-projects-basics
https://developer.blender.org/rB3ad67152659e745748a8a286213021ceaf85ed83

Cleanup: Move project operators closer together

===================================================================

M	source/blender/windowmanager/intern/wm_files.c
M	source/blender/windowmanager/wm_files.h

===================================================================

diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c
index f0e95285451..16a0076084a 100644
--- a/source/blender/windowmanager/intern/wm_files.c
+++ b/source/blender/windowmanager/intern/wm_files.c
@@ -2348,6 +2348,82 @@ void WM_OT_save_project_settings(wmOperatorType *ot)
 
 /** \} */
 
+/* -------------------------------------------------------------------- */
+/** \name New project operator
+ * \{ */
+
+static int wm_new_project_exec(bContext *C, wmOperator *op)
+{
+  const Main *bmain = CTX_data_main(C);
+  const char *blendfile_path = BKE_main_blendfile_path(bmain);
+
+  if (!RNA_struct_property_is_set(op->ptr, "directory")) {
+    BKE_report(op->reports, RPT_ERROR, "No path defined for creating a new project in");
+    return OPERATOR_CANCELLED;
+  }
+  char project_root_dir[FILE_MAXDIR];
+  RNA_string_get(op->ptr, "directory", project_root_dir);
+
+  if (!BKE_project_create_settings_directory(project_root_dir)) {
+    BKE_reportf(op->reports,
+                RPT_ERROR,
+                "Failed to create project with unknown error. Is the directory read-only?");
+    return OPERATOR_CANCELLED;
+  }
+
+  BKE_reportf(op->reports, RPT_INFO, "Project created and loaded successfully");
+
+  if (blendfile_path[0] && BLI_path_contains(project_root_dir, blendfile_path)) {
+    BKE_project_active_load_from_path(blendfile_path);
+
+    WM_main_add_notifier(NC_PROJECT, NULL);
+    /* Update the window title. */
+    WM_event_add_notifier_ex(CTX_wm_manager(C), CTX_wm_window(C), NC_WM | ND_DATACHANGED, NULL);
+  }
+  else {
+    BKE_reportf(op->reports,
+                RPT_INFO,
+                "The current file is not located inside of the new project. This means the new "
+                "project is not active");
+  }
+
+  return OPERATOR_FINISHED;
+}
+
+static int wm_new_project_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
+{
+  const Main *bmain = CTX_data_main(C);
+  const char *blendfile_path = BKE_main_blendfile_path(bmain);
+  if (blendfile_path[0]) {
+    /* Open at the .blend file location if any. */
+    RNA_string_set(op->ptr, "filepath", blendfile_path);
+  }
+
+  WM_event_add_fileselect(C, op);
+  return OPERATOR_RUNNING_MODAL;
+}
+
+void WM_OT_new_project(wmOperatorType *ot)
+{
+  ot->name = "New Project";
+  ot->idname = "WM_OT_new_project";
+  ot->description = "Choose a directory to use as the root of a project";
+
+  ot->invoke = wm_new_project_invoke;
+  ot->exec = wm_new_project_exec;
+  /* omit window poll so this can work in background mode */
+
+  WM_operator_properties_filesel(ot,
+                                 FILE_TYPE_FOLDER,
+                                 FILE_BLENDER,
+                                 FILE_OPENFILE,
+                                 WM_FILESEL_DIRECTORY,
+                                 FILE_DEFAULTDISPLAY,
+                                 FILE_SORT_DEFAULT);
+}
+
+/** \} */
+
 /* -------------------------------------------------------------------- */
 /** \name Read File History Operator
  * \{ */
@@ -3330,82 +3406,6 @@ void WM_OT_save_mainfile(wmOperatorType *ot)
 
 /** \} */
 
-/* -------------------------------------------------------------------- */
-/** \name New project operator
- * \{ */
-
-static int wm_new_project_exec(bContext *C, wmOperator *op)
-{
-  const Main *bmain = CTX_data_main(C);
-  const char *blendfile_path = BKE_main_blendfile_path(bmain);
-
-  if (!RNA_struct_property_is_set(op->ptr, "directory")) {
-    BKE_report(op->reports, RPT_ERROR, "No path defined for creating a new project in");
-    return OPERATOR_CANCELLED;
-  }
-  char project_root_dir[FILE_MAXDIR];
-  RNA_string_get(op->ptr, "directory", project_root_dir);
-
-  if (!BKE_project_create_settings_directory(project_root_dir)) {
-    BKE_reportf(op->reports,
-                RPT_ERROR,
-                "Failed to create project with unknown error. Is the directory read-only?");
-    return OPERATOR_CANCELLED;
-  }
-
-  BKE_reportf(op->reports, RPT_INFO, "Project created and loaded successfully");
-
-  if (blendfile_path[0] && BLI_path_contains(project_root_dir, blendfile_path)) {
-    BKE_project_active_load_from_path(blendfile_path);
-
-    WM_main_add_notifier(NC_PROJECT, NULL);
-    /* Update the window title. */
-    WM_event_add_notifier_ex(CTX_wm_manager(C), CTX_wm_window(C), NC_WM | ND_DATACHANGED, NULL);
-  }
-  else {
-    BKE_reportf(op->reports,
-                RPT_INFO,
-                "The current file is not located inside of the new project. This means the new "
-                "project is not active");
-  }
-
-  return OPERATOR_FINISHED;
-}
-
-static int wm_new_project_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
-{
-  const Main *bmain = CTX_data_main(C);
-  const char *blendfile_path = BKE_main_blendfile_path(bmain);
-  if (blendfile_path[0]) {
-    /* Open at the .blend file location if any. */
-    RNA_string_set(op->ptr, "filepath", blendfile_path);
-  }
-
-  WM_event_add_fileselect(C, op);
-  return OPERATOR_RUNNING_MODAL;
-}
-
-void WM_OT_new_project(wmOperatorType *ot)
-{
-  ot->name = "New Project";
-  ot->idname = "WM_OT_new_project";
-  ot->description = "Choose a directory to use as the root of a project";
-
-  ot->invoke = wm_new_project_invoke;
-  ot->exec = wm_new_project_exec;
-  /* omit window poll so this can work in background mode */
-
-  WM_operator_properties_filesel(ot,
-                                 FILE_TYPE_FOLDER,
-                                 FILE_BLENDER,
-                                 FILE_OPENFILE,
-                                 WM_FILESEL_DIRECTORY,
-                                 FILE_DEFAULTDISPLAY,
-                                 FILE_SORT_DEFAULT);
-}
-
-/** \} */
-
 /* -------------------------------------------------------------------- */
 /** \name Auto Script Execution Warning Dialog
  * \{ */
diff --git a/source/blender/windowmanager/wm_files.h b/source/blender/windowmanager/wm_files.h
index fad5dd0ef0f..3f01058688c 100644
--- a/source/blender/windowmanager/wm_files.h
+++ b/source/blender/windowmanager/wm_files.h
@@ -90,8 +90,9 @@ bool wm_file_or_session_data_has_unsaved_changes(const Main *bmain, const wmWind
 void WM_OT_save_homefile(struct wmOperatorType *ot);
 void WM_OT_save_userpref(struct wmOperatorType *ot);
 void WM_OT_read_userpref(struct wmOperatorType *ot);
-void WM_OT_save_project_settings(struct wmOperatorType *ot);
 void WM_OT_read_factory_userpref(struct wmOperatorType *ot);
+void WM_OT_save_project_settings(struct wmOperatorType *ot);
+void WM_OT_new_project(struct wmOperatorType *ot);
 void WM_OT_read_history(struct wmOperatorType *ot);
 void WM_OT_read_homefile(struct wmOperatorType *ot);
 void WM_OT_read_factory_settings(struct wmOperatorType *ot);
@@ -105,8 +106,6 @@ void WM_OT_recover_auto_save(struct wmOperatorType *ot);
 void WM_OT_save_as_mainfile(struct wmOperatorType *ot);
 void WM_OT_save_mainfile(struct wmOperatorType *ot);
 
-void WM_OT_new_project(struct wmOperatorType *ot);
-
 /* wm_files_link.c */
 
 void WM_OT_link(struct wmOperatorType *ot);



More information about the Bf-blender-cvs mailing list