class: VT100TerminalView
authorClaus Gittinger <cg@exept.de>
Fri, 24 May 2013 16:36:24 +0200
changeset 4221 78dfbf10887b
parent 4220 958b9bc73680
child 4222 7de7ab92ac71
class: VT100TerminalView added: #osCommand #processStateGotXTERMCSI2: changed: #nextPut: #processStateGotXTERMCSI: category of: added some xterm control sequences
VT100TerminalView.st
--- a/VT100TerminalView.st	Fri May 24 16:36:06 2013 +0200
+++ b/VT100TerminalView.st	Fri May 24 16:36:24 2013 +0200
@@ -9,9 +9,6 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
-
-
-
 "{ Package: 'stx:libwidg2' }"
 
 TerminalView subclass:#VT100TerminalView
@@ -435,6 +432,52 @@
     "Created: / 10.6.1998 / 15:12:32 / cg"
 ! !
 
+!VT100TerminalView methodsFor:'os functions (xterm)'!
+
+osCommand
+    |cmdKey cmdValue|
+
+    cmdKey := parameters at:1.
+    cmdValue := parameters at:2.
+    cmdKey == 0 ifTrue:[
+        "/ change icon name and window title
+        masterWindow notNil ifTrue:[
+            masterWindow label:cmdValue.
+            masterWindow iconLabel:cmdValue.
+        ].
+        self endOfSequence.
+        ^ self.
+    ].
+    cmdKey == 1 ifTrue:[
+        "/ change icon name
+        masterWindow notNil ifTrue:[
+            masterWindow iconLabel:cmdValue.
+        ].
+        self endOfSequence.
+        ^ self.
+    ].
+    cmdKey == 2 ifTrue:[
+        "/ change window title
+        masterWindow notNil ifTrue:[
+            masterWindow label:cmdValue.
+        ].
+        self endOfSequence.
+        ^ self.
+    ].
+    cmdKey == 3 ifTrue:[
+        "/ set x property
+        self endOfSequence.
+        ^ self.
+    ].
+    cmdKey == 4 ifTrue:[
+        "/ change color
+        self endOfSequence.
+        ^ self.
+    ].
+    self breakPoint:#cg.
+    self endOfSequence
+! !
+
 !VT100TerminalView methodsFor:'processing-input'!
 
 addToParameter:char
@@ -531,6 +574,12 @@
         self evaluateProcessCharacterReturn:processCharacterReturn.
         ^ self.
     ].
+    state == #gotXTERMCSI2 ifTrue:[
+        processCharacterReturn := self processStateGotXTERMCSI2:char.
+        self evaluateProcessCharacterReturn:processCharacterReturn.
+        ^ self.
+    ].
+    self halt:'unknown state'.
     self doNothing.
     ^ self
 !
@@ -868,6 +917,23 @@
     ^ #waitForNextChar
 !
 
+processStateGotXTERMCSI2:char
+" change state or processing character; return 
+    #waitForNextChar - state was changed and wait for next characters
+    #sequenceComplete - command processed
+    #unknown - unknown character for this state
+"
+
+    char == (Character value:7) ifTrue: [
+        parameters at:currentParam put:(parameters at:currentParam) contents.
+        self osCommand.
+        ^ #sequenceComplete
+    ].
+    "/ add to parameter
+    (parameters at:currentParam) nextPut:char.
+    ^ #waitForNextChar
+!
+
 processStateGotXTERMCSI:char
 " change state or processing character; return 
     #waitForNextChar - state was changed and wait for next characters
@@ -875,6 +941,16 @@
     #unknown - unknown character for this state
 "
 
+    char == $; ifTrue:[
+        currentParam := (currentParam + 1) min: 8.
+        parameters at:currentParam put:(WriteStream on:'').
+        state := #gotXTERMCSI2. 
+        ^ #waitForNextChar
+    ].
+    char isDigit ifTrue: [
+        self addToParameter:char.
+        ^ #waitForNextChar
+    ].
     ^ #unknown
 ! !
 
@@ -902,5 +978,6 @@
 !VT100TerminalView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/VT100TerminalView.st,v 1.44 2004-12-16 14:33:14 penk Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/VT100TerminalView.st,v 1.45 2013-05-24 14:36:24 cg Exp $'
 ! !
+