-
Notifications
You must be signed in to change notification settings - Fork 6
/
StyledTextWiki.pck.st
190 lines (162 loc) · 6.41 KB
/
StyledTextWiki.pck.st
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
'From Cuis 5.0 [latest update: #4967] on 9 November 2021 at 5:32:59 pm'!
'Description Please enter a description for this package.'!
!provides: 'StyledTextWiki' 1 2!
!requires: 'StyledText' 1 nil nil!
SystemOrganization addCategory: 'StyledTextWiki'!
!classDefinition: #StyledTextWiki category: 'StyledTextWiki'!
Object subclass: #StyledTextWiki
instanceVariableNames: 'textModel pages currentPage'
classVariableNames: ''
poolDictionaries: ''
category: 'StyledTextWiki'!
!classDefinition: 'StyledTextWiki class' category: 'StyledTextWiki'!
StyledTextWiki class
instanceVariableNames: ''!
!classDefinition: #StyledTextWikiEditor category: 'StyledTextWiki'!
Object subclass: #StyledTextWikiEditor
instanceVariableNames: 'wiki textModel textMorph'
classVariableNames: ''
poolDictionaries: ''
category: 'StyledTextWiki'!
!classDefinition: 'StyledTextWikiEditor class' category: 'StyledTextWiki'!
StyledTextWikiEditor class
instanceVariableNames: ''!
!classDefinition: #StyledTextWikiPage category: 'StyledTextWiki'!
Object subclass: #StyledTextWikiPage
instanceVariableNames: 'wiki text'
classVariableNames: ''
poolDictionaries: ''
category: 'StyledTextWiki'!
!classDefinition: 'StyledTextWikiPage class' category: 'StyledTextWiki'!
StyledTextWikiPage class
instanceVariableNames: ''!
!StyledTextWikiEditor commentStamp: 'bp 12/18/2011 18:09' prior: 0!
(StyledTextWikiEditor wiki: StyledTextWiki new) morphicWindow openInWorld!
!StyledTextWikiPage methodsFor: 'as yet unclassified' stamp: 'jmv 3/14/2012 08:27'!
name
| string |
string _ self text asString lines first.
string size > 30 ifTrue: [
string _ string copyFrom: 1 to: 30 ].
string ifEmpty: [ ^ '(Empty page)' ].
^ string! !
!StyledTextWiki methodsFor: 'as yet unclassified' stamp: 'bp 10/24/2010 16:58'!
currentPage
^currentPage! !
!StyledTextWiki methodsFor: 'as yet unclassified' stamp: 'bp 10/24/2010 17:00'!
currentPageIndex
^pages indexOf: currentPage! !
!StyledTextWiki methodsFor: 'as yet unclassified' stamp: 'jmv 8/10/2011 10:55'!
currentPageIndex: anInteger
currentPage := pages at: anInteger.
textModel actualContents: currentPage text! !
!StyledTextWiki methodsFor: 'as yet unclassified' stamp: 'jmv 8/10/2011 10:56'!
initialize
| heading1 |
textModel _ StyledTextModel new.
heading1 _ textModel styleSet paragraphStyleNamed: 'Heading 1'.
pages := OrderedCollection new.
currentPage := self newPage: (
Text
string: 'Welcome to the Styled Text Wiki!!'
attribute: (ParagraphStyleReference for: heading1)).
textModel actualContents: currentPage text! !
!StyledTextWiki methodsFor: 'as yet unclassified' stamp: 'jmv 1/13/2012 14:03'!
newPage
| normal |
normal _ textModel styleSet defaultStyle.
currentPage := self newPage:
(Text string: '' attribute: (ParagraphStyleReference for: normal)).
textModel actualContents: currentPage text! !
!StyledTextWiki methodsFor: 'as yet unclassified' stamp: 'bp 10/24/2010 16:47'!
newPage: aText
^pages add: ((StyledTextWikiPage wiki: self)
text: aText;
yourself)! !
!StyledTextWiki methodsFor: 'as yet unclassified' stamp: 'bp 10/24/2010 16:39'!
pageNames
^pages collect: [:each | each name]! !
!StyledTextWiki methodsFor: 'as yet unclassified' stamp: 'jmv 8/10/2011 10:53'!
textModel
^textModel! !
!StyledTextWikiEditor methodsFor: 'as yet unclassified' stamp: 'jmv 9/11/2013 00:01'!
createMorph
| appMorph pagesList newPageButton toolbar |
textModel := StyledTextModel withText: wiki currentPage text.
appMorph := PluggableStyledTextMorph withModel: textModel in: STEMainMorph newColumn.
textMorph := appMorph submorphs first.
pagesList := PluggableFilteringDropDownListMorph
model: self
listGetter: #pageNames
indexGetter: #currentPageIndex
indexSetter: #currentPageIndex:.
pagesList
borderWidth: 0;
layoutSpec: (LayoutSpec morphHeightProportionalWidth: 0.5).
newPageButton := PluggableButtonMorph model: self action: #newPage.
newPageButton
morphExtent: 22@22;
icon: Theme current newIcon;
layoutSpec: LayoutSpec keepMorphExtent.
toolbar := appMorph submorphs last.
toolbar addMorphBack: newPageButton.
toolbar addMorphBack: pagesList. "add it at the left of the layout"
textMorph when: #possiblyChanged send: #modelChanged to: pagesList.
^appMorph! !
!StyledTextWikiEditor methodsFor: 'as yet unclassified' stamp: 'bp 10/24/2010 17:00'!
currentPageIndex
^wiki currentPageIndex! !
!StyledTextWikiEditor methodsFor: 'as yet unclassified' stamp: 'bp 7/8/2011 22:49'!
currentPageIndex: anInteger
self updateCurrentPage.
wiki currentPageIndex: anInteger.
textModel actualContents: wiki currentPage text! !
!StyledTextWikiEditor methodsFor: 'as yet unclassified' stamp: 'jmv 5/24/2011 11:00'!
morphicWindow
| window |
window _ SystemWindow new model: self.
window setLabel: 'Styled Text Wiki'.
window layoutMorph
addMorph: (self createMorph)
proportionalHeight: 1.
^ window! !
!StyledTextWikiEditor methodsFor: 'as yet unclassified' stamp: 'bp 7/8/2011 23:11'!
newPage
| selection pageName |
selection := textMorph selectionInterval.
pageName := textModel actualContents copyFrom: selection first to: selection last.
textMorph currentCharacterStyleIndex: 1.
wiki newPage.
textModel actualContents: pageName.
self updateCurrentPage.
textMorph
selectAll;
currentParagraphStyleIndex: 3! !
!StyledTextWikiEditor methodsFor: 'as yet unclassified' stamp: 'bp 7/8/2011 22:49'!
pageNames
^wiki pageNames! !
!StyledTextWikiEditor methodsFor: 'as yet unclassified' stamp: 'bp 10/24/2010 16:58'!
setWiki: aStyledTextWiki
wiki := aStyledTextWiki! !
!StyledTextWikiEditor methodsFor: 'as yet unclassified' stamp: 'jmv 11/9/2021 17:28:52'!
updateCurrentPage
textMorph innerTextMorph acceptContents.
wiki currentPage text: textModel actualContents! !
!StyledTextWikiEditor class methodsFor: 'as yet unclassified' stamp: 'bp 10/24/2010 16:56'!
wiki: aStyledTextWiki
^self new setWiki: aStyledTextWiki! !
!StyledTextWikiPage methodsFor: 'as yet unclassified' stamp: 'jmv 1/13/2012 14:03'!
setWiki: aStyledTextWiki
| normal |
wiki := aStyledTextWiki.
normal _ wiki textModel styleSet defaultStyle.
text := Text string: '' attribute: (ParagraphStyleReference for: normal)! !
!StyledTextWikiPage methodsFor: 'as yet unclassified' stamp: 'bp 10/24/2010 16:17'!
text
^text! !
!StyledTextWikiPage methodsFor: 'as yet unclassified' stamp: 'bp 10/24/2010 16:45'!
text: aText
text := aText! !
!StyledTextWikiPage class methodsFor: 'as yet unclassified' stamp: 'bp 10/24/2010 16:56'!
wiki: aStyledTextWiki
^self new setWiki: aStyledTextWiki! !