VT100TerminalView.st
author Claus Gittinger <cg@exept.de>
Wed, 05 May 1999 15:00:30 +0200
changeset 1355 df09d1e16165
parent 1352 b10f36808e3e
child 1357 8e7e0d17389e
permissions -rw-r--r--
checkin from browser
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
930
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
     1
TerminalView subclass:#VT100TerminalView
998
4915be34a1d7 state instvar moved
Claus Gittinger <cg@exept.de>
parents: 978
diff changeset
     2
	instanceVariableNames:'currentParam parameters lastCursorLine'
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
	classVariableNames:''
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	poolDictionaries:''
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	category:'Views-TerminalViews'
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
!
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
     8
!VT100TerminalView class methodsFor:'documentation'!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
     9
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    10
documentation
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    11
"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    12
    VT100 terminal
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    13
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    14
    [start with:]
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    15
        VT100TerminalView openShell
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    16
"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    17
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    18
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    19
! !
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
932
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 930
diff changeset
    21
!VT100TerminalView methodsFor:'defaults'!
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    22
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    23
vt100KeyCodes
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    24
    ^ IdentityDictionary withKeysAndValues:
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    25
        #(
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    26
             #CursorUp    '\e[A'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    27
             #CursorDown  '\e[B'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    28
             #CursorRight '\e[C'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    29
             #CursorLeft  '\e[D'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    30
             #Home        '\e[H'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    31
             #Escape      '\e'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    32
             #BackSpace   '\b'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    33
             #Return      '\r'
976
40af522dda86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 956
diff changeset
    34
             #Delete      '\0177'
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
    35
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
    36
             #F1          '\eOP'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
    37
             #F2          '\eOQ'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
    38
             #F3          '\eOR'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
    39
             #F4          '\eOS'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
    40
             #F5          '\eOt'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
    41
             #F6          '\eOu'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
    42
             #F7          '\eOv'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
    43
             #F8          '\eOl'
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
    44
             #F9          '\eOw'
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    45
         )
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    46
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    47
    "Created: / 10.6.1998 / 15:13:01 / cg"
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
    48
    "Modified: / 5.5.1999 / 00:50:04 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    49
! !
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    50
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    51
!VT100TerminalView methodsFor:'functions'!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    52
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    53
addLines
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    54
    "Add the appropriate number of blank lines at the position
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    55
     indicated by the cursor."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    56
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    57
    self addLines: ((parameters at: 1) max: 1).
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    58
    self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    59
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    60
    "Created: / 10.6.1998 / 14:48:03 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    61
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    62
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    63
addLines: aNumber
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    64
    "Add aNumber blank lines at the position indicated by the cursor."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    65
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    66
    aNumber timesRepeat: [
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    67
        self insertLine:'' before:cursorLine
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    68
    ]
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    69
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    70
    "Created: / 10.6.1998 / 14:49:30 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    71
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    72
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
    73
autoMargin:aBoolean
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
    74
    "set/clear autowrap at end of line (not yet implemented)"
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
    75
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
    76
    "Created: / 12.6.1998 / 21:42:06 / cg"
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
    77
!
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
    78
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    79
clearLines
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    80
    "Clear some part of the current line, as indicated by the first parameter."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    81
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
    82
    |arg|
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
    83
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
    84
    arg := parameters at: 1.
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
    85
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
    86
    arg = 0 ifTrue: [^self doClearToEndOfLine].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
    87
    arg = 1 ifTrue: [^self doClearFromBeginningOfLine].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
    88
    arg = 2 ifTrue: [^self doClearEntireLine]
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    89
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    90
    "Created: / 10.6.1998 / 14:44:22 / cg"
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
    91
    "Modified: / 21.7.1998 / 20:07:42 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    92
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
    93
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
    94
