CharacterSetView.st
author Claus Gittinger <cg@exept.de>
Thu, 12 Feb 2004 15:58:27 +0100
changeset 2626 2f0df284f022
parent 2625 f9e502987d9a
child 2627 c08a4b177a2d
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies' }"
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
View subclass:#CharacterSetView
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
     4
	instanceVariableNames:'codePageHolder selectedCodePointHolder'
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Collections-Text-Encodings'
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!CharacterSetView class methodsFor:'startup'!
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    13
open
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    14
    self openOn:View defaultFont
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    15
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    16
    "
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    17
     self open
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    18
    "
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    19
!
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    20
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
openOn:aFont
2625
f9e502987d9a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
    22
    ^ self
f9e502987d9a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
    23
        openOn:aFont 
f9e502987d9a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
    24
        label:aFont printString
f9e502987d9a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
    25
        clickLabel:'Click on glyph to see its codePoint.'
f9e502987d9a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
    26
f9e502987d9a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
    27
    "
f9e502987d9a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
    28
     self openOn:(View defaultFont).
f9e502987d9a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
    29
    "
f9e502987d9a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
    30
!
f9e502987d9a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
    31
f9e502987d9a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
    32
openOn:aFont label:viewLabel clickLabel:clickLabel
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    33
    |top panel v bNext bPrev bFirst bLast rangeLabel codePointLabel
2624
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
    34
     first last next prev enable update updateCodePoint w h|
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
    top := StandardSystemView new.
2625
f9e502987d9a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
    37
    top label:viewLabel.
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    38
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
    v := self origin:0.0@0.0 corner:1.0@1.0 in:top.
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    40
    v topInset:25.
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
    v font:aFont.
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    42
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    43
    panel := HorizontalPanelView in:top.
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    44
    panel origin:(0.0 @ 0.0) corner:(1.0 @ 0.0).
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    45
    panel bottomInset:-25.
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    46
    panel horizontalLayout:#left.
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    47
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    48
    "/ actions
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    49
    updateCodePoint := [
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    50
            |selectedCodePoint|
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    51
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    52
            selectedCodePoint := v selectedCodePoint.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    53
            selectedCodePoint isNil ifTrue:[
2625
f9e502987d9a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
    54
                codePointLabel label:clickLabel
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    55
            ] ifFalse:[
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    56
                codePointLabel label:('Selected: u%1'
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    57
                        bindWith:((selectedCodePoint printStringRadix:16) leftPaddedTo:4 with:$0)).
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    58
            ].
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    59
            codePointLabel repairDamage.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    60
    ].
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    61
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    62
    update := [
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    63
            |uOffs selectedCodePoint|
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    64
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    65
            uOffs := v codePage * 16r0100.
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    66
            rangeLabel label:('u%1 ... u%2' 
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    67
                        bindWith:((uOffs printStringRadix:16) leftPaddedTo:4 with:$0)
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    68
                        with:(((uOffs + 16rFF) printStringRadix:16) leftPaddedTo:4 with:$0)).
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    69
            rangeLabel repairDamage.
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    70
        ].
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    71
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    72
    enable := [
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    73
            v codePage > 0 ifTrue:[ 
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    74
                bPrev enable. 
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    75
                bFirst enable. 
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    76
            ] ifFalse:[
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    77
                bPrev disable. 
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    78
                bFirst disable. 
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    79
            ].
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    80
            v codePage < 16rFF ifTrue:[ 
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    81
                bNext enable. 
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    82
                bLast enable. 
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    83
            ] ifFalse:[
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    84
                bNext disable. 
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
    85
                bLast disable. 
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    86
            ].
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    87
        ].
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    88
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    89
    next := [
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    90
            v codePage:(v codePage + 1). 
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    91
            enable value.
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    92
            update value.
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    93
        ].
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    94
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    95
    prev := [
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    96
            v codePage:(v codePage - 1). 
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    97
            enable value.
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    98
            update value.
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
    99
        ].
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   100
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   101
    first := [
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   102
            v codePage:0. 
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   103
            enable value.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   104
            update value.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   105
        ].
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   106
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   107
    last := [
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   108
            v codePage:16rFF. 
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   109
            enable value.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   110
            update value.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   111
        ].
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   112
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   113
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   114
    bFirst := Button label:(ToolbarIconLibrary start16x16Icon) in:panel.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   115
    bFirst action:first.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   116
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   117
    bPrev := Button label:(ToolbarIconLibrary back16x16Icon) in:panel.
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   118
    bPrev controller beTriggerOnDown.
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   119
    bPrev action:prev.
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   120
    bPrev disable.
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   121
    bPrev autoRepeat:true.
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   122
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   123
    bNext := Button label:(ToolbarIconLibrary forward16x16Icon) in:panel.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   124
    bNext controller beTriggerOnDown.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   125
    bNext action:next.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   126
    bNext autoRepeat:true.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   127
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   128
    bLast := Button label:(ToolbarIconLibrary finish16x16Icon) in:panel.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   129
    bLast action:last.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   130
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   131
    rangeLabel := Label label:'RangeStart .. RangeStop' in:panel.
2626
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   132
    codePointLabel := Label label:clickLabel in:panel.
2624
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   133
    codePointLabel foregroundColor:(Color blue).
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   134
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   135
    update value.
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   136
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   137
    v selectedCodePointHolder onChangeEvaluate:updateCodePoint.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   138
