diff options
author | Andrea Weikert <elubie@gmx.net> | 2009-09-12 23:54:39 +0400 |
---|---|---|
committer | Andrea Weikert <elubie@gmx.net> | 2009-09-12 23:54:39 +0400 |
commit | 9a25d22326060395b09cd6d81d7b4ac080bafb8f (patch) | |
tree | eb9ef68ff4b155f69d3d8beedc221b72d92ea83c /source/blender/editors/space_file/file_ops.c | |
parent | c1e2e3fea2dd1b22cf22a9dca4d88bde2d280ab6 (diff) |
2.5 filebrowser
Appending and Linking
* Linking Operator, invokes filebrowser for Append/Link
* Separated the append/link function into three parts:
** BLO_library_append_begin finds main for appending
** BLO_library_append_named_part appends one Object,Group, Material, ...
** BLO_library_append_end actually reads and expands the libraries
NOTE 1:
I also changed the returned properties for the filebrowser operators to the following convention:
"path" - the full path to a file or directory, means what is in directory + filename buttons in filebrowser
"directory" - the content of the directory button in filebrowser
"filename" - the content of the filename button in filebrowser
Usually only path should be required, but in some cases it might be more convenient to retrieve the parts separately.
Ton, Brecht: If you have time to take a look, let me know if anything needs to be fixed.
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, 27 insertions, 3 deletions
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index e1a6e346ce2..5d3c2c766a3 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -520,9 +520,11 @@ int file_exec(bContext *C, wmOperator *unused) wmOperator *op= sfile->op; sfile->op = NULL; + RNA_string_set(op->ptr, "filename", sfile->params->file); BLI_strncpy(name, sfile->params->dir, sizeof(name)); + RNA_string_set(op->ptr, "directory", name); strcat(name, sfile->params->file); - RNA_string_set(op->ptr, "filename", name); + RNA_string_set(op->ptr, "path", name); /* some ops have multiple files to select */ { @@ -872,11 +874,13 @@ void FILE_OT_bookmark_toggle(struct wmOperatorType *ot) int file_filenum_exec(bContext *C, wmOperator *op) { SpaceFile *sfile= CTX_wm_space_file(C); + ScrArea *sa= CTX_wm_area(C); int inc = RNA_int_get(op->ptr, "increment"); if(sfile->params && (inc != 0)) { BLI_newname(sfile->params->file, inc); - WM_event_add_notifier(C, NC_WINDOW, NULL); + ED_area_tag_redraw(sa); + // WM_event_add_notifier(C, NC_WINDOW, NULL); } return OPERATOR_FINISHED; @@ -916,6 +920,24 @@ int file_rename_exec(bContext *C, wmOperator *op) } +int file_rename_poll(bContext *C) +{ + int poll = ED_operator_file_active(C); + SpaceFile *sfile= CTX_wm_space_file(C); + + if (sfile && sfile->params) { + if (sfile->params->active_file < 0) { + poll= 0; + } else { + char dir[FILE_MAX], group[FILE_MAX]; + if (filelist_islibrary(sfile->files, dir, group)) poll= 0; + } + } + else + poll= 0; + return poll; +} + void FILE_OT_rename(struct wmOperatorType *ot) { /* identifiers */ @@ -924,7 +946,7 @@ void FILE_OT_rename(struct wmOperatorType *ot) /* api callbacks */ ot->exec= file_rename_exec; - ot->poll= ED_operator_file_active; /* <- important, handler is on window level */ + ot->poll= file_rename_poll; } @@ -938,6 +960,8 @@ int file_delete_poll(bContext *C) if (sfile->params->active_file < 0) { poll= 0; } else { + char dir[FILE_MAX], group[FILE_MAX]; + if (filelist_islibrary(sfile->files, dir, group)) poll= 0; file = filelist_file(sfile->files, sfile->params->active_file); if (file && S_ISDIR(file->type)) poll= 0; } |