ExternalApp: introducing support for modelling external apps (installation, configuration, etc), starting with SQLite (then fossil and pandoc follow :-))
This commit is contained in:
parent
7d32f4eb1d
commit
a6bf43ab04
82
repository/Grafoscopio/ExternalApp.class.st
Normal file
82
repository/Grafoscopio/ExternalApp.class.st
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
"
|
||||||
|
I provide support for external helper apps for Grafoscopio, publishing, collaboration
|
||||||
|
and data management.
|
||||||
|
"
|
||||||
|
Class {
|
||||||
|
#name : #ExternalApp,
|
||||||
|
#superclass : #Object,
|
||||||
|
#instVars : [
|
||||||
|
'name',
|
||||||
|
'url',
|
||||||
|
'downloadUrl',
|
||||||
|
'description',
|
||||||
|
'sha1',
|
||||||
|
'md5'
|
||||||
|
],
|
||||||
|
#category : #'Grafoscopio-Model'
|
||||||
|
}
|
||||||
|
|
||||||
|
{ #category : #configuration }
|
||||||
|
ExternalApp class >> configureFossil [
|
||||||
|
"Stablish where is located pandoc according to the operative system and/or the input of the user"
|
||||||
|
| fileStream fossil |
|
||||||
|
|
||||||
|
fileStream := UITheme builder
|
||||||
|
fileOpen: 'Coloque la ruta de pandoc'.
|
||||||
|
fileStream isNil ifTrue: [ ^nil ].
|
||||||
|
fossil := fileStream name asFileReference fullName.
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
{ #category : #configuration }
|
||||||
|
ExternalApp class >> configurePandoc [
|
||||||
|
"Stablish where is located pandoc according to the operative system and/or the input of the user"
|
||||||
|
| fileStream pandoc |
|
||||||
|
|
||||||
|
fileStream := UITheme builder
|
||||||
|
fileOpen: 'Coloque la ruta de pandoc'.
|
||||||
|
fileStream isNil ifTrue: [ ^nil ].
|
||||||
|
pandoc := fileStream name asFileReference fullName.
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
{ #category : #installation }
|
||||||
|
ExternalApp class >> installSQLite32Bits [
|
||||||
|
"I dowload the SQLite binary for the hosting platform, uncompress it and made it available as with the name
|
||||||
|
NBSQLite is wating for"
|
||||||
|
|
||||||
|
| packageUrl sha1 localPath packageZipName unzippedFolder |
|
||||||
|
|
||||||
|
localPath := FileSystem disk workingDirectory parent / 'bin'.
|
||||||
|
Smalltalk platform name = 'unix'
|
||||||
|
ifTrue: [
|
||||||
|
packageUrl := 'http://sqlite.org/2016/sqlite-tools-linux-x86-3110100.zip'.
|
||||||
|
sha1 := '21a80cefa91d5de50256996fc55990a027c350fd'].
|
||||||
|
Smalltalk platform name = 'Win32'
|
||||||
|
ifTrue: [
|
||||||
|
packageUrl := 'http://sqlite.org/2016/sqlite-dll-win32-x86-3110100.zip'.
|
||||||
|
sha1 := 'cfd6f64ba1fb5de1ccf8321e29764c690c25e0a0'].
|
||||||
|
Smalltalk platform name = 'Mac OS'
|
||||||
|
ifTrue: [
|
||||||
|
packageUrl := 'http://sqlite.org/2016/sqlite-tools-osx-x86-3110100.zip'.
|
||||||
|
sha1 := 'c78b3b92bd37554694d2f73dbecfef1902c15ba7'].
|
||||||
|
GrafoscopioBrowser
|
||||||
|
downloadingFrom: packageUrl
|
||||||
|
withMessage: 'Descargando SQLite...'
|
||||||
|
into: localPath asFileReference.
|
||||||
|
packageZipName := (packageUrl splitOn: '/') last.
|
||||||
|
sha1 = (SHA1 new hashMessage: (localPath / packageZipName) asFileReference binaryReadStream contents) hex
|
||||||
|
ifFalse: [ self inform: 'SQLite: Descarga no exitosa. Por favor intente el procedimiento de nuevo o manualmente' ]
|
||||||
|
ifTrue: [
|
||||||
|
ZipArchive new
|
||||||
|
readFrom: (localPath / packageZipName);
|
||||||
|
extractAllTo: localPath asFileReference.
|
||||||
|
unzippedFolder := packageZipName copyReplaceAll: '.zip' with: ''.
|
||||||
|
(localPath / unzippedFolder ) children do: [:file | file moveTo: (localPath / file basenameWithIndicator)].
|
||||||
|
(localPath / 'sqlite3') copyTo: (localPath / 'libsqlite3.so').
|
||||||
|
(localPath / unzippedFolder ) deleteAll.
|
||||||
|
self inform: 'SQLite instalado existosammente!'
|
||||||
|
].
|
||||||
|
"Cleaning leftovers"
|
||||||
|
(localPath / packageZipName) delete.
|
||||||
|
]
|
@ -1,5 +1,5 @@
|
|||||||
"
|
"
|
||||||
An UbakyeExplorer is a graphical interface for showing trees and outlines.
|
I am a graphical interface for showing trees, outlines and grafoscopio notebooks.
|
||||||
|
|
||||||
Instance Variables
|
Instance Variables
|
||||||
browser: <Object>
|
browser: <Object>
|
||||||
@ -35,32 +35,6 @@ Class {
|
|||||||
#category : #'Grafoscopio-UI'
|
#category : #'Grafoscopio-UI'
|
||||||
}
|
}
|
||||||
|
|
||||||
{ #category : #configuration }
|
|
||||||
GrafoscopioBrowser class >> configureFossil [
|
|
||||||
"Stablish where is located fossil according to the operative system and the input of the user"
|
|
||||||
| fileStream |
|
|
||||||
fileStream := UITheme builder
|
|
||||||
fileOpen: 'Coloque la ruta de fossil'.
|
|
||||||
|
|
||||||
fileStream isNil ifTrue: [ ^nil ].
|
|
||||||
fossil := fileStream name asFileReference fullName.
|
|
||||||
]
|
|
||||||
|
|
||||||
{ #category : #configuration }
|
|
||||||
GrafoscopioBrowser class >> configurePandoc [
|
|
||||||
"Stablish where is located pandoc according to the operative system and/or the input of the user"
|
|
||||||
| fileStream |
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fileStream := UITheme builder
|
|
||||||
fileOpen: 'Coloque la ruta de pandoc'.
|
|
||||||
|
|
||||||
fileStream isNil ifTrue: [ ^nil ].
|
|
||||||
pandoc := fileStream name asFileReference fullName.
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
{ #category : #configuration }
|
{ #category : #configuration }
|
||||||
GrafoscopioBrowser class >> configureSettings [
|
GrafoscopioBrowser class >> configureSettings [
|
||||||
"I stablish several 'global' settings according to to image location and the operative system.
|
"I stablish several 'global' settings according to to image location and the operative system.
|
||||||
@ -132,38 +106,6 @@ GrafoscopioBrowser class >> downloadingFrom: downloadUrl withMessage: aString in
|
|||||||
] asJob run.
|
] asJob run.
|
||||||
]
|
]
|
||||||
|
|
||||||
{ #category : #configuration }
|
|
||||||
GrafoscopioBrowser class >> installSQLite32Bits [
|
|
||||||
"I dowload the SQLite binary for the hosting platform, uncompress it and made it available as with the name
|
|
||||||
NBSQLite is wating for"
|
|
||||||
|
|
||||||
| packageUrl sha1 localPath packageZipName |
|
|
||||||
|
|
||||||
localPath := FileSystem disk workingDirectory parent / 'bin'.
|
|
||||||
Smalltalk platform name = 'unix'
|
|
||||||
ifTrue: [
|
|
||||||
packageUrl := 'http://sqlite.org/2016/sqlite-tools-linux-x86-3110100.zip'.
|
|
||||||
sha1 := '21a80cefa91d5de50256996fc55990a027c350fd'].
|
|
||||||
Smalltalk platform name = 'Win32'
|
|
||||||
ifTrue: [
|
|
||||||
packageUrl := 'http://sqlite.org/2016/sqlite-dll-win32-x86-3110100.zip'.
|
|
||||||
sha1 := 'cfd6f64ba1fb5de1ccf8321e29764c690c25e0a0'].
|
|
||||||
Smalltalk platform name = 'Mac OS'
|
|
||||||
ifTrue: [
|
|
||||||
packageUrl := 'http://sqlite.org/2016/sqlite-tools-osx-x86-3110100.zip'.
|
|
||||||
sha1 := 'c78b3b92bd37554694d2f73dbecfef1902c15ba7'].
|
|
||||||
self
|
|
||||||
downloadingFrom: packageUrl
|
|
||||||
withMessage: 'Descargando SQLite...'
|
|
||||||
into: localPath asFileReference.
|
|
||||||
packageZipName := (packageUrl splitOn: '/') last.
|
|
||||||
ZipArchive new
|
|
||||||
readFrom: (localPath / packageZipName);
|
|
||||||
extractAllTo: localPath asFileReference.
|
|
||||||
(localPath / (packageZipName copyReplaceAll: '.zip' with: '')) children do: [:file | file moveTo: (localPath / file basenameWithIndicator) ]
|
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
{ #category : #'graphical interface' }
|
{ #category : #'graphical interface' }
|
||||||
GrafoscopioBrowser class >> messageAbout [
|
GrafoscopioBrowser class >> messageAbout [
|
||||||
"Shows the author, license, sponsors and main contributors to the project and point to further documentation on the web"
|
"Shows the author, license, sponsors and main contributors to the project and point to further documentation on the web"
|
||||||
@ -327,8 +269,8 @@ GrafoscopioBrowser class >> startDockingBar [
|
|||||||
add: 'Documentación > Tutorial' target: GrafoscopioBrowser selector: #updateTutorial;
|
add: 'Documentación > Tutorial' target: GrafoscopioBrowser selector: #updateTutorial;
|
||||||
add: 'Documentación > Toda' target: GrafoscopioBrowser selector: #updateDocumentation;
|
add: 'Documentación > Toda' target: GrafoscopioBrowser selector: #updateDocumentation;
|
||||||
add: 'Herramientas externas' target: GrafoscopioBrowser selector: #messageNotImplementedYet;
|
add: 'Herramientas externas' target: GrafoscopioBrowser selector: #messageNotImplementedYet;
|
||||||
add: 'Ruta a pandoc' target: GrafoscopioBrowser selector: #configurePandoc;
|
add: 'Ruta a pandoc' target: ExternalApp selector: #configurePandoc;
|
||||||
add: 'Ruta a fossil' target: GrafoscopioBrowser selector: #configureFossil;
|
add: 'Ruta a fossil' target: ExternalApp selector: #configureFossil;
|
||||||
add: 'Todo el sistema' target: GrafoscopioBrowser selector: #updateSystem.
|
add: 'Todo el sistema' target: GrafoscopioBrowser selector: #updateSystem.
|
||||||
|
|
||||||
helpMenu := MenuMorph new.
|
helpMenu := MenuMorph new.
|
||||||
@ -824,7 +766,7 @@ GrafoscopioBrowser >> exportAsPdf [
|
|||||||
self inform: 'Archivo exportado como pdf en: ', pdfFileLocation.].
|
self inform: 'Archivo exportado como pdf en: ', pdfFileLocation.].
|
||||||
Smalltalk platform name = 'Win32'
|
Smalltalk platform name = 'Win32'
|
||||||
ifTrue: [ OSProcess command: pandoc, ' ', markdownFileLocation , ' -o ' , pdfFileLocation ]]
|
ifTrue: [ OSProcess command: pandoc, ' ', markdownFileLocation , ' -o ' , pdfFileLocation ]]
|
||||||
ifFalse: [GrafoscopioBrowser configurePandoc ].
|
ifFalse: [ExternalApp configurePandoc ].
|
||||||
|
|
||||||
self customKeys.
|
self customKeys.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user