src/Tools/jEdit/src/font_info.scala
author wenzelm
Sat, 01 Mar 2014 19:39:27 +0100
changeset 55825 694833e3e4a0
child 55826 e56a52dd770a
permissions -rw-r--r--
tuned signature -- separate module Font_Info;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
55825
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
     1
/*  Title:      Tools/jEdit/src/jedit_font.scala
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
     3
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
     4
Font information, derived from main view font.
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
     5
*/
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
     6
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
     7
package isabelle.jedit
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
     8
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
     9
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    10
import isabelle._
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    11
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    12
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    13
import java.awt.Font
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    14
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    15
import org.gjt.sp.jedit.{jEdit, View}
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    16
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    17
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    18
object Font_Info
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    19
{
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    20
  val dummy: Font_Info = Font_Info("Dialog", 12.0f)
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    21
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    22
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    23
  /* size range */
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    24
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    25
  val min_size = 5
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    26
  val max_size = 250
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    27
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    28
  def restrict_size(size: Float): Float = size max min_size min max_size
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    29
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    30
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    31
  /* jEdit font */
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    32
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    33
  def main_family(): String = jEdit.getProperty("view.font")
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    34
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    35
  def main_size(scale: Double = 1.0): Float =
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    36
    restrict_size(jEdit.getIntegerProperty("view.fontsize", 16).toFloat * scale.toFloat)
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    37
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    38
  def main(scale: Double = 1.0): Font_Info =
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    39
    Font_Info(main_family(), main_size(scale))
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    40
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    41
  def main_change(change: Float => Float)
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    42
  {
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    43
    val size0 = main_size()
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    44
    val size = restrict_size(change(size0)).round
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    45
    if (size != size0) {
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    46
      jEdit.setIntegerProperty("view.fontsize", size)
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    47
      jEdit.propertiesChanged()
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    48
      jEdit.saveSettings()
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    49
      jEdit.getActiveView().getStatus.setMessageAndClear("Text font size: " + size)
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    50
    }
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    51
  }
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    52
}
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    53
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    54
sealed case class Font_Info(family: String, size: Float)
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    55
{
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    56
  def font: Font = new Font(family, Font.PLAIN, size.round)
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    57
}
694833e3e4a0 tuned signature -- separate module Font_Info;
wenzelm
parents:
diff changeset
    58