VT52TerminalView.st
author Claus Gittinger <cg@exept.de>
Fri, 15 Jun 2018 10:54:35 +0200
changeset 5816 7876c07931a7
parent 4445 c9eea14d6956
child 4770 6634b540fea2
permissions -rw-r--r--
#DOCUMENTATION by cg class: ComboListView class comment/format in: #documentation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1362
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
     1
"
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
     2
 COPYRIGHT (c) 1998 by eXept Software AG
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
     3
              All Rights Reserved
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
     4
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
     5
 This software is furnished under a license and may be used
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
     6
 only in accordance with the terms of that license and with the
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
     8
 be provided or otherwise made available to, or used by, any
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
     9
 other person.  No title to or ownership of the software is
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    10
 hereby transferred.
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    11
"
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 1420
diff changeset
    12
"{ Package: 'stx:libwidg2' }"
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 1420
diff changeset
    13
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
TerminalView subclass:#VT52TerminalView
998
4915be34a1d7 state instvar moved
Claus Gittinger <cg@exept.de>
parents: 980
diff changeset
    15
	instanceVariableNames:'param1 param2'
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	classVariableNames:''
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
	poolDictionaries:''
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	category:'Views-TerminalViews'
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!VT52TerminalView class methodsFor:'documentation'!
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
1362
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    23
copyright
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    24
"
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    25
 COPYRIGHT (c) 1998 by eXept Software AG
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    26
              All Rights Reserved
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    27
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    28
 This software is furnished under a license and may be used
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    29
 only in accordance with the terms of that license and with the
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    31
 be provided or otherwise made available to, or used by, any
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    32
 other person.  No title to or ownership of the software is
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    33
 hereby transferred.
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    34
"
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    35
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    36
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    37
!
178613e27d74 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1356
diff changeset
    38
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
documentation
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
"
1419
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1362
diff changeset
    41
    A VT52 terminal emulator.
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1362
diff changeset
    42
    Most of the functionality is inherited from my superclass,
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1362
diff changeset
    43
    I redefine/specialize certain methods for VT52 escape sequences
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1362
diff changeset
    44
    and vt52 keyboard codes
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1362
diff changeset
    45
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1362
diff changeset
    46
    [start with:]
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1362
diff changeset
    47
        VT52TerminalView openShell
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1362
diff changeset
    48
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1362
diff changeset
    49
    [see also:]
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1362
diff changeset
    50
        VT100TerminalView
55972fc3268f documentation
Claus Gittinger <cg@exept.de>
parents: 1362
diff changeset
    51
        TelnetTool
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
    [start with:]
916
d9626e722c21 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 914
diff changeset
    54
        VT52TerminalView openShell
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
"
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
! !
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
!VT52TerminalView methodsFor:'defaults'!
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
vt52KeyCodes
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
    62
    "return a vt52 keyCode table"
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
    63
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
    ^ IdentityDictionary withKeysAndValues:
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
        #(
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
             #CursorUp    '\eA'
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
             #CursorDown  '\eB'
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 919
diff changeset
    68
             #CursorRight '\eC'
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 919
diff changeset
    69
             #CursorLeft  '\eD'
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
             #Home        '\eH'
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
             #Escape      '\e'
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 919
diff changeset
    72
             #BackSpace   '\b'
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
             #Return      '\r'
976
40af522dda86 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 956
diff changeset
    74
             #Delete      '\0177'
1356
68b9f4468961 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1353
diff changeset
    75
             #Tab         '\t'
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
         )
927
b0b5b368e80f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 919
diff changeset
    77
1356
68b9f4468961 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1353
diff changeset
    78
    "Modified: / 5.5.1999 / 15:01:37 / cg"
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
! !
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
    81
!VT52TerminalView methodsFor:'events'!
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
    82
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
    83
defineWindowSize
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
    84
    super defineWindowSize.
980
8921b6e07c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
    85
    rangeEndLine := numberOfLines
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
    86
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
    87
    "Created: / 13.6.1998 / 18:15:43 / cg"
980
8921b6e07c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
    88
    "Modified: / 20.6.1998 / 20:33:29 / cg"
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
    89
! !
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
    90
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
!VT52TerminalView methodsFor:'initialization'!
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
initialize
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    super initialize.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
    95
    self endOfSequence.
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
980
8921b6e07c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
    97
    "Modified: / 20.6.1998 / 20:34:18 / cg"
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
!
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
initializeKeyboardSequences
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   101
    "setup my keyboard sequences for a vt52"
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   102
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
    kbdSequences := (self vt52KeyCodes)
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
! !
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
932
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   108
!VT52TerminalView methodsFor:'processing - input'!
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   109
4445
c9eea14d6956 refactored character processing
Claus Gittinger <cg@exept.de>
parents: 4292
diff changeset
   110