2624
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   139
    w := v preferredExtent x max:(panel preferredExtent x).
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   140
    h := v preferredExtent y + (panel preferredExtent y).
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   141
    top extent:(w @ h).
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   142
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    top open.
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   144
    ^ v
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
    "
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
     self openOn:(View defaultFont).
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
    "
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
! !
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   151
!CharacterSetView methodsFor:'accessing'!
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   152
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   153
codePage
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   154
    ^ codePageHolder value
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   155
!
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   156
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   157
codePage:pageNr
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   158
    codePageHolder value:pageNr.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   159
!
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   160
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   161
codePageHolder
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   162
    ^ codePageHolder
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   163
!
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   164
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   165
selectedCodePoint
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   166
    ^ selectedCodePointHolder value
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   167
!
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   168
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   169
selectedCodePointHolder
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   170
    ^ selectedCodePointHolder
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   171
! !
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   172
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
!CharacterSetView methodsFor:'drawing'!
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
redraw
2624
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   176
    |wCol hRow dY|
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
    wCol := width / 16.
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
    hRow := height / 16.
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    0 to:16 do:[:col |
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
        |x|
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
        x := (col * wCol) rounded asInteger.
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
        self displayLineFromX:x y:0 toX:x y:height-1.
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
    ].
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
    0 to:15 do:[:row |
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
        |y|
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
        y := (row * hRow) rounded asInteger.
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
        self displayLineFromX:0 y:y toX:width y:y.
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
    ].
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
2624
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   195
    dY := (hRow - (font height)) // 2 + (font ascent).
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    0 to:15 do:[:row |
2626
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   198
        |y0 y1 y rowBase|
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
        rowBase := row * 16r10.
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   201
        y := y0 := row * hRow.
2626
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   202
        y := y rounded asInteger.
2624
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   203
        y := y + dY.
2626
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   204
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   205
        y1 := (row+1) * hRow.
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   206
        y1 := y1 rounded asInteger.
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   207
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
        0 to:15 do:[:col |
2626
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   209
            |x0 x1 x codePoint s|
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
            codePoint := rowBase + col.
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   212
            s := (Character value:(self codePage * 16r100) + codePoint) asString.
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   214
            x := x0 := (col * wCol) rounded asInteger.
2626
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   215
            x := x rounded asInteger.
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
            x := x + (wCol / 2).
2626
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   217
            x := x - ((font widthOf:s) // 2).
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   218
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   219
            x1 := ((col+1) * wCol) rounded asInteger.
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   220
            x1 := x1 rounded asInteger.
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   221
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   222
            codePoint == self selectedCodePoint ifTrue:[
2624
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   223
                self paint:(Color red).
2626
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   224
                self fillRectangle:((x0+1)@(y0+1) corner:(x1)@(y1)).
2624
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   225
                self paint:(Color white).
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   226
                self displayString:s x:x y:y.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   227
                self paint:(Color black).
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   228
            ] ifFalse:[
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   229
                self displayString:s x:x y:y.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   230
            ].
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
        ].
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
    ].
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
    "
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
     (self extent:300@600) open
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
    "
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
!
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
sizeChanged:how
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
    self clear.
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
    self redraw.
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
! !
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   244
!CharacterSetView methodsFor:'event handling'!
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   245
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   246
buttonPress:button x:x y:y
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   247
    |wCol hRow row col code|
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   248
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   249
    wCol := width / 16.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   250
    hRow := height / 16.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   251
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   252
    row := y // hRow.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   253
    col := x // wCol.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   254
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   255
    code := (self codePage*16r0100) + (row * 16) + col.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   256
    selectedCodePointHolder value:code.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   257
!
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   258
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   259
codePageChanged
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   260
    realized ifTrue:[
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   261
        self clear.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   262
        self redraw.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   263
    ].
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   264
!
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   265
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   266
selectedCodePointChanged
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   267
    realized ifTrue:[
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   268
        self clear.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   269
        self redraw.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   270
    ].
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   271
! !
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   272
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   273
!CharacterSetView methodsFor:'initialization'!
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   274
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   275
initialize
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   276
    super initialize.
2623
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   277
    codePageHolder := 0 asValue.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   278
    codePageHolder onChangeSend:#codePageChanged to:self.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   279
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   280
    selectedCodePointHolder := ValueHolder new.
5bed6818a793 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2622
diff changeset
   281
    selectedCodePointHolder onChangeSend:#selectedCodePointChanged to:self.
2622
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   282
! !
c24fdc09ab2b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   283
2624
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   284
!CharacterSetView methodsFor:'queries'!
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   285
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   286
preferredExtent
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   287
    preferredExtent notNil ifTrue:[
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   288
        ^ preferredExtent
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   289
    ].
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   290
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   291
    ^ ((4 + font width + 4) * 16)
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   292
       @
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   293
      ((4 + font height + 4) * 16)
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   294
! !
379b6e9e6a2f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   295
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
!CharacterSetView class methodsFor:'documentation'!
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   298
version
2626
2f0df284f022 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2625
diff changeset
   299
    ^ '$Header: /cvs/stx/stx/libwidg2/CharacterSetView.st,v 1.6 2004-02-12 14:58:27 cg Exp $'
2620
6eb751261f2b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   300
! !