kopia lustrzana https://github.com/backface/turtlestitch
migrated project dialog
rodzic
a87589e805
commit
dda20aae34
96
src/gui.js
96
src/gui.js
|
@ -78,7 +78,7 @@ Animation, BoxMorph, BlockEditorMorph, BlockDialogMorph, Note*/
|
||||||
|
|
||||||
// Global stuff ////////////////////////////////////////////////////////
|
// Global stuff ////////////////////////////////////////////////////////
|
||||||
|
|
||||||
modules.gui = '2020-April-06';
|
modules.gui = '2020-April-16';
|
||||||
|
|
||||||
// Declarations
|
// Declarations
|
||||||
|
|
||||||
|
@ -6372,7 +6372,7 @@ ProjectDialogMorph.prototype.buildContents = function () {
|
||||||
this.listField.fontSize = InputFieldMorph.prototype.fontSize;
|
this.listField.fontSize = InputFieldMorph.prototype.fontSize;
|
||||||
this.listField.typeInPadding = InputFieldMorph.prototype.typeInPadding;
|
this.listField.typeInPadding = InputFieldMorph.prototype.typeInPadding;
|
||||||
this.listField.contrast = InputFieldMorph.prototype.contrast;
|
this.listField.contrast = InputFieldMorph.prototype.contrast;
|
||||||
this.listField.drawNew = InputFieldMorph.prototype.drawNew;
|
this.listField.render = InputFieldMorph.prototype.render;
|
||||||
this.listField.drawRectBorder = InputFieldMorph.prototype.drawRectBorder;
|
this.listField.drawRectBorder = InputFieldMorph.prototype.drawRectBorder;
|
||||||
|
|
||||||
this.body.add(this.listField);
|
this.body.add(this.listField);
|
||||||
|
@ -6383,16 +6383,14 @@ ProjectDialogMorph.prototype.buildContents = function () {
|
||||||
this.preview.fontSize = InputFieldMorph.prototype.fontSize;
|
this.preview.fontSize = InputFieldMorph.prototype.fontSize;
|
||||||
this.preview.typeInPadding = InputFieldMorph.prototype.typeInPadding;
|
this.preview.typeInPadding = InputFieldMorph.prototype.typeInPadding;
|
||||||
this.preview.contrast = InputFieldMorph.prototype.contrast;
|
this.preview.contrast = InputFieldMorph.prototype.contrast;
|
||||||
this.preview.drawNew = function () {
|
this.preview.render = function (ctx) {
|
||||||
InputFieldMorph.prototype.drawNew.call(this);
|
InputFieldMorph.prototype.render.call(this, ctx);
|
||||||
if (this.texture) {
|
if (this.texture) {
|
||||||
this.drawTexture(this.texture);
|
this.renderTexture(this.texture, ctx);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
this.preview.drawCachedTexture = function () {
|
this.preview.renderCachedTexture = function (ctx) {
|
||||||
var context = this.image.getContext('2d');
|
ctx.drawImage(this.cachedTexture, this.edge, this.edge);
|
||||||
context.drawImage(this.cachedTexture, this.edge, this.edge);
|
|
||||||
this.changed();
|
|
||||||
};
|
};
|
||||||
this.preview.drawRectBorder = InputFieldMorph.prototype.drawRectBorder;
|
this.preview.drawRectBorder = InputFieldMorph.prototype.drawRectBorder;
|
||||||
this.preview.setExtent(
|
this.preview.setExtent(
|
||||||
|
@ -6400,14 +6398,13 @@ ProjectDialogMorph.prototype.buildContents = function () {
|
||||||
);
|
);
|
||||||
|
|
||||||
this.body.add(this.preview);
|
this.body.add(this.preview);
|
||||||
this.preview.drawNew();
|
|
||||||
if (this.task === 'save') {
|
if (this.task === 'save') {
|
||||||
thumbnail = this.ide.stage.thumbnail(
|
thumbnail = this.ide.stage.thumbnail(
|
||||||
SnapSerializer.prototype.thumbnailSize
|
SnapSerializer.prototype.thumbnailSize
|
||||||
);
|
);
|
||||||
this.preview.texture = null;
|
this.preview.texture = null;
|
||||||
this.preview.cachedTexture = thumbnail;
|
this.preview.cachedTexture = thumbnail;
|
||||||
this.preview.drawCachedTexture();
|
this.preview.rerender();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.notesField = new ScrollFrameMorph();
|
this.notesField = new ScrollFrameMorph();
|
||||||
|
@ -6417,7 +6414,7 @@ ProjectDialogMorph.prototype.buildContents = function () {
|
||||||
this.notesField.fontSize = InputFieldMorph.prototype.fontSize;
|
this.notesField.fontSize = InputFieldMorph.prototype.fontSize;
|
||||||
this.notesField.typeInPadding = InputFieldMorph.prototype.typeInPadding;
|
this.notesField.typeInPadding = InputFieldMorph.prototype.typeInPadding;
|
||||||
this.notesField.contrast = InputFieldMorph.prototype.contrast;
|
this.notesField.contrast = InputFieldMorph.prototype.contrast;
|
||||||
this.notesField.drawNew = InputFieldMorph.prototype.drawNew;
|
this.notesField.render = InputFieldMorph.prototype.render;
|
||||||
this.notesField.drawRectBorder = InputFieldMorph.prototype.drawRectBorder;
|
this.notesField.drawRectBorder = InputFieldMorph.prototype.drawRectBorder;
|
||||||
|
|
||||||
this.notesField.acceptsDrops = false;
|
this.notesField.acceptsDrops = false;
|
||||||
|
@ -6498,16 +6495,6 @@ ProjectDialogMorph.prototype.createButtons = function () {
|
||||||
this.buttons.add(this.buttons.bottomRow);
|
this.buttons.add(this.buttons.bottomRow);
|
||||||
this.add(this.buttons);
|
this.add(this.buttons);
|
||||||
|
|
||||||
this.buttons.topRow.hide = function () {
|
|
||||||
this.isVisible = false;
|
|
||||||
this.changed();
|
|
||||||
};
|
|
||||||
|
|
||||||
this.buttons.topRow.show = function () {
|
|
||||||
this.isVisible = true;
|
|
||||||
this.changed();
|
|
||||||
};
|
|
||||||
|
|
||||||
this.buttons.fixLayout = function () {
|
this.buttons.fixLayout = function () {
|
||||||
if (this.topRow.children.some(function (any) {
|
if (this.topRow.children.some(function (any) {
|
||||||
return any.isVisible;
|
return any.isVisible;
|
||||||
|
@ -6536,7 +6523,6 @@ ProjectDialogMorph.prototype.addButton = function (action, label, topRow) {
|
||||||
button.outlineGradient = this.buttonOutlineGradient;
|
button.outlineGradient = this.buttonOutlineGradient;
|
||||||
button.padding = this.buttonPadding;
|
button.padding = this.buttonPadding;
|
||||||
button.contrast = this.buttonContrast;
|
button.contrast = this.buttonContrast;
|
||||||
button.drawNew();
|
|
||||||
button.fixLayout();
|
button.fixLayout();
|
||||||
if (topRow) {
|
if (topRow) {
|
||||||
this.buttons.topRow.add(button);
|
this.buttons.topRow.add(button);
|
||||||
|
@ -6589,7 +6575,8 @@ ProjectDialogMorph.prototype.addSourceButton = function (
|
||||||
lbl1.children[0].setCenter(lbl1.center());
|
lbl1.children[0].setCenter(lbl1.center());
|
||||||
lbl1.children[0].setBottom(lbl1.top() - this.padding / 2);
|
lbl1.children[0].setBottom(lbl1.top() - this.padding / 2);
|
||||||
|
|
||||||
l1.image = lbl1.fullImage();
|
l1.isCachingImage = true;
|
||||||
|
l1.cachedImage = lbl1.fullImage();
|
||||||
l1.bounds = lbl1.fullBounds();
|
l1.bounds = lbl1.fullBounds();
|
||||||
|
|
||||||
lbl2.add(new SymbolMorph(
|
lbl2.add(new SymbolMorph(
|
||||||
|
@ -6602,7 +6589,8 @@ ProjectDialogMorph.prototype.addSourceButton = function (
|
||||||
lbl2.children[0].setCenter(lbl2.center());
|
lbl2.children[0].setCenter(lbl2.center());
|
||||||
lbl2.children[0].setBottom(lbl2.top() - this.padding / 2);
|
lbl2.children[0].setBottom(lbl2.top() - this.padding / 2);
|
||||||
|
|
||||||
l2.image = lbl2.fullImage();
|
l2.isCachingImage = true;
|
||||||
|
l2.cachedImage = lbl2.fullImage();
|
||||||
l2.bounds = lbl2.fullBounds();
|
l2.bounds = lbl2.fullBounds();
|
||||||
|
|
||||||
button = new ToggleButtonMorph(
|
button = new ToggleButtonMorph(
|
||||||
|
@ -6626,8 +6614,6 @@ ProjectDialogMorph.prototype.addSourceButton = function (
|
||||||
button.padding = this.buttonPadding;
|
button.padding = this.buttonPadding;
|
||||||
button.contrast = this.buttonContrast;
|
button.contrast = this.buttonContrast;
|
||||||
button.pressColor = this.titleBarColor.darker(20);
|
button.pressColor = this.titleBarColor.darker(20);
|
||||||
|
|
||||||
button.drawNew();
|
|
||||||
button.fixLayout();
|
button.fixLayout();
|
||||||
button.refresh();
|
button.refresh();
|
||||||
this.srcBar.add(button);
|
this.srcBar.add(button);
|
||||||
|
@ -6643,7 +6629,6 @@ ProjectDialogMorph.prototype.fixListFieldItemColors = function () {
|
||||||
this.listField.contents.children[0].children.forEach(function (item) {
|
this.listField.contents.children[0].children.forEach(function (item) {
|
||||||
item.pressColor = myself.titleBarColor.darker(20);
|
item.pressColor = myself.titleBarColor.darker(20);
|
||||||
item.color = new Color(0, 0, 0, 0);
|
item.color = new Color(0, 0, 0, 0);
|
||||||
item.noticesTransparentClick = true;
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -6754,7 +6739,7 @@ ProjectDialogMorph.prototype.setSource = function (source) {
|
||||||
this.listField.fontSize = InputFieldMorph.prototype.fontSize;
|
this.listField.fontSize = InputFieldMorph.prototype.fontSize;
|
||||||
this.listField.typeInPadding = InputFieldMorph.prototype.typeInPadding;
|
this.listField.typeInPadding = InputFieldMorph.prototype.typeInPadding;
|
||||||
this.listField.contrast = InputFieldMorph.prototype.contrast;
|
this.listField.contrast = InputFieldMorph.prototype.contrast;
|
||||||
this.listField.drawNew = InputFieldMorph.prototype.drawNew;
|
this.listField.render = InputFieldMorph.prototype.render;
|
||||||
this.listField.drawRectBorder = InputFieldMorph.prototype.drawRectBorder;
|
this.listField.drawRectBorder = InputFieldMorph.prototype.drawRectBorder;
|
||||||
|
|
||||||
if (this.source === 'local') {
|
if (this.source === 'local') {
|
||||||
|
@ -6774,12 +6759,12 @@ ProjectDialogMorph.prototype.setSource = function (source) {
|
||||||
|
|
||||||
myself.notesText.text = xml.childNamed('notes').contents
|
myself.notesText.text = xml.childNamed('notes').contents
|
||||||
|| '';
|
|| '';
|
||||||
myself.notesText.drawNew();
|
myself.notesText.rerender();
|
||||||
myself.notesField.contents.adjustBounds();
|
myself.notesField.contents.adjustBounds();
|
||||||
myself.preview.texture =
|
myself.preview.texture =
|
||||||
xml.childNamed('thumbnail').contents || null;
|
xml.childNamed('thumbnail').contents || null;
|
||||||
myself.preview.cachedTexture = null;
|
myself.preview.cachedTexture = null;
|
||||||
myself.preview.drawNew();
|
myself.preview.rerender();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
myself.edit();
|
myself.edit();
|
||||||
|
@ -6798,12 +6783,12 @@ ProjectDialogMorph.prototype.setSource = function (source) {
|
||||||
xml = myself.ide.serializer.parse(src);
|
xml = myself.ide.serializer.parse(src);
|
||||||
myself.notesText.text = xml.childNamed('notes').contents
|
myself.notesText.text = xml.childNamed('notes').contents
|
||||||
|| '';
|
|| '';
|
||||||
myself.notesText.drawNew();
|
myself.notesText.rerender();
|
||||||
myself.notesField.contents.adjustBounds();
|
myself.notesField.contents.adjustBounds();
|
||||||
myself.preview.texture = xml.childNamed('thumbnail').contents
|
myself.preview.texture = xml.childNamed('thumbnail').contents
|
||||||
|| null;
|
|| null;
|
||||||
myself.preview.cachedTexture = null;
|
myself.preview.cachedTexture = null;
|
||||||
myself.preview.drawNew();
|
myself.preview.rerender();
|
||||||
myself.edit();
|
myself.edit();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -6896,7 +6881,7 @@ ProjectDialogMorph.prototype.installCloudProjectList = function (pl) {
|
||||||
this.listField.fontSize = InputFieldMorph.prototype.fontSize;
|
this.listField.fontSize = InputFieldMorph.prototype.fontSize;
|
||||||
this.listField.typeInPadding = InputFieldMorph.prototype.typeInPadding;
|
this.listField.typeInPadding = InputFieldMorph.prototype.typeInPadding;
|
||||||
this.listField.contrast = InputFieldMorph.prototype.contrast;
|
this.listField.contrast = InputFieldMorph.prototype.contrast;
|
||||||
this.listField.drawNew = InputFieldMorph.prototype.drawNew;
|
this.listField.render = InputFieldMorph.prototype.render;
|
||||||
this.listField.drawRectBorder = InputFieldMorph.prototype.drawRectBorder;
|
this.listField.drawRectBorder = InputFieldMorph.prototype.drawRectBorder;
|
||||||
|
|
||||||
this.listField.action = function (item) {
|
this.listField.action = function (item) {
|
||||||
|
@ -6906,10 +6891,10 @@ ProjectDialogMorph.prototype.installCloudProjectList = function (pl) {
|
||||||
}
|
}
|
||||||
if (myself.task === 'open') {
|
if (myself.task === 'open') {
|
||||||
myself.notesText.text = item.notes || '';
|
myself.notesText.text = item.notes || '';
|
||||||
myself.notesText.drawNew();
|
myself.notesText.rerender();
|
||||||
myself.notesField.contents.adjustBounds();
|
myself.notesField.contents.adjustBounds();
|
||||||
myself.preview.texture = '';
|
myself.preview.texture = '';
|
||||||
myself.preview.drawNew();
|
myself.preview.rerender(); // +++
|
||||||
// we ask for the thumbnail when selecting a project
|
// we ask for the thumbnail when selecting a project
|
||||||
myself.ide.cloud.getThumbnail(
|
myself.ide.cloud.getThumbnail(
|
||||||
null, // username is implicit
|
null, // username is implicit
|
||||||
|
@ -6917,7 +6902,7 @@ ProjectDialogMorph.prototype.installCloudProjectList = function (pl) {
|
||||||
function (thumbnail) {
|
function (thumbnail) {
|
||||||
myself.preview.texture = thumbnail;
|
myself.preview.texture = thumbnail;
|
||||||
myself.preview.cachedTexture = null;
|
myself.preview.cachedTexture = null;
|
||||||
myself.preview.drawNew();
|
myself.preview.rerender();
|
||||||
});
|
});
|
||||||
(new SpeechBubbleMorph(new TextMorph(
|
(new SpeechBubbleMorph(new TextMorph(
|
||||||
localize('last changed') + '\n' + item.lastupdated,
|
localize('last changed') + '\n' + item.lastupdated,
|
||||||
|
@ -6967,11 +6952,11 @@ ProjectDialogMorph.prototype.installCloudProjectList = function (pl) {
|
||||||
|
|
||||||
ProjectDialogMorph.prototype.clearDetails = function () {
|
ProjectDialogMorph.prototype.clearDetails = function () {
|
||||||
this.notesText.text = '';
|
this.notesText.text = '';
|
||||||
this.notesText.drawNew();
|
this.notesText.rerender();
|
||||||
this.notesField.contents.adjustBounds();
|
this.notesField.contents.adjustBounds();
|
||||||
this.preview.texture = null;
|
this.preview.texture = null;
|
||||||
this.preview.cachedTexture = null;
|
this.preview.cachedTexture = null;
|
||||||
this.preview.drawNew();
|
this.preview.rerender();
|
||||||
};
|
};
|
||||||
|
|
||||||
ProjectDialogMorph.prototype.recoveryDialog = function () {
|
ProjectDialogMorph.prototype.recoveryDialog = function () {
|
||||||
|
@ -7149,10 +7134,9 @@ ProjectDialogMorph.prototype.shareProject = function () {
|
||||||
myself.publishButton.show();
|
myself.publishButton.show();
|
||||||
myself.unpublishButton.hide();
|
myself.unpublishButton.hide();
|
||||||
entry.label.isBold = true;
|
entry.label.isBold = true;
|
||||||
entry.label.drawNew();
|
entry.label.rerender();
|
||||||
entry.label.changed();
|
|
||||||
myself.buttons.fixLayout();
|
myself.buttons.fixLayout();
|
||||||
myself.drawNew();
|
myself.rerender();
|
||||||
myself.ide.showMessage('shared.', 2);
|
myself.ide.showMessage('shared.', 2);
|
||||||
|
|
||||||
// Set the Shared URL if the project is currently open
|
// Set the Shared URL if the project is currently open
|
||||||
|
@ -7197,10 +7181,9 @@ ProjectDialogMorph.prototype.unshareProject = function () {
|
||||||
myself.unpublishButton.hide();
|
myself.unpublishButton.hide();
|
||||||
entry.label.isBold = false;
|
entry.label.isBold = false;
|
||||||
entry.label.isItalic = false;
|
entry.label.isItalic = false;
|
||||||
entry.label.drawNew();
|
entry.label.rerender();
|
||||||
entry.label.changed();
|
|
||||||
myself.buttons.fixLayout();
|
myself.buttons.fixLayout();
|
||||||
myself.drawNew();
|
myself.rerender();
|
||||||
myself.ide.showMessage('unshared.', 2);
|
myself.ide.showMessage('unshared.', 2);
|
||||||
if (proj.projectname === ide.projectName) {
|
if (proj.projectname === ide.projectName) {
|
||||||
location.hash = '';
|
location.hash = '';
|
||||||
|
@ -7237,10 +7220,9 @@ ProjectDialogMorph.prototype.publishProject = function () {
|
||||||
myself.publishButton.hide();
|
myself.publishButton.hide();
|
||||||
myself.unpublishButton.show();
|
myself.unpublishButton.show();
|
||||||
entry.label.isItalic = true;
|
entry.label.isItalic = true;
|
||||||
entry.label.drawNew();
|
entry.label.rerender();
|
||||||
entry.label.changed();
|
|
||||||
myself.buttons.fixLayout();
|
myself.buttons.fixLayout();
|
||||||
myself.drawNew();
|
myself.rerender();
|
||||||
myself.ide.showMessage('published.', 2);
|
myself.ide.showMessage('published.', 2);
|
||||||
|
|
||||||
// Set the Shared URL if the project is currently open
|
// Set the Shared URL if the project is currently open
|
||||||
|
@ -7283,10 +7265,9 @@ ProjectDialogMorph.prototype.unpublishProject = function () {
|
||||||
myself.publishButton.show();
|
myself.publishButton.show();
|
||||||
myself.unpublishButton.hide();
|
myself.unpublishButton.hide();
|
||||||
entry.label.isItalic = false;
|
entry.label.isItalic = false;
|
||||||
entry.label.drawNew();
|
entry.label.rerender();
|
||||||
entry.label.changed();
|
|
||||||
myself.buttons.fixLayout();
|
myself.buttons.fixLayout();
|
||||||
myself.drawNew();
|
myself.rerender();
|
||||||
myself.ide.showMessage('unpublished.', 2);
|
myself.ide.showMessage('unpublished.', 2);
|
||||||
},
|
},
|
||||||
myself.ide.cloudError()
|
myself.ide.cloudError()
|
||||||
|
@ -7309,10 +7290,7 @@ ProjectDialogMorph.prototype.edit = function () {
|
||||||
ProjectDialogMorph.prototype.fixLayout = function () {
|
ProjectDialogMorph.prototype.fixLayout = function () {
|
||||||
var th = fontHeight(this.titleFontSize) + this.titlePadding * 2,
|
var th = fontHeight(this.titleFontSize) + this.titlePadding * 2,
|
||||||
thin = this.padding / 2,
|
thin = this.padding / 2,
|
||||||
inputField = this.nameField || this.filterField,
|
inputField = this.nameField || this.filterField;
|
||||||
oldFlag = Morph.prototype.trackChanges;
|
|
||||||
|
|
||||||
Morph.prototype.trackChanges = false;
|
|
||||||
|
|
||||||
if (this.buttons && (this.buttons.children.length > 0)) {
|
if (this.buttons && (this.buttons.children.length > 0)) {
|
||||||
this.buttons.fixLayout();
|
this.buttons.fixLayout();
|
||||||
|
@ -7334,7 +7312,6 @@ ProjectDialogMorph.prototype.fixLayout = function () {
|
||||||
);
|
);
|
||||||
inputField.setLeft(this.srcBar.right() + this.padding * 3);
|
inputField.setLeft(this.srcBar.right() + this.padding * 3);
|
||||||
inputField.setTop(this.srcBar.top());
|
inputField.setTop(this.srcBar.top());
|
||||||
inputField.drawNew();
|
|
||||||
|
|
||||||
this.listField.setLeft(this.srcBar.right() + this.padding);
|
this.listField.setLeft(this.srcBar.right() + this.padding);
|
||||||
this.listField.setWidth(
|
this.listField.setWidth(
|
||||||
|
@ -7375,9 +7352,6 @@ ProjectDialogMorph.prototype.fixLayout = function () {
|
||||||
this.buttons.setCenter(this.center());
|
this.buttons.setCenter(this.center());
|
||||||
this.buttons.setBottom(this.bottom() - this.padding);
|
this.buttons.setBottom(this.bottom() - this.padding);
|
||||||
}
|
}
|
||||||
|
|
||||||
Morph.prototype.trackChanges = oldFlag;
|
|
||||||
this.changed();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// ProjectRecoveryDialogMorph /////////////////////////////////////////
|
// ProjectRecoveryDialogMorph /////////////////////////////////////////
|
||||||
|
@ -9497,7 +9471,7 @@ StageHandleMorph.prototype.init = function (target) {
|
||||||
this.color = MorphicPreferences.isFlat ?
|
this.color = MorphicPreferences.isFlat ?
|
||||||
IDE_Morph.prototype.groupColor : new Color(190, 190, 190);
|
IDE_Morph.prototype.groupColor : new Color(190, 190, 190);
|
||||||
this.isDraggable = false;
|
this.isDraggable = false;
|
||||||
this.noticesTransparentClick = true;
|
// +++ this.noticesTransparentClick = true;
|
||||||
this.setExtent(new Point(12, 50));
|
this.setExtent(new Point(12, 50));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -9642,7 +9616,7 @@ PaletteHandleMorph.prototype.init = function (target) {
|
||||||
this.color = MorphicPreferences.isFlat ?
|
this.color = MorphicPreferences.isFlat ?
|
||||||
new Color(255, 255, 255) : new Color(190, 190, 190);
|
new Color(255, 255, 255) : new Color(190, 190, 190);
|
||||||
this.isDraggable = false;
|
this.isDraggable = false;
|
||||||
this.noticesTransparentClick = true;
|
// +++ this.noticesTransparentClick = true;
|
||||||
this.setExtent(new Point(12, 50));
|
this.setExtent(new Point(12, 50));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue