mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2026-09-14 05:41:22 +00:00
@@ -0,0 +1,24 @@
|
||||
/*\
|
||||
title: $:/core/modules/editor/operations/bitmap/clear.js
|
||||
type: application/javascript
|
||||
module-type: bitmapeditoroperation
|
||||
|
||||
Bitmap editor operation to clear the image
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports["clear"] = function(event) {
|
||||
var ctx = this.canvasDomNode.getContext("2d");
|
||||
ctx.globalAlpha = 1;
|
||||
ctx.fillStyle = event.paramObject.colour || "white";
|
||||
ctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);
|
||||
// Save changes
|
||||
this.strokeEnd();
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -0,0 +1,29 @@
|
||||
/*\
|
||||
title: $:/core/modules/editor/operations/bitmap/resize.js
|
||||
type: application/javascript
|
||||
module-type: bitmapeditoroperation
|
||||
|
||||
Bitmap editor operation to resize the image
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports["resize"] = function(event) {
|
||||
// Get the new width
|
||||
var newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),
|
||||
newHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);
|
||||
// Update if necessary
|
||||
if(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {
|
||||
this.changeCanvasSize(newWidth,newHeight);
|
||||
}
|
||||
// Update the input controls
|
||||
this.refreshToolbar();
|
||||
// Save the image into the tiddler
|
||||
this.saveChanges();
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -0,0 +1,49 @@
|
||||
/*\
|
||||
title: $:/core/modules/editor/operations/text/excise.js
|
||||
type: application/javascript
|
||||
module-type: texteditoroperation
|
||||
|
||||
Text editor operation to excise the selection to a new tiddler
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports["excise"] = function(event,operation) {
|
||||
var editTiddler = this.wiki.getTiddler(this.editTitle),
|
||||
editTiddlerTitle = this.editTitle;
|
||||
if(editTiddler && editTiddler.fields["draft.of"]) {
|
||||
editTiddlerTitle = editTiddler.fields["draft.of"];
|
||||
}
|
||||
var excisionTitle = event.paramObject.title || this.wiki.generateNewTitle("New Excision");
|
||||
this.wiki.addTiddler(new $tw.Tiddler(
|
||||
this.wiki.getCreationFields(),
|
||||
this.wiki.getModificationFields(),
|
||||
{
|
||||
title: excisionTitle,
|
||||
text: operation.selection,
|
||||
tags: event.paramObject.tagnew === "yes" ? [editTiddlerTitle] : []
|
||||
}
|
||||
));
|
||||
operation.replacement = excisionTitle;
|
||||
switch(event.paramObject.type || "transclude") {
|
||||
case "transclude":
|
||||
operation.replacement = "{{" + operation.replacement+ "}}";
|
||||
break;
|
||||
case "link":
|
||||
operation.replacement = "[[" + operation.replacement+ "]]";
|
||||
break;
|
||||
case "macro":
|
||||
operation.replacement = "<<" + (event.paramObject.macro || "translink") + " \"\"\"" + operation.replacement + "\"\"\">>";
|
||||
break;
|
||||
}
|
||||
operation.cutStart = operation.selStart;
|
||||
operation.cutEnd = operation.selEnd;
|
||||
operation.newSelStart = operation.selStart;
|
||||
operation.newSelEnd = operation.selStart + operation.replacement.length;
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -0,0 +1,59 @@
|
||||
/*\
|
||||
title: $:/core/modules/editor/operations/text/prefix-lines.js
|
||||
type: application/javascript
|
||||
module-type: texteditoroperation
|
||||
|
||||
Text editor operation to add a prefix to the selected lines
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports["prefix-lines"] = function(event,operation) {
|
||||
// Cut just past the preceding line break, or the start of the text
|
||||
operation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);
|
||||
// Cut to just past the following line break, or to the end of the text
|
||||
operation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);
|
||||
// Process each line
|
||||
var lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\r?\n/mg);
|
||||
$tw.utils.each(lines,function(line,index) {
|
||||
// Compose the required prefix
|
||||
var prefix = event.paramObject.character.repeat(event.paramObject.count);
|
||||
// Check if we already have the required prefix
|
||||
if(line.substring(0,prefix.length) === prefix) {
|
||||
// If so, remove the prefix
|
||||
line = line.substring(prefix.length);
|
||||
// Remove any whitespace
|
||||
while(line.charAt(0) === " ") {
|
||||
line = line.substring(1);
|
||||
}
|
||||
} else {
|
||||
// If we didn't have the prefix, remove any existing prefix characters
|
||||
while(line.charAt(0) === event.paramObject.character) {
|
||||
line = line.substring(1);
|
||||
}
|
||||
// Remove any whitespace
|
||||
while(line.charAt(0) === " ") {
|
||||
line = line.substring(1);
|
||||
}
|
||||
// Apply the prefix
|
||||
line = prefix + " " + line;
|
||||
}
|
||||
// Save the modified line
|
||||
lines[index] = line;
|
||||
});
|
||||
// Stitch the replacement text together and set the selection
|
||||
operation.replacement = lines.join("\n");
|
||||
if(lines.length === 1) {
|
||||
operation.newSelStart = operation.cutStart + operation.replacement.length;
|
||||
operation.newSelEnd = operation.newSelStart;
|
||||
} else {
|
||||
operation.newSelStart = operation.cutStart;
|
||||
operation.newSelEnd = operation.newSelStart + operation.replacement.length;
|
||||
}
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -0,0 +1,19 @@
|
||||
/*\
|
||||
title: $:/core/modules/editor/operations/text/redo.js
|
||||
type: application/javascript
|
||||
module-type: texteditoroperation
|
||||
|
||||
Text editor operation to tell the browser to perform an redo
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports["redo"] = function(event,operation) {
|
||||
this.execCommand("redo");
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -0,0 +1,23 @@
|
||||
/*\
|
||||
title: $:/core/modules/editor/operations/text/replace-all.js
|
||||
type: application/javascript
|
||||
module-type: texteditoroperation
|
||||
|
||||
Text editor operation to replace the entire text
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports["replace-all"] = function(event,operation) {
|
||||
operation.cutStart = 0;
|
||||
operation.cutEnd = operation.text.length;
|
||||
operation.replacement = event.paramObject.text;
|
||||
operation.newSelStart = 0;
|
||||
operation.newSelEnd = operation.replacement.length;
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -0,0 +1,23 @@
|
||||
/*\
|
||||
title: $:/core/modules/editor/operations/text/replace-selection.js
|
||||
type: application/javascript
|
||||
module-type: texteditoroperation
|
||||
|
||||
Text editor operation to replace the selection
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports["replace-selection"] = function(event,operation) {
|
||||
operation.replacement = event.paramObject.text;
|
||||
operation.cutStart = operation.selStart;
|
||||
operation.cutEnd = operation.selEnd;
|
||||
operation.newSelStart = operation.selStart;
|
||||
operation.newSelEnd = operation.selStart + operation.replacement.length;
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -0,0 +1,19 @@
|
||||
/*\
|
||||
title: $:/core/modules/editor/operations/text/undo.js
|
||||
type: application/javascript
|
||||
module-type: texteditoroperation
|
||||
|
||||
Text editor operation to tell the browser to perform an undo
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports["undo"] = function(event,operation) {
|
||||
this.execCommand("undo");
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -0,0 +1,28 @@
|
||||
/*\
|
||||
title: $:/core/modules/editor/operations/text/wrap-lines.js
|
||||
type: application/javascript
|
||||
module-type: texteditoroperation
|
||||
|
||||
Text editor operation to wrap the selected lines with a prefix and suffix
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports["wrap-lines"] = function(event,operation) {
|
||||
// Cut just past the preceding line break, or the start of the text
|
||||
operation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);
|
||||
// Cut to just past the following line break, or to the end of the text
|
||||
operation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);
|
||||
// Add the prefix and suffix
|
||||
operation.replacement = event.paramObject.prefix + "\n" +
|
||||
operation.text.substring(operation.cutStart,operation.cutEnd) + "\n" +
|
||||
event.paramObject.suffix + "\n";
|
||||
operation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;
|
||||
operation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);
|
||||
};
|
||||
|
||||
})();
|
||||
@@ -0,0 +1,52 @@
|
||||
/*\
|
||||
title: $:/core/modules/editor/operations/text/wrap-selection.js
|
||||
type: application/javascript
|
||||
module-type: texteditoroperation
|
||||
|
||||
Text editor operation to wrap the selection with the specified prefix and suffix
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
exports["wrap-selection"] = function(event,operation) {
|
||||
if(operation.selStart === operation.selEnd) {
|
||||
// No selection; check if we're within the prefix/suffix
|
||||
if(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {
|
||||
// Remove the prefix and suffix unless they comprise the entire text
|
||||
if(operation.selStart > event.paramObject.prefix.length || (operation.selEnd + event.paramObject.suffix.length) < operation.text.length ) {
|
||||
operation.cutStart = operation.selStart - event.paramObject.prefix.length;
|
||||
operation.cutEnd = operation.selEnd + event.paramObject.suffix.length;
|
||||
operation.replacement = "";
|
||||
operation.newSelStart = operation.cutStart;
|
||||
operation.newSelEnd = operation.newSelStart;
|
||||
}
|
||||
} else {
|
||||
// Wrap the cursor instead
|
||||
operation.cutStart = operation.selStart;
|
||||
operation.cutEnd = operation.selEnd;
|
||||
operation.replacement = event.paramObject.prefix + event.paramObject.suffix;
|
||||
operation.newSelStart = operation.selStart + event.paramObject.prefix.length;
|
||||
operation.newSelEnd = operation.newSelStart;
|
||||
}
|
||||
} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {
|
||||
// Prefix and suffix are already present, so remove them
|
||||
operation.cutStart = operation.selStart;
|
||||
operation.cutEnd = operation.selEnd;
|
||||
operation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);
|
||||
operation.newSelStart = operation.selStart;
|
||||
operation.newSelEnd = operation.selStart + operation.replacement.length;
|
||||
} else {
|
||||
// Add the prefix and suffix
|
||||
operation.cutStart = operation.selStart;
|
||||
operation.cutEnd = operation.selEnd;
|
||||
operation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;
|
||||
operation.newSelStart = operation.selStart;
|
||||
operation.newSelEnd = operation.selStart + operation.replacement.length;
|
||||
}
|
||||
};
|
||||
|
||||
})();
|
||||
Reference in New Issue
Block a user