gui/extensions.st
author Claus Gittinger <cg@exept.de>
Sun, 22 Jul 2018 22:41:13 +0200
changeset 633 4be0b0537d80
parent 348 9a04cc03d392
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
348
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/gui' }"!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
     2
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
     3
!PPAndParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
     4
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
     5
displayDescription
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
     6
	^ 'and'
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
     7
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
     8
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
     9
!PPAndParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    10
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    11
exampleOn: aStream
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    12
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    13
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    14
!PPChoiceParser methodsFor:'*petitgui-morphic'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    15
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    16
exampleOn: aStream
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    17
	"If there is already a lot written, try to pick an empty possiblity."
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    18
	
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    19
	aStream position > 512 ifTrue: [
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    20
		(parsers anySatisfy: [ :each | each isNullable ])
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    21
			ifTrue: [ ^ self ] ].
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    22
	parsers atRandom exampleOn: aStream
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    23
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    24
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    25
!PPChoiceParser methodsFor:'*petitgui-morphic'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    26
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    27
morphicShapeSeen: aSet depth: anInteger
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    28
	^ self morphicShapeSeen: aSet depth: anInteger do: [ :cc |
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    29
		| morph |
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    30
		morph := self newColumnMorph 
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    31
			cellInset: 5;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    32
			yourself.
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    33
		self children do: [ :each | 
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    34
			morph addMorphBack: (self newRowMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    35
				hResizing: #spaceFill;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    36
				addMorphBack: (cc value: each);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    37
				addMorphBack: (self newColumnMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    38
					hResizing: #spaceFill;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    39
					addMorphBack: (self newSpacerMorph height: 10);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    40
					addMorphBack: ((LineMorph from: 0 @ 0 to: 20 @ 0 color: Color black width: 1)
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    41
						hResizing: #spaceFill;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    42
						minWidth: 20;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    43
						yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    44
					yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    45
				yourself) ].
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    46
		morph fullBounds.
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    47
		self newRowMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    48
			addMorphBack: (self newColumnMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    49
				addMorphBack: (self newSpacerMorph height: 10);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    50
				addMorphBack: (LineMorph from: 0 @ 0 to: 20 @ 0 color: Color black width: 1);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    51
				yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    52
			addMorphBack: (self newColumnMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    53
				addMorphBack: (self newSpacerMorph width: 1; height: 10);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    54
				addMorphBack: (LineMorph from: 0 @ 0 to: 0 @ (morph height - 23) color: Color black width: 1);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    55
				yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    56
			addMorphBack: morph;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    57
			addMorphBack: (self newColumnMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    58
				addMorphBack: (self newSpacerMorph width: 1; height: 10);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    59
				addMorphBack: (LineMorph from: 0 @ (morph height - 23) to: 0 @ 0 color: Color black width: 1)
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    60
					makeForwardArrow;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    61
					width: 1;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    62
				yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    63
			yourself ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    64
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    65
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    66
!PPDelegateParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    67
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    68
displayDescription
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    69
	^ nil
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    70
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    71
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    72
!PPDelegateParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    73
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    74
exampleOn: aStream
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    75
	parser exampleOn: aStream
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    76
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    77
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    78
!PPDelegateParser methodsFor:'*petitgui-morphic'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    79
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    80
morphicShapeSeen: aSet depth: anInteger
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    81
	^ self morphicShapeSeen: aSet depth: anInteger do: [ :cc |
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    82
		self displayDescription isNil
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    83
			ifTrue: [ cc value: parser ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    84
			ifFalse: [
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    85
				self newRowMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    86
					addMorphBack: (self newColumnMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    87
						addMorphBack: (self newSpacerMorph height: 10);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    88
						addMorphBack: (LineMorph from: 0 @ 0 to: 20 @ 0 color: Color black width: 1);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    89
						yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    90
					addMorphBack: (self newRowMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    91
						color: (self backgroundForDepth: anInteger);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    92
						addMorphBack: (self newColumnMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    93
							addMorphBack: (cc value: parser);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    94
							addMorphBack: (self newRowMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    95
								hResizing: #spaceFill;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    96
								addMorphBack: (self newSpacerMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    97
									width: 20;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    98
									yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
    99
								addMorphBack: (self newColumnMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   100
									hResizing: #spaceFill;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   101
									listCentering: #center;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   102
									addMorphBack: (self newSpacerMorph);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   103
									addMorphBack: (StringMorph new
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   104
										contents: self displayDescription;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   105
										yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   106
									yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   107
								yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   108
							yourself);		
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   109
						addMorphBack: (self newColumnMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   110
							addMorphBack: (self newSpacerMorph height: 10);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   111
							addMorphBack: (LineMorph from: 0 @ 0 to: 20 @ 0 color: Color black width: 1);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   112
							yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   113
						yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   114
					yourself ] ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   115
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   116
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   117
!PPEndOfInputParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   118
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   119
displayDescription
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   120
	^ 'end of input'
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   121
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   122
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   123
!PPEpsilonParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   124
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   125
displayName
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   126
	^ 'epsilon'
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   127
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   128
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   129
!PPEpsilonParser methodsFor:'*petitgui-morphic'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   130
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   131
morphicShapeSeen: aSet depth: anInteger
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   132
	^ self morphicShapeSeen: aSet depth: anInteger do: [ :cc |
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   133
		self newRowMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   134
			addMorphBack: (self newColumnMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   135
				addMorphBack: (self newSpacerMorph height: 10);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   136
				addMorphBack: (LineMorph from: 0 @ 0 to: 20 @ 0 color: Color black width: 1);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   137
				yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   138
			yourself ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   139
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   140
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   141
!PPFailingParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   142
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   143
displayColor
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   144
	^ Color red
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   145
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   146
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   147
!PPFailingParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   148
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   149
displayName
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   150
	^ message
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   151
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   152
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   153
!PPLiteralParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   154
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   155
displayName
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   156
	^ literal printString
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   157
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   158
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   159
!PPLiteralSequenceParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   160
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   161
exampleOn: aStream
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   162
	aStream nextPutAll: literal
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   163
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   164
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   165
!PPNotParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   166
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   167
displayDescription
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   168
	^ 'not'
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   169
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   170
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   171
!PPNotParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   172
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   173
exampleOn: aStream
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   174
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   175
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   176
!PPParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   177
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   178
backgroundForDepth: anInteger
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   179
	^ Color gray: 1.0 - (anInteger / 20.0)
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   180
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   181
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   182
!PPParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   183
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   184
displayColor
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   185
	^ self isTerminal
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   186
		ifTrue: [ Color r: 0.5 g: 0.0 b: 0.5 ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   187
		ifFalse: [ Color blue ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   188
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   189
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   190
!PPParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   191
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   192
displayName
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   193
	^ self name isNil
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   194
		ifFalse: [ self name asString ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   195
		ifTrue: [ self class name asString ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   196
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   197
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   198
!PPParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   199
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   200
example
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   201
	^ String streamContents: [ :stream | self exampleOn: stream ] limitedTo: 1024
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   202
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   203
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   204
!PPParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   205
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   206
exampleOn: aStream
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   207
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   208
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   209
!PPParser methodsFor:'*petitgui'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   210
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   211
gtInspectorParserInspectorIn: composite
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   212
	<gtInspectorPresentationOrder: 30>
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   213
	composite custom: (
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   214
		PPParserInspector new 
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   215
			title: 'Inspector';
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   216
			startOn: self)
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   217
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   218
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   219
!PPParser methodsFor:'*petitgui-morphic'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   220
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   221
morphicProduction
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   222
	^ self newRowMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   223
		layoutInset: 4;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   224
		addMorphBack: (self newRowMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   225
			layoutInset: 4;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   226
			addMorphBack: (StringMorph new
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   227
				contents: self displayName;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   228
				emphasis: TextEmphasis bold emphasisCode;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   229
				yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   230
			yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   231
		addMorphBack: (self morphicShapeSeen: IdentitySet new depth: 0);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   232
		addMorphBack: (self newColumnMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   233
			addMorphBack: (self newSpacerMorph);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   234
			addMorphBack: (LineMorph from: 0 @ 0 to: 20 @ 0 color: Color black width: 1)	
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   235
				makeForwardArrow;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   236
			yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   237
		yourself
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   238
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   239
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   240
!PPParser methodsFor:'*petitgui-morphic'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   241
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   242
morphicShapeDefault
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   243
	^ self newRowMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   244
		addMorphBack: (self newColumnMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   245
			addMorphBack: (self newSpacerMorph);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   246
			addMorphBack: (LineMorph from: 0 @ 0 to: 20 @ 0 color: Color black width: 1)	
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   247
				makeForwardArrow;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   248
			yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   249
		addMorphBack: (self newRowMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   250
			borderWidth: 1;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   251
			layoutInset: 3;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   252
			color: Color white;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   253
			addMorphBack: (StringMorph new
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   254
				contents: self displayName;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   255
				color: self displayColor;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   256
				yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   257
			yourself);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   258
		yourself
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   259
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   260
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   261
!PPParser methodsFor:'*petitgui-morphic'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   262
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   263
morphicShapeSeen: aSet depth: anInteger
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   264
	^ self morphicShapeDefault
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   265
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   266
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   267
!PPParser methodsFor:'*petitgui-morphic'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   268
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   269
morphicShapeSeen: aSet depth: anInteger do: aBlock
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   270
	" avoid recursion "
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   271
	(aSet includes: self)
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   272
		ifTrue: [ ^ self morphicShapeDefault ].
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   273
	" display nice name when possible "
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   274
	(anInteger > 0 and: [ self name notNil ]) 
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   275
		ifTrue: [ ^ self morphicShapeDefault ].
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   276
	" don't do it too deep "
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   277
	(anInteger > 10)
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   278
		ifTrue: [ ^ self morphicShapeDefault ].
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   279
	aSet add: self. 
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   280
	^ aBlock value: [ :parser |
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   281
		parser 
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   282
			morphicShapeSeen: aSet 
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   283
			depth: anInteger + 1 ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   284
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   285
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   286
!PPParser methodsFor:'*petitgui-mondrian'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   287
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   288
namedParsers
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   289
    | result |
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   290
    result := OrderedCollection new.
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   291
    self namedParsersDo: [ :parser | result addLast: parser ].
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   292
    ^ result
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   293
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   294
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   295
!PPParser methodsFor:'*petitgui-mondrian'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   296
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   297
namedParsersDo: aBlock
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   298
    self namedParsersDo: aBlock seen: IdentitySet new
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   299
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   300
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   301
!PPParser methodsFor:'*petitgui-mondrian'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   302
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   303
namedParsersDo: aBlock seen: aSet
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   304
    self children do: [ :each | 
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   305
        (aSet includes: each)
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   306
            ifFalse: [
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   307
		        aSet add: each.
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   308
		        each name isEmptyOrNil
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   309
		            ifFalse: [ aBlock value: each ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   310
		            ifTrue: [ each namedParsersDo: aBlock seen: aSet ] ] ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   311
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   312
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   313
!PPParser methodsFor:'*petitgui-morphic-creational'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   314
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   315
newColumnMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   316
	^ AlignmentMorph newColumn
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   317
		cellPositioning: #topLeft;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   318
		color: Color transparent;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   319
		listCentering: #topLeft;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   320
		vResizing: #shrinkWrap;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   321
		hResizing: #shrinkWrap;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   322
		layoutInset: 0;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   323
		yourself
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   324
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   325
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   326
!PPParser methodsFor:'*petitgui-morphic-creational'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   327
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   328
newRowMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   329
	^ AlignmentMorph newRow
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   330
		cellPositioning: #topLeft;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   331
		color: Color transparent;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   332
		listCentering: #topLeft;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   333
		vResizing: #shrinkWrap;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   334
		hResizing: #shrinkWrap;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   335
		layoutInset: 0;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   336
		yourself
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   337
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   338
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   339
!PPParser methodsFor:'*petitgui-morphic-creational'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   340
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   341
newSpacerMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   342
	^ Morph new
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   343
		color: Color transparent;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   344
		borderWidth: 0;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   345
		extent: 7 @ 7;
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   346
		yourself
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   347
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   348
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   349
!PPParser methodsFor:'*petitgui-mondrian'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   350
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   351
viewAllNamedParsers
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   352
	| view |
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   353
	view := MOViewRenderer new.
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   354
	self viewAllNamedParsersOn: view.
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   355
	view open
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   356
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   357
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   358
!PPParser methodsFor:'*petitgui-mondrian'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   359
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   360
viewAllNamedParsersOn: view
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   361
	view shape rectangle text: #displayName; withoutBorder. 
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   362
	view nodes: (self allParsers select: [:each |  each name isEmptyOrNil not ]).
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   363
	view edgesToAll: #namedParsers.
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   364
	view horizontalDominanceTreeLayout layered
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   365
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   366
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   367
!PPParser methodsFor:'*petitgui-mondrian'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   368
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   369
viewAllNamedParsersWithSelection: aCollectionOfNames on: view
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   370
	self viewAllNamedParsersWithSelection: aCollectionOfNames previewing: [ :each | each name ] on: view
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   371
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   372
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   373
!PPParser methodsFor:'*petitgui-mondrian'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   374
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   375
viewAllNamedParsersWithSelection: aCollectionOfNames previewing: aBlock on: view
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   376
	view shape label 
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   377
		color: [:each | (aCollectionOfNames includes: each name) ifFalse: [Color black] ifTrue: [Color red]];
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   378
		text: [:each |each displayName].
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   379
	view interaction popupText: aBlock.
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   380
	view interaction item: 'Explore' action: #explore.
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   381
	view nodes: (self allParsers select: [:each |  each name isEmptyOrNil not ]).
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   382
	view edges: (self allParsers select: [:each |  each name isEmptyOrNil not ])from: #yourself toAll: #namedParsers.
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   383
	view horizontalDominanceTreeLayout verticalGap: 10; layered
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   384
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   385
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   386
!PPPluggableParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   387
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   388
displayName
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   389
	^ String streamContents: [ :stream | block decompile shortPrintOn: stream ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   390
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   391
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   392
!PPPredicateParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   393
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   394
displayName
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   395
	^ predicateMessage
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   396
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   397
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   398
!PPPredicateParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   399
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   400
exampleOn: aStream
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   401
	"Produce a random character that is valid. If there are characters in the alpha-numeric range prefer those over all others."
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   402
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   403
	| valid normal |
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   404
	valid := Character allCharacters
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   405
		select: [ :char | self matches: (String with: char) ].
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   406
	normal := valid
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   407
		select: [ :char | char asInteger < 127 and: [ char isAlphaNumeric ] ].
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   408
	aStream nextPut: (normal isEmpty
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   409
		ifTrue: [ valid atRandom ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   410
		ifFalse: [ normal atRandom ])
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   411
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   412
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   413
!PPRepeatingParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   414
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   415
displayDescription
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   416
	^ String streamContents: [ :stream |
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   417
		min = 0 
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   418
			ifFalse: [ stream print: min; nextPutAll: '..' ].
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   419
		max = SmallInteger maxVal
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   420
			ifTrue: [ stream nextPut: $* ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   421
			ifFalse: [ stream print: max ] ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   422
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   423
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   424
!PPRepeatingParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   425
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   426
exampleOn: aStream
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   427
	"Perform the minimal repeatitions required, and a random amount of more if possible and if not that much output has been produced yet."
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   428
	
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   429
	min timesRepeat: [ 
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   430
		super exampleOn: aStream ].
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   431
	(max - min min: 5) atRandom timesRepeat: [
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   432
		aStream position > 512
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   433
			ifTrue: [ ^ self ].
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   434
		super exampleOn: aStream ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   435
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   436
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   437
!PPSequenceParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   438
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   439
exampleOn: aStream
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   440
	parsers do: [ :each | each exampleOn: aStream ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   441
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   442
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   443
!PPSequenceParser methodsFor:'*petitgui-morphic'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   444
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   445
morphicShapeSeen: aSet depth: anInteger
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   446
	^ self morphicShapeSeen: aSet depth: anInteger do: [ :cc |
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   447
		self children
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   448
			inject: self newRowMorph
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   449
			into: [ :result :each | 
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   450
				result 
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   451
					addMorphBack: (cc value: each);
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   452
					yourself ] ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   453
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   454
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   455
!PPTrimmingParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   456
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   457
exampleOn: aStream
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   458
	super exampleOn: aStream.
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   459
	aStream nextPut: Character space
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   460
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   461
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   462
!PPUnresolvedParser methodsFor:'*petitgui-accessing'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   463
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   464
displayColor
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   465
	^ Color red
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   466
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   467
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   468
!Refactoring methodsFor:'*petitgui-utilities'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   469
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   470
checkCompositeParser: aClass
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   471
        ^ (RBCondition isMetaclass: aClass) not
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   472
        "&  RBCondition isSubclass: class of: self compositeParserClass"
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   473
        & (RBCondition new
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   474
                type: (Array with: #subclass with: self compositeParserClass with: aClass)
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   475
                block: [ aClass includesClass: self compositeParserClass ]
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   476
                errorString: aClass printString , ' is <1?:not >a subclass of ' , self compositeParserClass printString)
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   477
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   478
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   479
!Refactoring methodsFor:'*petitgui-utilities'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   480
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   481
compositeParserClass
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   482
        ^ self classObjectFor: #PPCompositeParser
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   483
! !
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   484
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   485
!stx_goodies_petitparser_gui class methodsFor:'documentation'!
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   486
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   487
extensionsVersion_CVS
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   488
    ^ '$Header: /cvs/stx/stx/goodies/petitparser/gui/extensions.st,v 1.2 2014-03-04 21:19:47 cg Exp $'
9a04cc03d392 initial checking
Claus Gittinger <cg@exept.de>
parents: 347
diff changeset
   489
! !