nextPut:char
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   111
    "process a character (i.e. the shells output)"
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   112
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 1420
diff changeset
   113
    Debug ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 1420
diff changeset
   114
        Transcript show:state; show:' '; showCR:char storeString.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 1420
diff changeset
   115
    ].
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   116
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   117
    state == #gotReturn ifTrue:[
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   118
        state := 0.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   119
        char == Character nl ifTrue:[
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   120
            "/ cr-nl
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   121
            "/ stay in buffering mode.
4445
c9eea14d6956 refactored character processing
Claus Gittinger <cg@exept.de>
parents: 4292
diff changeset
   122
            super cr.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   123
            ^ self.
932
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   124
        ].
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   125
        self endEntry.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   126
        self cursorToBeginOfLine.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   127
        "/ continue in initial state
932
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   128
    ].
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   129
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   130
    state == 0 ifTrue:[
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   131
        "/ Currently, we are in initial state.  
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   132
        "/ Decide what to do on the basis of the parameter char.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   133
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   134
        (char == Character esc) ifTrue:[ 
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   135
            self endEntry.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   136
            state := #gotESC. 
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   137
            ^ self 
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   138
        ].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   139
        (char == Character nl) ifTrue:[ 
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   140
            self doCursorDown:1.
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   141
            ^ self endEntry.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   142
        ].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   143
        (char == Character return) ifTrue:[ 
980
8921b6e07c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   144
            (rangeEndLine notNil and:[rangeEndLine ~~ numberOfLines]) ifTrue:[
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   145
                self endEntry.
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   146
                self cursorToBeginOfLine.
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   147
            ] ifFalse:[
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   148
                state := #gotReturn.
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   149
            ].
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   150
            ^ self.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   151
        ].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   152
        (char == Character backspace) ifTrue:[ 
4292
f2d5256fca75 class: VT52TerminalView
Claus Gittinger <cg@exept.de>
parents: 2202
diff changeset
   153
            self doCursorLeft:1. "/ doBackspace
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   154
            ^ self endEntry.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   155
        ].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   156
        (char == Character bell) ifTrue:[
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   157
            self beep.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   158
            ^ self 
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   159
        ].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   160
        char asciiValue < 32 ifTrue:[
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   161
            char ~~ Character tab ifTrue:[
980
8921b6e07c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   162
                char asciiValue ~~ 0 ifTrue:[
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 1420
diff changeset
   163
                    Debug ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 1420
diff changeset
   164
                        Transcript show:'unhandled control key: '; showCR:char storeString.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 1420
diff changeset
   165
                    ].
980
8921b6e07c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   166
                ].
8921b6e07c9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
   167
                ^ self.
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   168
            ]
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   169
        ].
4445
c9eea14d6956 refactored character processing
Claus Gittinger <cg@exept.de>
parents: 4292
diff changeset
   170
        ^ self show:char
932
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   171
    ].
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   172
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   173
    state == #gotESC ifTrue:[
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   174
        "/ Currently, we are in ESC state.  
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   175
        "/ Decide what to do on the basis of the parameter char.
932
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   176
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   177
        char == $A ifTrue:[
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   178
            "/ ESC-A
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   179
            self doCursorUp:1.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   180
            ^ self endOfSequence
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   181
        ].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   182
        char == $B ifTrue:[
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   183
            "/ ESC-B
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   184
            self doCursorDown:1.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   185
            ^ self endOfSequence
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   186
        ].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   187
        char == $C ifTrue:[
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   188
            "/ ESC-C
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   189
            self doCursorRight:1.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   190
            ^ self endOfSequence
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   191
        ].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   192
        char == $D ifTrue:[
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   193
            "/ ESC-D
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   194
            self doCursorLeft:1.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   195
            ^ self endOfSequence
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   196
        ].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   197
        char == $H ifTrue: [
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   198
            "/ ESC-H
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   199
            self doCursorHome.
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   200
            ^ self endOfSequence
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   201
        ].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   202
        char == $J ifTrue: [
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   203
            "/ ESC-J
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   204
            self doClearToEndOfScreen.
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   205
            ^ self endOfSequence
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   206
        ].
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   207
        char == $K ifTrue: [
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   208
            "/ ESC-J
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   209
            self doClearToEndOfLine.
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   210
            ^ self endOfSequence
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   211
        ].
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   212
        char == $Y ifTrue: [
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   213
            "/ ESC-Y - cursor positioning
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   214
            state := #motion1.
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   215
            ^ self 
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   216
        ].
