TextRuler.st
author claus
Mon, 21 Nov 1994 17:49:32 +0100
changeset 28 ca403f4c5b86
parent 20 bf516dd2433b
child 36 160b8f0dfd7d
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
     1
'From Smalltalk/X, Version:2.10.4 on 18-nov-1994 at 16:11:48'!
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
     2
0fd7841626f6 Initial revision
claus
parents:
diff changeset
     3
Ruler subclass:#TextRuler
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
     4
	 instanceVariableNames:'leftMargin rightMargin spec moving settingTab'
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
     5
	 classVariableNames:'LeftAlignForm RightAlignForm AlignForm CenterForm LeftMarginForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
     6
		RightMarginForm LeftTabForm RightTabForm CenterTabForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
     7
		DecimalTabForm'
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
     8
	 poolDictionaries:''
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
     9
	 category:'Views-Interactors'
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    10
!
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    11
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    12
TextRuler comment:'
4
claus
parents: 2
diff changeset
    13
COPYRIGHT (c) 1991 by Claus Gittinger
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    14
	      All Rights Reserved
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    15
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    16
a Ruler for page layout showing tabs., margins etc.
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    17
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    18
$Header: /cvs/stx/stx/libwidg2/TextRuler.st,v 1.8 1994-11-21 16:48:42 claus Exp $
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    19
written oct 91 by claus
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    20
'!
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    21
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    22
!TextRuler class methodsFor:'documentation'!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    23
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    24
documentation
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    25
"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    26
    This is a special ruler built for text processing
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    27
    applications. Currently, it is not used in the system.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    28
    It allows setting of margins, tabs and text-layout.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    29
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    30
    TextRuler new open
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    31
"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    32
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    33
! !
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    34
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    35
!TextRuler class methodsFor:'defaults'!
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    36
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    37
rightMarginForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    38
    "return the form displayed for the right margin marker"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    39
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    40
    RightMarginForm isNil ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    41
	RightMarginForm := Form fromFile:'rightMarg.xbm' resolution:100
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    42
    ].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    43
    ^ RightMarginForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    44
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    45
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    46
leftMarginForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    47
    "return the form displayed for the left margin marker"
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    48
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    49
    LeftMarginForm isNil ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    50
	LeftMarginForm := Form fromFile:'leftMargin.xbm' resolution:100
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    51
    ].
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    52
    ^ LeftMarginForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    53
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    54
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    55
rightAlignForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    56
    "return the form displayed in the rightAlign-button"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    57
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    58
    RightAlignForm isNil ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    59
	RightAlignForm :=  Form fromFile:'rightAlign.xbm' resolution:100
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    60
    ].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    61
    ^ RightAlignForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    62
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    63
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    64
leftTabForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    65
    "return the form displayed in the leftTab-button"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    66
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    67
    LeftTabForm isNil ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    68
	LeftTabForm := Form fromFile:'leftTab.xbm' resolution:100
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    69
    ].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    70
    ^ LeftTabForm
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    71
!
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    72
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    73
centerForm
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    74
    "return the form displayed in the center-button"
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    75
8
91035a03b4cf *** empty log message ***
claus
parents: 4
diff changeset
    76
    CenterForm isNil ifTrue:[
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    77
	CenterForm := Form fromFile:'center.xbm' resolution:100
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    78
    ].
8
91035a03b4cf *** empty log message ***
claus
parents: 4
diff changeset
    79
    ^ CenterForm
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    80
!
0fd7841626f6 Initial revision
claus
parents:
diff changeset
    81
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    82
alignForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    83
    "return the form displayed in the align-button"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    84
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    85
    AlignForm isNil ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    86
	AlignForm := Form fromFile:'align.xbm' resolution:100
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    87
    ].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    88
    ^ AlignForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    89
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    90
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    91
rightTabForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    92
    "return the form displayed in the rightTab-button"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    93
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    94
    RightTabForm isNil ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    95
	RightTabForm := Form fromFile:'rightTab.xbm' resolution:100
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    96
    ].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    97
    ^ RightTabForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    98
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
    99
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   100
leftAlignForm
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   101
    "return the form displayed in the leftAlign-button"
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   102
8
91035a03b4cf *** empty log message ***
claus
parents: 4
diff changeset
   103
    LeftAlignForm isNil ifTrue:[
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   104
	LeftAlignForm := Form fromFile:'leftAlign.xbm' resolution:100
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   105
    ].
