Patch title: Release 96 bulk changes
Abstract:
File: /pliant/graphic/ui/sample/wm.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/unsafe.pli"
module "/pliant/graphic/ui/server/api.pli"
module "/pliant/graphic/ui/client/context.pli"
module "/pliant/graphic/ui/client/connect.pli"
module "/pliant/graphic/layout/prototype.pli"
module "/pliant/graphic/layout/helper/event.pli"


ui_function help_content
  title "Pliant ui documentation"
  para
    text "The Pliant ui enables you to open 12 sessions at once." ; eol
    text "The ui screen center can be divided in up to four parts, enabling you to view up to four sessions simultaneously." ; eol
    text "The top, left and bottom parts of the screen display information about the current session, so they change each time you switch to another session." ; eol
    text "The right part of the screen always displays information about the window manager session." ; eol
  para
    text "When you start the ui, session 1 is the current session and displays your home page." ; eol
    text "Session 12 is always running the window manager." ; eol
  para
    text "Below we list the various special keys used by the Pliant ui and their respective meanings:" ; eol
  table
    row
      cell header
        text "Key"
      cell header
        text "Action"
    row
      cell
        text "Shift + F1 ... F11"
      cell
        text "Duplicates current session on session 1 .. 11"
    row
      cell
        text "Ctrl + F1 ... F12"
      cell
        text "Switches to session 1 ... 12"
    row
      cell
        style set "table/box/mode" 0 set "table/cell/mode" 0
          table
            row
              cell
                void
              cell
                text "Q"
              cell
                text "W"
              cell
                text "E"
            row
              cell
                text "Ctrl + "
              cell
                text "A"
              cell
                text "S"
              cell
                text "D"
            row
              cell
                void
              cell
                text "Z"
              cell
                text "X"
              cell
                text "C"
      cell
        text "Defines which part of the screen the current session is using." ; eol
        text "As an example, Ctrl + A means current session will use only the left side of the screen, and Ctrl + S means the current session will use all the screen." ; eol
        style set "standard/text/size" 8/72*25.4
          eol ; text "If your keyboard layout is not QWERTY, then the letters will not be the ones listed here, but the 9 letters of the leftmost 3x3 letters square of your keyboard."
    row
      cell
        text "Ctrl + "
        italic
          text "an_arrow"
      cell
        text "Changes the position of the middle of the screen."
    row
      cell
        text "Ctrl + page up"
      cell
        text "Zoom in."
    row
      cell
        text "Ctrl + page down"
      cell
        text "Zoom out."
    row
      cell
        text "Ctrl[lf]or[lf]mouse right button"
      cell
        text "Forces screen high quality redraw."
    row
      cell
        text "Alt + "
        italic
          text "any_letter"
      cell
        text "Toggles the button which has the selected yellow-painted key."

ui_function windows_manager mode
  oarg_rw Str mode
  window right
    style set "button/standard/text/size" 8/72*25.4 set "button/over/text/size" 8/72*25.4
      if mode<>"login"
        button "login"
          mode := "login"
          windows_manager mode
      else
        button "close login"
          mode := ""
          windows_manager mode
      eol
      if mode<>"url"
        button "url"
          mode := "url"
          windows_manager mode
      else
        button "close url"
          mode := ""
          windows_manager mode
      eol
      if mode<>"help"
        button "help"
          mode := "help"
          windows_manager mode
      else
        button "close help"
          mode := ""
          windows_manager mode
  if mode="login"
    window top
      if client_console<>null
        var Link:UIConsole c :> client_console map UIConsole
        ovar Str user password ; ovar Bool secured := true
        if exists:(c:login first "")
          user := (c:login first "") user
        input "User: " user ; eol
        input "Password: " password password ; eol
        select "Used secured connection: " secured
          option "yes" "true"
          option "no" "false"
        eol
        button "login"
          var UILogin login ; login user := user ; login password := password ; login secured := secured
          if exists:(c:login first "")
            c:login remove (c:login first "")
          if user<>""
            c:login insert "" login
          mode := ""
          windows_manager mode
  eif mode="url"
    window top
      if client_console<>null
        var Link:UIConsole c :> client_console map UIConsole
        var Int i := c:zorder 0
        if i=11
          i := c:zorder 1
        var Pointer:UISession s :> c:session i
        ovar Str url := s url
        input "URL: " url
        button "go"
          var Pointer:UISession session :> c:session i
          if true # duplicated with 'url_call'
            session history_push
            each w session:windows
              w scroll_x := 0 ; w scroll_y := 0
              if (exists w:root)
                session discard w:root
                w root :> null map LayoutPrototype
              if (exists w:overlay)
                session discard w:overlay
                w overlay :> null map LayoutPrototype
              w refresh := true
            session keys := var (Dictionary Str Link:LayoutPrototype) no_keys
            session connect_main url (var Dictionary empty_context)
          mode := ""
          windows_manager mode
  else
    window top
      void
  if mode="help"
    window main
      help_content
  else
    window main
      void

ui_path "/windows_manager"
  windows_manager (ovar Str mode)