Preliminar support for notebooks with proper

%metadata nodes to be subscribed into the main help menu.
This commit is contained in:
Offray Vladimir Luna Cárdenas 2017-11-21 19:05:17 +00:00
parent c5fc48c272
commit 880006df73
2 changed files with 114 additions and 41 deletions

View File

@ -21,11 +21,58 @@ Class {
], ],
#classInstVars : [ #classInstVars : [
'dockingBar', 'dockingBar',
'recentNotebooks' 'recentNotebooks',
'helpMenu'
], ],
#category : #'Grafoscopio-UI' #category : #'Grafoscopio-UI'
} }
{ #category : #adding }
GrafoscopioDockingBar class >> addToHelpMenu: aGrafoscopioNotebook [
| metadata nbFile |
metadata := aGrafoscopioNotebook metadata.
nbFile := aGrafoscopioNotebook workingFile.
(metadata at: 'showOnHelp' ifAbsent: [ ^ self ])
ifTrue: [
self helpMenu submorphs
detect: [ :s | s contents = (metadata at: 'shortTitle') ]
ifFound: [
self inform:
'The notebook: ', String cr,
nbFile fullName, String cr,
' needs another shortTitle to be added to the docking bar Help Menu.' ]
ifNone: [
self helpMenu
add: (metadata at: 'shortTitle')
target: [ GrafoscopioNotebook open: nbFile ]
selector: #value ] ].
self updateUI
]
{ #category : #accessing }
GrafoscopioDockingBar class >> defaultHelpMenu [
| defaultHelpMenu |
defaultHelpMenu := MenuMorph new.
defaultHelpMenu
add: 'Tutorial (Spanish)'
target: [ GrafoscopioNotebook open: GrafoscopioDocs tutorial ]
selector: #value;
add: 'Manual'
target: [ GrafoscopioNotebook open: GrafoscopioDocs manual ]
selector: #value;
add: 'Manual (PDF)'
target: GrafoscopioDocs
selector: #openPDFManual;
add: 'Dataviz'
target: [ GrafoscopioNotebook open: DatavizDocs introNotebook ]
selector: #value;
add: 'Dev''s notes'
target: [ GrafoscopioNotebook open: GrafoscopioDocs devNotes ]
selector: #value;
add: 'About Grafoscopio' target: self selector: #messageAbout.
^ defaultHelpMenu
]
{ #category : #specs } { #category : #specs }
GrafoscopioDockingBar class >> defaultSpec [ GrafoscopioDockingBar class >> defaultSpec [
<spec: #default> <spec: #default>
@ -243,11 +290,49 @@ GrafoscopioDockingBar class >> exampleBootstrapUI [
ui openWithSpecLayout: lay. ui openWithSpecLayout: lay.
] ]
{ #category : #accessing }
GrafoscopioDockingBar class >> helpMenu [
^ helpMenu ifNil: [ helpMenu := self defaultHelpMenu ]
]
{ #category : #accessing }
GrafoscopioDockingBar class >> helpMenu: anObject [
helpMenu := anObject
]
{ #category : #'class initialization' } { #category : #'class initialization' }
GrafoscopioDockingBar class >> initialize [ GrafoscopioDockingBar class >> initialize [
self start. self start.
] ]
{ #category : #accessing }
GrafoscopioDockingBar class >> launchMenu [
| launchMenu |
launchMenu := MenuMorph new.
launchMenu
add: 'New notebook'
target: GrafoscopioNotebook new
selector: #openDefault;
add: 'Notebook from file...'
target: GrafoscopioNotebook new
selector: #openFromFileSelector;
add: 'Notebook from the Internet...'
target: GrafoscopioNotebook new
selector: #openFromUrlUI;
add: 'Recent notebooks...'
target: self
selector: #openFromRecentlyUsed;
add: 'Example notebooks...'
target: self
selector: #messageNotImplementedYet;
add: 'Roassal visualizations gallery'
target: RTExampleBrowser new
selector: #open;
add: 'Playground' target: Smalltalk tools selector: #openWorkspace;
add: 'Transcript' target: Smalltalk tools selector: #openTranscript.
^ launchMenu
]
{ #category : #'graphical interface' } { #category : #'graphical interface' }
GrafoscopioDockingBar class >> messageAbout [ GrafoscopioDockingBar class >> messageAbout [
"I show the author(s), license, sponsors and main contributors to the project "I show the author(s), license, sponsors and main contributors to the project
@ -371,48 +456,14 @@ GrafoscopioDockingBar class >> showSettings [
GrafoscopioDockingBar class >> start [ GrafoscopioDockingBar class >> start [
"Creates a custom docking bar for grafoscopio on top, for shorcuts to the most used actions, "Creates a custom docking bar for grafoscopio on top, for shorcuts to the most used actions,
and as a fixed place for asking for help, external tools and grafoscopio updates and about" and as a fixed place for asking for help, external tools and grafoscopio updates and about"
| launchMenu helpMenu updateMenu |
launchMenu := MenuMorph new.
launchMenu
add: 'New notebook' target: (GrafoscopioNotebook new) selector: #openDefault;
add: 'Notebook from file...' target: (GrafoscopioNotebook new) selector: #openFromFileSelector;
add: 'Notebook from the Internet...' target: (GrafoscopioNotebook new) selector: #openFromUrlUI;
add: 'Recent notebooks...' target: self selector: #openFromRecentlyUsed;
add: 'Example notebooks...' target: self selector: #messageNotImplementedYet;
add: 'Roassal visualizations gallery' target: (RTExampleBrowser new) selector: #open;
add: 'Playground' target: (Smalltalk tools) selector: #openWorkspace;
add: 'Transcript' target: (Smalltalk tools) selector: #openTranscript.
updateMenu := MenuMorph new.
updateMenu
add: 'Grafoscopio' target: self selector: #updateGrafoscopioUI;
add: 'Documentation' target: GrafoscopioDocumentation selector: #updateAllUI;
add: 'DataViz package' target: self selector: #updateDatavizUI;
add: 'Notebooks places' target: GrafoscopioDocumentation selector: #updateDocsPlaceUI;
"add: 'Database engine' target: ExternalApp selector: #installSQLite32BitsUI;
add: 'Pandoc path' target: ExternalApp selector: #configurePandoc;
add: 'Fossil path' target: ExternalApp selector: #configureFossil;"
add: 'All the system' target: self selector: #updateSystem.
helpMenu := MenuMorph new.
helpMenu
add: 'Tutorial (Spanish)' target: [GrafoscopioNotebook open: GrafoscopioDocs tutorial] selector: #value;
add: 'Manual' target: [ GrafoscopioNotebook open: GrafoscopioDocs manual ] selector: #value;
add: 'Manual (PDF)' target: GrafoscopioDocs selector: #openPDFManual;
add: 'Dataviz' target: [ GrafoscopioNotebook open: DatavizDocs introNotebook ] selector: #value ;
add: 'Dev''s notes' target: [GrafoscopioNotebook open: GrafoscopioDocs devNotes ] selector: #value;
add: 'About Grafoscopio' target: self selector: #messageAbout.
dockingBar := DockingBarMorph new. dockingBar := DockingBarMorph new.
dockingBar dockingBar
add: 'Launch' subMenu: launchMenu; add: 'Launch' subMenu: self launchMenu;
add: 'Update' subMenu: updateMenu; add: 'Update' subMenu: self updateMenu;
add: 'Help' subMenu: helpMenu. add: 'Help' subMenu: self helpMenu.
dockingBar dockingBar
adhereToTop; adhereToTop;
openInWorld. openInWorld
] ]
{ #category : #updating } { #category : #updating }
@ -469,6 +520,23 @@ GrafoscopioDockingBar class >> updateGrafoscopioUI [
self inform: 'Grafoscopio update finished' self inform: 'Grafoscopio update finished'
] ]
{ #category : #accessing }
GrafoscopioDockingBar class >> updateMenu [
| updateMenu |
updateMenu := MenuMorph new.
updateMenu
add: 'Grafoscopio' target: self selector: #updateGrafoscopioUI;
add: 'Documentation'
target: GrafoscopioDocumentation
selector: #updateAllUI;
add: 'DataViz package' target: self selector: #updateDatavizUI;
add: 'Notebooks places'
target: GrafoscopioDocumentation
selector: #updateDocsPlaceUI;
add: 'All the system' target: self selector: #updateSystem.
^ updateMenu
]
{ #category : #updating } { #category : #updating }
GrafoscopioDockingBar class >> updatePrerrequisitesScript [ GrafoscopioDockingBar class >> updatePrerrequisitesScript [
"Updates the system prerequisites with new versions of itself take from the source code repository" "Updates the system prerequisites with new versions of itself take from the source code repository"

View File

@ -409,6 +409,11 @@ GrafoscopioNotebook >> markdownFileChecksumUpto: anInteger [
^ self markdownFileChecksum copyFrom: 1 to: anInteger asInteger. ^ self markdownFileChecksum copyFrom: 1 to: anInteger asInteger.
] ]
{ #category : #utilities }
GrafoscopioNotebook >> metadata [
^ self notebook metadata
]
{ #category : #'editing nodes' } { #category : #'editing nodes' }
GrafoscopioNotebook >> moveNodeAfter [ GrafoscopioNotebook >> moveNodeAfter [
| editedNode | | editedNode |