[etoys-dev] Etoys: Multilingual-kks.15.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Oct 13 02:32:17 EDT 2010
Bert Freudenberg uploaded a new version of Multilingual to project Etoys:
http://source.squeak.org/etoys/Multilingual-kks.15.mcz
==================== Summary ====================
Name: Multilingual-kks.15
Author: bf
Time: 12 October 2010, 11:31:52 pm
UUID: 2acc1113-6373-4e47-b1d5-4759fb2f33e2
Ancestors: Multilingual-bf.14
added multilingual Unicode environments (SQ-850)
=============== Diff against Multilingual-bf.14 ===============
Item was added:
+ LanguageEnvironment subclass: #M17nEnvironment
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Multilingual-Languages'!
+
+ !M17nEnvironment commentStamp: 'kks 10/2/2010 19:45' prior: 0!
+ This class supports multilingual Unicode environments that use UTF-8 encoding. Such a large scope implies the use of external fonts and external rendering engines like Pango. Currently, it is useful for Indic and a few Asian languages.!
Item was added:
+ ----- Method: M17nEnvironment classSide>>clipboardInterpreterClass (in category 'subclass responsibilities') -----
+ clipboardInterpreterClass
+
+ ^ UTF8ClipboardInterpreter.
+ !
Item was added:
+ ----- Method: M17nEnvironment classSide>>fileNameConverterClass (in category 'subclass responsibilities') -----
+ fileNameConverterClass
+
+ ^ UTF8TextConverter.
+ !
Item was added:
+ ----- Method: M17nEnvironment classSide>>inputInterpreterClass (in category 'subclass responsibilities') -----
+ inputInterpreterClass
+ | platformName |
+ platformName := SmalltalkImage current platformName.
+ platformName = 'Win32'
+ ifTrue: [ 'CE' = (SmalltalkImage current getSystemAttribute: 1002)
+ ifTrue: [^ MacRomanInputInterpreter]].
+ platformName = 'MacOS'
+ ifTrue: [^MacRomanInputInterpreter].
+ ^M17nInputInterpreter.!
Item was added:
+ ----- Method: M17nEnvironment classSide>>leadingChar (in category 'subclass responsibilities') -----
+ leadingChar
+
+ ^ Unicode leadingChar.
+ !
Item was added:
+ ----- Method: M17nEnvironment classSide>>supportedLanguages (in category 'subclass responsibilities') -----
+ supportedLanguages
+ "Include languages that will not conflict with other languages"
+
+ ^#('bn' 'gu' 'hi' 'kn' 'ml' 'mr' 'ta' 'te' 'sa')!
Item was added:
+ ----- Method: M17nEnvironment classSide>>systemConverterClass (in category 'subclass responsibilities') -----
+ systemConverterClass
+
+ ^ UTF8TextConverter.!
Item was added:
+ KeyboardInputInterpreter subclass: #M17nInputInterpreter
+ instanceVariableNames: 'converter'
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Multilingual-TextConversion'!
+
+ !M17nInputInterpreter commentStamp: 'kks 10/2/2010 23:26' prior: 0!
+ A flexible input interpreter that is tuned to variations in keyboard events coming in from the VM.
+
+ Old VMs passed only a 8-bit keycode evt[3] and 0 in evt[6]. This code could be in any one of the code pages. On Mac, this used mac-roman, while on Unix, this could be ASCII or UTF-8 depending on the locale.
+
+ Newer VMs pass UTF32 in evt[6]. This can be 'cooked' based on the current language setting to generate a Character.!
Item was added:
+ ----- Method: M17nInputInterpreter>>initialize (in category 'as yet unclassified') -----
+ initialize
+
+ converter _ UTF8TextConverter new.!
Item was added:
+ ----- Method: M17nInputInterpreter>>nextCharFrom:firstEvt: (in category 'as yet unclassified') -----
+ nextCharFrom: sensor firstEvt: evtBuf
+ | keyValue |
+ keyValue := evtBuf at: 6.
+ 0 = keyValue ifTrue: [ ^self nextUtf8Char: sensor firstEvt: evtBuf ].
+ 256 > keyValue ifTrue: [ ^keyValue asCharacter ].
+ ^ Character leadingChar: (Locale current languageEnvironment leadingChar) code: keyValue!
Item was added:
+ ----- Method: M17nInputInterpreter>>nextUtf8Char:firstEvt: (in category 'as yet unclassified') -----
+ nextUtf8Char: sensor firstEvt: evtBuf
+ "this code should really go into InputSensor>>fullKey"
+ | aCollection bytes peekEvent keyValue type stream multiChar evt |
+ self flag: #fixthis.
+ keyValue _ evtBuf third.
+ evtBuf fourth = EventKeyChar ifTrue: [type _ #keystroke].
+ peekEvent _ sensor peekEvent.
+ (peekEvent notNil and: [peekEvent fourth = EventKeyDown]) ifTrue: [
+ sensor nextEvent.
+ peekEvent _ sensor peekEvent].
+
+ (type == #keystroke
+ and: [peekEvent notNil
+ and: [peekEvent first = EventTypeKeyboard
+ and: [peekEvent fourth = EventKeyChar]]]) ifTrue: [
+ aCollection _ OrderedCollection with: keyValue asCharacter.
+ bytes _ (keyValue <= 127)
+ ifTrue: [ 0 ]
+ ifFalse: [ (keyValue bitAnd: 16rE0) = 192
+ ifTrue: [ 1 ]
+ ifFalse: [ (keyValue bitAnd: 16rF0) = 224
+ ifTrue: [ 2 ]
+ ifFalse: [ 3 ]
+ ]
+ ].
+ [bytes > 0] whileTrue: [
+ (evt := sensor nextEvent) fourth = EventKeyChar ifTrue: [
+ bytes := bytes - 1.
+ aCollection add: (Character value: evt third)]].
+ "aCollection do: [ :each | Transcript show: (each asciiValue hex , ' ')].
+ Transcript show: Character cr."
+ stream _ ReadStream on: (String withAll: aCollection).
+ multiChar _ converter nextFromStream: stream.
+ multiChar isOctetCharacter ifFalse: [ sensor nextEvent ].
+ ^ multiChar].
+
+ ^ keyValue asCharacter!
More information about the etoys-dev
mailing list