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:
authorKévin Dietrich <kevin.dietrich@mailoo.org>2016-08-19 05:42:12 +0300
committerKévin Dietrich <kevin.dietrich@mailoo.org>2016-08-19 05:42:45 +0300
commitbf4875001de10d0053fc9377fa98349bd6e1e8a9 (patch)
tree125b6fd31ad0005d03a4766873c3aae79c3c790f /source/blender/editors/io/io_alembic.c
parent4d8ac1eaa5dac249577bcda5df963b802812fc2d (diff)
Fix T49111: Automatically add file path suffix for Alembic and Collada
export. This aligns the behaviour of the file selection with the other exporters. The Alembic case would fail if the filepath did not have an extension set. Also set a default file name for the Alembic export operator in case the Blender file was not saved before exporting.
Diffstat (limited to 'source/blender/editors/io/io_alembic.c')
-rw-r--r--source/blender/editors/io/io_alembic.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/source/blender/editors/io/io_alembic.c b/source/blender/editors/io/io_alembic.c
index 63c6f3dfecf..96a3ef1f2f6 100644
--- a/source/blender/editors/io/io_alembic.c
+++ b/source/blender/editors/io/io_alembic.c
@@ -68,8 +68,16 @@
static int wm_alembic_export_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
if (!RNA_struct_property_is_set(op->ptr, "filepath")) {
+ Main *bmain = CTX_data_main(C);
char filepath[FILE_MAX];
- BLI_strncpy(filepath, G.main->name, sizeof(filepath));
+
+ if (bmain->name[0] == '\0') {
+ BLI_strncpy(filepath, "untitled", sizeof(filepath));
+ }
+ else {
+ BLI_strncpy(filepath, bmain->name, sizeof(filepath));
+ }
+
BLI_replace_extension(filepath, sizeof(filepath), ".abc");
RNA_string_set(op->ptr, "filepath", filepath);
}
@@ -213,6 +221,20 @@ static void wm_alembic_export_draw(bContext *UNUSED(C), wmOperator *op)
ui_alembic_export_settings(op->layout, &ptr);
}
+static bool wm_alembic_export_check(bContext *UNUSED(C), wmOperator *op)
+{
+ char filepath[FILE_MAX];
+ RNA_string_get(op->ptr, "filepath", filepath);
+
+ if (!BLI_testextensie(filepath, ".abc")) {
+ BLI_ensure_extension(filepath, FILE_MAX, ".abc");
+ RNA_string_set(op->ptr, "filepath", filepath);
+ return true;
+ }
+
+ return false;
+}
+
void WM_OT_alembic_export(wmOperatorType *ot)
{
ot->name = "Export Alembic";
@@ -223,6 +245,7 @@ void WM_OT_alembic_export(wmOperatorType *ot)
ot->exec = wm_alembic_export_exec;
ot->poll = WM_operator_winactive;
ot->ui = wm_alembic_export_draw;
+ ot->check = wm_alembic_export_check;
WM_operator_properties_filesel(ot, FILE_TYPE_FOLDER | FILE_TYPE_ALEMBIC,
FILE_BLENDER, FILE_SAVE, WM_FILESEL_FILEPATH,