UIPainter.st
author ca
Tue, 25 Feb 1997 14:15:56 +0100
changeset 59 0a2b2ff030a0
parent 58 668eb9eae2ac
child 60 7542ab7fbbfe
permissions -rw-r--r--
so far ...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
58
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
     1
HorizontalPanelView subclass:#ButtonPanel
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
     2
	instanceVariableNames:'receiver argumentToSelector'
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
     3
	classVariableNames:''
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
     4
	poolDictionaries:''
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
     5
	privateIn:UIPainter
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
     6
!
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
     7
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
     8
!UIPainter::ButtonPanel methodsFor:'accessing'!
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
     9
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    10
receiver
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    11
    ^ receiver
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    12
!
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    13
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    14
receiver:aReceiver
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    15
    receiver := aReceiver
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    16
! !
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    17
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    18
!UIPainter::ButtonPanel methodsFor:'initialization'!
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    19
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    20
initialize
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    21
    "initialize and setup buttons
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    22
    "
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    23
    super initialize.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    24
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    25
    self level:-1.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    26
    self borderWidth:0.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    27
    self horizontalLayout:#leftSpace.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    28
    argumentToSelector := 1.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    29
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    30
    self specification do:[:anArray|
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    31
        |selector image button seperator|
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    32
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    33
        selector := anArray at:1.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    34
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    35
        selector notNil ifTrue:[
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    36
            image  := Image fromFile:( anArray at:2 ).
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    37
            button := Button label:image in:self.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    38
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    39
            selector last == $: ifFalse:[
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    40
                button action:[
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    41
                    receiver notNil ifTrue:[
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    42
                        receiver perform:selector
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    43
                    ]
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    44
                ]
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    45
            ] ifTrue:[
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    46
                button pressAction:[
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    47
                    receiver notNil ifTrue:[
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    48
                        receiver perform:selector with:argumentToSelector
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    49
                    ]
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    50
                ].
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    51
                button autoRepeat:true.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    52
                button menuHolder:self; menuMessage:#editMenu; menuPerformer:self.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    53
            ]
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    54
        ] ifFalse:[
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    55
            seperator := View in:self.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    56
            seperator extent:20@1.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    57
            seperator borderWidth:0.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    58
        ]
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    59
    ].
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    60
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    61
!
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    62
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    63
specification
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    64
    "return a spec for the buttons in the panel;
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    65
     entries consists of selector and bitmap-filename.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    66
     nil selectors are taken as separators (see setupButtonPanel)"
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    67
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    68
    ^ #(
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    69
        #( alignSelectionLeft         'b_alignL.xbm'    )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    70
        #( alignSelectionRight        'b_alignR.xbm'    )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    71
        #( alignSelectionLeftAndRight 'b_alignLR.xbm'   )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    72
        #( nil )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    73
        #( alignSelectionTop          'b_alignT.xbm'    )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    74
        #( alignSelectionBottom       'b_alignB.xbm'    )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    75
        #( alignSelectionTopAndBottom 'b_alignTB.xbm'   )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    76
        #( nil )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    77
        #( alignSelectionCenterHor    'b_alignCH.xbm'   )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    78
        #( alignSelectionCenterVer    'b_alignCV.xbm'   )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    79
        #( nil )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    80
        #( moveSelectionLeft:         'b_moveLeft.xbm'  )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    81
        #( moveSelectionRight:        'b_moveRight.xbm' )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    82
        #( moveSelectionUp:           'b_moveUp.xbm'    )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    83
        #( moveSelectionDown:         'b_moveDown.xbm'  )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    84
       )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    85
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    86
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    87
! !
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    88
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    89
!UIPainter::ButtonPanel methodsFor:'menu'!
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    90
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    91
editMenu
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    92
    "edit menu used by buttons using an argument for the receiver; the argumentToSelector
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    93
    "
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    94
    |menu|
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    95
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    96
    menu := PopUpMenu labels:#( '1' '2' '4' '10' '20' '..' )
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    97
                        args:#(  1   2   4   10   20  nil  ).
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    98
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
    99
    menu action:[:anArg||no|
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   100
        (no := anArg) isNil ifTrue:[
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   101
            no := EnterBox request:'number'.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   102
            no := SmallInteger readFrom:no onError:0.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   103
        ].
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   104
        no ~~ 0 ifTrue:[
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   105
            |index view|
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   106
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   107
            view := (WindowGroup lastEventQuerySignal raise) view.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   108
            view := view menuPerformer.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   109
            argumentToSelector := no.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   110
            view pressAction value.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   111
            argumentToSelector := 1.
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   112
        ]
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   113
    ].
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   114
    ^ menu
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   115
! !
668eb9eae2ac *** empty log message ***
ca
parents: 55
diff changeset
   116