8
91035a03b4cf *** empty log message ***
claus
parents: 4
diff changeset
   106
    ^ LeftAlignForm
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   107
!
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   108
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   109
decimalTabForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   110
    "return the form displayed in the decimalTab-button"
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   111
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   112
    DecimalTabForm isNil ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   113
	DecimalTabForm := Form fromFile:'decimalTab.xbm' resolution:100
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   114
    ].
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   115
    ^ DecimalTabForm
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   116
!
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   117
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   118
centerTabForm
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   119
    "return the form displayed in the centerTab-button"
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   120
8
91035a03b4cf *** empty log message ***
claus
parents: 4
diff changeset
   121
    CenterTabForm isNil ifTrue:[
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   122
	CenterTabForm := Form fromFile:'centerTab.xbm' resolution:100
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   123
    ].
8
91035a03b4cf *** empty log message ***
claus
parents: 4
diff changeset
   124
    ^ CenterTabForm
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   125
! !
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   126
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   127
!TextRuler methodsFor:'accessing'!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   128
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   129
paragraphSpecification:aSpec
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   130
    spec := aSpec
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   131
! !
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   132
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   133
!TextRuler methodsFor:'redrawing'!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   134
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   135
redraw
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   136
    "redraw margin & tab marks"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   137
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   138
    |x top form tab type tabStops tabAlign viewOrigin orgX orgY|
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   139
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   140
    super redraw.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   141
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   142
    viewOrigin := self viewOrigin.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   143
    orgX := viewOrigin x.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   144
    orgY := viewOrigin y.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   145
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   146
    self paint:fgColor.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   147
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   148
    top := height - (font height) - (font ascent).
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   149
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   150
    x := (self inchToPixel:leftMargin) rounded.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   151
    form := self class leftMarginForm.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   152
    self displayForm:form 
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   153
		   x:(x - (form width // 2) - orgX)
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   154
		   y:(top - form height - orgY).
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   155
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   156
    x := (self inchToPixel:rightMargin) rounded.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   157
    form := self class rightMarginForm.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   158
    self displayForm:form 
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   159
		   x:(x - (form width // 2) - orgX)
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   160
		   y:(top - form height - orgY).
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   161
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   162
    spec notNil ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   163
	tabStops := spec positions.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   164
	tabAlign := spec align.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   165
	tabStops notNil ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   166
	    1 to:tabStops size do:[:tabNr |
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   167
		tab := tabStops at:tabNr.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   168
		type := tabAlign at:tabNr.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   169
		x := (spec positionOfTab:tabNr on:self) rounded.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   170
		(type == #left) ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   171
		    form := self class leftTabForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   172
		] ifFalse:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   173
		    (type == #right) ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   174
			form := self class rightTabForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   175
		    ] ifFalse:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   176
			(type == #center) ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   177
			    form := self class centerTabForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   178
			] ifFalse:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   179
			    (type == #decimal) ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   180
				form := self class decimalTabForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   181
			    ]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   182
			]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   183
		    ]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   184
		].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   185
		self displayForm:form 
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   186
			       x:(x - (form width // 2) - orgX)
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   187
			       y:(top - form height - orgY)
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   188
	    ]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   189
	]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   190
    ]
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   191
!
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   192
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   193
clearMargin:which
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   194
    "clear margin"
8
91035a03b4cf *** empty log message ***
claus
parents: 4
diff changeset
   195
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   196
    |this other otherX otherX2 x x2 top form symOther viewOrigin|
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   197
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   198
    self paint:viewBackground.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   199
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   200
    top := height - (font height) - (font ascent).
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   201
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   202
    (which == #left) ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   203
	this := leftMargin.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   204
	other := rightMargin. symOther := #right.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   205
	form := self class leftMarginForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   206
    ].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   207
    (which == #right) ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   208
	this := rightMargin.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   209
	other := leftMargin. symOther := #left.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   210
	form := self class rightMarginForm
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   211
    ].
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   212
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   213
    x := (self inchToPixel:this) rounded - (form width // 2).
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   214
    viewOrigin := self viewOrigin.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   215
    self displayForm:form 
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   216
		   x:x + viewOrigin x
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   217
		   y:(top - form height - viewOrigin y).
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   218
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   219
    "
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   220
     if it covers any other, redraw them
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   221
    "
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   222
    x2 := x + form width.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   223
    otherX := (self inchToPixel:other) rounded - (form width // 2).
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   224
    otherX2 := otherX + form width.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   225
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   226
    otherX  > x2 ifFalse:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   227
	otherX2 < x ifFalse:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   228
	    self drawMargin:symOther
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   229
	]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   230
    ].
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   231
!
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   232
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   233
drawMargin:which
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   234
    "clear margin"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   235
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   236
    |x top form viewOrigin|
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   237
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   238
    self paint:fgColor.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   239
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   240
    top := height - (font height) - (font ascent).
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   241
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   242
    (which == #left) ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   243
	x := (self inchToPixel:leftMargin) rounded.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   244
	form := self class leftMarginForm
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   245
    ].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   246
    (which == #right) ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   247
	x := (self inchToPixel:rightMargin) rounded.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   248
	form := self class rightMarginForm
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   249
    ].
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   250
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   251
    viewOrigin := self viewOrigin.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   252
    self displayForm:form 
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   253
		   x:(x - (form width // 2) - viewOrigin x)
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   254
		   y:(top - form height - viewOrigin y).
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   255
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   256
! !
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   257
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   258
!TextRuler methodsFor:'user interaction'!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   259
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   260
buttonRelease:button x:x y:y
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   261
    "position a tab or start moving a ruler"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   262
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   263
    moving := nil
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   264
!
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   265
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   266
buttonPress:button x:pX y:y
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   267
    "position a tab or start moving a ruler"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   268
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   269
    |mpos x|
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   270
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   271
    ((button == #select) or:[button == 1]) ifFalse:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   272
	^ super buttonPress:button x:pX y:y
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   273
    ].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   274
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   275
    x := pX + self viewOrigin x.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   276
    settingTab notNil ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   277
	self setTabX:x.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   278
	settingTab := nil.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   279
	^ self
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   280
    ].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   281
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   282
    mpos := self inchToPixel:leftMargin.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   283
    (((mpos - 4) <= x) and:[x <= (mpos + 4)]) ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   284
	"start moving left margin"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   285
	moving := #left.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   286
	^ self
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   287
    ].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   288
    mpos := self inchToPixel:rightMargin.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   289
    (((mpos - 4) <= x) and:[x <= (mpos + 4)]) ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   290
	"start moving right margin"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   291
	moving := #right.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   292
	^ self
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   293
    ].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   294
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   295
    ^ self
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   296
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   297
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   298
buttonMotion:state x:x y:y
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   299
    "position a tab or start moving a ruler"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   300
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   301
    |mpos|
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   302
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   303
    moving notNil ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   304
	self clearMargin:moving.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   305
	mpos := self pixelToInch:x + self viewOrigin x.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   306
	(mpos < 0) ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   307
	    mpos := 0
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   308
	].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   309
	(mpos > paperWidth) ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   310
	    mpos := paperWidth
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   311
	].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   312
	(moving == #left) ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   313
	    leftMargin := mpos
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   314
	].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   315
	(moving == #right) ifTrue:[
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   316
	    rightMargin := mpos
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   317
	].
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   318
	self drawMargin:moving
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   319
    ]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   320
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   321
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   322
leftAlign
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   323
    ^ self
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   324
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   325
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   326
rightAlign
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   327
    ^ self
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   328
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   329
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   330
leftTab
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   331
    settingTab := #left.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   332
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   333
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   334
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   335
align
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   336
    ^ self
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   337
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   338
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   339
center
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   340
    ^ self
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   341
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   342
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   343
centerTab
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   344
    settingTab := #center.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   345
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   346
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   347
rightTab
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   348
    settingTab := #right.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   349
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   350
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   351
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   352
decimalTab
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   353
    settingTab := #decimal.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   354
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   355
! !
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   356
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   357
!TextRuler methodsFor:'initializing'!
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   358
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   359
initEvents
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   360
    super initEvents.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   361
    self enableButtonEvents.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   362
    self enableButtonMotionEvents
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   363
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   364
!
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   365
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   366
initialize
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   367
    |leftAlignToggle alignToggle centerToggle rightAlignToggle
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   368
     leftTabButton centerTabButton rightTabButton decimalTabButton
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   369
     lineSpacingField panel1 panel2 panel3 scaleHeight h group|
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   370
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   371
    super initialize.
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   372
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   373
    scaleHeight := (font height) * 2.
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   374
    self height:(scaleHeight * 3).
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   375
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   376
    h := self class leftAlignForm height.
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   377
    panel1 := HorizontalPanelView
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   378
			origin:(0.0 @ 0.0)
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   379
			extent:[(width // 3 * 2) @ (h*2)]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   380
			    in:self.
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   381
    panel1 borderWidth:0.
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   382
    panel1 layout:#leftSpace.
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   383
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   384
    panel3 := HorizontalPanelView
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   385
			origin:[(width // 3 * 2) @ margin]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   386
			extent:[((width // 3)-margin) @ (h*2) "(height - scaleHeight)"]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   387
			    in:self.
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   388
    panel3 borderWidth:0.
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   389
    panel3 layout:#right.
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   390
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   391
    leftAlignToggle := RadioButton form:(self class leftAlignForm)
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   392
				 action:[self leftAlign]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   393
				     in:panel1.
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   394
    alignToggle := RadioButton form:(self class alignForm)
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   395
			     action:[self align]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   396
				 in:panel1.
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   397
    centerToggle := RadioButton form:(self class centerForm)
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   398
			      action:[self center]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   399
				  in:panel1.
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   400
    rightAlignToggle := RadioButton form:(self class rightAlignForm)
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   401
				  action:[self rightAlign]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   402
				      in:panel1.
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   403
    group := RadioButtonGroup new.
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   404
    group add:leftAlignToggle.
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   405
    group add:alignToggle.
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   406
    group add:centerToggle.
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   407
    group add:rightAlignToggle.
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   408
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   409
    "separator"
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   410
    (View in:panel1) extent:(50 @ 2); borderWidth:0; level:0.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   411
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   412
    leftTabButton := Button form:(self class leftTabForm)
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   413
			  action:[self leftTab]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   414
			      in:panel1.
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   415
    centerTabButton := Button form:(self class centerTabForm)
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   416
			    action:[self centerTab]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   417
				in:panel1.
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   418
    rightTabButton := Button form:(self class rightTabForm)
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   419
			   action:[self rightTab]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   420
			       in:panel1.
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   421
    decimalTabButton := Button form:(self class decimalTabForm)
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   422
			     action:[self decimalTab]
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   423
				 in:panel1.
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   424
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   425
"/    lineSpacingField := EditField in:panel3.
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   426
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   427
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   428
    leftMargin := 0.0.
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   429
    rightMargin := 8.5 
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   430
28
ca403f4c5b86 *** empty log message ***
claus
parents: 20
diff changeset
   431
    "TextRuler new open"
0
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   432
! !
0fd7841626f6 Initial revision
claus
parents:
diff changeset
   433