Scale.st
changeset 1229 a0a54048f8ee
parent 86 4d7dbb5f1719
child 3150 e3a55f15ef7e
equal deleted inserted replaced
1228:0aae4f7389ca 1229:a0a54048f8ee
     9  other person.  No title to or ownership of the software is
     9  other person.  No title to or ownership of the software is
    10  hereby transferred.
    10  hereby transferred.
    11 "
    11 "
    12 
    12 
    13 SimpleView subclass:#Scale
    13 SimpleView subclass:#Scale
    14 	 instanceVariableNames:'slider range action'
    14 	instanceVariableNames:'slider range action'
    15 	 classVariableNames:''
    15 	classVariableNames:''
    16 	 poolDictionaries:''
    16 	poolDictionaries:''
    17 	 category:'Views-Interactors'
    17 	category:'Views-Interactors'
    18 !
    18 !
    19 
    19 
    20 !Scale class methodsFor:'documentation'!
    20 !Scale class methodsFor:'documentation'!
    21 
    21 
    22 copyright
    22 copyright
    31  other person.  No title to or ownership of the software is
    31  other person.  No title to or ownership of the software is
    32  hereby transferred.
    32  hereby transferred.
    33 "
    33 "
    34 !
    34 !
    35 
    35 
    36 version
       
    37     ^ '$Header: /cvs/stx/stx/libwidg2/Scale.st,v 1.4 1995-11-11 16:29:19 cg Exp $'
       
    38 !
       
    39 
       
    40 documentation
    36 documentation
    41 "
    37 "
    42     like a slider, but with a range (i.e. may be different from 0..100)
    38     like a slider, but with a range (i.e. may be different from 0..100)
    43     and displaying the current value.
    39     and displaying the current value.
    44 "
    40 "
    48 "
    44 "
    49     |top s1 s2|
    45     |top s1 s2|
    50 
    46 
    51     top := StandardSystemView new.
    47     top := StandardSystemView new.
    52     top extent:200@200.
    48     top extent:200@200.
    53     s1 := Scale origin:0.0 @ 0.0 extent:50 @ 1.0 in:top.
    49     s1 := Scale origin:0.0 @ 0.0 in:top.
    54     s2 := Scale origin:0.5 @ 0.0 extent:50 @ 1.0 in:top.
    50     s1 extent:50 @ 1.0.
       
    51 
       
    52     s2 := Scale origin:0.5 @ 0.0 in:top.
       
    53     s2 extent:50 @ 1.0.
    55     s2 range:(-50 to:50).
    54     s2 range:(-50 to:50).
    56     top open
    55     top open
    57 "
    56 "
    58 ! !
       
    59 
       
    60 !Scale methodsFor:'slider actions'!
       
    61 
       
    62 scroll:percent
       
    63     |value y label|
       
    64 
       
    65     action notNil ifTrue:[
       
    66 	value := (range last - range first) * (percent / 100).
       
    67 	value := value + range first.
       
    68 	action value:value.
       
    69 
       
    70 	y := slider thumbFrame top + (slider thumbFrame height // 2).
       
    71 	self clear.
       
    72 	self paint:Black.
       
    73 	value := value roundTo:(range last - range first) / 100.
       
    74 	label := value asFloat printString.
       
    75 	(label endsWith:'.0') ifTrue:[
       
    76 	    label := value asInteger printString
       
    77 	].
       
    78 	self displayString:label
       
    79 			 x:slider width + device horizontalPixelPerMillimeter
       
    80 			 y:y + (font ascent // 2)
       
    81     ]
       
    82 ! !
    57 ! !
    83 
    58 
    84 !Scale methodsFor:'accessing'!
    59 !Scale methodsFor:'accessing'!
    85 
    60 
    86 range:anInterval
    61 range:anInterval
    89 
    64 
    90 scrollAction:aBlock
    65 scrollAction:aBlock
    91     action := aBlock
    66     action := aBlock
    92 ! !
    67 ! !
    93 
    68 
       
    69 !Scale methodsFor:'drawing'!
       
    70 
       
    71 redraw
       
    72     |percent value y label|
       
    73 
       
    74     percent := slider thumbOrigin.
       
    75     value := (range last - range first) * (percent / 100).
       
    76     value := value + range first.
       
    77 
       
    78     y := slider thumbFrame top + (slider thumbFrame height // 2).
       
    79     self clear.
       
    80     self paint:Black.
       
    81     value := value roundTo:(range last - range first) / 100.
       
    82     label := value asFloat printString.
       
    83     (label endsWith:'.0') ifTrue:[
       
    84         label := value asInteger printString
       
    85     ].
       
    86     self displayString:label
       
    87                      x:slider width + device horizontalPixelPerMillimeter
       
    88                      y:y + (font ascent // 2)
       
    89 
       
    90     "Created: / 7.3.1999 / 00:12:42 / cg"
       
    91     "Modified: / 7.3.1999 / 00:17:52 / cg"
       
    92 ! !
       
    93 
    94 !Scale methodsFor:'initialization'!
    94 !Scale methodsFor:'initialization'!
    95 
    95 
    96 initialize
    96 initialize
    97     super initialize.
    97     super initialize.
    98 
    98 
    99     range := (0 to:100).
    99     range := (0 to:100).
   100     slider := Slider in:self.
   100     slider := Slider in:self.
   101     slider fixSize.
   101 "/    slider fixSize.
   102     slider origin:0.0 @ 0.0.
   102     slider origin:0.0 @ 0.0.
   103     slider extent:slider width@ 1.0.
   103     slider height:1.0.
   104     self width:(slider width  
   104 
   105 		+ (font widthOf:'100')
   105 "/    self width:(slider width  
   106 		+ (device horizontalPixelPerMillimeter * 2) rounded).
   106 "/                + (font widthOf:'100')
       
   107 "/                + (device horizontalPixelPerMillimeter * 2) rounded).
   107 
   108 
   108     slider scrollAction:[:percent | self scroll:percent].
   109     slider scrollAction:[:percent | self scroll:percent].
       
   110 
       
   111     "Modified: / 7.3.1999 / 00:23:42 / cg"
   109 ! !
   112 ! !
   110 
   113 
       
   114 !Scale methodsFor:'queries'!
       
   115 
       
   116 preferredExtent
       
   117     ^ slider preferredExtent + ((font widthOf:'999') @ 0)
       
   118 
       
   119     "Created: / 7.3.1999 / 00:02:25 / cg"
       
   120 ! !
       
   121 
       
   122 !Scale methodsFor:'slider actions'!
       
   123 
       
   124 scroll:percent
       
   125     |value|
       
   126 
       
   127     value := (range last - range first) * (percent / 100).
       
   128     value := value + range first.
       
   129     action notNil ifTrue:[
       
   130         action value:value.
       
   131     ].
       
   132     self redraw
       
   133 
       
   134     "Modified: / 7.3.1999 / 00:17:46 / cg"
       
   135 ! !
       
   136 
       
   137 !Scale class methodsFor:'documentation'!
       
   138 
       
   139 version
       
   140     ^ '$Header: /cvs/stx/stx/libwidg2/Scale.st,v 1.5 1999-03-07 13:25:33 cg Exp $'
       
   141 ! !