This is an automated email from the git hooks/post-receive script. thansen pushed a commit to branch master in repository aseprite.
commit 573f68451ab0a446ed0c76825c17358628f086a5 Author: David Capello <[email protected]> Date: Fri Apr 15 19:59:25 2016 -0300 Add more scripting functions * App.open * Sprite.save and saveAs * Sprite.filename property --- src/app/script/app_object.cpp | 27 +++++++++++++++++ src/app/script/sprite_class.cpp | 66 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 89 insertions(+), 4 deletions(-) diff --git a/src/app/script/app_object.cpp b/src/app/script/app_object.cpp index 56c7f73..7294510 100644 --- a/src/app/script/app_object.cpp +++ b/src/app/script/app_object.cpp @@ -12,6 +12,8 @@ #include "app/script/console_object.h" #include "app/document.h" +#include "app/commands/commands.h" +#include "app/commands/params.h" #include "app/script/app_scripting.h" #include "app/script/sprite_wrap.h" #include "app/ui_context.h" @@ -26,6 +28,30 @@ namespace app { namespace { +script::result_t App_open(script::ContextHandle handle) +{ + script::Context ctx(handle); + if (!ctx.isString(0) || + !ctx.toString(0)) + return 0; + + const char* fn = ctx.toString(0); + + app::Document* oldDoc = UIContext::instance()->activeDocument(); + + Command* openCommand = CommandsModule::instance()->getCommandByName(CommandId::OpenFile); + Params params; + params.set("filename", fn); + UIContext::instance()->executeCommand(openCommand, params); + + app::Document* newDoc = UIContext::instance()->activeDocument(); + if (newDoc != oldDoc) + ctx.pushObject(unwrap_engine(ctx)->wrapSprite(newDoc), "Sprite"); + else + ctx.pushNull(); + return 1; +} + script::result_t App_get_activeSprite(script::ContextHandle handle) { script::Context ctx(handle); @@ -66,6 +92,7 @@ script::result_t App_get_version(script::ContextHandle handle) } const script::FunctionEntry App_methods[] = { + { "open", App_open, 1 }, { nullptr, nullptr, 0 } }; diff --git a/src/app/script/sprite_class.cpp b/src/app/script/sprite_class.cpp index 85be120..e1151b2 100644 --- a/src/app/script/sprite_class.cpp +++ b/src/app/script/sprite_class.cpp @@ -16,11 +16,13 @@ #include "app/commands/params.h" #include "app/document.h" #include "app/document_api.h" +#include "app/file/palette_file.h" #include "app/script/app_scripting.h" #include "app/script/sprite_wrap.h" #include "app/transaction.h" #include "app/ui/document_view.h" #include "app/ui_context.h" +#include "doc/palette.h" #include "doc/site.h" #include "doc/sprite.h" #include "script/engine.h" @@ -82,28 +84,81 @@ script::result_t Sprite_crop(script::ContextHandle handle) return 0; } +script::result_t Sprite_save(script::ContextHandle handle) +{ + script::Context ctx(handle); + + auto wrap = (SpriteWrap*)ctx.getThis(); + if (wrap) { + wrap->commit(); + + auto doc = wrap->document(); + auto uiCtx = UIContext::instance(); + uiCtx->setActiveDocument(doc); + Command* saveCommand = CommandsModule::instance()->getCommandByName(CommandId::SaveFile); + uiCtx->executeCommand(saveCommand); + } + + return 0; +} + script::result_t Sprite_saveAs(script::ContextHandle handle) { script::Context ctx(handle); const char* fn = ctx.requireString(0); + bool asCopy = ctx.getBool(1); auto wrap = (SpriteWrap*)ctx.getThis(); if (fn && wrap) { - Document* doc = wrap->document(); + wrap->commit(); + auto doc = wrap->document(); auto uiCtx = UIContext::instance(); uiCtx->setActiveDocument(doc); - Command* saveAsCommand = CommandsModule::instance()->getCommandByName(CommandId::SaveFileCopyAs); + Command* saveCommand = + CommandsModule::instance()->getCommandByName( + (asCopy ? CommandId::SaveFileCopyAs: + CommandId::SaveFile)); Params params; - params.set("filename", fn); - uiCtx->executeCommand(saveAsCommand, params); + if (asCopy) + params.set("filename", fn); + else + doc->setFilename(fn); + uiCtx->executeCommand(saveCommand, params); } return 0; } +script::result_t Sprite_loadPalette(script::ContextHandle handle) +{ + script::Context ctx(handle); + const char* fn = ctx.requireString(0); + + auto wrap = (SpriteWrap*)ctx.getThis(); + if (fn && wrap) { + auto doc = wrap->document(); + base::UniquePtr<doc::Palette> palette(load_palette(fn)); + if (palette) { + // TODO Merge this with the code in LoadPaletteCommand + doc->getApi(wrap->transaction()).setPalette( + wrap->sprite(), 0, palette); + } + } + + return 0; +} + +script::result_t Sprite_get_filename(script::ContextHandle handle) +{ + script::Context ctx(handle); + auto wrap = (SpriteWrap*)ctx.getThis(); + ctx.pushString(wrap->document()->filename().c_str()); + return 1; +} + script::result_t Sprite_get_width(script::ContextHandle handle) { script::Context ctx(handle); @@ -151,11 +206,14 @@ script::result_t Sprite_set_height(script::ContextHandle handle) const script::FunctionEntry Sprite_methods[] = { { "resize", Sprite_resize, 2 }, { "crop", Sprite_crop, 4 }, + { "save", Sprite_save, 2 }, { "saveAs", Sprite_saveAs, 2 }, + { "loadPalette", Sprite_loadPalette, 1 }, { nullptr, nullptr, 0 } }; const script::PropertyEntry Sprite_props[] = { + { "filename", Sprite_get_filename, nullptr }, { "width", Sprite_get_width, Sprite_set_width }, { "height", Sprite_get_height, Sprite_set_height }, { nullptr, nullptr, 0 } -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

