[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37552] trunk/blender/source/blender: directory only filesel for operators which don' t have a filepath or filename property.

Dalai Felinto dfelinto at gmail.com
Fri Jun 17 23:06:53 CEST 2011


Hi Campbell,

this broke "Add Image" operator in the sequencer -
http://www.pasteall.org/pic/show.php?id=13792
right now I can't select individual images, and using 'a' (to select all)
select only folders.

I wonder if the solution is to allow "Add Image" to select a directory (and
use all images from it). Or to revert it to previous behaviour (and one
select the images from the interested folder).

Thanks,
Dalai

2011/6/16 Campbell Barton <ideasman42 at gmail.com>

> Revision: 37552
>
> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37552
> Author:   campbellbarton
> Date:     2011-06-16 15:01:22 +0000 (Thu, 16 Jun 2011)
> Log Message:
> -----------
> directory only filesel for operators which don't have a filepath or
> filename property.
>
> Modified Paths:
> --------------
>    trunk/blender/source/blender/editors/space_file/file_draw.c
>    trunk/blender/source/blender/editors/space_file/file_ops.c
>    trunk/blender/source/blender/editors/space_file/filelist.c
>    trunk/blender/source/blender/editors/space_file/filesel.c
>    trunk/blender/source/blender/makesdna/DNA_space_types.h
>
> Modified: trunk/blender/source/blender/editors/space_file/file_draw.c
> ===================================================================
> --- trunk/blender/source/blender/editors/space_file/file_draw.c 2011-06-16
> 13:24:44 UTC (rev 37551)
> +++ trunk/blender/source/blender/editors/space_file/file_draw.c 2011-06-16
> 15:01:22 UTC (rev 37552)
> @@ -185,16 +185,18 @@
>                uiButSetCompleteFunc(but, autocomplete_directory, NULL);
>                uiButSetFlag(but, UI_BUT_NO_UTF8);
>
> -               but = uiDefBut(block, TEX, B_FS_FILENAME, "",
> -                                min_x, line2_y, line2_w-chan_offs, btn_h,
> -                                params->file, 0.0, (float)FILE_MAXFILE-1,
> 0, 0,
> -                                overwrite_alert ?"File name, overwrite
> existing." : "File name.");
> -               uiButSetCompleteFunc(but, autocomplete_file, NULL);
> -               uiButSetFlag(but, UI_BUT_NO_UTF8);
> -
> -               /* check if this overrides a file and if the operator
> option is used */
> -               if(overwrite_alert) {
> -                       uiButSetFlag(but, UI_BUT_REDALERT);
> +               if((params->flag & FILE_DIRSEL_ONLY) == 0) {
> +                       but = uiDefBut(block, TEX, B_FS_FILENAME, "",
> +                                        min_x, line2_y, line2_w-chan_offs,
> btn_h,
> +                                        params->file, 0.0,
> (float)FILE_MAXFILE-1, 0, 0,
> +                                        overwrite_alert ?"File name,
> overwrite existing." : "File name.");
> +                       uiButSetCompleteFunc(but, autocomplete_file, NULL);
> +                       uiButSetFlag(but, UI_BUT_NO_UTF8);
> +
> +                       /* check if this overrides a file and if the
> operator option is used */
> +                       if(overwrite_alert) {
> +                               uiButSetFlag(but, UI_BUT_REDALERT);
> +                       }
>                }
>
>                /* clear func */
> @@ -202,7 +204,7 @@
>        }
>
>        /* Filename number increment / decrement buttons. */
> -       if (fnumbuttons) {
> +       if (fnumbuttons && (params->flag & FILE_DIRSEL_ONLY) == 0) {
>                uiBlockBeginAlign(block);
>                but = uiDefIconButO(block, BUT, "FILE_OT_filenum", 0,
> ICON_ZOOMOUT,
>                                min_x + line2_w + separator - chan_offs,
> line2_y,
>
> Modified: trunk/blender/source/blender/editors/space_file/file_ops.c
> ===================================================================
> --- trunk/blender/source/blender/editors/space_file/file_ops.c  2011-06-16
> 13:24:44 UTC (rev 37551)
> +++ trunk/blender/source/blender/editors/space_file/file_ops.c  2011-06-16
> 15:01:22 UTC (rev 37552)
> @@ -205,9 +205,10 @@
>        SpaceFile *sfile= CTX_wm_space_file(C);
>        FileSelect retval = FILE_SELECT_NOTHING;
>        FileSelection sel= file_selection_get(C, rect, fill); /* get the
> selection */
> +       const FileCheckType check_type= (sfile->params->flag &
> FILE_DIRSEL_ONLY) ? CHECK_DIRS : CHECK_ALL;
>
>        /* flag the files as selected in the filelist */
> -       filelist_select(sfile->files, &sel, select, SELECTED_FILE,
> CHECK_ALL);
> +       filelist_select(sfile->files, &sel, select, SELECTED_FILE,
> check_type);
>
>        /* Don't act on multiple selected files */
>        if (sel.first != sel.last) select = 0;
> @@ -216,7 +217,7 @@
>        if ( (sel.last >= 0) && ((select == FILE_SEL_ADD) || (select ==
> FILE_SEL_TOGGLE)) )
>        {
>                /* Check last selection, if selected, act on the file or dir
> */
> -               if (filelist_is_selected(sfile->files, sel.last,
> CHECK_ALL)) {
> +               if (filelist_is_selected(sfile->files, sel.last,
> check_type)) {
>                        retval = file_select_do(C, sel.last);
>                }
>        }
> @@ -378,9 +379,11 @@
>        /* select all only if previously no file was selected */
>        if (is_selected) {
>                filelist_select(sfile->files, &sel, FILE_SEL_REMOVE,
> SELECTED_FILE, CHECK_ALL);
> -       } else {
> -               filelist_select(sfile->files, &sel, FILE_SEL_ADD,
> SELECTED_FILE, CHECK_FILES);
>        }
> +       else {
> +               const FileCheckType check_type= (sfile->params->flag &
> FILE_DIRSEL_ONLY) ? CHECK_DIRS : CHECK_FILES;
> +               filelist_select(sfile->files, &sel, FILE_SEL_ADD,
> SELECTED_FILE, check_type);
> +       }
>        ED_area_tag_redraw(sa);
>        return OPERATOR_FINISHED;
>  }
>
> Modified: trunk/blender/source/blender/editors/space_file/filelist.c
> ===================================================================
> --- trunk/blender/source/blender/editors/space_file/filelist.c  2011-06-16
> 13:24:44 UTC (rev 37551)
> +++ trunk/blender/source/blender/editors/space_file/filelist.c  2011-06-16
> 15:01:22 UTC (rev 37552)
> @@ -915,6 +915,8 @@
>                int check_ok = 0;
>                switch (check) {
>                        case CHECK_DIRS:
> +                               check_ok = S_ISDIR(file->type);
> +                               break;
>                        case CHECK_ALL:
>                                check_ok = 1;
>                                break;
>
> Modified: trunk/blender/source/blender/editors/space_file/filesel.c
> ===================================================================
> --- trunk/blender/source/blender/editors/space_file/filesel.c   2011-06-16
> 13:24:44 UTC (rev 37551)
> +++ trunk/blender/source/blender/editors/space_file/filesel.c   2011-06-16
> 15:01:22 UTC (rev 37552)
> @@ -121,6 +121,9 @@
>
>        /* set the parameters from the operator, if it exists */
>        if (op) {
> +               short is_filename= FALSE;
> +               short is_dir= FALSE;
> +
>                BLI_strncpy(params->title, op->type->name,
> sizeof(params->title));
>
>                if(RNA_struct_find_property(op->ptr, "filemode"))
> @@ -128,7 +131,7 @@
>                else
>                        params->type = FILE_SPECIAL;
>
> -               if (RNA_struct_find_property(op->ptr, "filepath") &&
> RNA_property_is_set(op->ptr, "filepath")) {
> +               if ((is_dir= is_filename= RNA_struct_find_property(op->ptr,
> "filepath")!=NULL) && RNA_property_is_set(op->ptr, "filepath")) {
>                        char name[FILE_MAX];
>                        RNA_string_get(op->ptr, "filepath", name);
>                        if (params->type == FILE_LOADLIB) {
> @@ -140,12 +143,13 @@
>                        }
>                }
>                else {
> -                       if (RNA_struct_find_property(op->ptr, "directory")
> && RNA_property_is_set(op->ptr, "directory")) {
> +                       if ((is_dir= RNA_struct_find_property(op->ptr,
> "directory")!=NULL) && RNA_property_is_set(op->ptr, "directory")) {
>                                RNA_string_get(op->ptr, "directory",
> params->dir);
>                                sfile->params->file[0]= '\0';
> +                               is_dir= TRUE;
>                        }
>
> -                       if (RNA_struct_find_property(op->ptr, "filename")
> && RNA_property_is_set(op->ptr, "filename")) {
> +                       if ((is_filename= RNA_struct_find_property(op->ptr,
> "filename")!=NULL) && RNA_property_is_set(op->ptr, "filename")) {
>                                RNA_string_get(op->ptr, "filename",
> params->file);
>                        }
>                }
> @@ -155,6 +159,10 @@
>                        BLI_path_abs(params->dir, G.main->name);
>                }
>
> +               if(is_dir==TRUE && is_filename==FALSE) {
> +                       params->flag |= FILE_DIRSEL_ONLY;
> +               }
> +
>                params->filter = 0;
>                if(RNA_struct_find_property(op->ptr, "filter_blender"))
>                        params->filter |= RNA_boolean_get(op->ptr,
> "filter_blender") ? BLENDERFILE : 0;
>
> Modified: trunk/blender/source/blender/makesdna/DNA_space_types.h
> ===================================================================
> --- trunk/blender/source/blender/makesdna/DNA_space_types.h     2011-06-16
> 13:24:44 UTC (rev 37551)
> +++ trunk/blender/source/blender/makesdna/DNA_space_types.h     2011-06-16
> 15:01:22 UTC (rev 37552)
> @@ -696,19 +696,20 @@
>  #define FILE_OPENFILE          0
>  #define FILE_SAVE                      1
>
> -/* sfile->flag and simasel->flag */
> -#define FILE_SHOWSHORT         1
> -#define FILE_RELPATH           2 /* was FILE_STRINGCODE */
> -#define FILE_LINK                      4
> -#define FILE_HIDE_DOT          8
> -#define FILE_AUTOSELECT                16
> -#define FILE_ACTIVELAY         32
> -#define FILE_ATCURSOR          64
> -#define FILE_SYNCPOSE          128
> -#define FILE_FILTER                    256
> -#define FILE_BOOKMARKS         512
> -#define FILE_GROUP_INSTANCE    1024
> +/* sfile->params->flag and simasel->flag */
> +#define FILE_SHOWSHORT         (1<<0)
> +#define FILE_RELPATH           (1<<1) /* was FILE_STRINGCODE */
> +#define FILE_LINK                      (1<<2)
> +#define FILE_HIDE_DOT          (1<<3)
> +#define FILE_AUTOSELECT                (1<<4)
> +#define FILE_ACTIVELAY         (1<<5)
> +#define FILE_ATCURSOR          (1<<6)
> +#define FILE_DIRSEL_ONLY       (1<<7)
> +#define FILE_FILTER                    (1<<8)
> +#define FILE_BOOKMARKS         (1<<9)
> +#define FILE_GROUP_INSTANCE    (1<<10)
>
> +
>  /* files in filesel list: file types */
>  #define BLENDERFILE                    (1<<2)
>  #define BLENDERFILE_BACKUP     (1<<3)
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>


More information about the Bf-committers mailing list