--- a/ApplicationDefinition.st Wed Jun 08 14:07:35 2016 +0100
+++ b/ApplicationDefinition.st Thu Jun 09 01:47:28 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 2006 by eXept Software AG
All Rights Reserved
@@ -14,10 +16,10 @@
"{ NameSpace: Smalltalk }"
ProjectDefinition subclass:#ApplicationDefinition
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'System-Support-Projects'
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'System-Support-Projects'
!
!ApplicationDefinition class methodsFor:'documentation'!
@@ -967,9 +969,10 @@
@IF "%%1" EQU "exe" exit /b 0
@IF "%%1" EQU "setup" exit /b 0
@IF "%%1" EQU "pluginSetup" exit /b 0
-'; yourself
-
- "Modified: / 26-04-2016 / 21:54:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+';
+ yourself
+
+ "Modified: / 06-06-2016 / 12:06:16 / cg"
!
buildDate_dot_h_mappings
@@ -1405,7 +1408,7 @@
generateAllPreRequisiteLibs_modules_dot_stx
^ String streamContents:[:s |
- self allPreRequisitesSorted do:[:projectID |
+ self allPreRequisitesWithMandatorySorted do:[:projectID |
(self shouldBeLoadedInitially:projectID) ifFalse:[
s nextPut:$*.
].
@@ -1422,7 +1425,7 @@
exept_expecco_application generateAllPreRequisiteLibs_modules_dot_stx
"
- "Modified: / 07-09-2006 / 17:22:58 / cg"
+ "Modified: / 06-06-2016 / 14:31:09 / cg"
!
generateExtensionLine: extensionLineTemplate
@@ -1460,7 +1463,7 @@
generatePreRequisiteLines_bc_dot_mak
^ String streamContents:[:s |
- self allPreRequisitesSorted do:[:eachPackage |
+ self allPreRequisitesWithMandatorySorted do:[:eachPackage |
|mappings newObjectLine|
mappings := self preRequisiteLine_bc_dot_mak_mappings: eachPackage.
newObjectLine := self replaceMappings: mappings
@@ -1483,13 +1486,12 @@
"
"Created: / 09-08-2006 / 11:24:39 / fm"
- "Modified: / 14-09-2006 / 21:58:47 / cg"
+ "Modified: / 06-06-2016 / 14:33:30 / cg"
!
generatePreRequisiteLines_make_dot_proto
-
^ String streamContents:[:s |
- self allPreRequisitesSorted do:[:eachPackage |
+ self allPreRequisitesWithMandatorySorted do:[:eachPackage |
|mappings newObjectLine|
mappings := self preRequisiteLine_make_dot_proto_mappings: eachPackage.
newObjectLine := self replaceMappings: mappings
@@ -1512,31 +1514,32 @@
"
"Created: / 09-08-2006 / 11:24:39 / fm"
- "Modified: / 14-09-2006 / 21:58:47 / cg"
+ "Modified: / 06-06-2016 / 14:33:55 / cg"
!
generateRequiredLibobjs_make_dot_proto
^ String streamContents:[:s |
- self allPreRequisitesSorted do:[:projectID |
+ self allPreRequisitesWithMandatorySorted do:[:projectID |
|libobjPath libPath|
libPath := self pathToPackage:projectID withSeparator:'/'.
libobjPath := libPath , '/', (self libraryNameFor:projectID).
s space; nextPutAll: libobjPath; nextPutLine:'$(O_EXT) \'.
].
-
s cr.
].
"
exept_expecco_application generateRequiredLibobjs_make_dot_proto
"
+
+ "Modified: / 06-06-2016 / 14:34:17 / cg"
!
generateRequiredLibs_bc_dot_mak
^ String streamContents:[:s |
s nextPutLine:' \'.
- self allPreRequisitesSorted do:[:projectID |
+ self allPreRequisitesWithMandatorySorted do:[:projectID |
s space; nextPutAll:(self libraryNameFor:projectID); nextPutLine:'.dll \'.
].
@@ -1557,13 +1560,13 @@
bosch_dapasx_application generateRequiredLibs_bc_dot_mak
"
- "Modified: / 07-09-2006 / 17:22:51 / cg"
+ "Modified: / 06-06-2016 / 14:34:41 / cg"
!
generateRequiredLibs_make_dot_proto
"/ cg: why not (self libraryNameFor:projectID),'.so'; ???
^ String streamContents:[:s |
- self allPreRequisitesSorted do:[:projectID |
+ self allPreRequisitesWithMandatorySorted do:[:projectID |
s space; nextPutAll:(self libraryNameFor:projectID); nextPutLine:' \'.
].
"/ Subprojects are only built, but not linked to the executable!!
@@ -1582,12 +1585,14 @@
"
alspa_batch_application generateRequiredLibs_make_dot_proto
"
+
+ "Modified: / 06-06-2016 / 14:34:59 / cg"
!
generateRequiredLinkLibobjs_make_dot_proto
^ String streamContents:[:s |
- self allPreRequisitesSorted do:[:projectID |
+ self allPreRequisitesWithMandatorySorted do:[:projectID |
s space; nextPutAll:(self libraryNameFor:projectID),'$(O_EXT)'; nextPutLine:' \'.
].
@@ -1605,6 +1610,8 @@
"
alspa_batch_application generateRequiredLinkLibobjs_make_dot_proto
"
+
+ "Modified: / 06-06-2016 / 14:35:15 / cg"
!
generateSubProjectLibs_bc_dot_mak
@@ -2132,7 +2139,10 @@
!
bc_dot_mak_stx_resource_rules
- ^ '
+ |rsrcs|
+
+ self isGUIApplication ifTrue:[
+ rsrcs := '
stx_RESOURCES: \
keyboard.rc \
@@ -2145,6 +2155,17 @@
libview_RESOURCES \
libtool_RESOURCES \
libtool2_RESOURCES
+'
+ ] ifFalse:[
+ rsrcs := '
+
+stx_RESOURCES: \
+ host.rc \
+ libbasic_RESOURCES \
+'
+ ].
+
+ ^ rsrcs , '
keyboard.rc: $(TOP)\projects\smalltalk\keyboard.rc
copy $(TOP)\projects\smalltalk\keyboard.rc *.*
@@ -2175,7 +2196,7 @@
-copy $(TOP)\libwidg\bitmaps\*.xpm resources\stx\libwidg\bitmaps\*.*
libbasic_RESOURCES: resources\stx\libbasic\NUL
- copy $(TOP)\libbasic\resources\*.rs resources\stx\libbasic\*.*
+ -copy $(TOP)\libbasic\resources\*.rs resources\stx\libbasic\*.*
libtool_RESOURCES: resources\stx\libtool\NUL
-copy $(TOP)\libtool\resources\*.rs resources\stx\libtool\*.*
@@ -2228,6 +2249,7 @@
'.
"Created: / 20-09-2006 / 17:36:29 / cg"
+ "Modified: / 06-06-2016 / 16:06:01 / cg"
!
bc_dot_mak_stx_source_rules
@@ -2925,7 +2947,7 @@
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
-LangString appOpen ${LANG_GERMAN} "Mit %(PRODUCT_NAME) ffnen"
+LangString appOpen ${LANG_GERMAN} "Mit %(PRODUCT_NAME) öffnen"
LangString appOpen ${LANG_ENGLISH} "Open with %(PRODUCT_NAME)"
LangString DESC_Section1 ${LANG_ENGLISH} "Program components of %(PRODUCT_NAME)"
@@ -2959,7 +2981,7 @@
Function un.onInit
!!insertmacro MUI_UNGETLANGUAGE
- MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Mchten Sie %(PRODUCT_NAME) und alle seine Komponenten deinstallieren?" IDYES +2
+ MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Möchten Sie %(PRODUCT_NAME) und alle seine Komponenten deinstallieren?" IDYES +2
Abort
FunctionEnd
@@ -3064,11 +3086,11 @@
'%(FILE_NAME).dll: %(MODULE_DIRECTORY)\$(OBJDIR)\%(FILE_NAME).dll
copy %(MODULE_DIRECTORY)\$(OBJDIR)\%(FILE_NAME).dll *.*
-%(MODULE_DIRECTORY)\$(OBJDIR)\%(FILE_NAME).dll: $(FORCE)
- pushd %(MODULE_DIRECTORY) & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+# %(MODULE_DIRECTORY)\$(OBJDIR)\%(FILE_NAME).dll: $(FORCE)
+# pushd %(MODULE_DIRECTORY) & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
'
- "Modified: / 03-03-2016 / 21:22:21 / cg"
+ "Modified: / 06-06-2016 / 15:53:51 / cg"
!
preRequisiteLine_make_dot_proto
@@ -3101,7 +3123,7 @@
^'%(LIBRARY_NAME).dll: %(PATH_TO_SUB_PROJECT)\$(OBJDIR)\%(LIBRARY_NAME).dll
copy %(PATH_TO_SUB_PROJECT)\$(OBJDIR)\%(LIBRARY_NAME).dll *.*
-%(PATH_TO_SUB_PROJECT)\$(OBJDIR)\%(LIBRARY_NAME).dll:
+%(PATH_TO_SUB_PROJECT)\$(OBJDIR)\%(LIBRARY_NAME).dll: $(FORCE)
pushd %(PATH_TO_SUB_PROJECT) & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
'
@@ -3115,14 +3137,16 @@
^'%(LIBRARY_NAME).so: %(PATH_TO_SUB_PROJECT)/%(LIBRARY_NAME).so
ln -sf %(PATH_TO_SUB_PROJECT)/%(LIBRARY_NAME).so .
-%(PATH_TO_SUB_PROJECT)/%(LIBRARY_NAME).so: %(PATH_TO_SUB_PROJECT)/makefile
- cd %(PATH_TO_SUB_PROJECT) && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+%(PATH_TO_SUB_PROJECT)/%(LIBRARY_NAME).so: %(PATH_TO_SUB_PROJECT)/makefile $(FORCE)
+ @if [ -f "%(PATH_TO_SUB_PROJECT)/.NOSOURCE" ]; then \
+ echo "skip make in %(PATH_TO_SUB_PROJECT) (no source)"; \
+ else \
+ cd %(PATH_TO_SUB_PROJECT) && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES) "; \
+ fi
%(PATH_TO_SUB_PROJECT)/makefile: %(PATH_TO_SUB_PROJECT)/Make.proto
$(TOP)/rules/stmkmf --cd %(PATH_TO_SUB_PROJECT)
'
-
- "Modified: / 03-03-2016 / 21:23:10 / cg"
!
undefineExtenionLine_nsi_for:extension
--- a/CharacterArray.st Wed Jun 08 14:07:35 2016 +0100
+++ b/CharacterArray.st Thu Jun 09 01:47:28 2016 +0100
@@ -349,6 +349,7 @@
"Created: 3.8.1997 / 18:16:40 / cg"
! !
+
!CharacterArray class methodsFor:'cleanup'!
lowSpaceCleanup
@@ -549,6 +550,7 @@
"
! !
+
!CharacterArray class methodsFor:'pattern matching'!
matchEscapeCharacter
@@ -954,6 +956,7 @@
^ Unicode32String
! !
+
!CharacterArray methodsFor:'Compatibility-ANSI'!
addLineDelimiters
@@ -3135,64 +3138,64 @@
|aTextSeparatorChar items scanningWord inStream element lastIsFieldSeparator sz|
aTextSeparatorOrNil isNil ifTrue:[
- ^ self asCollectionOfSubstringsSeparatedByAll: aFieldSeparatorString
+ ^ self asCollectionOfSubstringsSeparatedByAll: aFieldSeparatorString
].
sz := aTextSeparatorOrNil size.
sz = 0 ifTrue:[
- aTextSeparatorChar := aTextSeparatorOrNil
+ aTextSeparatorChar := aTextSeparatorOrNil
] ifFalse:[sz = 1 ifTrue:[
- "this is a String. Fetch the first character - compatibility to older expecco libs"
- aTextSeparatorChar := aTextSeparatorOrNil first.
+ "this is a String. Fetch the first character - compatibility to older expecco libs"
+ aTextSeparatorChar := aTextSeparatorOrNil first.
] ifFalse:[
- self error:'textSeparatoSize > 1'.
+ self error:'textSeparatorSize > 1'.
]].
items := OrderedCollection new.
inStream := ReadStream on:self.
[
- inStream skipSeparators.
- inStream atEnd
+ inStream skipSeparators.
+ inStream atEnd
] whileFalse:[
- lastIsFieldSeparator := false.
- inStream peek == aTextSeparatorChar ifTrue:[
- inStream next.
- element := ''.
- scanningWord := true.
- [ scanningWord and:[inStream atEnd not] ] whileTrue:[
- element := element , (inStream upTo:aTextSeparatorChar).
- (inStream peek == aTextSeparatorChar) ifTrue:[
- element := element , aTextSeparatorChar .
- inStream next.
- ] ifFalse:[
- scanningWord := false.
- ].
- ].
- inStream upToAll_positionBefore:aFieldSeparatorString.
- ] ifFalse:[
- element := inStream upToAll_positionBefore:aFieldSeparatorString
- ].
- items add:element.
- lastIsFieldSeparator := (inStream skipThroughAll:aFieldSeparatorString) notNil.
+ lastIsFieldSeparator := false.
+ inStream peek == aTextSeparatorChar ifTrue:[
+ inStream next.
+ element := ''.
+ scanningWord := true.
+ [ scanningWord and:[inStream atEnd not] ] whileTrue:[
+ element := element , (inStream upTo:aTextSeparatorChar).
+ (inStream peek == aTextSeparatorChar) ifTrue:[
+ element := element , aTextSeparatorChar .
+ inStream next.
+ ] ifFalse:[
+ scanningWord := false.
+ ].
+ ].
+ inStream upToAll_positionBefore:aFieldSeparatorString.
+ ] ifFalse:[
+ element := inStream upToAll_positionBefore:aFieldSeparatorString
+ ].
+ items add:element.
+ lastIsFieldSeparator := (inStream skipThroughAll:aFieldSeparatorString) notNil.
].
lastIsFieldSeparator ifTrue:[
- "empty element at the end of the line"
- items add:''.
+ "empty element at the end of the line"
+ items add:''.
].
^ items
"
self assert:(('#First#, #Second,SecondAdd#, #Third#' asCollectionOfSubstringsSeparatedBy:',' textSeparator: $#)
- sameContentsAs:#('First' 'Second,SecondAdd' 'Third')).
+ sameContentsAs:#('First' 'Second,SecondAdd' 'Third')).
self assert:(('#Fir##st#, #Second,SecondAdd#, #Third#' asCollectionOfSubstringsSeparatedBy:',' textSeparator: $#)
- sameContentsAs:#('Fir#st' 'Second,SecondAdd' 'Third')).
+ sameContentsAs:#('Fir#st' 'Second,SecondAdd' 'Third')).
self assert:(('#Fir##st#, Second,SecondAdd, #Third#' asCollectionOfSubstringsSeparatedBy:',' textSeparator: $#)
- sameContentsAs:#('Fir#st' 'Second' 'SecondAdd' 'Third')).
+ sameContentsAs:#('Fir#st' 'Second' 'SecondAdd' 'Third')).
self assert:(('First,Second,Third,,' asCollectionOfSubstringsSeparatedBy:',' textSeparator:nil)
- sameContentsAs:#('First' 'Second' 'Third' '' '')).
+ sameContentsAs:#('First' 'Second' 'Third' '' '')).
self assert:(('First,Second,Third,,' asCollectionOfSubstringsSeparatedBy:',' textSeparator:'#')
- sameContentsAs:#('First' 'Second' 'Third' '' '')).
+ sameContentsAs:#('First' 'Second' 'Third' '' '')).
"
"Modified: / 07-04-2011 / 13:23:19 / cg"
@@ -4761,6 +4764,8 @@
! !
+
+
!CharacterArray methodsFor:'matching - glob expressions'!
compoundMatch:aString
@@ -6236,6 +6241,7 @@
"Modified: 17.4.1997 / 12:50:23 / cg"
! !
+
!CharacterArray methodsFor:'special string converting'!
asUnixFilenameString
@@ -7283,6 +7289,7 @@
"
! !
+
!CharacterArray methodsFor:'substring searching'!
findRangeOfString:subString
@@ -8051,6 +8058,7 @@
^ aVisitor visitString:self with:aParameter
! !
+
!CharacterArray class methodsFor:'documentation'!
version
--- a/ExternalLibraryFunction.st Wed Jun 08 14:07:35 2016 +0100
+++ b/ExternalLibraryFunction.st Thu Jun 09 01:47:28 2016 +0100
@@ -144,14 +144,14 @@
A limited fallback implementation is provided for systems with no libffi.
(this may have limitations on the supported argument types; for example,
the x86_64 fallback does not support float/double arguments).
- Therefore the fallback should be considered a temporary workaround,
+ Therefore the fallback should be considered a temporary workaround,
until libffi has been ported.
-
+
Inside a method, when a special external-call pragma such as:
- <api: bool MessageBeep(uint)>
+ <api: bool MessageBeep(uint)>
is encountered by the parser, the compiler generates a call via
- <correspondingExternalLibraryFunctionObject> invokeWithArguments: argumentArray.
+ <correspondingExternalLibraryFunctionObject> invokeWithArguments: argumentArray.
and the correspondingExternalLibraryFunctionObject is kept in the literal array.
In the invoke method, the library is checked to be loaded (and loaded if not already),
@@ -159,22 +159,22 @@
and finally, the return value is converted back from C to a smalltalk object.
The parser supports the call-syntax of various other smalltalk dialects:
- Squeak / ST-X:
- <cdecl: [async] [virtual|nonVirtual][const] returnType functionNameStringOrIndex ( argType1..argTypeN ) module: moduleName >
- <apicall: [async] [virtual|nonVirtual][const] returnType functionNameStringOrIndex ( argType1..argTypeN ) module: moduleName >
+ Squeak / ST-X:
+ <cdecl: [async] [virtual|nonVirtual][const] returnType functionNameStringOrIndex ( argType1..argTypeN ) module: moduleName >
+ <apicall: [async] [virtual|nonVirtual][const] returnType functionNameStringOrIndex ( argType1..argTypeN ) module: moduleName >
- Dolphin:
- <stdcall: [virtual|nonVirtual][const] returnType functionNameStringOrIndex argType1..argTypeN>
- <cdecl: [virtual|nonVirtual][const] returnType functionNameStringOrIndex argType1..argTypeN>
+ Dolphin:
+ <stdcall: [virtual|nonVirtual][const] returnType functionNameStringOrIndex argType1..argTypeN>
+ <cdecl: [virtual|nonVirtual][const] returnType functionNameStringOrIndex argType1..argTypeN>
- ST/V:
- <api: functionName argType1 .. argTypeN returnType>
- <ccall: functionName argType1 .. argTypeN returnType>
- <ole: vFunctionIndex argType1 .. argTypeN returnType>
+ ST/V:
+ <api: functionName argType1 .. argTypeN returnType>
+ <ccall: functionName argType1 .. argTypeN returnType>
+ <ole: vFunctionIndex argType1 .. argTypeN returnType>
- VisualWorks:
- <c: ...>
- <c: #define NAME value>
+ VisualWorks:
+ <c: ...>
+ <c: #define NAME value>
"
!
--- a/Filename.st Wed Jun 08 14:07:35 2016 +0100
+++ b/Filename.st Thu Jun 09 01:47:28 2016 +0100
@@ -3172,34 +3172,38 @@
newName := newNameArg asFilename.
- "Contents is not copied if newName represent same file as me."
+ "Contents is not copied if newName represents the same file as me."
newName asAbsoluteFilename = self asAbsoluteFilename ifTrue: [ ^ self ].
+ (newName exists and:[newName isDirectory]) ifTrue:[
+ newName := newName construct:(self baseName).
+ ].
+
inStream := self readStream.
inStream isNil ifTrue:[
- "open failed, but somenone did a proceed for the OpenError.
- Ignore this file but continue in order to copy the rest when
- doing a recursive copy"
- ^ self.
+ "open failed, but somenone did a proceed for the OpenError.
+ Ignore this file but continue in order to copy the rest when
+ doing a recursive copy"
+ ^ self.
].
[
- newNameAlreadyExists := newName exists.
- outStream := newName writeStream.
- newNameAlreadyExists ifFalse:[
- [
- "would be nice to keep the access rights of the original test suite"
- newName accessRights:self accessRights.
- ] on:OperatingSystem accessDeniedErrorSignal do:[:ex|
- "ignore the error - may occure when copying to a network drive"
- ].
- ].
- inStream binary; buffered:false.
- outStream binary; buffered:false.
- inStream copyToEndInto:outStream.
+ newNameAlreadyExists := newName exists.
+ outStream := newName writeStream.
+ newNameAlreadyExists ifFalse:[
+ [
+ "would be nice to keep the access rights of the original test suite"
+ newName accessRights:self accessRights.
+ ] on:OperatingSystem accessDeniedErrorSignal do:[:ex|
+ "ignore the error - may occure when copying to a network drive"
+ ].
+ ].
+ inStream binary; buffered:false.
+ outStream binary; buffered:false.
+ inStream copyToEndInto:outStream.
] ensure:[
- inStream close.
- outStream notNil ifTrue:[outStream close].
+ inStream close.
+ outStream notNil ifTrue:[outStream close].
].
"
@@ -3209,7 +3213,7 @@
"
"Modified: / 10-09-2004 / 09:49:28 / janfrog"
- "Modified: / 29-09-2006 / 16:26:32 / cg"
+ "Modified: / 06-06-2016 / 12:15:25 / cg"
!
copyToStream:outStream
--- a/ProjectDefinition.st Wed Jun 08 14:07:35 2016 +0100
+++ b/ProjectDefinition.st Thu Jun 09 01:47:28 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 2006 by eXept Software AG
All Rights Reserved
@@ -2746,7 +2748,6 @@
"Created: / 18-08-2006 / 12:51:38 / cg"
! !
-
!ProjectDefinition class methodsFor:'description - project information'!
applicationAdditionalIconFileNames
@@ -3861,15 +3862,14 @@
!
builder_baseline_dot_rbspec_packages
- ^ String streamContents:
- [:s |
- self allPreRequisitesSorted do:
- [:packageId |
- s
- nextPutAll:(' package "%1"' bindWith:packageId);
- cr ] ].
+ ^ String streamContents:[:s |
+ self allPreRequisitesWithMandatorySorted do: [:packageId |
+ s nextPutLine:(' package "%1"' bindWith:packageId).
+ ]
+ ].
"Created: / 24-02-2011 / 11:59:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 06-06-2016 / 14:32:44 / cg"
!
classLine_mappings:aClassName
@@ -4790,7 +4790,6 @@
^ self subProjectMakeCallsUsing:'call vcmake %1 %2'.
! !
-
!ProjectDefinition class methodsFor:'file templates'!
autopackage_default_dot_apspec
@@ -6909,6 +6908,35 @@
]
!
+allMandatoryPreRequisites
+ "answer all (recursive) mandatory prerequisite project ids of myself - in random order."
+
+ ^ self allPreRequisites:#effectiveMandatoryPreRequisites.
+
+ "
+ stx_libbasic allMandatoryPreRequisites
+ stx_libbasic2 allMandatoryPreRequisites
+ stx_libview2 allMandatoryPreRequisites
+ stx_libcomp allMandatoryPreRequisites
+ "
+
+ "Created: / 06-06-2016 / 12:19:39 / cg"
+!
+
+allMandatoryPreRequisitesSorted
+ [
+ ^ self allPreRequisitesSorted:#effectiveMandatoryPreRequisites
+ ] on:Error do:[:ex |
+ (self confirm:(self name,' [warning]: cycle in prerequisites:' ,, Character cr, ' ', (ex parameter printStringWithSeparator:' -> ') ,, Character cr, 'Proceed with incomplete (mandatory) prerequites?'))
+ ifFalse:[
+ AbortOperationRequest raise
+ ].
+ ^ self allPreRequisitesSorted:#mandatoryPreRequisites
+ ].
+
+ "Created: / 06-06-2016 / 12:20:40 / cg"
+!
+
allPreRequisites
"answer all (recursive) prerequisite project ids of myself - in random order."
@@ -7093,6 +7121,22 @@
"Modified: / 05-06-2014 / 12:22:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+allPreRequisitesWithMandatorySorted
+ "a list of all prerequisites (mandatory and non-mandatory,
+ with the mandatory ones coming first and being sorted by dependency"
+
+ |pre mandatory|
+
+ mandatory := self allMandatoryPreRequisitesSorted.
+ pre := OrderedSet withAll:mandatory.
+ self allPreRequisites do:[:each |
+ (mandatory includes:each) ifFalse:[ pre add: each ]
+ ].
+ ^ pre
+
+ "Created: / 06-06-2016 / 14:30:25 / cg"
+!
+
allReferences
"answer all (recursive) projects to which I refer - in random order."
--- a/Rectangle.st Wed Jun 08 14:07:35 2016 +0100
+++ b/Rectangle.st Thu Jun 09 01:47:28 2016 +0100
@@ -1216,7 +1216,7 @@
%{ /* NOCONTEXT */
/*
* claus: this may be often called by objectView
- * the primitive code below (although lookung ugly)
+ * the primitive code below (although looking ugly)
* speeds that up by almost a factor of 2 ...
*/
OBJ slf = self;
@@ -1363,7 +1363,7 @@
%{ /* NOCONTEXT */
/*
* claus: this is one of the mostly called methods in
- * the objectView - the primitive code below (although lookung ugly)
+ * the objectView - the primitive code below (although looking ugly)
* speeds up drawing by almost a factor of 2 ...
*/
OBJ slf = self;
--- a/Smalltalk.st Wed Jun 08 14:07:35 2016 +0100
+++ b/Smalltalk.st Thu Jun 09 01:47:28 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 1988 by Claus Gittinger
All Rights Reserved
@@ -4792,6 +4794,40 @@
"
!
+exitIfStandalone
+ "if this is a standalone application, exit.
+ Otherwise give a warning and abort.
+ Call this in your code instead of Smalltalk exit,
+ so the code can be tested in the IDE without danger of shuttong down ST/X"
+
+ "{ Pragma: +optSpace }"
+
+ self exitIfStandalone:0
+
+ "Created: / 06-06-2016 / 14:56:49 / cg"
+!
+
+exitIfStandalone:statusInteger
+ "if this is a standalone application, exit.
+ Otherwise give a warning and abort.
+ Call this in your code instead of Smalltalk exit,
+ so the code can be tested in the IDE without danger of shuttong down ST/X"
+
+ "{ Pragma: +optSpace }"
+
+ Smalltalk isStandAloneApp ifTrue:[
+ self exit:statusInteger
+ ] ifFalse:[
+ self warn:'Application asks Smalltalk to exit (suppressed in IDE).'.
+ ]
+
+ "
+ Smalltalk exitIfStandalone:1
+ "
+
+ "Created: / 06-06-2016 / 14:56:00 / cg"
+!
+
exitOrError:exitCode
"exit only if running as standalone application.
Raise an error in the development system.
@@ -8279,13 +8315,13 @@
(lang == #de) ifTrue:[
proto := 'Willkommen bei %1 (%4Version %2 von %3)'. bit := 'Bit'.
] ifFalse:[ (lang == #fr) ifTrue:[
- proto := 'Salut, Bienvenue à %1 (%4version %2 de %3)'
+ proto := 'Salut, Bienvenue à %1 (%4version %2 de %3)'
] ifFalse:[ (lang == #it) ifTrue:[
proto := 'Ciao, benvenuto al %1 (%4versione %2 di %3)'
] ifFalse:[ (lang == #es) ifTrue:[
proto := 'Hola, bienvenida a %1 (%4version %2 de %3)'
] ifFalse:[ (lang == #pt) ifTrue:[
- proto := 'Ol!!, mem-vindo a %1 (%4version %2 de %3)'
+ proto := 'Olá!!, mem-vindo a %1 (%4version %2 de %3)'
] ifFalse:[ (lang == #no) ifTrue:[
proto := 'Hei, verdenmottakelse til %1 (%4versjon %2 av %3)'
]]]]]].
--- a/UserPreferences.st Wed Jun 08 14:07:35 2016 +0100
+++ b/UserPreferences.st Thu Jun 09 01:47:28 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 1998 by eXept Software AG
All Rights Reserved
@@ -63,79 +65,79 @@
!UserPreferences class methodsFor:'initialization'!
-initializeDefaultPreferences
- DefaultPreferences := self new.
-
+initializeDefaultsIn:preferences
Color isNil "Smalltalk isStandAloneApp" ifTrue:[
- ^ self.
+ ^ self.
].
+ Color initialize.
#(
- #useNewChangesBrowser false
- #useNewInspector false
- #showClockInLauncher true
-
- #autoFormatting false
- #syntaxColoring true
- #fullSelectorCheck false
-
- #defaultSyntaxColor (Color black)
- #defaultSyntaxEmphasis normal
-
- #errorColor (Color red)
-
- "/ #commentColor (Color 12.5 12.5 100)
- #commentColor (Color 0 50 0)
- #commentEmphasis normal
-
- #methodSelectorEmphasis bold
- #selectorEmphasis bold
- #unimplementedSelectorColor (Color red)
- #unimplementedSelectorEmphasis normal
-
- "/ I prefer red-underwave over red identifier ...
- "/ #badIdentifierColor (Color red)
- #instVarIdentifierColor (Color 33 0 33)
-
- "/ I prefer redish background
- "/ #sideEffectAssignmentColor (Color 75 0 0)
- "/ #sideEffectAssignmentBackgroundColor (Color 100 86 86)
-
- #jsKeywordEmphasis bold
- "/ #jsKeywordColor (Color black)
- #jsKeywordColor (Color 33 33 0)
-
- #controlFlowSelectorColor (Color 0 0 100)
- #debugSelectorColor (Color 80 0 0)
- #errorRaisingSelectorColor (Color 80 0 0)
- "/ #constantColor (Color 25 0 0)
- #constantColor (Color 64 8 8)
-
- #globalIdentifierColor (Color 67 0 67)
- #unknownIdentifierColor (Color 67 0 67)
-
- #returnColor (Color 0 0 100)
- #returnEmphasis bold
+ #useNewChangesBrowser false
+ #useNewInspector false
+ #showClockInLauncher true
+
+ #autoFormatting false
+ #syntaxColoring true
+ #fullSelectorCheck false
+
+ #defaultSyntaxColor (Color black)
+ #defaultSyntaxEmphasis normal
+
+ #errorColor (Color red)
+
+ "/ #commentColor (Color 12.5 12.5 100)
+ #commentColor (Color 0 50 0)
+ #commentEmphasis normal
+
+ #methodSelectorEmphasis bold
+ #selectorEmphasis bold
+ #unimplementedSelectorColor (Color red)
+ #unimplementedSelectorEmphasis normal
+
+ "/ I prefer red-underwave over red identifier ...
+ "/ #badIdentifierColor (Color red)
+ #instVarIdentifierColor (Color 33 0 33)
+
+ "/ I prefer redish background
+ "/ #sideEffectAssignmentColor (Color 75 0 0)
+ "/ #sideEffectAssignmentBackgroundColor (Color 100 86 86)
+
+ #jsKeywordEmphasis bold
+ "/ #jsKeywordColor (Color black)
+ #jsKeywordColor (Color 33 33 0)
+
+ #controlFlowSelectorColor (Color 0 0 100)
+ #debugSelectorColor (Color 80 0 0)
+ #errorRaisingSelectorColor (Color 80 0 0)
+ "/ #constantColor (Color 25 0 0)
+ #constantColor (Color 64 8 8)
+
+ #globalIdentifierColor (Color 67 0 67)
+ #unknownIdentifierColor (Color 67 0 67)
+
+ #returnColor (Color 0 0 100)
+ #returnEmphasis bold
) pairWiseDo:[:k :v |
- DefaultPreferences at:k put:(v decodeAsLiteralArray).
+ preferences at:k put:(v decodeAsLiteralArray).
].
"/ I prefer red-underwave over red identifier ...
- DefaultPreferences at:#badIdentifierEmphasis put:(Array with:#underwave with:(#underlineColor->Color red)).
+ preferences at:#badIdentifierEmphasis put:(Array with:#underwave with:(#underlineColor->Color red)).
"
self initializeDefaultPreferences
"
- "Modified: / 16-03-2012 / 10:35:42 / cg"
+ "Created: / 06-06-2016 / 10:42:14 / cg"
! !
!UserPreferences class methodsFor:'accessing'!
current
CurrentPreferences isNil ifTrue:[
- CurrentPreferences := self new.
- CurrentPreferences flyByHelpSettingChanged.
+ CurrentPreferences := self new.
+ self initializeDefaultsIn:CurrentPreferences.
+ CurrentPreferences flyByHelpSettingChanged.
].
^ CurrentPreferences.
@@ -144,17 +146,21 @@
"
"Modified: / 05-02-2015 / 07:08:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 06-06-2016 / 10:42:59 / cg"
!
default
DefaultPreferences isNil ifTrue:[
- self initializeDefaultPreferences
+ DefaultPreferences := self new.
+ self initializeDefaultsIn:DefaultPreferences
].
^ DefaultPreferences.
"
DefaultPreferences := nil.
"
+
+ "Modified: / 06-06-2016 / 10:41:45 / cg"
!
reset
@@ -868,8 +874,6 @@
^ modified ? false
! !
-
-
!UserPreferences methodsFor:'accessing-locale'!
dateInputFormat
@@ -5138,7 +5142,7 @@
functionKeySequences
"return the collection of function-key macros.
- Thats a dictionary, which assigns code to F-keys"
+ That's a dictionary, which assigns code to F-keys"
^ self at:#functionKeySequences ifAbsentPut:[Dictionary new]
@@ -5146,7 +5150,8 @@
UserPreferences current functionKeySequences
"
- "Modified: / 11.9.1998 / 00:09:59 / cg"
+ "Modified: / 11-09-1998 / 00:09:59 / cg"
+ "Modified (comment): / 06-06-2016 / 10:43:30 / cg"
!
hideSupportCodeInDebugger