Modularizing code: Moving documentaiton and UI functionality into new Grafoscopio-Utils package.

This commit is contained in:
Offray Vladimir Luna Cárdenas 2017-07-03 22:13:20 +00:00 committed by SantiagoBragagnolo
parent 12b90a9b79
commit 5f1fe14d93
2 changed files with 10 additions and 255 deletions

View File

@ -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 }

View File

@ -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
]