Commit: d069dc9859eacb06821b67a3db0ab40c2627c2ed
Author: Julian Eisel
Date:   Mon Apr 1 14:48:35 2019 +0200
Branches: filebrowser_redesign
https://developer.blender.org/rBd069dc9859eacb06821b67a3db0ab40c2627c2ed

Initially split filename and directory-path into two regions

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

M       release/scripts/startup/bl_ui/space_filebrowser.py
M       source/blender/blenkernel/BKE_blender_version.h
M       source/blender/blenloader/intern/versioning_userdef.c
M       source/blender/editors/screen/area.c
M       source/blender/editors/space_file/file_draw.c
M       source/blender/editors/space_file/file_intern.h
M       source/blender/editors/space_file/space_file.c

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

diff --git a/release/scripts/startup/bl_ui/space_filebrowser.py 
b/release/scripts/startup/bl_ui/space_filebrowser.py
index 5ab4dbfd16b..d1690a1c589 100644
--- a/release/scripts/startup/bl_ui/space_filebrowser.py
+++ b/release/scripts/startup/bl_ui/space_filebrowser.py
@@ -241,6 +241,54 @@ class FILEBROWSER_PT_advanced_filter(Panel):
                 col.prop(params, "filter_id")
 
 
+class FILEBROWSER_PT_directory_path(Panel):
+    bl_space_type = 'FILE_BROWSER'
+    bl_region_type = 'UI'
+    bl_label = "Directory Path"
+    bl_category = "Directory Path"
+    bl_options = {'HIDE_HEADER'}
+
+    def draw(self, context):
+        layout = self.layout
+        space = context.space_data
+        params = space.params
+
+        layout.scale_x = 1.3
+        layout.scale_y = 1.3
+
+        row = layout.row()
+        # TODO proper directory input text field
+        row.prop(params, "directory", text="")
+
+
+class FILEBROWSER_PT_file_operation(Panel):
+    bl_space_type = 'FILE_BROWSER'
+    bl_region_type = 'EXECUTE'
+    bl_label = "Execute File Operation"
+    bl_options = {'HIDE_HEADER'}
+
+    @classmethod
+    def poll(cls, context):
+        return context.space_data.active_operator
+
+    def draw(self, context):
+        layout = self.layout
+        space = context.space_data
+        params = space.params
+
+        layout.scale_x = 1.3
+        layout.scale_y = 1.3
+
+        row = layout.row()
+        sub = row.row()
+        sub.prop(params, "filename", text="")
+        sub = row.row()
+        sub.ui_units_x = 5
+        # TODO change to "Open Directory"/"Parent Directory" based on 
highlight.
+        sub.operator("FILE_OT_execute", text=params.title)
+        sub.operator("FILE_OT_cancel", text="Cancel")
+
+
 class FILEBROWSER_MT_view(Menu):
     bl_label = "View"
 
@@ -266,6 +314,8 @@ classes = (
     FILEBROWSER_PT_bookmarks,
     FILEBROWSER_PT_recent_folders,
     FILEBROWSER_PT_advanced_filter,
+    FILEBROWSER_PT_directory_path,
+    FILEBROWSER_PT_file_operation,
     FILEBROWSER_MT_view,
 )
 
diff --git a/source/blender/blenkernel/BKE_blender_version.h 
b/source/blender/blenkernel/BKE_blender_version.h
index 9ae85725488..4c88410134c 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -24,7 +24,7 @@
  * and keep comment above the defines.
  * Use STRINGIFY() rather than defining with quotes */
 #define BLENDER_VERSION         280
-#define BLENDER_SUBVERSION      53
+#define BLENDER_SUBVERSION      54
 /* Several breakages with 280, e.g. collections vs layers */
 #define BLENDER_MINVERSION      280
 #define BLENDER_MINSUBVERSION   0
diff --git a/source/blender/blenloader/intern/versioning_userdef.c 
b/source/blender/blenloader/intern/versioning_userdef.c
index 5bff0cd1c93..b709039923a 100644
--- a/source/blender/blenloader/intern/versioning_userdef.c
+++ b/source/blender/blenloader/intern/versioning_userdef.c
@@ -114,6 +114,10 @@ static void do_versions_theme(UserDef *userdef, bTheme 
*btheme)
                FROM_DEFAULT_V4_UCHAR(space_info.info_info);
        }
 
+       if (!USER_VERSION_ATLEAST(280, 54)) {
+               FROM_DEFAULT_V4_UCHAR(space_file.execution_buts);
+       }
+
 #undef FROM_DEFAULT_V4_UCHAR
 
 #undef USER_VERSION_ATLEAST
