code mapping: dialog input is now multi-line monospaced

pull/3/merge
jmoenig 2013-06-25 09:46:21 +02:00
rodzic 416d92d78b
commit 9c6b2a3e6f
3 zmienionych plików z 69 dodań i 6 usunięć

Wyświetl plik

@ -155,7 +155,7 @@ DialogBoxMorph, BlockInputFragmentMorph, PrototypeHatBlockMorph*/
// Global stuff ////////////////////////////////////////////////////////
modules.blocks = '2013-June-24';
modules.blocks = '2013-June-25';
var SyntaxElementMorph;
var BlockMorph;
@ -2201,7 +2201,7 @@ BlockMorph.prototype.mapToCode = function () {
}
},
this
).prompt(
).promptCode(
'Code mapping',
key === 'evaluateCustomBlock' ? this.definition.codeMapping || ''
: StageMorph.prototype.codeMappings[key] || '',
@ -6388,7 +6388,7 @@ InputSlotMorph.prototype.mapToCode = function () {
StageMorph.prototype.codeMappings.string = code;
},
this
).prompt(
).promptCode(
'Code mapping - String <#1>',
StageMorph.prototype.codeMappings.string || '',
this.world()
@ -8534,7 +8534,7 @@ MultiArgMorph.prototype.mapToCode = function (key, label) {
StageMorph.prototype.codeMappings[key] = code;
},
this
).prompt(
).promptCode(
'Code mapping - ' + label,
StageMorph.prototype.codeMappings[key] || '',
this.world()

Wyświetl plik

@ -1757,3 +1757,7 @@ ______
130624
------
* Objects, Blocks: pretty printing for mapped code, now supporting Python mappings
130625
------
* Widgets, Blocks: code mapping dialog input is now multi-line monospaced

Wyświetl plik

@ -71,9 +71,10 @@
/*global TriggerMorph, modules, Color, Point, BoxMorph, radians,
newCanvas, StringMorph, Morph, TextMorph, nop, detect, StringFieldMorph,
HTMLCanvasElement, fontHeight, SymbolMorph, localize, SpeechBubbleMorph,
ArrowMorph, MenuMorph, isString, isNil, SliderMorph, MorphicPreferences*/
ArrowMorph, MenuMorph, isString, isNil, SliderMorph, MorphicPreferences,
ScrollFrameMorph*/
modules.widgets = '2013-May-16';
modules.widgets = '2013-June-25';
var PushButtonMorph;
var ToggleButtonMorph;
@ -1675,6 +1676,64 @@ DialogBoxMorph.prototype.prompt = function (
this.popUp(world);
};
DialogBoxMorph.prototype.promptCode = function (
title,
defaultString,
world,
pic
) {
var frame = new ScrollFrameMorph(),
text = new TextMorph(defaultString || ''),
size = pic ? Math.max(pic.width, 400) : 400;
this.getInput = function () {
return text.text;
};
frame.padding = 6;
frame.setWidth(size);
frame.acceptsDrops = false;
frame.contents.acceptsDrops = false;
text.fontName = 'monospace';
text.fontStyle = 'monospace';
text.fontSize = 11;
text.setPosition(frame.topLeft().add(frame.padding));
text.enableSelecting();
text.isEditable = true;
frame.setHeight(size / 4);
frame.fixLayout = nop;
frame.edge = InputFieldMorph.prototype.edge;
frame.fontSize = InputFieldMorph.prototype.fontSize;
frame.typeInPadding = InputFieldMorph.prototype.typeInPadding;
frame.contrast = InputFieldMorph.prototype.contrast;
frame.drawNew = InputFieldMorph.prototype.drawNew;
frame.drawRectBorder = InputFieldMorph.prototype.drawRectBorder;
frame.addContents(text);
text.drawNew();
if (pic) {this.setPicture(pic); }
this.labelString = title;
this.createLabel();
if (!this.key) {
this.key = 'promptCode' + title + defaultString;
}
this.addBody(frame);
frame.drawNew();
this.addButton('ok', 'OK');
this.addButton('cancel', 'Cancel');
this.fixLayout();
this.drawNew();
this.fixLayout();
this.popUp(world);
text.edit();
};
DialogBoxMorph.prototype.promptCredentials = function (
title,
purpose,