Mercurial Hosting > luan
changeset 1955:a4dde9c54f3e default tip
add clipboard
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 27 May 2025 22:29:05 -0600 |
parents | b785eff96faf |
children | |
files | src/luan/modules/swing/Clipboard.luan |
diffstat | 1 files changed, 40 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
diff -r b785eff96faf -r a4dde9c54f3e src/luan/modules/swing/Clipboard.luan --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/luan/modules/swing/Clipboard.luan Tue May 27 22:29:05 2025 -0600 @@ -0,0 +1,40 @@ +local Luan = require "luan:Luan.luan" +local error = Luan.error +local ipairs = Luan.ipairs or error() +local Table = require "luan:Table.luan" +local java_to_table_shallow = Table.java_to_table_shallow or error() +local Io = require "luan:Io.luan" +local new_file = Io.schemes.file or error() +require "java" +local Toolkit = require "java:java.awt.Toolkit" +local DataFlavor = require "java:java.awt.datatransfer.DataFlavor" + + +local Clipboard = {} + +local function get(data_flavor) + local clipboard = Toolkit.getDefaultToolkit().getSystemClipboard() + if clipboard.isDataFlavorAvailable(data_flavor) then + return clipboard.getData(data_flavor) + end + return nil +end + +function Clipboard.get_string() + return get(DataFlavor.stringFlavor) +end + +function Clipboard.get_files() + local files = get(DataFlavor.javaFileListFlavor) + if files == nil then + return nil + end + files = java_to_table_shallow(files) + local rtn = {} + for _, file in ipairs(files) do + rtn[#rtn+1] = new_file(file) + end + return rtn +end + +return Clipboard