|
@@ -0,0 +1,81 @@
|
|
|
|
+EnyoFriend subclass: #Eris
|
|
|
|
+ instanceVariableNames: ''
|
|
|
|
+ category: 'Eris'!
|
|
|
|
+
|
|
|
|
+!Eris methodsFor: 'actions'!
|
|
|
|
+
|
|
|
|
+doIt
|
|
|
|
+ ^self eval: self dollar richText getValue
|
|
|
|
+!
|
|
|
|
+
|
|
|
|
+clear
|
|
|
|
+ self dollar richText setValue: ''
|
|
|
|
+!
|
|
|
|
+
|
|
|
|
+eval: aString
|
|
|
|
+ | compiler node |
|
|
|
|
+ compiler := Compiler new.
|
|
|
|
+ node := compiler parseExpression: aString.
|
|
|
|
+ node isParseFailure ifTrue: [
|
|
|
|
+ ^self warn: 'Ehrm, you are a Smalltalk n00b, right?' button: 'Yup'].
|
|
|
|
+ ^compiler loadExpression: aString.
|
|
|
|
+!
|
|
|
|
+
|
|
|
|
+printString
|
|
|
|
+ ^''
|
|
|
|
+!
|
|
|
|
+
|
|
|
|
+warn: aString button: caption
|
|
|
|
+ | block popup |
|
|
|
|
+ block := [popup close].
|
|
|
|
+ <props = {kind: 'ModalDialog', caption: 'Parsing error', components: [
|
|
|
|
+ {kind: 'Control', content: aString, className: 'enyo-text-error warning-icon'},
|
|
|
|
+ {kind: 'Button', caption: caption, onclick: 'closePopup', style: 'margin-top:10px'}],
|
|
|
|
+ closePopup: block}>.
|
|
|
|
+ popup := enyo create: props.
|
|
|
|
+ popup openAtCenter
|
|
|
|
+!
|
|
|
|
+
|
|
|
|
+print: aString
|
|
|
|
+ self dollar richText setValue: (self dollar richText getValue), ' ', aString
|
|
|
|
+!
|
|
|
|
+
|
|
|
|
+quack
|
|
|
|
+ "(self kind: 'Sound'; src: 'DuckQwaq.wav'; create) play"
|
|
|
|
+ (enyo create: (Dictionary new at: 'kind' put: 'Sound'; at: 'src' put: 'DuckQwaq.wav'; yourself)) play
|
|
|
|
+!
|
|
|
|
+
|
|
|
|
+printIt
|
|
|
|
+ self print: self doIt printString
|
|
|
|
+! !
|
|
|
|
+
|
|
|
|
+!Eris methodsFor: 'initialization'!
|
|
|
|
+initialize
|
|
|
|
+ | props doItBlock printItBlock quackBlock clearBlock |
|
|
|
|
+ super initialize.
|
|
|
|
+ doItBlock := [self doIt].
|
|
|
|
+ printItBlock := [self printIt].
|
|
|
|
+ quackBlock := [self quack].
|
|
|
|
+ clearBlock := [self clear].
|
|
|
|
+
|
|
|
|
+ <props = {kind: 'VFlexBox', components: [
|
|
|
|
+ {kind: 'PageHeader', content: 'Eris'},
|
|
|
|
+ {kind: 'RowGroup', caption: 'Workspace', components: [
|
|
|
|
+ {kind: 'RichText', richContent: false,
|
|
|
|
+ value: 'Put some funky Jtalk code here...',
|
|
|
|
+ autoWordComplete: false, spellcheck: false, autocorrect: false,
|
|
|
|
+ autoCapitalize: 'lowercase', alwaysLooksFocused: true
|
|
|
|
+ },
|
|
|
|
+ {kind: 'Toolbar', components: [
|
|
|
|
+ {caption: 'Do it', onclick: 'doit'},
|
|
|
|
+ {caption: 'Print it', onclick: 'printit'},
|
|
|
|
+ {caption: 'Clear', onclick: 'clear'},
|
|
|
|
+ {kind: 'Spacer'},
|
|
|
|
+ {caption: 'Quack!', onclick: 'quack'}]}]}],
|
|
|
|
+ doit: doItBlock,
|
|
|
|
+ printit: printItBlock,
|
|
|
|
+ quack: quackBlock,
|
|
|
|
+ clear: clearBlock}>.
|
|
|
|
+ ui := enyo create: props.
|
|
|
|
+! !
|
|
|
|
+
|