Merge jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Thu, 09 Jun 2016 01:47:28 +0100
branchjv
changeset 19967 9b1443c2aab1
parent 19964 3c71c4480e4b (current diff)
parent 19963 418b32a5d8fb (diff)
child 19968 beb0cbedcd3f
Merge
ApplicationDefinition.st
CharacterArray.st
ExternalLibraryFunction.st
Filename.st
ProjectDefinition.st
Rectangle.st
Smalltalk.st
UserPreferences.st
--- 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