Mercurial Hosting > luan
changeset 1957:269e78ad8a85 default tip
swing for windows
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 29 May 2025 22:29:15 -0600 (9 hours ago) |
parents | 19de10be4c37 |
children | |
files | src/luan/modules/swing/Awt_container.luan src/luan/modules/swing/Component.luan src/luan/modules/swing/Font.luan src/luan/modules/swing/TextAreaLuan.java |
diffstat | 4 files changed, 37 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/luan/modules/swing/Awt_container.luan Wed May 28 15:58:56 2025 -0600 +++ b/src/luan/modules/swing/Awt_container.luan Thu May 29 22:29:15 2025 -0600 @@ -1,6 +1,8 @@ local Luan = require "luan:Luan.luan" local error = Luan.error local ipairs = Luan.ipairs or error() +local pairs = Luan.pairs or error() +local type = Luan.type or error() local Utils = require "luan:swing/Utils.luan" local fail = Utils.fail or error() local remove = Utils.remove or error() @@ -9,12 +11,18 @@ local from_dimension = Utils.from_dimension or error() local to_point = Utils.to_point or error() local from_point = Utils.from_point or error() +local Font = require "luan:swing/Font.luan" +local get_font = Font.get or error() +local to_java_attributes = Font.to_java_attributes or error() require "java" local SwingLuan = require "java:luan.modules.swing.SwingLuan" local newResizeListener = SwingLuan.newResizeListener local notifyAfterResizeStops = SwingLuan.notifyAfterResizeStops local newMoveListener = SwingLuan.newMoveListener local notifyAfterMoveStops = SwingLuan.notifyAfterMoveStops +local JFont = require "java:java.awt.Font" +local Logging = require "luan:logging/Logging.luan" +local logger = Logging.logger "swing/Awt_container" local Awt_container = {} @@ -62,6 +70,27 @@ if preferred_size~=nil then jcomponent.setPreferredSize(to_dimension(preferred_size)) end local maximum_size = remove(props,"maximum_size") if maximum_size~=nil then jcomponent.setMaximumSize(to_dimension(maximum_size)) end + local function set_font(font) + if type(font) == "table" then + font = get_font(font) + end + jcomponent.setFont(font) + end + local font = remove(props,"font") + if font~=nil then set_font(font) end + local font_changes = remove(props,"font_changes") + if font_changes~=nil then + font_changes = to_java_attributes(font_changes) + local font = jcomponent.getFont() + --logger.info(font.getAttributes()) + local attrs = font.getAttributes() + for key, val in pairs(font_changes) do + attrs.put(key,val) + end + font = JFont.getFont(attrs) + jcomponent.setFont(font) + end + component.set_font = set_font --[[ component.repaint = jcomponent.repaint component.validate = jcomponent.validate
--- a/src/luan/modules/swing/Component.luan Wed May 28 15:58:56 2025 -0600 +++ b/src/luan/modules/swing/Component.luan Thu May 29 22:29:15 2025 -0600 @@ -8,7 +8,6 @@ local make_metatable = Utils.make_metatable or error() local remove = Utils.remove or error() local check_empty = Utils.check_empty or error() -local get_font = require("luan:swing/Font.luan").get or error() local Awt_container = require "luan:swing/Awt_container.luan" local super__index = Awt_container.__index or error() local super__new_index = Awt_container.__new_index or error() @@ -72,14 +71,6 @@ end jcomponent.setLayout(layout) end - local function set_font(font) - if type(font) == "table" then - font = get_font(font) - end - jcomponent.setFont(font) - end - local font = remove(props,"font") - if font~=nil then set_font(font) end local border = remove(props,"border") if border~=nil then jcomponent.setBorder(border) end local foreground_color = remove(props,"foreground_color") @@ -102,7 +93,6 @@ jcomponent.add(child.java,child.constraints) end end - component.set_font = set_font component._dont_gc = {} function component.dont_gc(obj) component._dont_gc[obj] = true
--- a/src/luan/modules/swing/Font.luan Wed May 28 15:58:56 2025 -0600 +++ b/src/luan/modules/swing/Font.luan Thu May 29 22:29:15 2025 -0600 @@ -13,12 +13,18 @@ size = TextAttribute.SIZE } -function Font.get(attrs) +local function to_java_attributes(attrs) local jattrs = {} for key, val in pairs(attrs) do key = keys[key] or error("invalid font key: "..key) jattrs[key] = val end + return jattrs +end +Font.to_java_attributes = to_java_attributes + +function Font.get(attrs) + local jattrs = to_java_attributes(attrs) return JFont.getFont(jattrs) end
--- a/src/luan/modules/swing/TextAreaLuan.java Wed May 28 15:58:56 2025 -0600 +++ b/src/luan/modules/swing/TextAreaLuan.java Thu May 29 22:29:15 2025 -0600 @@ -97,7 +97,7 @@ public TextAreaLuan() { super(); - //logger.info(getUI().toString()); + //logger.info(""+getFont().getSize()); if( UIManager.getLookAndFeel().getName().startsWith("FlatLaf") ) { setCaret(flatLafCaret); }