Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2010-07-02 21:44:57 +0400
committerCampbell Barton <ideasman42@gmail.com>2010-07-02 21:44:57 +0400
commit213a45bed83bcb8afdc8ada8fd69b229a4a522f9 (patch)
tree93325f5369261cb0be3a0f50be33c51b7dc6e596 /source/blender
parent643ec7a12f7f441b0c74430cbfd4beee3c7cc9be (diff)
changes to file selector so 'directory' property from an operator is used when available.
also made some other changes to the path functions used.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/editors/space_file/filesel.c36
1 files changed, 23 insertions, 13 deletions
diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c
index abb3a6a7a35..086d4f9cce2 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -102,7 +102,6 @@ FileSelectParams* ED_fileselect_get_params(struct SpaceFile *sfile)
short ED_fileselect_set_params(SpaceFile *sfile)
{
- char name[FILE_MAX], dir[FILE_MAX], file[FILE_MAX];
FileSelectParams *params;
wmOperator *op = sfile->op;
@@ -110,10 +109,7 @@ short ED_fileselect_set_params(SpaceFile *sfile)
if (!sfile->params) {
sfile->params= MEM_callocN(sizeof(FileSelectParams), "fileselparams");
/* set path to most recently opened .blend */
- BLI_strncpy(sfile->params->dir, G.sce, sizeof(sfile->params->dir));
- BLI_split_dirfile(G.sce, dir, file);
- BLI_strncpy(sfile->params->file, file, sizeof(sfile->params->file));
- BLI_make_file_string(G.sce, sfile->params->dir, dir, ""); /* XXX needed ? - also solve G.sce */
+ BLI_split_dirfile(G.sce, sfile->params->dir, sfile->params->file);
}
params = sfile->params;
@@ -127,19 +123,33 @@ short ED_fileselect_set_params(SpaceFile *sfile)
else
params->type = FILE_SPECIAL;
- if (RNA_property_is_set(op->ptr, "filepath")) {
+ if (RNA_struct_find_property(op->ptr, "filepath") && RNA_property_is_set(op->ptr, "filepath")) {
+ char name[FILE_MAX];
RNA_string_get(op->ptr, "filepath", name);
if (params->type == FILE_LOADLIB) {
BLI_strncpy(params->dir, name, sizeof(params->dir));
- BLI_cleanup_dir(G.sce, params->dir);
- } else {
- /* if operator has path set, use it, otherwise keep the last */
- BLI_path_abs(name, G.sce);
- BLI_split_dirfile(name, dir, file);
- BLI_strncpy(params->file, file, sizeof(params->file));
- BLI_make_file_string(G.sce, params->dir, dir, ""); /* XXX needed ? - also solve G.sce */
+ sfile->params->file[0]= '\0';
+ }
+ else {
+ BLI_split_dirfile(name, sfile->params->dir, sfile->params->file);
}
}
+ else {
+ if (RNA_struct_find_property(op->ptr, "directory") && RNA_property_is_set(op->ptr, "directory")) {
+ RNA_string_get(op->ptr, "directory", params->dir);
+ sfile->params->file[0]= '\0';
+ }
+
+ if (RNA_struct_find_property(op->ptr, "filename") && RNA_property_is_set(op->ptr, "filename")) {
+ RNA_string_get(op->ptr, "filename", params->file);
+ }
+ }
+
+ if(params->dir[0]) {
+ BLI_cleanup_dir(G.sce, params->dir);
+ BLI_path_abs(params->dir, G.sce);
+ }
+
params->filter = 0;
if(RNA_struct_find_property(op->ptr, "filter_blender"))
params->filter |= RNA_boolean_get(op->ptr, "filter_blender") ? BLENDERFILE : 0;