4292
f2d5256fca75 class: VT52TerminalView
Claus Gittinger <cg@exept.de>
parents: 2202
diff changeset
   217
        char == $= ifTrue: [
f2d5256fca75 class: VT52TerminalView
Claus Gittinger <cg@exept.de>
parents: 2202
diff changeset
   218
            "/ enter application keypad mode
f2d5256fca75 class: VT52TerminalView
Claus Gittinger <cg@exept.de>
parents: 2202
diff changeset
   219
            "/ ESC-=
f2d5256fca75 class: VT52TerminalView
Claus Gittinger <cg@exept.de>
parents: 2202
diff changeset
   220
            alternateKeypadMode := true.
f2d5256fca75 class: VT52TerminalView
Claus Gittinger <cg@exept.de>
parents: 2202
diff changeset
   221
            ^ self 
f2d5256fca75 class: VT52TerminalView
Claus Gittinger <cg@exept.de>
parents: 2202
diff changeset
   222
        ].
f2d5256fca75 class: VT52TerminalView
Claus Gittinger <cg@exept.de>
parents: 2202
diff changeset
   223
        char == $> ifTrue: [
f2d5256fca75 class: VT52TerminalView
Claus Gittinger <cg@exept.de>
parents: 2202
diff changeset
   224
            "/ exit application keypad mode
f2d5256fca75 class: VT52TerminalView
Claus Gittinger <cg@exept.de>
parents: 2202
diff changeset
   225
            "/ ESC-<
f2d5256fca75 class: VT52TerminalView
Claus Gittinger <cg@exept.de>
parents: 2202
diff changeset
   226
            alternateKeypadMode := false.
f2d5256fca75 class: VT52TerminalView
Claus Gittinger <cg@exept.de>
parents: 2202
diff changeset
   227
            ^ self 
f2d5256fca75 class: VT52TerminalView
Claus Gittinger <cg@exept.de>
parents: 2202
diff changeset
   228
        ].
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 1420
diff changeset
   229
        Debug ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 1420
diff changeset
   230
            Transcript show:'unhandled esc-key: '; showCR:char storeString.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 1420
diff changeset
   231
        ].
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   232
    ].
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   233
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   234
    state == #motion1 ifTrue:[
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   235
        "/ char-value - 32 is line
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   236
        param1 := (char asciiValue - 32).
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   237
        state := #motion2.
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   238
        ^ self.
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   239
    ].
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   240
    state == #motion2 ifTrue:[
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   241
        "/ char-value - 32 is col
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   242
        param2 := (char asciiValue - 32).
2192
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 1420
diff changeset
   243
        Debug ifTrue:[
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 1420
diff changeset
   244
            Transcript show:'motion '; show:param1+1; show:' '; showCR:param2+1.
5f3bf896d334 vt100 perform now only cr and not cr-nl
penk
parents: 1420
diff changeset
   245
        ].
956
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   246
        self cursorVisibleLine:param1+1 col:param2+1.
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   247
        ^ self endOfSequence
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   248
    ].
606dee2ae341 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 949
diff changeset
   249
949
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   250
    self doNothing
1a6071a5c370 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 932
diff changeset
   251
1001
7fe14ad43ae3 fixed clear-to-end-of-screen function.
Claus Gittinger <cg@exept.de>
parents: 998
diff changeset
   252
    "Modified: / 21.7.1998 / 20:06:04 / cg"
932
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   253
! !
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   254
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   255
!VT52TerminalView methodsFor:'queries'!
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   256
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   257
terminalType
1420
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   258
    "returns a string describing this terminal (usually, this is
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   259
     passed down to the shell as TERM environment variable).
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   260
     Here, 'vt52' is returned."
7564d09aa1b2 documentation
Claus Gittinger <cg@exept.de>
parents: 1419
diff changeset
   261
1353
fbac065072ce checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1001
diff changeset
   262
    ^ 'vt52'
932
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   263
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   264
    "Created: / 10.6.1998 / 16:22:46 / cg"
1353
fbac065072ce checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1001
diff changeset
   265
    "Modified: / 5.5.1999 / 11:22:50 / cg"
932
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   266
! !
af0236d38242 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 927
diff changeset
   267
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
!VT52TerminalView class methodsFor:'documentation'!
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
version
4445
c9eea14d6956 refactored character processing
Claus Gittinger <cg@exept.de>
parents: 4292
diff changeset
   271
    ^ '$Header: /cvs/stx/stx/libwidg2/VT52TerminalView.st,v 1.20 2013-11-24 23:13:04 cg Exp $'
914
7ac6d1a53bab initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
! !
4292
f2d5256fca75 class: VT52TerminalView
Claus Gittinger <cg@exept.de>
parents: 2202
diff changeset
   273