deleteCharacters
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
    95
    "Delete the appropriate number of characters at the position
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
    96
     indicated by the cursor."
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
    97
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
    98
    |n|
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
    99
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   100
    n := ((parameters at: 1) max: 1).
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   101
    self deleteFromLine:cursorLine col:cursorCol toLine:cursorLine col:cursorCol+n-1.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   102
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   103
    "Created: / 12.6.1998 / 21:19:02 / cg"
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   104
    "Modified: / 12.6.1998 / 21:19:15 / cg"
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   105
!
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   106
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   107
displayMode: anInteger
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   108
    "Set the current display mode."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   109
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   110
    |p1|
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   111
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   112
    p1 := parameters at:1.
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   113
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   114
"/    self endEntry.
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   115
    p1 == 1 ifTrue:[
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   116
        "/ ESC-[-1-m  -> bold
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   117
1287
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   118
        "/ workaround: windows bold fonts are
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   119
        "/ wider, leading to ugly looking output
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   120
        "/ Therefore, use red color instead of bold
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   121
        Display platformName = 'WIN32' ifTrue:[
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   122
            self color:Color red.
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   123
        ] ifFalse:[
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   124
            self bold.
48e6c847a554 use red color instead of bold
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   125
        ].
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   126
        ^ self.
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   127
    ].
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   128
    p1 == 4 ifTrue:[
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   129
        "/ ESC-[-4-m  -> underline
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   130
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   131
        self underline.
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   132
        ^ self.
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   133
    ].
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   134
    p1 == 5 ifTrue:[
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   135
        "/ ESC-[-5-m  -> blink
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   136
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   137
        self color:Color blue.
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   138
        ^ self.
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   139
    ].
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   140
    p1 == 7 ifTrue:[
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   141
        "/ ESC-[-7-m  -> reverse
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   142
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   143
        self reverse.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   144
        ^ self.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   145
    ].
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   146
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   147
    "/ ESC-[-any-m  -> normal
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   148
    self normal.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   149
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   150
    "Created: / 10.6.1998 / 15:01:16 / cg"
1352
b10f36808e3e F-key codes
Claus Gittinger <cg@exept.de>
parents: 1340
diff changeset
   151
    "Modified: / 5.5.1999 / 00:53:15 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   152
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   153
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   154
doClearDisplay
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   155
    "Clear some part of the current screen, as indicated by the first parameter."
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   156
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   157
    |arg|
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   158
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   159
    arg := parameters at: 1.
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   160
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   161
    arg = 0 ifTrue: [^self doClearToEndOfScreen].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   162
    arg = 1 ifTrue: [^self doClearFromBeginningOfScreen].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   163
    arg = 2 ifTrue: [^self doClearEntireScreen]
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   164
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   165
    "Created: / 21.7.1998 / 20:05:07 / cg"
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   166
    "Modified: / 21.7.1998 / 20:07:36 / cg"
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   167
!
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   168
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   169
insertCharacters
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   170
    "Insert the appropriate number of spaces at the position
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   171
     indicated by the cursor."
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   172
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   173
    |s|
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   174
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   175
    s := String new:((parameters at: 1) max: 1).
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   176
    self insertStringWithoutCRsAtLine:cursorLine col:cursorCol.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   177
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   178
    "Modified: / 12.6.1998 / 21:14:25 / cg"
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   179
    "Created: / 28.7.1998 / 00:53:51 / cg"
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   180
!
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   181
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   182
move
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   183
    "Move to the locations indicated by the first and second parameters."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   184
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   185
    self moveToX: ((parameters at: 2) max: 1) y: ((parameters at: 1) max: 1).
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   186
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   187
    "Created: / 10.6.1998 / 14:40:01 / cg"
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   188
    "Modified: / 20.6.1998 / 18:49:12 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   189
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   190
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   191
moveToX: xLocation y: yLocation
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   192
    "Position the cursor at the location given by xLocation and yLocation.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   193
     Ignore the command if the parameters are outside the allowable range."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   194
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   195
"/ Transcript show:'numberOfColumns '; showCR:numberOfColumns.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   196
"/ Transcript show:'numberOfLines '; showCR:numberOfLines.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   197
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   198
"/    (xLocation < 1 or: [xLocation > numberOfColumns]) ifTrue: [^self].
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   199
"/    (yLocation < 1 or: [yLocation > numberOfLines]) ifTrue: [^self].
952
b83678ff6770 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 951
diff changeset
   200
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   201
    self cursorVisibleLine:yLocation col:xLocation.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   202
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   203
    "Created: / 10.6.1998 / 14:40:49 / cg"
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   204
    "Modified: / 20.6.1998 / 20:27:11 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   205
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   206
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   207
reportTerminalType
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   208
    (parameters at: 1) == 6 ifTrue:[
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   209
        "/ report position
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   210
        self endEntry.
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   211
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   212
        inStream nextPut:(Character esc).
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   213
        inStream nextPutAll:'[' 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   214
                            , cursorLine printString 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   215
                            , ';' 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   216
                            , cursorCol printString
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   217
                            , 'R'.
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   218
        ^ self
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   219
    ].
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   220
    (parameters at: 1) == 7 ifTrue:[
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   221
        "/ display name 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   222
    ].
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   223
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   224
    "Created: / 11.6.1998 / 23:05:50 / cg"
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   225
    "Modified: / 28.7.1998 / 00:54:30 / cg"
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   226
!
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   227
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   228
resetDefaults
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   229
    "Reset the default parameters"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   230
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   231
    |l1 c1 l2 c2|
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   232
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   233
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   234
    l1 := (parameters at: 1).
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   235
    l2 := (parameters at: 2).
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   236
"/ Transcript show:'resetDefaults:'; show:l1;show:' ';showCR:l2.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   237
    (l1 ~~ 0 and:[l2 ~~ 0]) ifTrue:[
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   238
        rangeStartLine := l1.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   239
        rangeEndLine := l2.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   240
    ] ifFalse:[
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   241
"/        self halt.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   242
    ].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   243
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   244
"/    (rangeStartLine == 1 and:[rangeEndLine == numberOfLines]) ifTrue:[
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   245
"/        rangeEndLine := rangeStartLine := nil.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   246
"/    ].
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   247
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   248
"/    autoLineFeed := false.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   249
"/    autoMargin := true.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   250
"/    displayMode := 0.                "Normal display"!! !!
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   251
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   252
    "Created: / 10.6.1998 / 14:50:53 / cg"
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   253
    "Modified: / 20.6.1998 / 20:28:26 / cg"
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
! !
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
!VT100TerminalView methodsFor:'initialization'!
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   258
initialize
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   259
    super initialize.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   260
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   261
    self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   262
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   263
    "Created: / 10.6.1998 / 14:46:07 / cg"
