[Bf-blender-cvs] [0a3866dc83e] filebrowser_redesign: Only show new properties sidebar for specific operators

Julian Eisel noreply at git.blender.org
Sun Aug 18 23:22:15 CEST 2019


Commit: 0a3866dc83e2e3602c6bd761da74197d6abab5da
Author: Julian Eisel
Date:   Sun Aug 18 23:04:30 2019 +0200
Branches: filebrowser_redesign
https://developer.blender.org/rB0a3866dc83e2e3602c6bd761da74197d6abab5da

Only show new properties sidebar for specific operators

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

M	source/blender/editors/sound/sound_ops.c
M	source/blender/editors/space_file/file_intern.h
M	source/blender/editors/space_file/file_ops.c
M	source/blender/editors/space_file/filesel.c
M	source/blender/editors/space_file/space_file.c
M	source/blender/editors/space_graph/graph_edit.c
M	source/blender/makesdna/DNA_space_types.h
M	source/blender/windowmanager/WM_api.h
M	source/blender/windowmanager/intern/wm_operator_props.c

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

diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c
index 51231ccf634..4e710d31cbb 100644
--- a/source/blender/editors/sound/sound_ops.c
+++ b/source/blender/editors/sound/sound_ops.c
@@ -710,7 +710,7 @@ static void SOUND_OT_mixdown(wmOperatorType *ot)
                                  FILE_TYPE_FOLDER | FILE_TYPE_SOUND,
                                  FILE_SPECIAL,
                                  FILE_SAVE,
-                                 WM_FILESEL_FILEPATH | WM_FILESEL_RELPATH,
+                                 WM_FILESEL_FILEPATH | WM_FILESEL_RELPATH | WM_FILESEL_SHOW_PROPS,
                                  FILE_DEFAULTDISPLAY,
                                  FILE_SORT_ALPHA);
 #ifdef WITH_AUDASPACE
diff --git a/source/blender/editors/space_file/file_intern.h b/source/blender/editors/space_file/file_intern.h
index 4d5b7bc79d4..2bce61c9144 100644
--- a/source/blender/editors/space_file/file_intern.h
+++ b/source/blender/editors/space_file/file_intern.h
@@ -34,6 +34,7 @@ struct View2D;
 
 /* file_ops.c */
 struct ARegion *file_tools_region(struct ScrArea *sa);
+struct ARegion *file_tool_props_region(struct ScrArea *sa);
 
 /* file_draw.c */
 #define TILE_BORDER_X (UI_UNIT_X / 4)
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c
index 9ddd50a9bbe..4f1b57c7842 100644
--- a/source/blender/editors/space_file/file_ops.c
+++ b/source/blender/editors/space_file/file_ops.c
@@ -2311,10 +2311,29 @@ ARegion *file_tools_region(ScrArea *sa)
   arnew->regiontype = RGN_TYPE_TOOLS;
   arnew->alignment = RGN_ALIGN_LEFT;
 
-  ar = MEM_callocN(sizeof(ARegion), "tool props for file");
-  BLI_insertlinkafter(&sa->regionbase, arnew, ar);
-  ar->regiontype = RGN_TYPE_TOOL_PROPS;
-  ar->alignment = RGN_ALIGN_RIGHT;
+  return arnew;
+}
+
+ARegion *file_tool_props_region(ScrArea *sa)
+{
+  ARegion *ar, *arnew;
+
+  if ((ar = BKE_area_find_region_type(sa, RGN_TYPE_TOOL_PROPS)) != NULL) {
+    return ar;
+  }
+
+  /* add subdiv level; after execute region */
+  ar = BKE_area_find_region_type(sa, RGN_TYPE_EXECUTE);
+
+  /* is error! */
+  if (ar == NULL) {
+    return NULL;
+  }
+
+  arnew = MEM_callocN(sizeof(ARegion), "tool props for file");
+  BLI_insertlinkafter(&sa->regionbase, ar, arnew);
+  arnew->regiontype = RGN_TYPE_TOOL_PROPS;
+  arnew->alignment = RGN_ALIGN_RIGHT;
 
   return arnew;
 }
diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c
index 6bd1b7c997e..4951d290270 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -165,6 +165,10 @@ short ED_fileselect_set_params(SpaceFile *sfile)
       params->flag &= ~FILE_DIRSEL_ONLY;
     }
 
