- Upgrade to SWT 4.21
- Upgrade to JDK 16.0.2
- Upgrade to JRuby 9.3.0.0
- Update packaging to rely on JDK 16 `jpackage` (instead of older JDK 8 `javapackager`)
- Renamed `Glimmer::RakeTask::Package.javapackager_extra_args` to `Glimmer::RakeTask::Package.jpackage_extra_args` to match the name of `jpackage` in JDK 16
- Change `package/[os]` scaffolding placement for packaging icons into `icons/[os]` to accomodate Java 9 Module security for icon retrieval from within a JAR
The biggest difference in this version of SWT is auto-switching to Dark Mode on the Mac.
If you encounter any issues due to the big upgrade from JDK 8 to JDK 16 and jpackage for native-executable packaging, please report in an issue request. There is one annoying message that shows up during packaging with Warbler (unsupported Java version "16", defaulting to 1.7), which seems caused by running JRuby on JDK 16, but I was able to contain its damage and render it harmless (at least as far as I could tell).
In other news, a new Glimmer DSL has been brewing:
Glimmer DSL for LibUI is a prerequisite-free CRuby desktop development GUI library. No need to pre-install any prerequisites. Just install the gem and have platform-independent native GUI that just works!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# From: https://github.com/AndyObtiva/glimmer-dsl-libui#control-gallery | |
require 'glimmer-dsl-libui' | |
include Glimmer | |
menu('File') { | |
menu_item('Open') { | |
on_clicked do | |
file = open_file(MAIN_WINDOW) | |
puts file unless file.nil? | |
end | |
} | |
menu_item('Save') { | |
on_clicked do | |
file = save_file(MAIN_WINDOW) | |
puts file unless file.nil? | |
end | |
} | |
quit_menu_item { | |
on_clicked do | |
puts 'Bye Bye' | |
end | |
} | |
preferences_menu_item # Can optionally contain an on_clicked listener | |
} | |
menu('Edit') { | |
check_menu_item('Checkable Item_') | |
separator_menu_item | |
menu_item('Disabled Item_') { | |
enabled false | |
} | |
} | |
menu('Help') { | |
menu_item('Help') | |
about_menu_item # Can optionally contain an on_clicked listener | |
} | |
MAIN_WINDOW = window('Control Gallery', 600, 500) { | |
margined true | |
on_closing do | |
puts 'Bye Bye' | |
end | |
vertical_box { | |
horizontal_box { | |
group('Basic Controls') { | |
vertical_box { | |
button('Button') { | |
stretchy false | |
on_clicked do | |
msg_box(MAIN_WINDOW, 'Information', 'You clicked the button') | |
end | |
} | |
checkbox('Checkbox') { | |
stretchy false | |
on_toggled do |c| | |
checked = c.checked? | |
MAIN_WINDOW.title = "Checkbox is #{checked}" | |
c.text = "I am the checkbox (#{checked})" | |
end | |
} | |
label('Label') { stretchy false } | |
horizontal_separator { stretchy false } | |
date_picker { stretchy false } | |
time_picker { stretchy false } | |
date_time_picker { stretchy false } | |
font_button { stretchy false } | |
color_button { stretchy false } | |
} | |
} | |
vertical_box { | |
group('Numbers') { | |
stretchy false | |
vertical_box { | |
spinbox(0, 100) { | |
stretchy false | |
value 42 | |
on_changed do |s| | |
puts "New Spinbox value: #{s.value}" | |
end | |
} | |
slider(0, 100) { | |
stretchy false | |
on_changed do |s| | |
v = s.value | |
puts "New Slider value: #{v}" | |
@progress_bar.value = v | |
end | |
} | |
@progress_bar = progress_bar { stretchy false } | |
} | |
} | |
group('Lists') { | |
stretchy false | |
vertical_box { | |
combobox { | |
stretchy false | |
items 'combobox Item 1', 'combobox Item 2', 'combobox Item 3' # also accepts a single array argument | |
on_selected do |c| | |
puts "New combobox selection: #{c.selected}" | |
end | |
} | |
editable_combobox { | |
stretchy false | |
items 'Editable Item 1', 'Editable Item 2', 'Editable Item 3' # also accepts a single array argument | |
} | |
radio_buttons { | |
items 'Radio Button 1', 'Radio Button 2', 'Radio Button 3' # also accepts a single array argument | |
} | |
} | |
} | |
tab { | |
tab_item('Page 1') { | |
horizontal_box { | |
entry { | |
text 'Please enter your feelings' | |
on_changed do |e| | |
puts "Current textbox data: '#{e.text}'" | |
end | |
} | |
} | |
} | |
tab_item('Page 2') { | |
horizontal_box | |
} | |
tab_item('Page 3') { | |
horizontal_box | |
} | |
} | |
} | |
} | |
} | |
} | |
MAIN_WINDOW.show |
Happy Glimmering!
No comments:
Post a Comment