From 172ddfc7fafb7ff4fad93156b17a690c439c90c3 Mon Sep 17 00:00:00 2001 From: Monochromasity <148627069+Monochromasity@users.noreply.github.com> Date: Thu, 10 Jul 2025 15:05:38 +0100 Subject: [PATCH 1/6] Add files via upload --- .../extensions/Monochromasity/newwindows.js | 201 ++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 static/extensions/Monochromasity/newwindows.js diff --git a/static/extensions/Monochromasity/newwindows.js b/static/extensions/Monochromasity/newwindows.js new file mode 100644 index 000000000..b9d8bc845 --- /dev/null +++ b/static/extensions/Monochromasity/newwindows.js @@ -0,0 +1,201 @@ +// Name: New Windows +// ID: monowindows +// Description: Lets you open websites in new windows. +// By: Monochromasity + +(function (Scratch) { + "use strict"; + + class NewWindows { + getInfo() { + return { + id: 'monowindows', + color1: '#297bff', + name: 'New Windows', + blocks: [ + { + opcode: 'openwindow', + blockType: Scratch.BlockType.COMMAND, + text: 'open website [WEB] in new window with ID: [ID] width: [WIDTH] height: [HEIGHT] distance from left: [LEFT] distance from top: [TOP] show menu bar: [MENUBAR] add status bar: [STATUSBAR] show title bar: [TITLEBAR] fullscreen (Internet Explorer): [FULLSCREEN] show address field (Opera): [LOCATION] resizable (Internet Explorer): [RESIZABLE] show scrollbars (Internet Explorer, Firefox, Opera): [SCROLL] show toolbar (Internet Explorer, Firefox): [TOOLBAR] replace (Deprecated): [REPLACE]', + arguments: { + WEB: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'https://penguinmod.com' + }, + ID: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'myWindow' + }, + WIDTH: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: '400' + }, + HEIGHT: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: '400' + }, + LEFT: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: '0' + }, + TOP: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: '0' + }, + MENUBAR: { + type: Scratch.ArgumentType.STRING, + menu: 'MENUBAR', + defaultValue: 'no' + }, + STATUSBAR: { + type: Scratch.ArgumentType.STRING, + menu: 'STATUSBAR', + defaultValue: 'no' + }, + TITLEBAR: { + type: Scratch.ArgumentType.STRING, + menu: 'TITLEBAR', + defaultValue: 'no' + }, + FULLSCREEN: { + type: Scratch.ArgumentType.STRING, + menu: 'FULLSCREEN', + defaultValue: 'no' + }, + LOCATION: { + type: Scratch.ArgumentType.STRING, + menu: 'LOCATION', + defaultValue: 'no' + }, + RESIZABLE: { + type: Scratch.ArgumentType.STRING, + menu: 'RESIZABLE', + defaultValue: 'yes' + }, + SCROLL: { + type: Scratch.ArgumentType.STRING, + menu: 'SCROLL', + defaultValue: 'yes' + }, + TOOLBAR: { + type: Scratch.ArgumentType.STRING, + menu: 'TOOLBAR', + defaultValue: 'yes' + }, + REPLACE: { + type: Scratch.ArgumentType.STRING, + menu: 'REPLACE', + defaultValue: 'false' + } + } + }, + { + opcode: 'closewithid', + blockType: Scratch.BlockType.COMMAND, + text: 'close window with id [ID]', + arguments: { + ID: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'myWindow' + } + } + }, + { + opcode: 'isopen', + blockType: Scratch.BlockType.BOOLEAN, + text: 'is window with ID [ID] open?', + arguments: { + ID: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'myWindow' + } + } + } + ], + menus: { + FULLSCREEN: { + acceptReporters: true, + items: ['yes', 'no'] + }, + MENUBAR: { + acceptReporters: true, + items: ['yes', 'no'] + }, + STATUSBAR: { + acceptReporters: true, + items: ['yes', 'no'] + }, + TITLEBAR: { + acceptReporters: true, + items: ['yes', 'no'] + }, + LOCATION: { + acceptReporters: true, + items: ['yes', 'no'] + }, + RESIZABLE: { + acceptReporters: true, + items: ['yes', 'no'] + }, + SCROLL: { + acceptReporters: true, + items: ['yes', 'no'] + }, + TOOLBAR: { + acceptReporters: true, + items: ['yes', 'no'] + }, + REPLACE: { + acceptReporters: true, + items: ['true', 'false'] + } + } + }; + } + + openwindow(args) { + let web = args.WEB; + let iduf = args.ID; + let id = iduf.toLowerCase(); + let width = args.WIDTH; + let height = args.HEIGHT; + let strstart = "width="; + let full = args.FULLSCREEN; + let left = Math.abs(Number(args.LEFT)); + let top = Math.abs(Number(args.TOP)); + let menubar = args.MENUBAR; + let status = args.STATUSBAR; + let titlebar = args.TITLEBAR; + let location = args.LOCATION; + let resizable = args.RESIZABLE; + let scroll = args.SCROLL; + let toolbar = args.TOOLBAR; + let replace = args.REPLACE; + let str = strstart.concat(width, ",height=", height, ",fullscreen=", full, ",left=", left, ",top=", top, ",menubar=", menubar, ",status=", status, ",titlebar=", titlebar, ",location=", location, ",resizable=", resizable, ",scrollbars=", scroll, ",toolbar=", toolbar); + let name = "windows" + id; + this[name] = window.open(web, '', str, replace); + } + closewithid(args) { + let iduf = args.ID; + let id = iduf.toLowerCase(); + let name = "windows" + id; + this[name].close(); + } + isopen(args) { + let iduf = args.ID; + let id = iduf.toLowerCase(); + let name = "windows" + id; + try { + if (!this[name].closed) { + return true; + } else { + return false; + } + } + catch(err) { + return false; + } + } + } + Scratch.extensions.register(new NewWindows()); +})(Scratch); From 6a485ae5924e2f244a64739bcb12c45749999124 Mon Sep 17 00:00:00 2001 From: Monochromasity <148627069+Monochromasity@users.noreply.github.com> Date: Thu, 10 Jul 2025 15:06:05 +0100 Subject: [PATCH 2/6] Delete static/extensions/Monochromasity/newwindows.js --- .../extensions/Monochromasity/newwindows.js | 201 ------------------ 1 file changed, 201 deletions(-) delete mode 100644 static/extensions/Monochromasity/newwindows.js diff --git a/static/extensions/Monochromasity/newwindows.js b/static/extensions/Monochromasity/newwindows.js deleted file mode 100644 index b9d8bc845..000000000 --- a/static/extensions/Monochromasity/newwindows.js +++ /dev/null @@ -1,201 +0,0 @@ -// Name: New Windows -// ID: monowindows -// Description: Lets you open websites in new windows. -// By: Monochromasity - -(function (Scratch) { - "use strict"; - - class NewWindows { - getInfo() { - return { - id: 'monowindows', - color1: '#297bff', - name: 'New Windows', - blocks: [ - { - opcode: 'openwindow', - blockType: Scratch.BlockType.COMMAND, - text: 'open website [WEB] in new window with ID: [ID] width: [WIDTH] height: [HEIGHT] distance from left: [LEFT] distance from top: [TOP] show menu bar: [MENUBAR] add status bar: [STATUSBAR] show title bar: [TITLEBAR] fullscreen (Internet Explorer): [FULLSCREEN] show address field (Opera): [LOCATION] resizable (Internet Explorer): [RESIZABLE] show scrollbars (Internet Explorer, Firefox, Opera): [SCROLL] show toolbar (Internet Explorer, Firefox): [TOOLBAR] replace (Deprecated): [REPLACE]', - arguments: { - WEB: { - type: Scratch.ArgumentType.STRING, - defaultValue: 'https://penguinmod.com' - }, - ID: { - type: Scratch.ArgumentType.STRING, - defaultValue: 'myWindow' - }, - WIDTH: { - type: Scratch.ArgumentType.NUMBER, - defaultValue: '400' - }, - HEIGHT: { - type: Scratch.ArgumentType.NUMBER, - defaultValue: '400' - }, - LEFT: { - type: Scratch.ArgumentType.NUMBER, - defaultValue: '0' - }, - TOP: { - type: Scratch.ArgumentType.NUMBER, - defaultValue: '0' - }, - MENUBAR: { - type: Scratch.ArgumentType.STRING, - menu: 'MENUBAR', - defaultValue: 'no' - }, - STATUSBAR: { - type: Scratch.ArgumentType.STRING, - menu: 'STATUSBAR', - defaultValue: 'no' - }, - TITLEBAR: { - type: Scratch.ArgumentType.STRING, - menu: 'TITLEBAR', - defaultValue: 'no' - }, - FULLSCREEN: { - type: Scratch.ArgumentType.STRING, - menu: 'FULLSCREEN', - defaultValue: 'no' - }, - LOCATION: { - type: Scratch.ArgumentType.STRING, - menu: 'LOCATION', - defaultValue: 'no' - }, - RESIZABLE: { - type: Scratch.ArgumentType.STRING, - menu: 'RESIZABLE', - defaultValue: 'yes' - }, - SCROLL: { - type: Scratch.ArgumentType.STRING, - menu: 'SCROLL', - defaultValue: 'yes' - }, - TOOLBAR: { - type: Scratch.ArgumentType.STRING, - menu: 'TOOLBAR', - defaultValue: 'yes' - }, - REPLACE: { - type: Scratch.ArgumentType.STRING, - menu: 'REPLACE', - defaultValue: 'false' - } - } - }, - { - opcode: 'closewithid', - blockType: Scratch.BlockType.COMMAND, - text: 'close window with id [ID]', - arguments: { - ID: { - type: Scratch.ArgumentType.STRING, - defaultValue: 'myWindow' - } - } - }, - { - opcode: 'isopen', - blockType: Scratch.BlockType.BOOLEAN, - text: 'is window with ID [ID] open?', - arguments: { - ID: { - type: Scratch.ArgumentType.STRING, - defaultValue: 'myWindow' - } - } - } - ], - menus: { - FULLSCREEN: { - acceptReporters: true, - items: ['yes', 'no'] - }, - MENUBAR: { - acceptReporters: true, - items: ['yes', 'no'] - }, - STATUSBAR: { - acceptReporters: true, - items: ['yes', 'no'] - }, - TITLEBAR: { - acceptReporters: true, - items: ['yes', 'no'] - }, - LOCATION: { - acceptReporters: true, - items: ['yes', 'no'] - }, - RESIZABLE: { - acceptReporters: true, - items: ['yes', 'no'] - }, - SCROLL: { - acceptReporters: true, - items: ['yes', 'no'] - }, - TOOLBAR: { - acceptReporters: true, - items: ['yes', 'no'] - }, - REPLACE: { - acceptReporters: true, - items: ['true', 'false'] - } - } - }; - } - - openwindow(args) { - let web = args.WEB; - let iduf = args.ID; - let id = iduf.toLowerCase(); - let width = args.WIDTH; - let height = args.HEIGHT; - let strstart = "width="; - let full = args.FULLSCREEN; - let left = Math.abs(Number(args.LEFT)); - let top = Math.abs(Number(args.TOP)); - let menubar = args.MENUBAR; - let status = args.STATUSBAR; - let titlebar = args.TITLEBAR; - let location = args.LOCATION; - let resizable = args.RESIZABLE; - let scroll = args.SCROLL; - let toolbar = args.TOOLBAR; - let replace = args.REPLACE; - let str = strstart.concat(width, ",height=", height, ",fullscreen=", full, ",left=", left, ",top=", top, ",menubar=", menubar, ",status=", status, ",titlebar=", titlebar, ",location=", location, ",resizable=", resizable, ",scrollbars=", scroll, ",toolbar=", toolbar); - let name = "windows" + id; - this[name] = window.open(web, '', str, replace); - } - closewithid(args) { - let iduf = args.ID; - let id = iduf.toLowerCase(); - let name = "windows" + id; - this[name].close(); - } - isopen(args) { - let iduf = args.ID; - let id = iduf.toLowerCase(); - let name = "windows" + id; - try { - if (!this[name].closed) { - return true; - } else { - return false; - } - } - catch(err) { - return false; - } - } - } - Scratch.extensions.register(new NewWindows()); -})(Scratch); From 79dedcac64669ffd2085afbb1db6a3a08d3ca3a3 Mon Sep 17 00:00:00 2001 From: Monochromasity <148627069+Monochromasity@users.noreply.github.com> Date: Thu, 10 Jul 2025 15:12:13 +0100 Subject: [PATCH 3/6] Add newwindows.js --- .../extensions/Monochromasity/newwindows.js | 201 ++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 static/extensions/Monochromasity/newwindows.js diff --git a/static/extensions/Monochromasity/newwindows.js b/static/extensions/Monochromasity/newwindows.js new file mode 100644 index 000000000..b9d8bc845 --- /dev/null +++ b/static/extensions/Monochromasity/newwindows.js @@ -0,0 +1,201 @@ +// Name: New Windows +// ID: monowindows +// Description: Lets you open websites in new windows. +// By: Monochromasity + +(function (Scratch) { + "use strict"; + + class NewWindows { + getInfo() { + return { + id: 'monowindows', + color1: '#297bff', + name: 'New Windows', + blocks: [ + { + opcode: 'openwindow', + blockType: Scratch.BlockType.COMMAND, + text: 'open website [WEB] in new window with ID: [ID] width: [WIDTH] height: [HEIGHT] distance from left: [LEFT] distance from top: [TOP] show menu bar: [MENUBAR] add status bar: [STATUSBAR] show title bar: [TITLEBAR] fullscreen (Internet Explorer): [FULLSCREEN] show address field (Opera): [LOCATION] resizable (Internet Explorer): [RESIZABLE] show scrollbars (Internet Explorer, Firefox, Opera): [SCROLL] show toolbar (Internet Explorer, Firefox): [TOOLBAR] replace (Deprecated): [REPLACE]', + arguments: { + WEB: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'https://penguinmod.com' + }, + ID: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'myWindow' + }, + WIDTH: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: '400' + }, + HEIGHT: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: '400' + }, + LEFT: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: '0' + }, + TOP: { + type: Scratch.ArgumentType.NUMBER, + defaultValue: '0' + }, + MENUBAR: { + type: Scratch.ArgumentType.STRING, + menu: 'MENUBAR', + defaultValue: 'no' + }, + STATUSBAR: { + type: Scratch.ArgumentType.STRING, + menu: 'STATUSBAR', + defaultValue: 'no' + }, + TITLEBAR: { + type: Scratch.ArgumentType.STRING, + menu: 'TITLEBAR', + defaultValue: 'no' + }, + FULLSCREEN: { + type: Scratch.ArgumentType.STRING, + menu: 'FULLSCREEN', + defaultValue: 'no' + }, + LOCATION: { + type: Scratch.ArgumentType.STRING, + menu: 'LOCATION', + defaultValue: 'no' + }, + RESIZABLE: { + type: Scratch.ArgumentType.STRING, + menu: 'RESIZABLE', + defaultValue: 'yes' + }, + SCROLL: { + type: Scratch.ArgumentType.STRING, + menu: 'SCROLL', + defaultValue: 'yes' + }, + TOOLBAR: { + type: Scratch.ArgumentType.STRING, + menu: 'TOOLBAR', + defaultValue: 'yes' + }, + REPLACE: { + type: Scratch.ArgumentType.STRING, + menu: 'REPLACE', + defaultValue: 'false' + } + } + }, + { + opcode: 'closewithid', + blockType: Scratch.BlockType.COMMAND, + text: 'close window with id [ID]', + arguments: { + ID: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'myWindow' + } + } + }, + { + opcode: 'isopen', + blockType: Scratch.BlockType.BOOLEAN, + text: 'is window with ID [ID] open?', + arguments: { + ID: { + type: Scratch.ArgumentType.STRING, + defaultValue: 'myWindow' + } + } + } + ], + menus: { + FULLSCREEN: { + acceptReporters: true, + items: ['yes', 'no'] + }, + MENUBAR: { + acceptReporters: true, + items: ['yes', 'no'] + }, + STATUSBAR: { + acceptReporters: true, + items: ['yes', 'no'] + }, + TITLEBAR: { + acceptReporters: true, + items: ['yes', 'no'] + }, + LOCATION: { + acceptReporters: true, + items: ['yes', 'no'] + }, + RESIZABLE: { + acceptReporters: true, + items: ['yes', 'no'] + }, + SCROLL: { + acceptReporters: true, + items: ['yes', 'no'] + }, + TOOLBAR: { + acceptReporters: true, + items: ['yes', 'no'] + }, + REPLACE: { + acceptReporters: true, + items: ['true', 'false'] + } + } + }; + } + + openwindow(args) { + let web = args.WEB; + let iduf = args.ID; + let id = iduf.toLowerCase(); + let width = args.WIDTH; + let height = args.HEIGHT; + let strstart = "width="; + let full = args.FULLSCREEN; + let left = Math.abs(Number(args.LEFT)); + let top = Math.abs(Number(args.TOP)); + let menubar = args.MENUBAR; + let status = args.STATUSBAR; + let titlebar = args.TITLEBAR; + let location = args.LOCATION; + let resizable = args.RESIZABLE; + let scroll = args.SCROLL; + let toolbar = args.TOOLBAR; + let replace = args.REPLACE; + let str = strstart.concat(width, ",height=", height, ",fullscreen=", full, ",left=", left, ",top=", top, ",menubar=", menubar, ",status=", status, ",titlebar=", titlebar, ",location=", location, ",resizable=", resizable, ",scrollbars=", scroll, ",toolbar=", toolbar); + let name = "windows" + id; + this[name] = window.open(web, '', str, replace); + } + closewithid(args) { + let iduf = args.ID; + let id = iduf.toLowerCase(); + let name = "windows" + id; + this[name].close(); + } + isopen(args) { + let iduf = args.ID; + let id = iduf.toLowerCase(); + let name = "windows" + id; + try { + if (!this[name].closed) { + return true; + } else { + return false; + } + } + catch(err) { + return false; + } + } + } + Scratch.extensions.register(new NewWindows()); +})(Scratch); From ad56bd2b8e864bd4c7856d2bbbafb64a28df81f3 Mon Sep 17 00:00:00 2001 From: Monochromasity <148627069+Monochromasity@users.noreply.github.com> Date: Tue, 15 Jul 2025 15:14:10 +0100 Subject: [PATCH 4/6] Add new windows image --- static/images/Monochromasity/newwindows.png | Bin 0 -> 44508 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 static/images/Monochromasity/newwindows.png diff --git a/static/images/Monochromasity/newwindows.png b/static/images/Monochromasity/newwindows.png new file mode 100644 index 0000000000000000000000000000000000000000..eda78e54f22c654d4064ef75ba060f83cbe938be GIT binary patch literal 44508 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%0AUIN8WD1KuRh9 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 literal 0 HcmV?d00001 From f07b4e3a02f984d245b611fdac80c5d9fbf5ca69 Mon Sep 17 00:00:00 2001 From: Monochromasity <148627069+Monochromasity@users.noreply.github.com> Date: Thu, 17 Jul 2025 09:45:13 +0100 Subject: [PATCH 5/6] Update extensions.js with New Windows ext --- src/lib/extensions.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib/extensions.js b/src/lib/extensions.js index 51c2f2aa6..bc066e2df 100644 --- a/src/lib/extensions.js +++ b/src/lib/extensions.js @@ -425,6 +425,14 @@ export default [ creator: "Monochromasity", isGitHub: true, }, + { + name: "New Windows", + description: "Lets you open websites in new windows.", + code: "Monochromasity/newwindows.js", + banner: "Monochromasity/newwindows.png", + creator: "Monochromasity", + isGithub: true, + }, { name: "Paint Utils", description: "A colour extension that lets you mix colours.", From 06e27d42e443ff17c3d2feaaaaa9623fcc5431d4 Mon Sep 17 00:00:00 2001 From: Monochromasity <148627069+Monochromasity@users.noreply.github.com> Date: Tue, 21 Oct 2025 08:35:24 +0100 Subject: [PATCH 6/6] Update newwindows.js to current version --- .../extensions/Monochromasity/newwindows.js | 208 +++++++++++------- 1 file changed, 125 insertions(+), 83 deletions(-) diff --git a/static/extensions/Monochromasity/newwindows.js b/static/extensions/Monochromasity/newwindows.js index b9d8bc845..73ea388c4 100644 --- a/static/extensions/Monochromasity/newwindows.js +++ b/static/extensions/Monochromasity/newwindows.js @@ -5,6 +5,16 @@ (function (Scratch) { "use strict"; + + let menubar = "no"; + let status = "no"; + let titlebar = "no"; + let full = "no"; + let location = "no"; + let resizable = "no"; + let scroll = "no"; + let toolbar = "no"; + let replace = "false"; class NewWindows { getInfo() { @@ -16,7 +26,7 @@ { opcode: 'openwindow', blockType: Scratch.BlockType.COMMAND, - text: 'open website [WEB] in new window with ID: [ID] width: [WIDTH] height: [HEIGHT] distance from left: [LEFT] distance from top: [TOP] show menu bar: [MENUBAR] add status bar: [STATUSBAR] show title bar: [TITLEBAR] fullscreen (Internet Explorer): [FULLSCREEN] show address field (Opera): [LOCATION] resizable (Internet Explorer): [RESIZABLE] show scrollbars (Internet Explorer, Firefox, Opera): [SCROLL] show toolbar (Internet Explorer, Firefox): [TOOLBAR] replace (Deprecated): [REPLACE]', + text: 'open website [WEB] in new window with ID: [ID] width: [WIDTH] height: [HEIGHT] distance from left: [LEFT] distance from top: [TOP]', arguments: { WEB: { type: Scratch.ArgumentType.STRING, @@ -41,51 +51,38 @@ TOP: { type: Scratch.ArgumentType.NUMBER, defaultValue: '0' - }, - MENUBAR: { - type: Scratch.ArgumentType.STRING, - menu: 'MENUBAR', - defaultValue: 'no' - }, - STATUSBAR: { - type: Scratch.ArgumentType.STRING, - menu: 'STATUSBAR', - defaultValue: 'no' - }, - TITLEBAR: { - type: Scratch.ArgumentType.STRING, - menu: 'TITLEBAR', - defaultValue: 'no' - }, - FULLSCREEN: { - type: Scratch.ArgumentType.STRING, - menu: 'FULLSCREEN', - defaultValue: 'no' - }, - LOCATION: { - type: Scratch.ArgumentType.STRING, - menu: 'LOCATION', - defaultValue: 'no' - }, - RESIZABLE: { - type: Scratch.ArgumentType.STRING, - menu: 'RESIZABLE', - defaultValue: 'yes' - }, - SCROLL: { + } + } + }, + { + opcode: 'setproperty', + blockType: Scratch.BlockType.COMMAND, + text: 'set window property [PROPERTY] to [TOGGLE]', + arguments: { + PROPERTY: { type: Scratch.ArgumentType.STRING, - menu: 'SCROLL', - defaultValue: 'yes' + menu: 'PROPERTY' }, - TOOLBAR: { + TOGGLE: { type: Scratch.ArgumentType.STRING, - menu: 'TOOLBAR', - defaultValue: 'yes' - }, - REPLACE: { + menu: 'TOGGLE' + } + } + }, + { + opcode: 'reset', + blockType: Scratch.BlockType.COMMAND, + text: 'reset properties to default', + hideFromPalette: true + }, + { + opcode: 'getproperty', + blockType: Scratch.BlockType.REPORTER, + text: 'get value of property [PROPERTY]', + arguments: { + PROPERTY: { type: Scratch.ArgumentType.STRING, - menu: 'REPLACE', - defaultValue: 'false' + menu: 'PROPERTY' } } }, @@ -113,41 +110,59 @@ } ], menus: { - FULLSCREEN: { - acceptReporters: true, - items: ['yes', 'no'] - }, - MENUBAR: { + PROPERTY: { acceptReporters: true, - items: ['yes', 'no'] - }, - STATUSBAR: { - acceptReporters: true, - items: ['yes', 'no'] - }, - TITLEBAR: { - acceptReporters: true, - items: ['yes', 'no'] - }, - LOCATION: { - acceptReporters: true, - items: ['yes', 'no'] - }, - RESIZABLE: { - acceptReporters: true, - items: ['yes', 'no'] - }, - SCROLL: { - acceptReporters: true, - items: ['yes', 'no'] - }, - TOOLBAR: { - acceptReporters: true, - items: ['yes', 'no'] + items: [ + { + text: 'menu bar', + value: 'menubar' + }, + { + text: 'status bar', + value: 'status' + }, + { + text: 'title bar', + value: 'titlebar' + }, + { + text: 'fullscreen (IE only)', + value: 'full' + }, + { + text: 'address field (Opera only)', + value: 'location' + }, + { + text: 'resizable (IE only)', + value: 'resizable' + }, + { + text: 'scrollbars (IE, Firefox, Opera only)', + value: 'scroll', + }, + { + text: 'toolbar (IE, Firefox)', + value: 'toolbar', + }, + { + text: 'replace (Deprecated)', + value: 'replace' + } + ] }, - REPLACE: { + TOGGLE: { acceptReporters: true, - items: ['true', 'false'] + items: [ + { + text: 'true', + value: 'yes' + }, + { + text: 'false', + value: 'no' + } + ] } } }; @@ -160,18 +175,10 @@ let width = args.WIDTH; let height = args.HEIGHT; let strstart = "width="; - let full = args.FULLSCREEN; let left = Math.abs(Number(args.LEFT)); let top = Math.abs(Number(args.TOP)); - let menubar = args.MENUBAR; - let status = args.STATUSBAR; - let titlebar = args.TITLEBAR; - let location = args.LOCATION; - let resizable = args.RESIZABLE; - let scroll = args.SCROLL; - let toolbar = args.TOOLBAR; - let replace = args.REPLACE; let str = strstart.concat(width, ",height=", height, ",fullscreen=", full, ",left=", left, ",top=", top, ",menubar=", menubar, ",status=", status, ",titlebar=", titlebar, ",location=", location, ",resizable=", resizable, ",scrollbars=", scroll, ",toolbar=", toolbar); + console.log(str); let name = "windows" + id; this[name] = window.open(web, '', str, replace); } @@ -196,6 +203,41 @@ return false; } } + setproperty(args) { + let title = args.PROPERTY; + if (title == "replace") { + let toggle = args.TOGGLE; + if (toggle == "yes") { + this[title] = "true"; + } else if (toggle == "no") { + this[title] = "false"; + } + } else { + this[title] = args.TOGGLE; + } + } + reset() { + menubar = "no"; + status = "no"; + titlebar = "no"; + full = "no"; + location = "no"; + resizable = "no"; + scroll = "no"; + toolbar = "no"; + replace = "false"; + } + getproperty(args) { + let title = args.PROPERTY; + let propval = this[title]; + if (propval == "yes") { + return true; + } else if (propval == "no") { + return false; + } else { + return propval; + } + } } Scratch.extensions.register(new NewWindows()); })(Scratch);