953
59167fd29632 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 952
diff changeset
   264
    "Modified: / 13.6.1998 / 13:58:01 / cg"
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   265
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   266
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   267
initializeKeyboardSequences
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   268
    kbdSequences := (self vt100KeyCodes)
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   269
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   270
    "Modified: / 9.6.1998 / 20:49:21 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   271
    "Created: / 10.6.1998 / 15:12:32 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   272
! !
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   273
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   274
!VT100TerminalView methodsFor:'processing - input'!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   275
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   276
addToParameter: char
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   277
    "The parameter char is a digit. Add it to the current parameter."
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   278
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   279
    | param |
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   280
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   281
    param := parameters at:currentParam.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   282
    parameters at:currentParam put:(param * 10 + char digitValue)
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   283
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   284
    "Created: / 10.6.1998 / 14:39:00 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   285
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   286
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   287
doNothing
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   288
    self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   289
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   290
    "Created: / 10.6.1998 / 14:31:56 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   291
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   292
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   293
endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   294
    state := 0. 
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   295
    currentParam := 1. 
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   296
    parameters := Array new:8 withAll:0.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   297
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   298
    "Created: / 10.6.1998 / 14:30:40 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   299
    "Modified: / 10.6.1998 / 14:30:57 / cg"
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   300
!
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   301
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   302
nextPut:char
937
9823aad16498 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 934
diff changeset
   303
    "process a character (i.e. the shells output)"
9823aad16498 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 934
diff changeset
   304
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   305
"/ Transcript show:state; show:' '; showCR:char storeString.
932
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 930
diff changeset
   306
