CharacterSetView.st
author Claus Gittinger <cg@exept.de>
Thu, 12 Feb 2004 13:11:07 +0100
changeset 2622 c24fdc09ab2b
parent 2620 6eb751261f2b
child 2623 5bed6818a793
permissions -rw-r--r--
*** empty log message ***

"{ 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 $'
! !