diff --git a/src/containers/blocks.jsx b/src/containers/blocks.jsx index f3426c5ff..0b9264a02 100644 --- a/src/containers/blocks.jsx +++ b/src/containers/blocks.jsx @@ -130,6 +130,9 @@ class Blocks extends React.Component { log.warn('cannot open docs URI', e); } }); + toolboxWorkspace.registerButtonCallback('TW_MIGRATION', () => { + window.open('https://github.com/TurboWarp/scratch-gui/discussions/100'); + }); // Store the xml of the toolbox that is actually rendered. // This is used in componentDidUpdate instead of prevProps, because diff --git a/src/lib/libraries/extensions/index.jsx b/src/lib/libraries/extensions/index.jsx index ab94fc10c..a86eff4b4 100644 --- a/src/lib/libraries/extensions/index.jsx +++ b/src/lib/libraries/extensions/index.jsx @@ -46,6 +46,8 @@ import gdxforInsetIconURL from './gdxfor/gdxfor-small.svg'; import gdxforConnectionIconURL from './gdxfor/gdxfor-illustration.svg'; import gdxforConnectionSmallIconURL from './gdxfor/gdxfor-small.svg'; +import twIcon from './tw/tw.svg'; + import customExtensionIcon from './custom/custom.svg'; export default [ @@ -320,6 +322,25 @@ export default [ ), helpLink: 'https://scratch.mit.edu/vernier' }, + { + name: ( + + ), + extensionId: 'tw', + iconURL: twIcon, + description: ( + + ), + featured: true + }, { name: ( + + + diff --git a/src/lib/make-toolbox-xml.js b/src/lib/make-toolbox-xml.js index f7858a4a8..44e077ede 100644 --- a/src/lib/make-toolbox-xml.js +++ b/src/lib/make-toolbox-xml.js @@ -724,23 +724,15 @@ const myBlocks = function () { }; // tw: add custom category -const turbowarp = function () { - return ` - - - `; -}; -const turbowarpIsCompiledBlock = function () { - return ` - - is compiled? - - `; -}; +// eslint-disable-next-line max-len +const turbowarpIsCompiledBlock = `is compiled?`; +const turbowarpCategory = ` + + ${turbowarpIsCompiledBlock}`; /* eslint-enable no-unused-vars */ const xmlOpen = ''; @@ -790,9 +782,11 @@ const makeToolboxXML = function (isInitialSetup, isStage = true, targetId, categ const variablesXML = moveCategory('data') || variables(isInitialSetup, isStage, targetId); const myBlocksXML = moveCategory('procedures') || myBlocks(isInitialSetup, isStage, targetId); // tw: add custom category - let turbowarpXML = moveCategory('tw') || turbowarp(isInitialSetup, isStage, targetId); + let turbowarpXML = moveCategory('tw') || turbowarpCategory; // terrible hack to add "is compiled" to the top of the category... - turbowarpXML = turbowarpXML.replace('