[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