src/Pure/Admin/component_flatlaf.scala
author desharna
Sat, 15 Mar 2025 20:17:03 +0100
changeset 82282 919eb0e67930
parent 82049 0eac687b768d
child 82544 b572e7324bfb
permissions -rw-r--r--
Moved predicate left_unique from HOL.Transfer to HOL.Relation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
82035
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
     1
/*  Title:      Pure/Admin/component_flatlaf.scala
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
     3
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
     4
Build Isabelle flatlaf component from official downloads.
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
     5
*/
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
     6
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
     7
package isabelle
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
     8
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
     9
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    10
object Component_FlatLaf {
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    11
  /* platform information */
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    12
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    13
  sealed case class Platform_Info(name: String, exe: Boolean = false)
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    14
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    15
  private val platforms =
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    16
    List(
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    17
      Platform_Info("flatlaf-{V}-macos-arm64.dylib"),
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    18
      Platform_Info("flatlaf-{V}-macos-x86_64.dylib"),
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    19
      Platform_Info("flatlaf-{V}-linux-x86_64.so"),
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    20
      Platform_Info("flatlaf-{V}-windows-x86_64.dll", exe = true))
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    21
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    22
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    23
  /* build flatlaf */
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    24
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    25
  val default_download_url = "https://repo1.maven.org/maven2/com/formdev/flatlaf"
82049
0eac687b768d just one flatlaf version: native libraries are optional;
wenzelm
parents: 82035
diff changeset
    26
  val default_version = "3.5.4"
82035
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    27
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    28
  def build_flatlaf(
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    29
    target_dir: Path = Path.current,
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    30
    download_url: String = default_download_url,
82049
0eac687b768d just one flatlaf version: native libraries are optional;
wenzelm
parents: 82035
diff changeset
    31
    version: String = default_version,
82035
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    32
    progress: Progress = new Progress,
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    33
  ): Unit = {
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    34
    /* component */
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    35
82049
0eac687b768d just one flatlaf version: native libraries are optional;
wenzelm
parents: 82035
diff changeset
    36
    val component_name = "flatlaf-" + version
82035
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    37
    val component_dir =
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    38
      Components.Directory(target_dir + Path.basic(component_name)).create(progress = progress)
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    39
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    40
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    41
    /* download */
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    42
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    43
    Isabelle_System.make_directory(component_dir.lib)
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    44
82049
0eac687b768d just one flatlaf version: native libraries are optional;
wenzelm
parents: 82035
diff changeset
    45
    def download(name: String, exe: Boolean = false): Unit = {
82035
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    46
      val download_name = name.replace("{V}", version)
82049
0eac687b768d just one flatlaf version: native libraries are optional;
wenzelm
parents: 82035
diff changeset
    47
      val target = component_dir.lib + Path.basic(download_name)
82035
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    48
      Isabelle_System.download_file(
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    49
        download_url + "/" + version + "/" + download_name, target, progress = progress)
82049
0eac687b768d just one flatlaf version: native libraries are optional;
wenzelm
parents: 82035
diff changeset
    50
      if (exe) File.set_executable(target)
82035
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    51
    }
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    52
82049
0eac687b768d just one flatlaf version: native libraries are optional;
wenzelm
parents: 82035
diff changeset
    53
    download("flatlaf-{V}-no-natives.jar")
82035
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    54
82049
0eac687b768d just one flatlaf version: native libraries are optional;
wenzelm
parents: 82035
diff changeset
    55
    for (platform <- platforms) download(platform.name, exe = platform.exe)
82035
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    56
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    57
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    58
    /* settings */
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    59
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    60
    component_dir.write_settings("""
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    61
ISABELLE_FLATLAF_HOME="$COMPONENT"
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    62
82049
0eac687b768d just one flatlaf version: native libraries are optional;
wenzelm
parents: 82035
diff changeset
    63
classpath "$ISABELLE_FLATLAF_HOME/lib/flatlaf-""" + version + """-no-natives.jar"
82035
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    64
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    65
isabelle_scala_service "isabelle.FlatLightLaf"
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    66
isabelle_scala_service "isabelle.FlatDarkLaf"
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    67
""")
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    68
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    69
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    70
    /* README */
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    71
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    72
    File.write(component_dir.README,
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    73
      """This is the FlatLaf Java/Swing look-and-feel from
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    74
https://www.formdev.com/flatlaf and
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    75
https://mvnrepository.com/artifact/com.formdev/flatlaf
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    76
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    77
It is covered by the Apache License 2.0 license.
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    78
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    79
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    80
        Makarius
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    81
        """ + Date.Format.date(Date.now()) + "\n")
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    82
  }
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    83
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    84
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    85
  /* Isabelle tool wrapper */
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    86
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    87
  val isabelle_tool =
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    88
    Isabelle_Tool("component_flatlaf", "build Isabelle flatlaf component from official downloads",
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    89
      Scala_Project.here,
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    90
      { args =>
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    91
        var target_dir = Path.current
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    92
        var download_url = default_download_url
82049
0eac687b768d just one flatlaf version: native libraries are optional;
wenzelm
parents: 82035
diff changeset
    93
        var version = default_version
82035
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    94
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    95
        val getopts = Getopts("""
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    96
Usage: isabelle component_flatlaf [OPTIONS]
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    97
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    98
  Options are:
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
    99
    -D DIR       target directory (default ".")
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
   100
    -U URL       download URL (default: """ + quote(default_download_url) + """)
82049
0eac687b768d just one flatlaf version: native libraries are optional;
wenzelm
parents: 82035
diff changeset
   101
    -V VERSION   version (default: """ + quote(default_version) + """)
82035
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
   102
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
   103
  Build flatlaf component from official downloads.""",
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
   104
          "D:" -> (arg => target_dir = Path.explode(arg)),
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
   105
          "U:" -> (arg => download_url = arg),
82049
0eac687b768d just one flatlaf version: native libraries are optional;
wenzelm
parents: 82035
diff changeset
   106
          "V:" -> (arg => version = arg))
82035
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
   107
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
   108
        val more_args = getopts(args)
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
   109
        if (more_args.nonEmpty) getopts.usage()
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
   110
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
   111
        val progress = new Console_Progress()
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
   112
82049
0eac687b768d just one flatlaf version: native libraries are optional;
wenzelm
parents: 82035
diff changeset
   113
        build_flatlaf(target_dir = target_dir, download_url = download_url, version = version,
0eac687b768d just one flatlaf version: native libraries are optional;
wenzelm
parents: 82035
diff changeset
   114
          progress = progress)
82035
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
   115
      })
e074ba489ab0 updated to flatlaf-3.5.4, with fallback on 2.6 for arm64-linux;
wenzelm
parents:
diff changeset
   116
}