Modularizing code: Moving documentaiton and UI functionality into new Grafoscopio-Utils package.
This commit is contained in:
parent
73be3d6242
commit
44e0b6c132
@ -95,26 +95,6 @@ GrafoscopioDockingBar class >> dockingBar: anObject [
|
||||
dockingBar := anObject
|
||||
]
|
||||
|
||||
{ #category : #'graphical interface' }
|
||||
GrafoscopioDockingBar class >> downloadingFrom: downloadUrl withMessage: aString into: location [
|
||||
| fileName |
|
||||
fileName := (downloadUrl splitOn: $/) last.
|
||||
(location / fileName) exists ifTrue: [ (location / fileName) ensureDelete ].
|
||||
[: bar |
|
||||
bar title: aString.
|
||||
[ZnClient new
|
||||
enforceHttpSuccess: true;
|
||||
url: downloadUrl;
|
||||
downloadTo: location;
|
||||
signalProgress: true
|
||||
]
|
||||
on: HTTPProgress
|
||||
do: [ :progress |
|
||||
progress isEmpty ifFalse: [ bar current: progress percentage ].
|
||||
progress resume ].
|
||||
] asJob run.
|
||||
]
|
||||
|
||||
{ #category : #examples }
|
||||
GrafoscopioDockingBar class >> exampleBootstrapDynamicUI1 [
|
||||
"Starting from an example UI from the Spec-Glamour, to customize towards the grafoscopio
|
||||
@ -378,11 +358,6 @@ GrafoscopioDockingBar class >> messageNotImplementedYet [
|
||||
title: 'To be implemented'.
|
||||
]
|
||||
|
||||
{ #category : #'graphical interface' }
|
||||
GrafoscopioDockingBar class >> messageUpdateNotDone [
|
||||
self inform: 'Update not done, by user request.'
|
||||
]
|
||||
|
||||
{ #category : #'graphical interface' }
|
||||
GrafoscopioDockingBar class >> open [
|
||||
^ self new open
|
||||
@ -487,18 +462,17 @@ GrafoscopioDockingBar class >> updateDataviz [
|
||||
|
||||
{ #category : #updating }
|
||||
GrafoscopioDockingBar class >> updateDatavizUI [
|
||||
"I'm the User Interface for updating the Dataviz package with new versions of itself take from the source code repository"
|
||||
"I'm the User Interface for updating the Dataviz package with new versions of itself
|
||||
take from the source code repository"
|
||||
| update |
|
||||
|
||||
update := (UIManager default
|
||||
confirm:
|
||||
'Dataviz is data visualization package, with several', String cr,
|
||||
'Domain Specific Examples, like Panama Papers, Twitter Data Selfies.',
|
||||
String cr, 'Do you want to update it?'
|
||||
label: 'Update Dataviz package').
|
||||
update
|
||||
ifTrue: [self updateDataviz]
|
||||
ifFalse: [self messageUpdateNotDone]
|
||||
update ifFalse: [ ^ self ].
|
||||
self updateDataviz
|
||||
]
|
||||
|
||||
{ #category : #updating }
|
||||
@ -521,11 +495,9 @@ GrafoscopioDockingBar class >> updateGrafoscopioUI [
|
||||
update := (UIManager default
|
||||
confirm: 'Do you wish to update Grafoscopio?'
|
||||
label: 'Grafoscopio update').
|
||||
update
|
||||
ifTrue: [
|
||||
update ifFalse: [ ^ self ].
|
||||
self updateGrafoscopio.
|
||||
self inform: 'Grafoscopio update finished']
|
||||
ifFalse: [self messageUpdateNotDone]
|
||||
self inform: 'Grafoscopio update finished'
|
||||
]
|
||||
|
||||
{ #category : #updating }
|
||||
@ -622,9 +594,8 @@ GrafoscopioDockingBar class >> updateSystem [
|
||||
tmp2
|
||||
updateGrafoscopio;
|
||||
updateDataviz.
|
||||
GrafoscopioDocumentation update.
|
||||
self inform: 'System update finished.' ]
|
||||
ifFalse: [ GrafoscopioDockingBar messageUpdateNotDone ] ]
|
||||
GrafoscopioDocumentation updateAll.
|
||||
self inform: 'System update finished.' ]]
|
||||
]
|
||||
|
||||
{ #category : #updating }
|
||||
|
@ -1,216 +0,0 @@
|
||||
"
|
||||
I model a documentation object for Grafoscopio.
|
||||
Documents are stored in a fossil repository and have
|
||||
relative paths to it.
|
||||
"
|
||||
Class {
|
||||
#name : #GrafoscopioDocumentation,
|
||||
#superclass : #Object,
|
||||
#instVars : [
|
||||
'repository',
|
||||
'documents',
|
||||
'localPlace'
|
||||
],
|
||||
#category : #'Grafoscopio-Model'
|
||||
}
|
||||
|
||||
{ #category : #queries }
|
||||
GrafoscopioDocumentation class >> current [
|
||||
"I model the important documents that belong to the Grafoscopio documentation.
|
||||
When more documents become more mature and usable, I will include them."
|
||||
|
||||
| gfcDocumentation |
|
||||
gfcDocumentation := self new.
|
||||
gfcDocumentation repository: (FossilRepo new remote: 'http://mutabit.com/repos.fossil/grafoscopio').
|
||||
gfcDocumentation documents
|
||||
add: 'Docs/Es/Tutoriales/tutorial.ston';
|
||||
add: 'Docs/En/Books/Manual/manual.ston';
|
||||
add: 'Docs/En/dev-notes.ston';
|
||||
add: 'Docs/En/Books/Manual/manual.pdf'.
|
||||
gfcDocumentation localPlace.
|
||||
^ gfcDocumentation
|
||||
]
|
||||
|
||||
{ #category : #operation }
|
||||
GrafoscopioDocumentation class >> dataviz [
|
||||
"I model the important documents that belong to the Grafoscopio documentation.
|
||||
When more documents become more mature and usable, I will include them."
|
||||
|
||||
| gfcDocumentation |
|
||||
gfcDocumentation := self new.
|
||||
gfcDocumentation repository: (FossilRepo new remote: 'http://mutabit.com/repos.fossil/grafoscopio').
|
||||
gfcDocumentation documents
|
||||
add: 'Packages/Dataviz/dataviz.ston'.
|
||||
gfcDocumentation localPlace.
|
||||
^ gfcDocumentation
|
||||
]
|
||||
|
||||
{ #category : #updating }
|
||||
GrafoscopioDocumentation class >> download: fileNameWithRelativePath [
|
||||
| fileName relativePathFolders newPath parentFolder |
|
||||
fileName := (fileNameWithRelativePath splitOn: $/) last.
|
||||
relativePathFolders := (fileNameWithRelativePath splitOn: $/) allButLast.
|
||||
newPath := self current localPlace path.
|
||||
relativePathFolders do: [ :folder | newPath := newPath / folder ].
|
||||
parentFolder := newPath asFileReference.
|
||||
parentFolder exists ifFalse: [ parentFolder ensureCreateDirectory ].
|
||||
GrafoscopioDockingBar
|
||||
downloadingFrom: self current repository remote asString, '/doc/tip/', fileNameWithRelativePath
|
||||
withMessage: 'Downloading ', fileName
|
||||
into: parentFolder
|
||||
]
|
||||
|
||||
{ #category : #updating }
|
||||
GrafoscopioDocumentation class >> initialize [
|
||||
self
|
||||
update: 'current';
|
||||
update: 'dataviz'
|
||||
]
|
||||
|
||||
{ #category : #updating }
|
||||
GrafoscopioDocumentation class >> isFileUpdatedFor: relativeFilePath [
|
||||
"I compare if the local and remote copies of a relativeFilePath are updated for the current
|
||||
documentation and return true if they are and false in any other case"
|
||||
| localFile |
|
||||
localFile := self current localPlace / relativeFilePath.
|
||||
localFile exists
|
||||
ifFalse: [ ^ false ]
|
||||
ifTrue: [ ^ ExternalApp compareHashFor: localFile with: (self current repository lastHashNumberFor: relativeFilePath) ]
|
||||
]
|
||||
|
||||
{ #category : #updating }
|
||||
GrafoscopioDocumentation class >> listOutdatedDocsIn: aDocumentsListName [
|
||||
"I return the list of all documentent where the local copy and the remote copy doesn't match"
|
||||
aDocumentsListName ifNil: [ ^ self ].
|
||||
aDocumentsListName ifEmpty: [ ^ self ].
|
||||
^ (self perform: aDocumentsListName asSymbol) documents reject: [ :doc | (self isFileUpdatedFor: doc) ]
|
||||
]
|
||||
|
||||
{ #category : #updating }
|
||||
GrafoscopioDocumentation class >> listOutdatedIn: aGrafoscopioDocumentation [
|
||||
"I return the list of all documentent where the local copy and the remote copy doesn't match"
|
||||
self listOutdatedDocsIn: (self perform: aGrafoscopioDocumentation) documents
|
||||
]
|
||||
|
||||
{ #category : #operation }
|
||||
GrafoscopioDocumentation class >> openDatavizIntro [
|
||||
self openNotebookFrom: 'dataviz' At: 1
|
||||
]
|
||||
|
||||
{ #category : #operation }
|
||||
GrafoscopioDocumentation class >> openDevNotes [
|
||||
self openNotebookFrom: 'current' At: 3
|
||||
]
|
||||
|
||||
{ #category : #operation }
|
||||
GrafoscopioDocumentation class >> openManual [
|
||||
"I open the proper notebook in the adecuate documentation."
|
||||
self openNotebookFrom: 'current' At: 2
|
||||
]
|
||||
|
||||
{ #category : #operation }
|
||||
GrafoscopioDocumentation class >> openNotebookFrom: aDocumentation At: index [
|
||||
"I open a notebook included with the documentation, located at a given index"
|
||||
| notebookTemp gfcDocs |
|
||||
gfcDocs := self perform: aDocumentation asSymbol.
|
||||
(index between: 1 and: gfcDocs documents size)
|
||||
ifFalse: [ ^ self ]
|
||||
ifTrue: [
|
||||
notebookTemp := (gfcDocs localPlace fullName, '/', (gfcDocs documents at: index)) asFileReference.
|
||||
notebookTemp exists
|
||||
ifTrue: [GrafoscopioNotebook new openFromFile: notebookTemp]
|
||||
ifFalse: [ self updateUIFor: aDocumentation ]]
|
||||
]
|
||||
|
||||
{ #category : #operation }
|
||||
GrafoscopioDocumentation class >> openPDFManual [
|
||||
"I open the documentation in PDF format. I only work on Unix right now, but in the future my creator hopes to be able
|
||||
to have truly multiplatform support"
|
||||
| pdfManual docs |
|
||||
docs := self current.
|
||||
pdfManual := docs documents at: 4.
|
||||
WebBrowser openOn: (docs localPlace / pdfManual) fullName.
|
||||
]
|
||||
|
||||
{ #category : #operation }
|
||||
GrafoscopioDocumentation class >> openTutorial [
|
||||
"I open the proper notebook in the adecuate documentation."
|
||||
self openNotebookFrom: 'current' At: 1
|
||||
]
|
||||
|
||||
{ #category : #updating }
|
||||
GrafoscopioDocumentation class >> update: aDocumentationName [
|
||||
(self listOutdatedDocsIn: aDocumentationName)
|
||||
ifEmpty: [
|
||||
self inform: 'All documents in the ', aDocumentationName,' collection are already updated'.
|
||||
^ self ]
|
||||
ifNotEmpty: [:outdatedDocs |
|
||||
outdatedDocs do: [ :eachDoc | self download: eachDoc].
|
||||
self inform: 'Updating of ', aDocumentationName,' documentation finished.' ]
|
||||
]
|
||||
|
||||
{ #category : #operation }
|
||||
GrafoscopioDocumentation class >> updateAll [
|
||||
self
|
||||
update: 'current';
|
||||
update: 'dataviz'
|
||||
]
|
||||
|
||||
{ #category : #updating }
|
||||
GrafoscopioDocumentation class >> updateAllUI [
|
||||
"Updates documentation (manual, tutorials) from the official repository for a given documentation."
|
||||
| update |
|
||||
update := (UIManager default
|
||||
confirm: 'Do you wish to update the documentation?'
|
||||
label: 'Update documentation').
|
||||
update
|
||||
ifTrue: [ self updateAll ]
|
||||
ifFalse: [ GrafoscopioDockingBar messageUpdateNotDone ]
|
||||
]
|
||||
|
||||
{ #category : #updating }
|
||||
GrafoscopioDocumentation class >> updateDocsPlaceUI [
|
||||
self current localPlace: (UIManager default chooseDirectory: 'Path to the documentation folder')
|
||||
]
|
||||
|
||||
{ #category : #updating }
|
||||
GrafoscopioDocumentation class >> updateUIFor: aDocumentationName [
|
||||
"Updates documentation (manual, tutorials) from the official repository for a given documentation."
|
||||
| update |
|
||||
update := (UIManager default
|
||||
confirm: 'Do you wish to update the ', aDocumentationName,' documentation?'
|
||||
label: 'Update ', aDocumentationName, ' documentation').
|
||||
update ifTrue: [ self update: aDocumentationName ]
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
GrafoscopioDocumentation >> documents [
|
||||
^ documents ifNil: [ documents := OrderedCollection new ]
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
GrafoscopioDocumentation >> documents: anObject [
|
||||
documents := anObject
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
GrafoscopioDocumentation >> localPlace [
|
||||
^ localPlace ifNil: [
|
||||
localPlace := FileLocator workingDirectory asFileReference / 'Grafoscopio'.
|
||||
self localPlace exists ifFalse: [ self localPlace ensureCreateDirectory ] ].
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
GrafoscopioDocumentation >> localPlace: anObject [
|
||||
localPlace := anObject
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
GrafoscopioDocumentation >> repository [
|
||||
^ repository
|
||||
]
|
||||
|
||||
{ #category : #accessing }
|
||||
GrafoscopioDocumentation >> repository: anObject [
|
||||
repository := anObject
|
||||
]
|
Loading…
Reference in New Issue
Block a user