diff --git a/source/blender/editors/screen/area.c 
b/source/blender/editors/screen/area.c
index 411826d79c1..2aa724728cd 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -1169,9 +1169,6 @@ static void region_rect_recursive(ScrArea *sa, ARegion 
*ar, rcti *remainder, rct
        else if (ED_area_is_global(sa)) {
                prefsizey = ED_region_global_size_y();
        }
-       else if (ar->regiontype == RGN_TYPE_UI && sa->spacetype == SPACE_FILE) {
-               prefsizey = UI_UNIT_Y * 2 + (UI_UNIT_Y / 2);
-       }
        else {
                prefsizey = UI_DPI_FAC * (ar->sizey > 1 ? ar->sizey + 0.5f : 
ar->type->prefsizey);
        }
diff --git a/source/blender/editors/space_file/file_draw.c 
b/source/blender/editors/space_file/file_draw.c
index c0aa03abece..b3f520f74d7 100644
--- a/source/blender/editors/space_file/file_draw.c
+++ b/source/blender/editors/space_file/file_draw.c
@@ -78,6 +78,7 @@ static char *file_draw_tooltip_func(bContext *UNUSED(C), void 
*argN, const char
        return BLI_strdup(dyn_tooltip);
 }
 
+#if 0
 /* Note: This function uses pixelspace (0, 0, winx, winy), not view2d.
  * The controls are laid out as follows:
  *
@@ -91,7 +92,7 @@ static char *file_draw_tooltip_func(bContext *UNUSED(C), void 
*argN, const char
  * When there isn't enough space for all controls to be shown, they are
  * hidden in this order: x/-, execute/cancel, input widgets.
  */
-void file_draw_buttons(const bContext *C, ARegion *ar)
+void file_draw_filepath_buttons(const bContext *C, ARegion *ar)
 {
        /* Button layout. */
        const int max_x      = ar->winx - 10;
@@ -186,29 +187,80 @@ void file_draw_buttons(const bContext *C, ARegion *ar)
                if (sfile->files && filelist_lib(sfile->files))
                        UI_but_flag_enable(but, UI_BUT_DISABLED);
 
-               if ((params->flag & FILE_DIRSEL_ONLY) == 0) {
-                       but = uiDefBut(block, UI_BTYPE_TEXT, -1, "",
-                                      min_x, line2_y, line2_w - chan_offs, 
btn_h,
-                                      is_active_dir ? (char *)"" : 
params->file,
-                                      0.0, (float)FILE_MAXFILE, 0, 0,
-                                      TIP_(overwrite_alert ? N_("File name, 
overwrite existing") : N_("File name")));
-                       UI_but_func_complete_set(but, autocomplete_file, NULL);
-                       UI_but_flag_enable(but, UI_BUT_NO_UTF8);
-                       UI_but_flag_disable(but, UI_BUT_UNDO);
-                       /* silly workaround calling NFunc to ensure this does 
not get called
-                        * immediate ui_apply_but_func but only after button 
deactivates */
-                       UI_but_funcN_set(but, file_filename_enter_handle, NULL, 
but);
+               /* clear func */
+               UI_block_func_set(block, NULL, NULL, NULL);
+       }
 
-                       /* check if this overrides a file and if the operator 
option is used */
-                       if (overwrite_alert) {
-                               UI_but_flag_enable(but, UI_BUT_REDALERT);
-                       }
+       UI_block_end(C, block);
+       UI_block_draw(C, block);
+}
+
+void file_draw_execute_buttons(const bContext *C, ARegion *ar)
+{
+       /* Button layout. */
+       const int max_x      = ar->winx - 10;
+       const int line_y    = ar->winy - (IMASEL_BUTTONS_HEIGHT / 2 + 
IMASEL_BUTTONS_MARGIN);
+       const int input_minw = 20;
+       const int btn_h      = UI_UNIT_Y;
+       const int btn_fn_w   = UI_UNIT_X;
+       const int btn_minw   = 80;
+       const int btn_margin = 20;
+       const int separator  = 4;
+
+       SpaceFile *sfile  = CTX_wm_space_file(C);
+       FileSelectParams *params = ED_fileselect_get_params(sfile);
+       const bool is_browse_only = (sfile->op == NULL);
+
+       char uiblockstr[32];
+       int loadbutton;
+       int min_x       = 10;
+       int available_w = max_x - min_x;
+       int line1_w     = available_w;
+       int line2_w     = available_w;
+
+       uiBlock *block;
+       uiBut *but;
+
+       /* Initialize UI block. */
+       BLI_snprintf(uiblockstr, sizeof(uiblockstr), "win %p", (void *)ar);
+       block = UI_block_begin(C, ar, uiblockstr, UI_EMBOSS);
+
+       if (is_browse_only) {
+               loadbutton = 0;
+       }
+       else {
+               const uiFontStyle *fstyle = UI_FSTYLE_WIDGET;
+               loadbutton = UI_fontstyle_string_width(fstyle, params->title) + 
btn_margin;
+               CLAMP_MIN(loadbutton, btn_minw);
+               if (available_w <= loadbutton + separator + input_minw) {
+                       loadbutton = 0;
                }
+       }
 
-               /* clear func */
-               UI_block_func_set(block, NULL, NULL, NULL);
+       const struct FileDirEntry *file = sfile->files ? 
filelist_file(sfile->files, params->active_file) : NULL;
+       int overwrite_alert = file_draw_check_exists(sfile);
+       const bool is_active_dir = file && (file->typeflag & FILE_TYPE_FOLDER);
+
+       if ((params->flag & FILE_DIRSEL_ONLY) == 0) {
+               but = uiDefBut(block, UI_BTYPE_TEXT, -1, "",
+                                          min_x, line_y, line2_w, btn_h,
+                                          is_active_dir ? (char *)"" : 
params->file,
+                                          0.0, (float)FILE_MAXFILE, 0, 0,
+                                          TIP_(overwrite_alert ? N_("File 
name, overwrite existing") : N_("File name")));
+               UI_but_func_complete_set(but, autocomplete_file, NULL);
+               UI_but_flag_enable(but, UI_BUT_NO_UTF8);
+               UI_but_flag_disable(but, UI_BUT_UNDO);
+               /* silly workaround calling NFunc to ensure this does not get 
called
+                * immediate ui_apply_but_func but only after button 
deactivates */
+               UI_but_funcN_set(but, file_filename_enter_handle, NULL, but);
+
+               /* check if this overrides a file and if the operator option is 
used */
+               if (overwrite_alert) {
+                       UI_but_flag_enable(but, UI_BUT_REDALERT);
+               }
        }
 
+#if 0
        /* Filename number increment / decrement buttons. */
        if (fnumbuttons && (params->flag & FILE_DIRSEL_ONLY) == 0) {
                UI_block_align_begin(block);
@@ -225,6 +277,7 @@ void file_draw_buttons(const bContext *C, ARegion *ar)
                RNA_int_set(UI_but_operator_ptr_get(but), "increment", 1);
                UI_block_align_end(block);
        }
+#endif
 
        /* Execute / cancel buttons. */
        if (loadbutton) {
@@ -243,17 +296,18 @@ void file_draw_buttons(const bContext *C, ARegion *ar)
 
                but = uiDefButO(
                        block, UI_BTYPE_BUT, "FILE_OT_execute", 
WM_OP_EXEC_REGION_WIN, str_exec,
-                       max_x - loadbutton, line1_y, loadbutton, btn_h, "");
+                       max_x - loadbutton, line_y, loadbutton, btn_h, "");
                /* Just a display hint. */
                UI_but_flag_enable(but, UI_BUT_ACTIVE_DEFAULT);
 
                uiDefButO(block, UI_BTYPE_BUT, "FILE_OT_cancel", 
WM_OP_EXEC_REGION_WIN, IFACE_("Cancel"),
-                         max_x - loadbutton, line2_y, loadbutton, btn_h, "");
+                         max_x - loadbutton, line_y, loadbutton, btn_h, "");
        }
 
        UI_block_end(C, block);
        UI_block_draw(C, block);
 }
+#endif
 
 
 static void draw_tile(int sx, int sy, int width, int height, int colorid, int 
shade)
diff --git a/source/blender/editors/space_file/file_intern.h 
b/source/blender/editors/space_file/file_intern.h
index 46e30e556d1..ef6a73bfac4 100644
--- a/source/blender/editors/space_file/file_intern.h
+++ b/source/blender/editors/space_file/file_intern.h
@@ -44,7 +44,10 @@ struct ARegion *file_tools_region(struct ScrArea *sa);
 
 #define SMALL_SIZE_CHECK(_size) ((_size) < 64)  /* Related to 
FileSelectParams.thumbnail_size. */
 
-void file_draw_buttons(const bContext *C, ARegion *ar);
+#if 0
+void file_draw_filepath_buttons(const bContext *C, ARegion *ar);
+void file_draw_execute_buttons(const bContext *C, ARegion *ar);
+#endif
 void file_calc_previews(const bContext *C, ARegion *ar);


@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to