LucreSwing
statement
LucreSwing is a Scala library which bridges between Swing (through
the Desktop project) and Lucre.
It is (C)opyright 2014–2023 by Hanns Holger Rutz. All rights reserved. The project is released under
the GNU Affero General Public License v3+ and comes
with absolutely no warranties. To contact the author, send an e-mail to contact at sciss.de
.
requirements / building
This project builds with sbt against Scala 2.12, 2.13, Dotty (JVM) and Scala 2.13 (JS). The last version to support Scala 2.11 was 1.17.2.
To use the library in your project:
"de.sciss" %% "lucre-swing" % v
The current version v
is "2.10.1"
.
Note that you cannot compile with the combination of Dotty and JDK 9 or greater, because the
-release
scalac option is not supported.
contributing
Please see the file CONTRIBUTING.md
notes
The desktop application's widgets in package de.sciss.lucre.swing
are not available on Scala.js. Instead, the
graph construction element in de.sciss.lucre.swing.graph
are (with few unsupported exceptions) available both
for the JVM and for JS, making it thus possible to render the Widget
contents both on the desktop and inside
the browser.
We have yet to determine how to "export" a widget to Scala.js. For an example and minimum CSS, see SoundProcessesJSTest.
The following graph elements are currently not supported in Scala.js:
DropTarget
PathField
(the peer still usesFile
instead ofURI
)
publishing releases
There is a bug in sbt-crossproject,
when running sbt +publishSigned
we end up with error "Repository for publishing is not specified."
Instead, sbt has to be run with sbt +rootJVM/publishSigned +rootJS/publishSigned
.
todo
- collapse multiple undoable edits, especially with things like slider movements which produce many subsequent and related edits
- Scala.js rendering: styling - have a look at https://css-tricks.com/custom-styling-form-inputs-with-modern-css-features/