diff options
author | Campbell Barton <ideasman42@gmail.com> | 2009-06-05 20:11:35 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2009-06-05 20:11:35 +0400 |
commit | 07b3e41e18611cc5c7206d1400303104f73054fc (patch) | |
tree | 24114223e4430dcd5bd95560965797c85bce3529 /source/blender/editors/space_file/file_ops.c | |
parent | 45ed196344a7534c9965015ca653c90f5f00d97f (diff) |
Blender file selector support for setting multiple selected files/dirs which operators can use.
This allows the sequencers Add-Image strip to work like it does in 2.4x.
- as well as setting the "filename" operator property, operators can have collections called "files" and "dirs" which are set when available.
- RNA_OperatorFileListElement as new collection type, its a bit redundant since each item only has a "name" property but its needed since we don't have a string array type.
- the file selector now prints operators it runs.
Tested with python, adding a list of images works to the sequencer works.
bpy.ops.SEQUENCER_OT_image_strip_add(name="MyImages", start_frame=54, channel=2, filename="/somedir/", replace_sel=True, files=[{"name":"test1.png"}, {"name":"test2.png"}])
Diffstat (limited to 'source/blender/editors/space_file/file_ops.c')
-rw-r--r-- | source/blender/editors/space_file/file_ops.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 94c023207f5..01f94741f59 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -480,6 +480,36 @@ int file_exec(bContext *C, wmOperator *unused) strcat(name, sfile->params->file); RNA_string_set(op->ptr, "filename", name); + /* some ops have multiple files to select */ + { + PointerRNA itemptr; + int i, numfiles = filelist_numfiles(sfile->files); + struct direntry *file; + if(RNA_struct_find_property(op->ptr, "files")) { + for (i=0; i<numfiles; i++) { + file = filelist_file(sfile->files, i); + if(file->flags & ACTIVE) { + if ((file->type & S_IFDIR)==0) { + RNA_collection_add(op->ptr, "files", &itemptr); + RNA_string_set(&itemptr, "name", file->relname); + } + } + } + } + + if(RNA_struct_find_property(op->ptr, "dirs")) { + for (i=0; i<numfiles; i++) { + file = filelist_file(sfile->files, i); + if(file->flags & ACTIVE) { + if ((file->type & S_IFDIR)) { + RNA_collection_add(op->ptr, "dirs", &itemptr); + RNA_string_set(&itemptr, "name", file->relname); + } + } + } + } + } + fsmenu_insert_entry(fsmenu_get(), FS_CATEGORY_RECENT, sfile->params->dir,0, 1); BLI_make_file_string(G.sce, name, BLI_gethome(), ".Bfs"); fsmenu_write_file(fsmenu_get(), name); |