class: VT100TerminalView
added:
#osCommand
#processStateGotXTERMCSI2:
changed:
#nextPut:
#processStateGotXTERMCSI:
category of:
added some xterm control sequences
--- 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 $'
! !
+