gui/extensions.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 16 Jun 2015 07:49:21 +0100
changeset 491 82b272c7dc37
parent 348 9a04cc03d392
permissions -rw-r--r--
Codegen: added support for smart action node compiling. Avoid creation of intermediate result collection for action nodes if all references to action block's argument (i.e., the nodes collection) is in form of: * <nodes> at: <numeric constant> * <nodes> first (second, third...
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
! !