933
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   307
    state == #gotReturn ifTrue:[
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   308
        state := 0.
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   309
        char == Character nl ifTrue:[
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   310
            "/ cr-nl
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   311
            "/ stay in buffering mode.
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   312
            super nextPut:Character cr.
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   313
            ^ self.
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   314
        ].
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   315
        self endEntry.
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   316
        self cursorToBeginOfLine.
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   317
        "/ continue in initial state
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   318
    ].
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   319
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   320
    state == 0 ifTrue:[
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   321
        "/ Currently, we are in initial state.  
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   322
        "/ Decide what to do on the basis of the parameter char.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   323
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   324
        char asciiValue < 32 ifTrue:[
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   325
            (char == Character esc) ifTrue:[ 
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   326
                state := #gotESC. 
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   327
                ^ self 
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   328
            ].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   329
            (char == Character nl) ifTrue:[ 
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   330
                self endEntry.
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   331
                ^ self doCursorDown:1.
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   332
            ].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   333
            (char == Character return) ifTrue:[ 
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   334
                (rangeEndLine notNil and:[rangeEndLine ~~ numberOfLines]) ifTrue:[
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   335
                    self endEntry.
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   336
                    self cursorToBeginOfLine.
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   337
                ] ifFalse:[
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   338
                    state := #gotReturn.
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   339
                ].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   340
                ^ self.
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   341
            ].
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   342
            (char == Character backspace) ifTrue:[ 
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   343
                self endEntry.
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   344
                ^ self cursorLeft. "/ doBackspace
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   345
            ].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   346
            (char == Character bell) ifTrue:[
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   347
                self beep.
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   348
                ^ self 
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   349
            ].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   350
            (char == (Character value:5)) ifTrue:[
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   351
                "/ terminal-type query
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   352
                self reportTerminalType.
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   353
                ^ self 
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   354
            ].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   355
            (char == (Character value:16rf)) ifTrue:[
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   356
                "/ SO
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   357
                ^ self 
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   358
            ].
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   359
            (char == (Character value:16re)) ifTrue:[
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   360
                "/ SI
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   361
                ^ self 
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   362
            ].
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   363
            char ~~ Character tab ifTrue:[
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   364
                char asciiValue ~~ 0 ifTrue:[
1340
494d79438431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1287
diff changeset
   365
                    ('VT100 [info]: unhandled control key: ' , char storeString) infoPrintCR.
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   366
                ].
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   367
                ^ self.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   368
            ]
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   369
        ].
934
b450dbaeedac checkin from browser
Claus Gittinger <cg@exept.de>
parents: 933
diff changeset
   370
        ^ super nextPut:char
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   371
    ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   372
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   373
    state == #gotESC ifTrue:[
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   374
        "/ Currently, we are in ESC state.  
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   375
        "/ Decide what to do on the basis of the parameter char.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   376
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   377
        char == $[ ifTrue: [ 
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   378
            "/ ESC-[
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   379
            state := #gotCSI. 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   380
            ^ self
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   381
        ].
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   382
        char == $] ifTrue: [ 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   383
            "/ ESC-]
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   384
            "/xterm sequence
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   385
            state := #gotXTERMCSI. 
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   386
            ^ self
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   387
        ].
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   388
        char == $( ifTrue: [ 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   389
            "/ ESC-(
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   390
            "/ todo: set-charset 0 ...
1056
4390f680fcce ignore ESC-(-X sequences.
Claus Gittinger <cg@exept.de>
parents: 1020
diff changeset
   391
            state := #gotCSI3.
4390f680fcce ignore ESC-(-X sequences.
Claus Gittinger <cg@exept.de>
parents: 1020
diff changeset
   392
            ^ self
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   393
        ].
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   394
        char == $) ifTrue: [ 
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   395
            "/ ESC-(
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   396
            "/ todo: set-charset 1 ...
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   397
            ^ self doNothing
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   398
        ].
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   399
        char == $7 ifTrue:[
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   400
            "/ ESC-7
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   401
            self endEntry.
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   402
            self saveCursor.
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   403
            ^ self endOfSequence
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   404
        ].
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   405
        char == $8 ifTrue:[
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   406
            "/ ESC-7
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   407
            self endEntry.
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   408
            self restoreCursor.
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   409
            ^ self endOfSequence
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   410
        ].
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   411
        char == $M ifTrue:[
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   412
            "/ ESC-M
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   413
            self endEntry.
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   414
            self doCursorUp:1.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   415
            ^ self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   416
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   417
        char == $D ifTrue:[
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   418
            "/ ESC-D
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   419
            self endEntry.
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   420
            self doCursorDown:1.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   421
            ^ self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   422
        ].
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   423
        char == $E ifTrue:[
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   424
            "/ ESC-E
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   425
            "/ TODO add_lines
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   426
            ^ self doNothing
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   427
        ].
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   428
        (char == $Z) ifTrue:[
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   429
            "/ terminal-type query 2
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   430
            self reportTerminalType.
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   431
            ^ self endOfSequence
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   432
        ].
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   433
        char == $= ifTrue: [
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   434
            "/ ESC-=
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   435
            ^ self doNothing
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   436
        ].
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   437
        char == $< ifTrue: [
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   438
            "/ ESC-<
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   439
            ^ self doNothing
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   440
        ].
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   441
        ^ self doNothing
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   442
    ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   443
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   444
    state == #gotCSI ifTrue:[
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   445
        "/ Currently, we are in ESC-[ state.  
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   446
        "/ Decide what to do on the basis of the parameter char.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   447
978
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   448
        char == $? ifTrue: [
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   449
            state := #gotCSI2.
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   450
            ^ self
8f6dee49a562 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   451
        ].
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   452
        char == $; ifTrue:[
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   453
            currentParam := (currentParam + 1) min: 8.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   454
            ^ self
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   455
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   456
        char isDigit ifTrue: [
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   457
            ^ self addToParameter:char
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   458
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   459
        char == $@ ifTrue: [
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   460
            self endEntry.
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   461
            self insertCharacters.
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   462
            ^ self endOfSequence
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   463
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   464
        char == $A ifTrue: [
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   465
            self endEntry.
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   466
            self doCursorUp:((parameters at: 1) max: 1).
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   467
            ^ self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   468
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   469
        char == $B ifTrue: [
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   470
            self endEntry.
1016
2d8e8b9bb9a5 fixed cursorLeft / cursorDown escape sequences.
Claus Gittinger <cg@exept.de>
parents: 1001
diff changeset
   471
            self doCursorDown:((parameters at: 1) max: 1).
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   472
            ^ self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   473
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   474
        char == $C ifTrue: [
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   475
            self endEntry.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   476
            self doCursorRight:((parameters at: 1) max: 1).
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   477
            ^ self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   478
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   479
        char == $D ifTrue: [
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   480
            self endEntry.
1016
2d8e8b9bb9a5 fixed cursorLeft / cursorDown escape sequences.
Claus Gittinger <cg@exept.de>
parents: 1001
diff changeset
   481
            self doCursorLeft:((parameters at: 1) max: 1).
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   482
            ^ self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   483
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   484
        char == $H ifTrue: [
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   485
            self endEntry.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   486
            self move.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   487
            ^ self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   488
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   489
        char == $J ifTrue: [
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   490
            self endEntry.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   491
            self doClearDisplay.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   492
            ^ self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   493
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   494
        char == $K ifTrue: [
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   495
            self endEntry.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   496
            self clearLines.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   497
            ^ self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   498
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   499
        char == $L ifTrue: [
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   500
            self endEntry.
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   501
            self insertLines.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   502
            ^ self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   503
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   504
        char == $M ifTrue: [
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   505
            self endEntry.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   506
            self deleteLines.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   507
            ^ self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   508
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   509
        char == $P ifTrue: [
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   510
            self endEntry.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   511
            self deleteCharacters.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   512
            ^ self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   513
        ].
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   514
        (char == $c) ifTrue:[
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   515
            "/ terminal-type query 3
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   516
            self reportTerminalType.
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   517
            ^ self endOfSequence
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   518
        ].
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   519
        char == $f ifTrue: [
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   520
            self endEntry.
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   521
            self move.
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   522
            ^ self endOfSequence
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   523
        ].
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   524
        char == $n ifTrue: [
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   525
            self report.
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   526
            ^ self endOfSequence
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   527
        ].
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   528
        char == $m ifTrue: [
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   529
            self displayMode: (parameters at: 1).
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   530
            ^ self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   531
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   532
        char == $r ifTrue: [
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   533
            self endEntry.
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   534
            self resetDefaults.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   535
            ^ self endOfSequence
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   536
        ].
939
54698a16b65c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 937
diff changeset
   537
        ^ self doNothing
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   538
    ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   539
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   540
    state == #gotCSI2 ifTrue:[
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   541
        "/ Currently, we are in ESC-[-? state.  
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   542
        "/ Decide what to do on the basis of the parameter char.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   543
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   544
        char == $; ifTrue: [
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   545
            currentParam := (currentParam + 1) min: 8.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   546
            ^ self
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   547
        ].
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   548
        char isDigit ifTrue: [
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   549
            self addToParameter: char.
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   550
            ^ self
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   551
        ].
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   552
        (char == $l 
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   553
        or:[char == $h]) ifTrue: [
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   554
            "/ (parameters at: 1) = 1 ifTrue: [app_cur_keys:(char == $h)].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   555
            "/ (parameters at: 1) = 2 ifTrue: [mode132:(char == $h)].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   556
            "/ (parameters at: 1) = 4 ifTrue: [smoothScroll:(char == $h)].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   557
            "/ (parameters at: 1) = 5 ifTrue: [reverseVideo:(char == $h)].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   558
            "/ (parameters at: 1) = 6 ifTrue: [decom:(char == $h)].
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   559
            self endEntry.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 944
diff changeset
   560
            (parameters at: 1) = 7 ifTrue: [self autoMargin:(char == $h)].
951
a9e48f549763 fixed scroll-range
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   561
            ^ self endOfSequence
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   562
        ].
939
54698a16b65c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 937
diff changeset
   563
        ^ self doNothing
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   564
    ].
933
de456e07697e much better asynchronous display
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   565
1056
4390f680fcce ignore ESC-(-X sequences.
Claus Gittinger <cg@exept.de>
parents: 1020
diff changeset
   566
    state == #gotCSI3 ifTrue:[
4390f680fcce ignore ESC-(-X sequences.
Claus Gittinger <cg@exept.de>
parents: 1020
diff changeset
   567
        "/ Currently, we are in ESC-(-? state.  
4390f680fcce ignore ESC-(-X sequences.
Claus Gittinger <cg@exept.de>
parents: 1020
diff changeset
   568
        "/ Decide what to do on the basis of the parameter char.
4390f680fcce ignore ESC-(-X sequences.
Claus Gittinger <cg@exept.de>
parents: 1020
diff changeset
   569
4390f680fcce ignore ESC-(-X sequences.
Claus Gittinger <cg@exept.de>
parents: 1020
diff changeset
   570
        "/ currently not supported
4390f680fcce ignore ESC-(-X sequences.
Claus Gittinger <cg@exept.de>
parents: 1020
diff changeset
   571
        ^ self doNothing.
4390f680fcce ignore ESC-(-X sequences.
Claus Gittinger <cg@exept.de>
parents: 1020
diff changeset
   572
    ].
4390f680fcce ignore ESC-(-X sequences.
Claus Gittinger <cg@exept.de>
parents: 1020
diff changeset
   573
944
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   574
    state == #gotXTERMCSI ifTrue:[
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   575
        "/ Currently, we are in ESC-] state.  
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   576
        "/ Decide what to do on the basis of the parameter char.
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   577
        ^ self doNothing
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   578
    ].
c59be5892714 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 941
diff changeset
   579
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   580
    self doNothing
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 920
diff changeset
   581
1020
035490ba97f2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1016
diff changeset
   582
    "Modified: / 28.7.1998 / 00:18:01 / cg"
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   583
! !
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   584
930
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   585
!VT100TerminalView methodsFor:'queries'!
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   586
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   587
terminalType
1355
df09d1e16165 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1352
diff changeset
   588
    ^ 'vt100'
930
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   589
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   590
    "Created: / 10.6.1998 / 16:22:39 / cg"
1355
df09d1e16165 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1352
diff changeset
   591
    "Modified: / 5.5.1999 / 11:22:40 / cg"
930
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   592
! !
3186aa6efe72 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   593
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   594
!VT100TerminalView class methodsFor:'documentation'!
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   595
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   596
version
1355
df09d1e16165 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1352
diff changeset
   597
    ^ '$Header: /cvs/stx/stx/libwidg2/VT100TerminalView.st,v 1.26 1999-05-05 13:00:30 cg Exp $'
920
7827037bca8e initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   598
! !