New Feature: Set stage dimensions arbitrarily

new entries to set stage width and height in the settings menu when
holding the shift key
pull/3/merge
jmoenig 2014-02-11 17:38:35 +01:00
rodzic bfda0d26a1
commit 4e2bfdec20
4 zmienionych plików z 106 dodań i 4 usunięć

100
gui.js
Wyświetl plik

@ -68,7 +68,7 @@ sb, CommentMorph, CommandBlockMorph, BlockLabelPlaceHolderMorph, Audio*/
// Global stuff //////////////////////////////////////////////////////// // Global stuff ////////////////////////////////////////////////////////
modules.gui = '2014-February-04'; modules.gui = '2014-February-11';
// Declarations // Declarations
@ -2061,6 +2061,20 @@ IDE_Morph.prototype.settingsMenu = function () {
'Zoom blocks...', 'Zoom blocks...',
'userSetBlocksScale' 'userSetBlocksScale'
); );
if (shiftClicked) {
menu.addItem(
'Stage width...',
'userSetStageWidth',
null,
new Color(100, 0, 0)
);
menu.addItem(
'Stage height...',
'userSetStageHeight',
null,
new Color(100, 0, 0)
);
}
menu.addLine(); menu.addLine();
addPreference( addPreference(
'Blurred shadows', 'Blurred shadows',
@ -2695,6 +2709,7 @@ IDE_Morph.prototype.newProject = function () {
this.globalVariables = new VariableFrame(); this.globalVariables = new VariableFrame();
this.currentSprite = new SpriteMorph(this.globalVariables); this.currentSprite = new SpriteMorph(this.globalVariables);
this.sprites = new List([this.currentSprite]); this.sprites = new List([this.currentSprite]);
StageMorph.prototype.dimensions = new Point(480, 360);
StageMorph.prototype.hiddenPrimitives = {}; StageMorph.prototype.hiddenPrimitives = {};
StageMorph.prototype.codeMappings = {}; StageMorph.prototype.codeMappings = {};
StageMorph.prototype.codeHeaders = {}; StageMorph.prototype.codeHeaders = {};
@ -3464,6 +3479,89 @@ IDE_Morph.prototype.setBlocksScale = function (num) {
this.saveSetting('zoom', num); this.saveSetting('zoom', num);
}; };
// IDE_Morph stage size manipulation
IDE_Morph.prototype.userSetStageWidth = function () {
new DialogBoxMorph(
this,
this.setStageWidth,
this
).prompt(
"Stage width",
StageMorph.prototype.dimensions.x.toString(),
this.world(),
null, // pic
null, // choices
null, // read only
true // numeric
);
};
IDE_Morph.prototype.userSetStageHeight = function () {
new DialogBoxMorph(
this,
this.setStageHeight,
this
).prompt(
"Stage height",
StageMorph.prototype.dimensions.y.toString(),
this.world(),
null, // pic
null, // choices
null, // read only
true // numeric
);
};
IDE_Morph.prototype.setStageWidth = function (num) {
this.setStageExtent(new Point(
Math.max(num, 240),
(StageMorph.prototype.dimensions.y)
));
};
IDE_Morph.prototype.setStageHeight = function (num) {
this.setStageExtent(new Point(
(StageMorph.prototype.dimensions.x),
Math.max(num, 180)
));
};
IDE_Morph.prototype.setStageExtent = function (aPoint) {
var myself = this;
function zoom() {
myself.step = function () {
var delta = aPoint.subtract(
StageMorph.prototype.dimensions
).divideBy(2);
if (delta.abs().lt(new Point(5, 5))) {
StageMorph.prototype.dimensions = aPoint;
delete myself.step;
} else {
StageMorph.prototype.dimensions =
StageMorph.prototype.dimensions.add(delta);
}
myself.stage.setExtent(StageMorph.prototype.dimensions);
myself.stage.clearPenTrails();
myself.fixLayout();
};
}
this.stageRatio = 1;
this.isSmallStage = false;
this.controlBar.stageSizeButton.refresh();
this.setExtent(this.world().extent());
if (this.isAnimating) {
zoom();
} else {
StageMorph.prototype.dimensions = aPoint;
this.stage.setExtent(StageMorph.prototype.dimensions);
this.stage.clearPenTrails();
this.fixLayout();
}
};
// IDE_Morph cloud interface // IDE_Morph cloud interface
IDE_Morph.prototype.initializeCloud = function () { IDE_Morph.prototype.initializeCloud = function () {

Wyświetl plik

@ -2089,3 +2089,7 @@ ______
140205 140205
------ ------
* Objects, Paint: One-stop-shopping for stage dimensions (changing the stage dimensions in line 3720 of objects.js takes care of everything) * Objects, Paint: One-stop-shopping for stage dimensions (changing the stage dimensions in line 3720 of objects.js takes care of everything)
140211
------
* GUI: Set stage dimensions arbitrarily (new entries in the settings menu when holding shift)

Wyświetl plik

@ -124,7 +124,7 @@ PrototypeHatBlockMorph*/
// Global stuff //////////////////////////////////////////////////////// // Global stuff ////////////////////////////////////////////////////////
modules.objects = '2014-February-05'; modules.objects = '2014-February-11';
var SpriteMorph; var SpriteMorph;
var StageMorph; var StageMorph;

Wyświetl plik

@ -51,7 +51,7 @@
July 12 - pipette tool, code formatting adjustments (Jens) July 12 - pipette tool, code formatting adjustments (Jens)
September 16 - flood fill freeze fix (Kartik) September 16 - flood fill freeze fix (Kartik)
Jan 08 - mouse leave dragging fix (Kartik) Jan 08 - mouse leave dragging fix (Kartik)
Feb 04 - dynamically adjust to stage dimensions (Jens) Feb 11 - dynamically adjust to stage dimensions (Jens)
*/ */
@ -65,7 +65,7 @@
// Global stuff //////////////////////////////////////////////////////// // Global stuff ////////////////////////////////////////////////////////
modules.paint = '2014-February-05'; modules.paint = '2014-February-11';
// Declarations // Declarations