+    if (prop = RNA_struct_find_property(op->ptr, "hide_props_region")) {
+      params->flag |= RNA_property_boolean_get(op->ptr, prop) ? FILE_HIDE_TOOL_PROPS : 0;
+    }
+
     params->filter = 0;
     if ((prop = RNA_struct_find_property(op->ptr, "filter_blender"))) {
       params->filter |= RNA_property_boolean_get(op->ptr, prop) ? FILE_TYPE_BLENDER : 0;
diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c
index 29d8cf9af69..ec576de2fe5 100644
--- a/source/blender/editors/space_file/space_file.c
+++ b/source/blender/editors/space_file/space_file.c
@@ -92,11 +92,14 @@ static SpaceLink *file_new(const ScrArea *UNUSED(area), const Scene *UNUSED(scen
   ar->alignment = RGN_ALIGN_BOTTOM;
   ar->flag |= RGN_FLAG_DYNAMIC_SIZE;
 
+  /* Tool props region is added as needed. */
+#if 0
   /* Tool props (aka operator) region */
   ar = MEM_callocN(sizeof(ARegion), "tool props region for file");
   BLI_addtail(&sfile->regionbase, ar);
   ar->regiontype = RGN_TYPE_TOOL_PROPS;
   ar->alignment = RGN_ALIGN_RIGHT;
+#endif
 
   /* main region */
   ar = MEM_callocN(sizeof(ARegion), "main region for file");
@@ -212,6 +215,7 @@ static SpaceLink *file_duplicate(SpaceLink *sl)
 static void file_refresh(const bContext *C, ScrArea *sa)
 {
   wmWindowManager *wm = CTX_wm_manager(C);
+  wmWindow *win = CTX_wm_window(C);
   SpaceFile *sfile = CTX_wm_space_file(C);
   FileSelectParams *params = ED_fileselect_get_params(sfile);
   struct FSMenu *fsmenu = ED_fsmenu_get();
@@ -263,7 +267,7 @@ static void file_refresh(const bContext *C, ScrArea *sa)
   else {
     filelist_cache_previews_set(sfile->files, false);
     if (sfile->previews_timer) {
-      WM_event_remove_timer_notifier(wm, CTX_wm_window(C), sfile->previews_timer);
+      WM_event_remove_timer_notifier(wm, win, sfile->previews_timer);
       sfile->previews_timer = NULL;
     }
   }
@@ -278,10 +282,20 @@ static void file_refresh(const bContext *C, ScrArea *sa)
 
   /* Might be called with NULL sa, see file_main_region_draw() below. */
   if (sa && BKE_area_find_region_type(sa, RGN_TYPE_TOOLS) == NULL) {
-    /* Create TOOLS/TOOL_PROPS regions. */
+    /* Create TOOLS region. */
     file_tools_region(sa);
 
-    ED_area_initialize(wm, CTX_wm_window(C), sa);
+    ED_area_initialize(wm, win, sa);
+  }
+  if (sa && BKE_area_find_region_type(sa, RGN_TYPE_TOOL_PROPS) == NULL) {
+    /* Create TOOL_PROPS region. */
+    ARegion *region_props = file_tool_props_region(sa);
+
+    if (params->flag & FILE_HIDE_TOOL_PROPS) {
+      region_props->flag |= RGN_FLAG_HIDDEN;
+    }
+
+    ED_area_initialize(wm, win, sa);
   }
 
   ED_area_tag_redraw(sa);
diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c
index b624e21937f..329067de545 100644
--- a/source/blender/editors/space_graph/graph_edit.c
+++ b/source/blender/editors/space_graph/graph_edit.c
@@ -1538,7 +1538,7 @@ void GRAPH_OT_sound_bake(wmOperatorType *ot)
                                  FILE_TYPE_FOLDER | FILE_TYPE_SOUND | FILE_TYPE_MOVIE,
                                  FILE_SPECIAL,
                                  FILE_OPENFILE,
-                                 WM_FILESEL_FILEPATH,
+                                 WM_FILESEL_FILEPATH | WM_FILESEL_SHOW_PROPS,
                                  FILE_DEFAULTDISPLAY,
                                  FILE_SORT_ALPHA);
   RNA_def_float(ot->srna,
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 030116ea5cc..ca8c6d705b7 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -797,7 +797,8 @@ typedef enum eFileSel_Params_Flag {
   FILE_FILTER = (1 << 8),
   FILE_PARAMS_FLAG_UNUSED_9 = (1 << 9), /* cleared */
   FILE_GROUP_INSTANCE = (1 << 10),
-  FILE_SORT_INVERT = (1 << 11)
+  FILE_SORT_INVERT = (1 << 11),
+  FILE_HIDE_TOOL_PROPS = (1 << 12)
 } eFileSel_Params_Flag;
 
 /* sfile->params->rename_flag */
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 6ff2f11226a..8aa5a14665c 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -497,6 +497,8 @@ bool WM_operator_properties_checker_interval_test(const struct CheckerIntervalPa
 #define WM_FILESEL_FILENAME (1 << 2)
 #define WM_FILESEL_FILEPATH (1 << 3)
 #define WM_FILESEL_FILES (1 << 4)
+/* Show the properties sidebar by default. */
+#define WM_FILESEL_SHOW_PROPS (1 << 5)
 
 /* operator as a python command (resultuing string must be freed) */
 char *WM_operator_pystring_ex(struct bContext *C,
diff --git a/source/blender/windowmanager/intern/wm_operator_props.c b/source/blender/windowmanager/intern/wm_operator_props.c
index 058348ca4b9..8efef043b79 100644
--- a/source/blender/windowmanager/intern/wm_operator_props.c
+++ b/source/blender/windowmanager/intern/wm_operator_props.c
@@ -67,12 +67,12 @@ void WM_operator_properties_filesel(wmOperatorType *ot,
        "Automatically determine display type for files"},
       {FILE_VERTICALDISPLAY,
        "LIST_VERTICAL",
-       ICON_SHORTDISPLAY, // * Name of deprecated Short List*
+       ICON_SHORTDISPLAY, /* Name of deprecated short list */
        "Short List",
        "Display files as short list"},
       {FILE_HORIZONTALDISPLAY,
        "LIST_HORIZONTAL",
-       ICON_LONGDISPLAY, // * Name of deprecated Long List*
+       ICON_LONGDISPLAY, /* Name of deprecated long list */
        "Long List",
        "Display files as a detailed list"},
       {FILE_IMGDISPLAY, "THUMBNAIL", ICON_IMGDISPLAY, "Thumbnails", "Display files as thumbnails"},
@@ -99,6 +99,15 @@ void WM_operator_properties_filesel(wmOperatorType *ot,
     RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE);
   }
 
+  if ((flag & WM_FILESEL_SHOW_PROPS) == 0) {
+    prop = RNA_def_boolean(ot->srna,
+                           "hide_props_region",
+                           true,
+                           "Hide Operator Properties",
+                           "Collapse the region displaying the operator settings");
+    RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE);
+  }
+
   if (action == FILE_SAVE) {
     /* note, this is only used to check if we should highlight the filename area red when the
      * filepath is an existing file. */



More information about the Bf-blender-cvs mailing list