Preliminar support for notebooks with proper
%metadata nodes to be subscribed into the main help menu.
This commit is contained in:
parent
c5fc48c272
commit
880006df73
@ -21,11 +21,58 @@ Class {
|
||||
],
|
||||
#classInstVars : [
|
||||
'dockingBar',
|
||||
'recentNotebooks'
|
||||
'recentNotebooks',
|
||||
'helpMenu'
|
||||
],
|
||||
#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 }
|
||||
GrafoscopioDockingBar class >> defaultSpec [
|
||||
<spec: #default>
|
||||
@ -243,11 +290,49 @@ GrafoscopioDockingBar class >> exampleBootstrapUI [
|
||||
ui openWithSpecLayout: lay.
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
GrafoscopioDockingBar class >> helpMenu [
|
||||
^ helpMenu ifNil: [ helpMenu := self defaultHelpMenu ]
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
GrafoscopioDockingBar class >> helpMenu: anObject [
|
||||
helpMenu := anObject
|
||||
]
|
||||
|
||||
{ #category : #'class initialization' }
|
||||
GrafoscopioDockingBar class >> initialize [
|
||||
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' }
|
||||
GrafoscopioDockingBar class >> messageAbout [
|
||||
"I show the author(s), license, sponsors and main contributors to the project
|
||||
@ -371,48 +456,14 @@ GrafoscopioDockingBar class >> showSettings [
|
||||
GrafoscopioDockingBar class >> start [
|
||||
"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"
|
||||
|
||||
| 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
|
||||
add: 'Launch' subMenu: launchMenu;
|
||||
add: 'Update' subMenu: updateMenu;
|
||||
add: 'Help' subMenu: helpMenu.
|
||||
dockingBar
|
||||
add: 'Launch' subMenu: self launchMenu;
|
||||
add: 'Update' subMenu: self updateMenu;
|
||||
add: 'Help' subMenu: self helpMenu.
|
||||
dockingBar
|
||||
adhereToTop;
|
||||
openInWorld.
|
||||
openInWorld
|
||||
]
|
||||
|
||||
{ #category : #updating }
|
||||
@ -469,6 +520,23 @@ GrafoscopioDockingBar class >> updateGrafoscopioUI [
|
||||
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 }
|
||||
GrafoscopioDockingBar class >> updatePrerrequisitesScript [
|
||||
"Updates the system prerequisites with new versions of itself take from the source code repository"
|
||||
|
@ -409,6 +409,11 @@ GrafoscopioNotebook >> markdownFileChecksumUpto: anInteger [
|
||||
^ self markdownFileChecksum copyFrom: 1 to: anInteger asInteger.
|
||||
]
|
||||
|
||||
{ #category : #utilities }
|
||||
GrafoscopioNotebook >> metadata [
|
||||
^ self notebook metadata
|
||||
]
|
||||
|
||||
{ #category : #'editing nodes' }
|
||||
GrafoscopioNotebook >> moveNodeAfter [
|
||||
| editedNode |
|
||||
|
Loading…
Reference in New Issue
Block a user