"{ Package: 'stx:goodies' }"
View subclass:#CharacterSetView
instanceVariableNames:'codePage'
classVariableNames:''
poolDictionaries:''
category:'Collections-Text-Encodings'
!
!CharacterSetView class methodsFor:'startup'!
openOn:aFont
|top panel v bNext bPrev l
next prev enable update|
top := StandardSystemView new.
top label:(aFont printString).
v := self origin:0.0@0.0 corner:1.0@1.0 in:top.
v topInset:25.
v font:aFont.
panel := HorizontalPanelView in:top.
panel origin:(0.0 @ 0.0) corner:(1.0 @ 0.0).
panel bottomInset:-25.
panel horizontalLayout:#left.
"/ actions
update := [
|uOffs|
uOffs := v codePage * 16r0100.
l label:('u%1 ... u%2'
bindWith:((uOffs printStringRadix:16) leftPaddedTo:4 with:$0)
with:(((uOffs + 16rFF) printStringRadix:16) leftPaddedTo:4 with:$0)).
l repairDamage.
].
enable := [
v codePage > 0 ifTrue:[
bPrev enable
] ifFalse:[
bPrev disable
].
v codePage < 16rFF ifTrue:[
bNext enable
] ifFalse:[
bNext disable
].
].
next := [
v codePage:(v codePage + 1).
enable value.
update value.
].
prev := [
v codePage:(v codePage - 1).
enable value.
update value.
].
bNext := Button label:'+' in:panel.
bNext controller beTriggerOnDown.
bNext action:next.
bNext autoRepeat:true.
bPrev := Button label:'-' in:panel.
bPrev controller beTriggerOnDown.
bPrev action:prev.
bPrev disable.
bPrev autoRepeat:true.
l := Label label:'' in:panel.
update value.
top open.
"
self openOn:(View defaultFont).
"
! !
!CharacterSetView methodsFor:'accessing'!
codePage
^ codePage
!
codePage:pageNr
codePage := pageNr.
realized ifTrue:[
self clear.
self redraw.
].
! !
!CharacterSetView methodsFor:'drawing'!
redraw
|wCol hRow|
wCol := width / 16.
hRow := height / 16.
0 to:16 do:[:col |
|x|
x := (col * wCol) rounded asInteger.
self displayLineFromX:x y:0 toX:x y:height-1.
].
0 to:15 do:[:row |
|y|
y := (row * hRow) rounded asInteger.
self displayLineFromX:0 y:y toX:width y:y.
].
0 to:15 do:[:row |
|y rowBase|
rowBase := row * 16r10.
y := row * hRow.
y := y + (hRow / 2).
y := y rounded asInteger.
0 to:15 do:[:col |
|x codePoint s|
codePoint := rowBase + col.
s := (Character value:(codePage * 16r100) + codePoint) asString.
x := (col * wCol) rounded asInteger.
x := x + (wCol / 2).
x := x - ((font widthOf:s) / 2).
x := x rounded asInteger.
self displayString:s x:x y:y.
].
].
"
(self extent:300@600) open
"
!
sizeChanged:how
self clear.
self redraw.
! !
!CharacterSetView methodsFor:'initialization'!
initialize
super initialize.
codePage := 0.
! !
!CharacterSetView class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libwidg2/CharacterSetView.st,v 1.2 2004-02-12 12:11:07 cg Exp $'
! !