mirror of
https://github.com/bakustarver/rpgmakermlinux-cicpoffs.git
synced 2025-04-23 06:32:04 +02:00
258 lines
No EOL
8.2 KiB
JavaScript
258 lines
No EOL
8.2 KiB
JavaScript
//=============================================================================
|
|
|
|
// Libellule Text extractor to clipboard plugin
|
|
|
|
// Clipboard_llule.js
|
|
|
|
//=============================================================================
|
|
|
|
/*
|
|
|
|
* Install and configure with the patcher here :
|
|
|
|
* https://www.dropbox.com/sh/p83yxde8e8nrz35/AADkJzbz7VuM7HqwiwhhfhHTa?dl=0
|
|
|
|
* Help : http://www.ulmf.org/bbs/showthread.php?t=29359
|
|
|
|
*/
|
|
|
|
//=============================================================================
|
|
TimerMil = 200;
|
|
WantCmdItemSeparator = true;
|
|
CmdItemSeparator = "。\r\n";
|
|
ShowCodeColor = false;
|
|
ForceNameSeparator = false;
|
|
TextSeparatorLeft = String.fromCharCode(12300);
|
|
TextSeparatorRight = String.fromCharCode(12301);
|
|
NameCodeColor = ["#ffffa0", "#40c0f0", "#ff80ff", "#80ff80", "#66cc40"];
|
|
|
|
IgnoreRepeatableItem = true;
|
|
BloctextSeparator = true;
|
|
IgnoreRepeatablebloc = true;
|
|
var IgnoreRegExtextbloc = [/^\d\d:\d\d($|.$|。$)/, /(^([,.\d]+)([,.]\d+)?)(\uFF27($|。$)|G($|。$)|$|。$)/, /^(\uFF27($|。$)|G($|。$))/];
|
|
ClipLogerOnStart = true;
|
|
WantChoiceSeparator = true;
|
|
ChoiceSeparator = "。\r\n";
|
|
TextWaitingTimeOFF = true;
|
|
var ClipLoger = "";
|
|
LastItem = "";
|
|
ColorEnCour = "";
|
|
ActualThis = "";
|
|
StarTextNamefound = false;
|
|
EndTextNamefound = false;
|
|
BlocSeparatorLeft = String.fromCharCode(12300);
|
|
BlocSeparatorRight = String.fromCharCode(12301);
|
|
LastColor = "";
|
|
MemText = "";
|
|
LastMemTextSend = "";
|
|
ClipTimerOn = false;
|
|
SaveOrgDrawText = Bitmap.prototype.drawText;
|
|
var gui = require('nw.gui');
|
|
var clipboard = gui.Clipboard.get();
|
|
var win = gui.Window.get();
|
|
var SaveoldInput_onKeyDown = Input._onKeyDown;
|
|
var Savewindowonload = window.onload;
|
|
var choices_encour = [];
|
|
Bitmap.prototype.drawText = function(text, x, y, maxWidth, lineHeight, align) {
|
|
OptionalText = "";
|
|
pass = true;
|
|
if (text) {
|
|
|
|
if (text.length == 1 && y >= this.height) {
|
|
pass = false;
|
|
}
|
|
|
|
if (IgnoreRepeatableItem && text.length > 1) {
|
|
if (text == LastItem) {
|
|
pass = false;
|
|
}
|
|
LastItem = text;
|
|
}
|
|
if (pass) {
|
|
if (ShowCodeColor) {
|
|
if (this.textColor != LastColor) {
|
|
OptionalText = "<" + this.textColor + ">";
|
|
LastColor = this.textColor;
|
|
}
|
|
}
|
|
if (ForceNameSeparator && text.length == 1) {
|
|
if (!ClipTimerOn && (NameCodeColor.indexOf(this.textColor) > -1)) {
|
|
LastColor = this.textColor;
|
|
StarTextNamefound = true;
|
|
ColorNameEnCour = this.textColor;
|
|
}
|
|
if (ClipTimerOn && StarTextNamefound && (this.textColor != ColorNameEnCour)) {
|
|
OptionalText = OptionalText + TextSeparatorLeft;
|
|
StarTextNamefound = false;
|
|
EndTextNamefound = true;
|
|
}
|
|
}
|
|
if (BloctextSeparator) {
|
|
if (ActualThis == "") {
|
|
ActualThis = this;
|
|
OptionalText = OptionalText + BlocSeparatorLeft;
|
|
} else {
|
|
if (ActualThis != this) {
|
|
OptionalText = OptionalText + BlocSeparatorRight + "\r\n" + BlocSeparatorLeft;
|
|
ActualThis = this;
|
|
}
|
|
}
|
|
if ($gameMessage != null) {
|
|
if ($gameMessage.isChoice() && !choices_encour.length) {
|
|
choices_encour = $gameMessage._choices;
|
|
}
|
|
}
|
|
}
|
|
if (ClipTimerOn) {
|
|
if (text.length > 1 && WantCmdItemSeparator) {
|
|
MemText = MemText + OptionalText + text + CmdItemSeparator;
|
|
} else {
|
|
MemText = MemText + OptionalText + text;
|
|
}
|
|
} else {
|
|
if (text.length > 1 && WantCmdItemSeparator) {
|
|
MemText = OptionalText + text + CmdItemSeparator;
|
|
} else {
|
|
MemText = OptionalText + text;
|
|
}
|
|
ClipTimerOn = true;
|
|
ClipTimer = setTimeout(ClipTimerSend, TimerMil);
|
|
}
|
|
}
|
|
}
|
|
SaveOrgDrawText.call(this, text, x, y, maxWidth, lineHeight, align);
|
|
};
|
|
|
|
function ClipTimerSend() {
|
|
if (BloctextSeparator) {
|
|
MemText = MemText + BlocSeparatorRight;
|
|
KickOutDuplicateBloc();
|
|
}
|
|
if (EndTextNamefound) {
|
|
MemText = MemText + TextSeparatorRight;
|
|
StarTextNamefound = false;
|
|
EndTextNamefound = false;
|
|
if (BloctextSeparator) {
|
|
KickOutDuplicateBloc();
|
|
}
|
|
}
|
|
if (MemText != "") {
|
|
clipboard.set(MemText, 'text');
|
|
LastMemTextSend = MemText;
|
|
}
|
|
ClipTimerOn = false;
|
|
ActualThis = "";
|
|
LastColor = "";
|
|
ColorNameEnCour = "";
|
|
};
|
|
var LibWindow_Message_prototype_clearFlags = Window_Message.prototype.clearFlags;
|
|
Window_Message.prototype.clearFlags = function() {
|
|
LibWindow_Message_prototype_clearFlags.call(this);
|
|
this._showFast = true;
|
|
this._lineShowFast = true;
|
|
this._pauseSkip = false;
|
|
};
|
|
|
|
function LaunchCliploger() {
|
|
/*Path = process.cwd() + "\\www\\js\\plugins";
|
|
var execFile = require('child_process').execFile;
|
|
ClipLoger = execFile(Path + "\\ClipLoger.exe", function(error, stdout, stderr) {
|
|
ClipLoger = "";
|
|
});
|
|
if (!ClipLoger.pid) {
|
|
alert(Msg1);
|
|
return;
|
|
}
|
|
setTimeout(Focus, 500);*/
|
|
};
|
|
|
|
function Focus() {
|
|
if (ClipLoger.pid) {
|
|
win.focus();
|
|
} else {
|
|
setTimeout(Focus, 500);
|
|
}
|
|
};
|
|
Input._onKeyDown = function(event) {
|
|
if (event.keyCode == 118) {
|
|
clipboard.set(LastMemTextSend, 'text');
|
|
}
|
|
if (event.keyCode == 117) {
|
|
if (ClipLoger.pid) {
|
|
ClipLoger.kill();
|
|
} else {
|
|
LaunchCliploger();
|
|
}
|
|
}
|
|
if (event.keyCode == 116) {
|
|
if (ClipLoger.pid) {
|
|
ClipLoger.kill();
|
|
}
|
|
}
|
|
SaveoldInput_onKeyDown.call(this, event);
|
|
};
|
|
window.onload = function() {
|
|
if (ClipLogerOnStart) {
|
|
LaunchCliploger();
|
|
}
|
|
Savewindowonload.call(this);
|
|
};
|
|
|
|
function KickOutDuplicateBloc() {
|
|
var Bloc = MemText.split("\r\n");
|
|
var output = [];
|
|
var Deleteone = "";
|
|
if (choices_encour.length && WantChoiceSeparator) {
|
|
var temps = choices_encour[0].replace(/\\C\[\d+\]/gi, "");
|
|
var With = BlocSeparatorLeft + temps;
|
|
var Deleteone = With;
|
|
for (i = 1; i < choices_encour.length; i++) {
|
|
temps = choices_encour[i].replace(/\\C\[\d+\]/gi, "");
|
|
With = With + ChoiceSeparator + temps;
|
|
Deleteone = Deleteone + temps;
|
|
}
|
|
With += BlocSeparatorRight;
|
|
output.push(With);
|
|
Deleteone += BlocSeparatorRight;
|
|
choices_encour = [];
|
|
}
|
|
for (var i = 0; i < Bloc.length; i++) {
|
|
if (output.indexOf(Bloc[i]) < 0) {
|
|
if (RegEXspeIgnore(Bloc[i]) && Deleteone != Bloc[i]) {
|
|
output.push(EraseDoubleSeparator(Bloc[i]));
|
|
}
|
|
}
|
|
}
|
|
MemText = output.join("\r\n");
|
|
};
|
|
|
|
function RegEXspeIgnore(Bloc) {
|
|
BlocS = Bloc.slice(1, Bloc.length - 1);
|
|
if (IgnoreRegExtextbloc.length != 0) {
|
|
for (var i = 0; i < IgnoreRegExtextbloc.length; i++) {
|
|
if (BlocS.search(IgnoreRegExtextbloc[i]) != -1) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
} else {
|
|
return true;
|
|
}
|
|
};
|
|
|
|
function EraseDoubleSeparator(Bloc) {
|
|
if ((Bloc.split(BlocSeparatorLeft).length) == 3) {
|
|
if ((Bloc.split(BlocSeparatorRight).length) == 3) {
|
|
return Bloc.slice(1, Bloc.length - 1);
|
|
}
|
|
}
|
|
return Bloc;
|
|
};
|
|
Msg1 = "ClipLoger.exe not found\r\nReinstal the plugin from the patcher\r\n";
|
|
var Save_Window_Message_prototype_updateWait = Window_Message.prototype.updateWait;
|
|
Window_Message.prototype.updateWait = function() {
|
|
if (ClipTimerOn && TextWaitingTimeOFF) {
|
|
this._waitCount = 0;
|
|
}
|
|
return Save_Window_Message_prototype_updateWait.call(this);
|
|
}; |