First version of executable auto-updateable playgrounds in a grafoscopio document tree. Almost ready for going wider in Internet :-). Integration of testing branch)

This commit is contained in:
Offray Vladimir Luna Cárdenas 2015-02-11 22:18:14 +00:00
parent 25bcbdbb17
commit 11cefd26b6
2 changed files with 61 additions and 24 deletions

View File

@ -96,6 +96,21 @@ GrafoscopioBrowser >> body2ForCodeIn: constructor for: aNode [
] ]
{ #category : #'graphical interface' }
GrafoscopioBrowser >> body3ForCodeIn: constructor for: aNode [
"Shows the body in a constructor for selected node, if node is not tagged. If it is tagged it will return itself, so it can be rendered
properly for other messages"
| innerBrowser |
aNode tags = 'código'
ifFalse: [^self].
innerBrowser := GTPlayground new.
constructor custom: innerBrowser.
]
{ #category : #'graphical interface' } { #category : #'graphical interface' }
GrafoscopioBrowser >> bodyForCodeIn: constructor for: aNode [ GrafoscopioBrowser >> bodyForCodeIn: constructor for: aNode [
"Shows the body of a selected node as executable code." "Shows the body of a selected node as executable code."
@ -164,8 +179,11 @@ GrafoscopioBrowser >> bodyIn: constructor for: aNode [
"Shows the body in a constructor for selected node, if node is not tagged. If it is tagged it will return itself, so it can be rendered "Shows the body in a constructor for selected node, if node is not tagged. If it is tagged it will return itself, so it can be rendered
properly for other messages" properly for other messages"
aNode tags isNil | specialTags |
ifFalse: [^self ].
specialTags := #('código' 'original').
(specialTags includes: aNode tags)
ifTrue: [^self ].
(constructor text) (constructor text)
title: 'Texto '; title: 'Texto ';
format:[ format:[
@ -263,14 +281,17 @@ browser
when: [:selection | selection notNil]; when: [:selection | selection notNil];
andShow: [ :a :node | andShow: [ :a :node |
self bodyIn: a for: node. self bodyIn: a for: node.
self body2ForCodeIn: a for: node. self body3ForCodeIn: a for: node.
self bodyForTransmediaIn: a for: node ]. self bodyForTransmediaIn: a for: node ].
(browser transmit ) (browser transmit )
from: #tree port: #selection; from: #tree port: #selection;
from: #nodeBody port: #text; from: #nodeBody port: #text;
when: [:node :text | text notNil & node notNil]; when: [:node :text | text notNil & node notNil];
to: #nodeBody port: #neverland; to: #nodeBody port: #neverland;
transformed: [:node :text | node body: text asString]. transformed: [:node :content |
node tags = 'código'
ifFalse: [node body: content asString]
ifTrue: [node body: content]].
(browser transmit) (browser transmit)
from: #tree; from: #tree;
to: #nodeHeader; to: #nodeHeader;
@ -683,23 +704,15 @@ GrafoscopioBrowser >> openWorking [
GrafoscopioBrowser >> panelAsCodeFor: aNode [ GrafoscopioBrowser >> panelAsCodeFor: aNode [
"Shows an interactive playground for Smalltalk code in a node body" "Shows an interactive playground for Smalltalk code in a node body"
" browser := GLMTabulator new. browser := GLMTabulator new.
browser title: 'Playground'. browser title: 'Código'.
browser row: #code. browser column: #code.
browser transmit browser transmit
to: #code; to: #code;
transformed: [GTPlayPage new content: aNode body]; transformed: [ GTPlayPage new content: aNode body ];
andShow: [ :a | a custom GTPlayground new ]. andShow: [ :a | a custom: GTPlayground new ].
^ browser." browser sendToOutside: #nodeBody from: #code -> #text.
^ browser.
browser := GLMTabulator new.
browser title: 'Código'.
browser column: #code.
browser transmit
to: #code;
transformed: [ GTPlayPage new content: aNode body ];
andShow: [ :a | a custom: GTPlayground new ].
^ browser.
] ]
{ #category : #'graphical interface' } { #category : #'graphical interface' }

View File

@ -186,6 +186,21 @@ GrafoscopioNode >> children: aCollection [
children := aCollection. children := aCollection.
] ]
{ #category : #accessing }
GrafoscopioNode >> content [
"Returns the receivers body"
^ body
]
{ #category : #accessing }
GrafoscopioNode >> content: anObject [
"Sets the receivers body to the given object"
body := anObject
]
{ #category : #movement } { #category : #movement }
GrafoscopioNode >> demote [ GrafoscopioNode >> demote [
"Moves the current node down in the hierachy, making a children of its current previous slibing" "Moves the current node down in the hierachy, making a children of its current previous slibing"
@ -477,6 +492,8 @@ GrafoscopioNode >> tagAs: aTag [
know if a tag excludes others from the same node" know if a tag excludes others from the same node"
tags := aTag. tags := aTag.
aTag = 'código'
ifTrue: [self body: (GTPlayPage new content: self body) content]
] ]
{ #category : #accessing } { #category : #accessing }
@ -486,6 +503,13 @@ GrafoscopioNode >> tags [
^ tags ^ tags
] ]
{ #category : #accessing }
GrafoscopioNode >> title [
"Returns the receiver header"
^ header
]
{ #category : #'add/remove nodes' } { #category : #'add/remove nodes' }
GrafoscopioNode >> visitedGoTo: aCollection [ GrafoscopioNode >> visitedGoTo: aCollection [
"Stores the current node in a collection and recursively stores its children" "Stores the current node in a collection and recursively stores its children"