diff --git a/repository/Grafoscopio/GrafoscopioBrowser.class.st b/repository/Grafoscopio/GrafoscopioBrowser.class.st index 3f4bdbf..d67bd64 100644 --- a/repository/Grafoscopio/GrafoscopioBrowser.class.st +++ b/repository/Grafoscopio/GrafoscopioBrowser.class.st @@ -38,21 +38,6 @@ GrafoscopioBrowser class >> open [ ^ self new open ] -{ #category : #'as yet unclassified' } -GrafoscopioBrowser class >> openInMode: aMode [ - ^ self new openInMode: aMode -] - -{ #category : #'as yet unclassified' } -GrafoscopioBrowser class >> openInModeTransmediaton [ - ^ self new openInModeTransmediaton -] - -{ #category : #'as yet unclassified' } -GrafoscopioBrowser class >> openLandscape [ - ^ self new openLandscape -] - { #category : #persistence } GrafoscopioBrowser >> addFileToRepository [ "Adds a selected file to a defined repository." @@ -163,58 +148,6 @@ browser transformed: [:node :text | node header: text asString] ] -{ #category : #'graphical interface' } -GrafoscopioBrowser >> buildBrowserForTransmediaton: aTree [ -"Main method for building the interface for trees and its nodes" - -browser := GLMTabulator new - title: 'Transmediaton | Grafoscopio'. - -"browser - column: [:c | - c row: #tree; - row: #nodeHeader] span: 2; - column: [ :c | - c row: #nodeBody span: 2] span: 4." -browser - updateOn: GLMItemAdded from: #yourself; - updateOn: GLMItemRemoved from: #yourself. - - browser - column: #one; - column: #two; - column: #three. - (browser transmit) - to: #one; - andShow: [ self treeForTransmediatonOn: aTree ]. - (browser transmit) - to: #two; - from: #one; - andShow: [ :a | - (a text) - display: [ 'Contenido original' ] ]. - (browser transmit) - to: #three; - from: #two; - andShow: [ :a | - (a text) - display: [ 'Transmediado' ]; - populate: #focus - on: $f - entitled: 'Focus' - with: [ :list | list selection ] ]. - (browser transmit) - toOutsidePort: #focus; - from: #three port: #focus. - (browser transmit) - to: #one port: #selection; - fromOutsidePort: #focus. - (browser transmit) - to: #two port: #selection; - fromOutsidePort: #focus. - browser openOn: aTree -] - { #category : #'graphical interface' } GrafoscopioBrowser >> buildBrowserLandscape [ @@ -277,32 +210,38 @@ browser ] { #category : #'graphical interface' } -GrafoscopioBrowser >> buildBrowserTransmediaton [ -"Main method for building the interface for trees and its nodes" +GrafoscopioBrowser >> buildBrowserNamed: aName inMode: aModeName [ +"Main method for building the interface for trees and its nodes. The name of the browser corresponds to the name of the file +where tree is stored (or is named 'draft.ston' by default). The name of the mode correspond to a way of showing and dealing with +the data. + +The idea is to support several modes in the future, starting with the 'Transmediaton' mode and adding more as needed." + +self configureInitialTags. browser := GLMTabulator new - title: 'Transmediaton | Grafoscopio'. + title: aName, ' | Grafoscopio'. browser column: [:c | - c row: #tree; - row: #nodeHeader] span: 2; + c row: #tree span: 6; + row: #nodeHeader span: 1] span: 2; column: [ :c | - c row: #nodeBody span: 2] span: 4. + c row: #nodeBody span: 2] span: 5. browser updateOn: GLMItemAdded from: #yourself; updateOn: GLMItemRemoved from: #yourself. (browser transmit) to: #tree; - andShow: [:a | self treeForTransmediatonOn: a]. - + andShow: [:a | self treeOn: a]. "Creating a self updatable body pane" - (browser transmit) to: #nodeBody; from: #tree; - andShow: [ :a | self bodyForTransmediaOn: a]. + andShow: [ :a | + (aModeName = 'transmedia') + ifTrue: [self bodyForTransmediaOn: a]]. (browser transmit ) from: #tree port: #selection; from: #nodeBody port: #text; @@ -574,8 +513,44 @@ GrafoscopioBrowser >> openDefault [ ] { #category : #persistence } -GrafoscopioBrowser >> openFromFile [ -"Opens a tree from a file. Maybe this should be integrated with the 'open' method" +GrafoscopioBrowser >> openFromFile: aFileName [ +"Opens a tree from a file named aFileName" + + | currentChildren | + self configureSettings. + + aFileName isNil ifTrue: [ ^nil ]. + workingFile := aFileName name asFileReference. + currentChildren := (STON fromString: aFileName contents). + self buildBrowserNamed: aFileName basenameWithIndicator. + mainTree := GrafoscopioNode new + header: 'Arbol principal'; + level: 0. + mainTree children: currentChildren. + browser openOn: mainTree children. +] + +{ #category : #persistence } +GrafoscopioBrowser >> openFromFile: aFileName inMode: aModeName [ +"Opens a tree from a file named aFileName" + + | currentChildren | + self configureSettings. + + aFileName isNil ifTrue: [ ^nil ]. + workingFile := aFileName name asFileReference. + currentChildren := (STON fromString: aFileName contents). + self buildBrowserNamed: aFileName basenameWithIndicator inMode: aModeName. + mainTree := GrafoscopioNode new + header: 'Arbol principal'; + level: 0. + mainTree children: currentChildren. + browser openOn: mainTree children. +] + +{ #category : #persistence } +GrafoscopioBrowser >> openFromFileSelector [ +"Opens a tree from a file by using the file selector GUI." | fileStream currentChildren | self configureSettings. @@ -594,83 +569,6 @@ GrafoscopioBrowser >> openFromFile [ browser openOn: mainTree children. ] -{ #category : #persistence } -GrafoscopioBrowser >> openFromFileInMode: aMode [ -"Opens a tree from a file and shows it on a specific graphical mode. Graphical modes are like themes in Grafoscopio which organize interface in a particular -layout to optimize interaction in a particular setting. For the moment only 'transmediaton' mode is supported (transmediaton is a transmedia hackathon)" - - | fileStream currentChildren | - self configureSettings. - fileStream := UITheme builder - fileOpen: 'Elija un archivo .ston' - extensions: #('ston'). - - fileStream isNil ifTrue: [ ^nil ]. - workingFile := fileStream name asFileReference. - currentChildren := (STON fromStream: fileStream). - mainTree := GrafoscopioNode new - header: 'Arbol principal'; - level: 0. - mainTree children: currentChildren. - aMode = 'transmediaton' - ifTrue: [self buildBrowserTransmediaton ]. - browser openOn: mainTree children. -] - -{ #category : #'graphical interface' } -GrafoscopioBrowser >> openInMode: aMode [ - "**Experimental feature.** - Opens grafoscopio in several 'modes'. Each mode corresponds to a operation way, with an specific interface. - We will start with a 'transmediaton' mode to let the people create some transmedia content. - After that we will enable other modes" - browser := GLMTabulator new - title: 'Grafoscopio'. - browser - column: #original span: 3; - column: #transmediado span: 3. - browser - updateOn: GLMItemAdded from: #yourself; - updateOn: GLMItemRemoved from: #yourself. -" browser := GLMTabulator new. - browser - row: #main; - row: [ :r | r column: #selectionInterval; column: #selectedText; column: #full ]. - (browser transmit) - to: #main; - andShow: [ :a | a text ]. - (browser transmit) - to: #selectionInterval; - from: #main port: #selectionInterval; - andShow: [ :a | a text title: '#selectionInterval port' ]. - (browser transmit) - to: #selectedText; - from: #main port: #selectedText; - andShow: [ :a | a text title: '#selectedText port' ]. - (browser transmit) - to: #full; - from: #main port: #text; - andShow: [ :a | a text title: '#text port']." - -] - -{ #category : #'graphical interface' } -GrafoscopioBrowser >> openInModeTransmediaton [ - "**Experimental feature.** - Opens grafoscopio in several 'modes'. Each mode corresponds to a operation way, with an specific interface. - We will start with a 'transmediaton' mode to let the people create some transmedia content. - After that we will enable other modes" - | draftsLocation | - "self configureSettings." - self buildBrowserTransmediaton. - mainTree := GrafoscopioNode new. - mainTree becomeDefaultTree. - draftsLocation := FileSystem disk workingDirectory / 'Grafoscopio' / 'Drafts'. - draftsLocation ensureCreateDirectory. - workingFile := draftsLocation / 'draft.ston'. - browser openOn: mainTree children. - -] - { #category : #'as yet unclassified' } GrafoscopioBrowser >> openLandscape [ "Opens a new browser with a default tree in landscape mode" @@ -711,20 +609,24 @@ GrafoscopioBrowser >> panelBrowserForTransmediaton [ Opens grafoscopio in several 'modes'. Each mode corresponds to a operation way, with an specific interface. We will start with a 'transmediaton' mode to let the people create some transmedia content. After that we will enable other modes" + | transmediaNode | + browser := GLMTabulator new. browser column: [ :c | - c row: [ :r | r column: #original; column: #transmediado] span: 7; - row: #buttons; span: 1]. + c row: [ :r | r column: #original; column: #transmediado] span: 7"; + row: #buttons; span: 1"]. (browser transmit) to: #original; andShow: [ :a | a text title: 'Original'; format:[:eachNode | - (eachNode body) isNil - ifTrue: [ '' ] - ifFalse: [ eachNode body]]]. + (eachNode tags) = 'original' + ifFalse: [ '' ] + ifTrue: [ + transmediaNode := eachNode children detect: [:node | node tags = 'transmediado']. + eachNode body]]]. (browser transmit) from: #original; toOutsidePort: #text. @@ -733,17 +635,19 @@ GrafoscopioBrowser >> panelBrowserForTransmediaton [ andShow: [ :a | a text title: 'Transmediado'; - format:[:eachNode | - (eachNode children) isEmpty - ifTrue: [ '' ] - ifFalse: [eachNode children first body]]. ]. - (browser transmit) + format:[transmediaNode isNotNil + ifFalse: [ '' ] + ifTrue: [transmediaNode body] + ] + ]. +" (browser transmit) to: #buttons; andShow: [ :a | a actionList - "act: [:entity | entity inspect ] entitled: 'Subir';" + act: [:entity | entity inspect ] entitled: 'Subir'; act: [:entity | entity explore ] entitled: 'Previsualizar'; act: [:entity | entity explore ] entitled: 'Publicar']. +" ^ browser. ] @@ -827,103 +731,6 @@ GrafoscopioBrowser >> showTagsAvailable [ ] -{ #category : #'graphical interface' } -GrafoscopioBrowser >> treeForTransmediatonOn: aTree [ - "Shows the correspondent tree of a node" - | constructor | - constructor := GLMBrowser. - (constructor tree) "Layout" - title: aTree header; - children: [ :eachNode | - (eachNode children) isNil - ifTrue: [ self inform: 'Seleccione un nodo para ver su contenido' ] - ifFalse:[ eachNode children ] ]; - format:[:eachNode | - (eachNode header) isNil - ifTrue: [ '' ] - ifFalse: [ eachNode header ]]; - "Adding/Removing nodes" - act: [:treePresentation | - (treePresentation selection) isNotNil - ifTrue: [treePresentation selection addNodeAfter]. - treePresentation update] - icon: GLMUIThemeExtraIcons glamorousZoomIn - entitled: 'Add node'; - - act: [:treePresentation | - (treePresentation selection isNotNil) - ifTrue: [(treePresentation selection parent) - removeNode: treePresentation selection] - ifFalse: [treePresentation entity removeLast]. - treePresentation update] - icon: GLMUIThemeExtraIcons glamorousZoomOut - entitled: 'Remove node'; - - "Move nodes in the same hierarchy" - - act: [:treePresentation | - (treePresentation selection isNotNil) - ifTrue: [treePresentation selection moveBefore]. - treePresentation update] - icon: GLMUIThemeExtraIcons glamorousUp - entitled: 'Move node up'; - - act: [:treePresentation | - (treePresentation selection isNotNil) - ifTrue: [treePresentation selection moveAfter]. - treePresentation update] - icon: GLMUIThemeExtraIcons glamorousDown - entitled: 'Move node down'; - - act: [:treePresentation | - (treePresentation selection isNotNil) - ifTrue: [treePresentation selection promote]. - treePresentation update] - icon: GLMUIThemeExtraIcons glamorousLeft - entitled: 'Move node left'; - - act: [:treePresentation | - (treePresentation selection isNotNil) - ifTrue: [treePresentation selection demote]. - treePresentation update] - icon: GLMUIThemeExtraIcons glamorousRight - entitled: 'Move node rigt'; - - act: [ :treePresentation | treePresentation update ] - icon: GLMUIThemeExtraIcons glamorousRefresh - entitled: 'Update'; - - act: [self saveWorkingTree] - icon: GLMUIThemeExtraIcons glamorousSave - entitled: 'Save current tree'; - - "Menu options" - act: [ GrafoscopioBrowser new openFromFileInMode: 'transmediaton'] entitled: 'Arbol > Abrir/Cargar ...'; - act: [self saveToFile] entitled: 'Arbol > Guardar como ...'; - act: [self exportAsHtml] entitled: 'Arbol > Exportar como html'; - "act: [:x | x printString inspect] entitled: 'Arbol > Definir título';" - act: [:treePresentation | - (treePresentation selection isNotNil) - ifTrue: [self copyNodeIntoCache: treePresentation selection]. - treePresentation update] entitled: 'Nodo > Copiar nodo'; - act: [:treePresentation | - (treePresentation selection isNotNil) - ifTrue: [self replaceContentsFromCache: treePresentation selection]. - treePresentation update] entitled: 'Nodo > Pegar nodo'; - act: [self enableRepository] entitled: 'Proyecto > Activar'; - act: [self addFileToRepository] entitled: 'Proyecto > Agregar archivo'; - act: [:x | x printString inspect] entitled: 'Proyecto > Eliminar archivo'; - act: [self repositoryCommit] entitled: 'Proyecto > Enviar al histórico'; - act: [self repositoryCredentials] entitled: 'Proyecto > Acreditarse'; - act: [self updateSystem] entitled: 'Grafoscopio > Actualizar'; - act: [self updateSystem] entitled: 'Grafoscopio > Actualizar prerrequisitos'; - act: [:x | x printString inspect] entitled: 'Grafoscopio > Actualizar herramientas externas'; - act: [self configurePandoc] entitled: 'Grafoscopio > Herramientas externas > Definir ruta a pandoc'; - act: [:x | x printString inspect] entitled: 'Grafoscopio > Herramientas externas > Definir ruta a fossil'; - act: [:x | x printString inspect] entitled: 'Grafoscopio > Acerca de...'. - -] - { #category : #'graphical interface' } GrafoscopioBrowser >> treeOn: constructor [ "Shows the correspondent tree of a node" @@ -942,7 +749,10 @@ GrafoscopioBrowser >> treeOn: constructor [ (eachNode tags) isNil ifFalse: [ (eachNode tags) asSymbol ] ifTrue: [ #() ] ]; - + + "Nodes Toolbar + ==============" + "Adding nodes" act: [:treePresentation | (treePresentation selection) isNotNil @@ -960,8 +770,7 @@ GrafoscopioBrowser >> treeOn: constructor [ icon: GLMUIThemeExtraIcons glamorousZoomOut entitled: 'Remove node'; - "Move nodes in the same hierarchy" - + "Move nodes in the same hierarchy" act: [:treePresentation | (treePresentation selection isNotNil) ifTrue: [treePresentation selection moveBefore]. @@ -1002,8 +811,8 @@ GrafoscopioBrowser >> treeOn: constructor [ =============" "For trees" - act: [ GrafoscopioBrowser open] entitled: 'Nuevo ...' categorized: 'Arbol'; - act: [ GrafoscopioBrowser new openFromFile] entitled: 'Abrir/Cargar ...' categorized: 'Arbol'; + act: [GrafoscopioBrowser open] entitled: 'Nuevo ...' categorized: 'Arbol'; + act: [GrafoscopioBrowser new openFromFileSelector] entitled: 'Abrir/Cargar ...' categorized: 'Arbol'; act: [self saveToFile] entitled: 'Guardar como ...' categorized: 'Arbol'; act: [self exportAsHtml] entitled: 'Exportar como html' categorized: 'Arbol'; @@ -1033,17 +842,23 @@ GrafoscopioBrowser >> treeOn: constructor [ act: [self repositoryCommit] entitled: 'Enviar al histórico' categorized: 'Proyecto'; act: [self repositoryCredentials] entitled: 'Acreditarse' categorized: 'Proyecto'; + "For modes" + act: [GrafoscopioBrowser new openFromFile: workingFile fullName asFileReference] entitled: 'Predeterminado' categorized: 'Modos'; + act: [self buildBrowserNamed: workingFile inMode: 'transmedia'] entitled: 'Transmedia' categorized: 'Modos'; + "For help" act: [self messageNotImplementedYet] entitled: 'Ver como html en línea' categorized: 'Ayuda'; act: [self messageNotImplementedYet] entitled: 'Ver como html fuera línea' categorized: 'Ayuda'; act: [self messageNotImplementedYet] entitled: 'Ver como árbol en grafoscopio' categorized: 'Ayuda'; + + "For external tools" + act: [self messageNotImplementedYet] entitled: 'Actualizar' categorized: 'Herramientas externas'; + act: [self configurePandoc] entitled: 'Definir ruta a pandoc' categorized: 'Herramientas externas'; + act: [self messageNotImplementedYet] entitled: 'Definir ruta a fossil' categorized: 'Herramientas externas'; "For grafoscopio" act: [self updateGrafoscopio] entitled: 'Actualizar' categorized: 'Grafoscopio'; act: [self updatePrerrequisites] entitled: 'Actualizar prerrequisitos' categorized: 'Grafoscopio'; - act: [self messageNotImplementedYet] entitled: 'Herramientas externas > Actualizar' categorized: 'Grafoscopio'; - act: [self configurePandoc] entitled: 'Herramientas externas > Definir ruta a pandoc' categorized: 'Grafoscopio'; - act: [self messageNotImplementedYet] entitled: 'Herramientas externas > Definir ruta a fossil' categorized: 'Grafoscopio'; act: [self messageAbout] entitled: 'Acerca de...' categorized: 'Grafoscopio'. ]