From 537c0c1f75925729c292bf93303d9e02c4d57df8 Mon Sep 17 00:00:00 2001 From: otya128 Date: Fri, 30 Dec 2016 20:34:52 +0900 Subject: [PATCH] Implement CLIPBOARD --- SMILEBASIC/builtinfunctions.d | 9 +++++++++ SMILEBASIC/petitcomputer.d | 17 +++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/SMILEBASIC/builtinfunctions.d b/SMILEBASIC/builtinfunctions.d index 2a0af62..e1362d6 100644 --- a/SMILEBASIC/builtinfunctions.d +++ b/SMILEBASIC/builtinfunctions.d @@ -3370,6 +3370,15 @@ class BuiltinFunction { p.console.scroll(x, y); } + static void CLIPBOARD(PetitComputer p, wstring value) + { + p.clipboard = value; + } + static wstring CLIPBOARD(PetitComputer p) + { + return p.clipboard; + } + //alias void function(PetitComputer, Value[], Value[]) BuiltinFunc; static BuiltinFunctions[wstring] builtinFunctions; static wstring getBasicName(BFD)(const wstring def) diff --git a/SMILEBASIC/petitcomputer.d b/SMILEBASIC/petitcomputer.d index f807e63..a0e086c 100644 --- a/SMILEBASIC/petitcomputer.d +++ b/SMILEBASIC/petitcomputer.d @@ -1483,6 +1483,7 @@ class PetitComputer char* cl = SDL_GetClipboardText(); string an = cast(string)(cl[0..core.stdc.string.strlen(cl)]); ks = an.to!wstring; + SDL_free(cl); } } console.print(ks); @@ -1668,7 +1669,23 @@ class PetitComputer { this.console.initGRPF(); } + } + wstring clipboard() + { + if(SDL_HasClipboardText()) + { + char* cl = SDL_GetClipboardText(); + string an = cast(string)(cl[0..core.stdc.string.strlen(cl)]); + auto ret = an.to!wstring; + SDL_free(cl); + return ret; + } + return ""; + } + void clipboard(wstring ws) + { + SDL_SetClipboardText(ws.to!string.toStringz); } //プチコン内部表現はRGB5_A1