From dd83287b858fcfe5d1b6b057ca1f5dd133125c7c Mon Sep 17 00:00:00 2001 From: jmoenig Date: Wed, 16 Jun 2021 23:22:59 +0200 Subject: [PATCH] added object-naming extension primitive --- HISTORY.md | 1 + src/extensions.js | 26 +++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/HISTORY.md b/HISTORY.md index 263e4207..a2303383 100755 --- a/HISTORY.md +++ b/HISTORY.md @@ -11,6 +11,7 @@ * threads: added exception handling primitives for try/catch * extensions: added try-catch extension primitives * updated try-catch library +* extensions: added object-naming extension primitive ### 2021-06-15 * extensions: tweaked world-map primitives diff --git a/src/extensions.js b/src/extensions.js index 427a9cde..0a997dd3 100644 --- a/src/extensions.js +++ b/src/extensions.js @@ -28,7 +28,8 @@ // Global settings ///////////////////////////////////////////////////// /*global modules, List, StageMorph, Costume, SpeechSynthesisUtterance, Sound, -IDE_Morph, CamSnapshotDialogMorph, SoundRecorderDialogMorph*/ +IDE_Morph, CamSnapshotDialogMorph, SoundRecorderDialogMorph, SpriteMorph, +isSnapObject*/ modules.extensions = '2021-June-16'; @@ -421,3 +422,26 @@ SnapExtensions.set( return result; } ); + +// Object properties (obj_) + +SnapExtensions.set( + 'obj_name(obj, name)', + function (obj, name, proc) { + var ide = this.parentThatIsA(IDE_Morph); + proc.assertType(obj, [SpriteMorph, StageMorph, Costume, Sound]); + if (isSnapObject(obj)) { + obj.setName(ide.newSpriteName(name, obj)); + ide.recordUnsavedChanges(); + } else if (obj instanceof Costume) { + obj.name = this.newCostumeName(name, obj); + obj.version = Date.now(); + ide.hasChangedMedia = true; + ide.recordUnsavedChanges(); + } else if (obj instanceof Sound) { + obj.name = ide.newSoundName(name); + ide.hasChangedMedia = true; + ide.recordUnsavedChanges(); + } + } +);