--- a/ProjectBrowser.st Wed Jun 16 14:18:10 1999 +0200
+++ b/ProjectBrowser.st Thu Jun 24 17:44:30 1999 +0200
@@ -1,6 +1,6 @@
ToolApplicationModel subclass:#ProjectBrowser
instanceVariableNames:'projectTree modifiedChannel'
- classVariableNames:''
+ classVariableNames:'AlreadCheckedExistingModulesAndPackages'
poolDictionaries:''
category:'Interface-Smalltalk'
!
@@ -20,6 +20,86 @@
!
+!ProjectBrowser class methodsFor:'help specs'!
+
+helpSpec
+ "This resource specification was automatically generated
+ by the UIHelpTool of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIHelpTool may not be able to read the specification."
+
+ "
+ UIHelpTool openOnClass:ProjectBrowser
+ "
+
+ <resource: #help>
+
+ ^super helpSpec addPairsFrom:#(
+
+#accept
+'Accept modifications made here.'
+
+#appType
+'An application - ie an executable program (and support files if any).'
+
+#cancel
+'Undo modifications made here.'
+
+#defaultNamespace
+'Namespace for new classes when created in the Browser.'
+
+#deliverAsGZIP
+'Package delivery into a gzip archive (for unix)'
+
+#deliverAsTar
+'Package delivery into a tar archive (for unix)'
+
+#deliverAsZIP
+'Package delivery into a zip archive (for win32)'
+
+#deliverBinary
+'Create and deliver a compiled binary (classLibrary) - only possible for the running systems architecture.'
+
+#deliverLoadAll
+'Deliver a loadAll script file, which files-In the other files.'
+
+#deliverSource
+'Include smalltalk sourceCode in the delivery.'
+
+#includeSource
+'Include smalltalk sourceCode in the delivery.'
+
+#installDirMacOS
+'The final install directory for MacOS deliveries.'
+
+#installDirUnix
+'The final install directory for UNIX deliveries.'
+
+#installDirVMS
+'The final install directory for VMS deliveries.'
+
+#installDirWin32
+'The final install directory for Win32 deliveries.'
+
+#libType
+'A classLibrary addOn (and support files if any)'
+
+#packageID
+'Package ID used to associate classes & methods to this project.'
+
+#projectDir
+'The projects directory.'
+
+#repositoryDirectory
+'The directory path below the module in the source-repository.'
+
+#repositoryModule
+'The module (top directory) in the source-repository.'
+
+)
+! !
+
!ProjectBrowser class methodsFor:'image specs'!
classIcon
@@ -299,11 +379,11 @@
#(#WindowSpec
#label: 'NewApplication'
#name: 'NewApplication'
- #layout: #(#LayoutFrame 216 0 173 0 515 0 472 0)
+ #layout: #(#LayoutFrame 40 0 71 0 392 0 413 0)
#level: 0
#min: #(#Point 10 10)
#max: #(#Point 1280 1024)
- #bounds: #(#Rectangle 216 173 516 473)
+ #bounds: #(#Rectangle 40 71 393 414)
#usePreferredExtent: false
#returnIsOKInDialog: true
#escapeIsCancelInDialog: true
@@ -314,7 +394,7 @@
#(#FramedBoxSpec
#label: 'Delivery'
#name: 'FramedBox1'
- #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 173 0)
+ #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 140 0)
#labelPosition: #topLeft
#translateLabel: true
#component:
@@ -323,7 +403,8 @@
#(#CheckBoxSpec
#label: 'Compiled Binary'
#name: 'CheckBox1'
- #layout: #(#LayoutFrame 0 0.0 10 0 0 1.0 32 0)
+ #layout: #(#LayoutFrame 0 0.0 10 0 0 0.5 32 0)
+ #activeHelpKey: #deliverBinary
#tabable: true
#model: #deliverCompiledBinary
#translateLabel: true
@@ -331,7 +412,8 @@
#(#CheckBoxSpec
#label: 'Zip Archive'
#name: 'CheckBox2'
- #layout: #(#LayoutFrame 0 0.0 38 0 0 1.0 60 0)
+ #layout: #(#LayoutFrame 0 0.5 10 0 0 1.0 32 0)
+ #activeHelpKey: #deliverAsZIP
#tabable: true
#model: #deliverZipArchive
#translateLabel: true
@@ -339,7 +421,8 @@
#(#CheckBoxSpec
#label: 'GZip Archive (self extracting)'
#name: 'CheckBox3'
- #layout: #(#LayoutFrame 0 0.0 66 0 0 1.0 88 0)
+ #layout: #(#LayoutFrame 0 0.5 38 0 0 1.0 60 0)
+ #activeHelpKey: #deliverAsGZIP
#tabable: true
#model: #deliverGZipArchive
#translateLabel: true
@@ -347,7 +430,8 @@
#(#CheckBoxSpec
#label: 'Include Sources'
#name: 'CheckBox4'
- #layout: #(#LayoutFrame 0 0.0 94 0 0 1.0 116 0)
+ #layout: #(#LayoutFrame 0 0.0 39 0 0 0.5 61 0)
+ #activeHelpKey: #deliverSource
#tabable: true
#model: #deliverSources
#translateLabel: true
@@ -355,7 +439,8 @@
#(#CheckBoxSpec
#label: 'loadAll-File'
#name: 'CheckBox5'
- #layout: #(#LayoutFrame 0 0.0 122 0 0 1.0 144 0)
+ #layout: #(#LayoutFrame 0 0.0 67 0 0 0.5 89 0)
+ #activeHelpKey: #deliverLoadAll
#tabable: true
#model: #deliverLoadAllFile
#translateLabel: true
@@ -367,19 +452,81 @@
#(#FramedBoxSpec
#label: 'Install Directory'
#name: 'FramedBox2'
- #layout: #(#LayoutFrame 0 0.0 178 0 0 1.0 243 0)
+ #layout: #(#LayoutFrame 0 0.0 140 0 0 1.0 293 0)
#labelPosition: #topLeft
#translateLabel: true
#component:
#(#SpecCollection
#collection: #(
+ #(#LabelSpec
+ #label: 'Unix:'
+ #name: 'Label1'
+ #layout: #(#LayoutFrame 0 0.0 5 0 60 0.0 27 0)
+ #translateLabel: true
+ #adjust: #right
+ )
#(#InputFieldSpec
#name: 'EntryField1'
- #layout: #(#LayoutFrame 0 0.0 6 0 0 1.0 28 0)
+ #layout: #(#LayoutFrame 64 0.0 4 0 0 1.0 26 0)
+ #activeHelpKey: #installDirUnix
+ #enableChannel: #canDeliverForUnix
+ #tabable: true
+ #model: #installDirectoryUnix
+ #acceptChannel: #acceptChannel
+ #modifiedChannel: #modifiedChannel
+ )
+ #(#LabelSpec
+ #label: 'Win32:'
+ #name: 'Label2'
+ #layout: #(#LayoutFrame 0 0.0 36 0 60 0.0 58 0)
+ #translateLabel: true
+ #adjust: #right
+ )
+ #(#InputFieldSpec
+ #name: 'EntryField2'
+ #layout: #(#LayoutFrame 64 0.0 34 0 0 1.0 56 0)
+ #activeHelpKey: #installDirWin32
+ #enableChannel: #canDeliverForWin32
#tabable: true
- #model: #installDirectory
+ #model: #installDirectoryWin32
+ #acceptChannel: #acceptChannel
#modifiedChannel: #modifiedChannel
+ )
+ #(#LabelSpec
+ #label: 'VMS:'
+ #name: 'Label3'
+ #layout: #(#LayoutFrame 0 0.0 65 0 60 0.0 87 0)
+ #translateLabel: true
+ #adjust: #right
+ )
+ #(#InputFieldSpec
+ #name: 'EntryField3'
+ #layout: #(#LayoutFrame 64 0.0 63 0 0 1.0 85 0)
+ #activeHelpKey: #installDirVMS
+ #initiallyDisabled: true
+ #enableChannel: #canDeliverForVMS
+ #tabable: true
+ #model: #installDirectoryVMS
#acceptChannel: #acceptChannel
+ #modifiedChannel: #modifiedChannel
+ )
+ #(#LabelSpec
+ #label: 'MacOS:'
+ #name: 'Label4'
+ #layout: #(#LayoutFrame 0 0.0 95 0 60 0.0 117 0)
+ #translateLabel: true
+ #adjust: #right
+ )
+ #(#InputFieldSpec
+ #name: 'EntryField4'
+ #layout: #(#LayoutFrame 64 0.0 93 0 0 1.0 115 0)
+ #activeHelpKey: #installDirMacOS
+ #initiallyDisabled: true
+ #enableChannel: #canDeliverForMacOS
+ #tabable: true
+ #model: #installDirectoryMac
+ #acceptChannel: #acceptChannel
+ #modifiedChannel: #modifiedChannel
)
)
@@ -872,11 +1019,11 @@
#(#WindowSpec
#label: 'NewApplication'
#name: 'NewApplication'
- #layout: #(#LayoutFrame 21 0 21 0 320 0 364 0)
+ #layout: #(#LayoutFrame 119 0 158 0 479 0 520 0)
#level: 0
#min: #(#Point 10 10)
#max: #(#Point 1280 1024)
- #bounds: #(#Rectangle 21 21 321 365)
+ #bounds: #(#Rectangle 119 158 480 521)
#usePreferredExtent: false
#returnIsOKInDialog: true
#escapeIsCancelInDialog: true
@@ -884,6 +1031,146 @@
#component:
#(#SpecCollection
#collection: #(
+ #(#FramedBoxSpec
+ #label: 'Project Type'
+ #name: 'FramedBox1'
+ #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 61 0)
+ #labelPosition: #topLeft
+ #translateLabel: true
+ #component:
+ #(#SpecCollection
+ #collection: #(
+ #(#RadioButtonSpec
+ #label: 'Application'
+ #name: 'RadioButton1'
+ #layout: #(#LayoutFrame -1 0.0 5 0 0 0.5 27 0)
+ #activeHelpKey: #appType
+ #translateLabel: true
+ #model: #projectType
+ #isTriggerOnDown: true
+ #select: #application
+ )
+ #(#RadioButtonSpec
+ #label: 'Class Library'
+ #name: 'RadioButton2'
+ #layout: #(#LayoutFrame 0 0.5 5 0 0 1.0 27 0)
+ #activeHelpKey: #libType
+ #translateLabel: true
+ #model: #projectType
+ #isTriggerOnDown: true
+ #select: #library
+ )
+ )
+
+ )
+ )
+ #(#FramedBoxSpec
+ #label: 'Project Directory'
+ #name: 'FramedBox2'
+ #layout: #(#LayoutFrame 0 0.0 62 0.0 0 1.0 122 0)
+ #labelPosition: #topLeft
+ #translateLabel: true
+ #component:
+ #(#SpecCollection
+ #collection: #(
+ #(#InputFieldSpec
+ #name: 'EntryField1'
+ #layout: #(#LayoutFrame 0 0.0 1 0 0 1.0 23 0)
+ #activeHelpKey: #projectDir
+ #enableChannel: #currentProjectWasNotLoadedFromFile
+ #model: #projectDirectory
+ #acceptChannel: #acceptChannel
+ #modifiedChannel: #modifiedChannel
+ )
+ )
+
+ )
+ )
+ #(#FramedBoxSpec
+ #label: 'Projects Package ID'
+ #name: 'FramedBox5'
+ #layout: #(#LayoutFrame 0 0.0 127 0.0 0 1.0 187 0)
+ #labelPosition: #topLeft
+ #translateLabel: true
+ #component:
+ #(#SpecCollection
+ #collection: #(
+ #(#InputFieldSpec
+ #name: 'EntryField5'
+ #layout: #(#LayoutFrame 0 0.0 1 0 0 1.0 23 0)
+ #activeHelpKey: #packageID
+ #model: #projectPackage
+ #acceptChannel: #acceptChannel
+ #modifiedChannel: #modifiedChannel
+ )
+ )
+
+ )
+ )
+ #(#FramedBoxSpec
+ #label: 'Repository'
+ #name: 'FramedBox3'
+ #layout: #(#LayoutFrame 0 0.0 191 0.0 0 1.0 274 0)
+ #labelPosition: #topLeft
+ #translateLabel: true
+ #component:
+ #(#SpecCollection
+ #collection: #(
+ #(#LabelSpec
+ #label: 'Module:'
+ #name: 'Label1'
+ #layout: #(#LayoutFrame 0 0 0 0 86 0 22 0)
+ #translateLabel: true
+ #adjust: #right
+ )
+ #(#InputFieldSpec
+ #name: 'EntryField2'
+ #layout: #(#LayoutFrame 92 0.0 0 0 0 1.0 22 0)
+ #activeHelpKey: #repositoryModule
+ #model: #repositoryModule
+ #acceptChannel: #acceptChannel
+ #modifiedChannel: #modifiedChannel
+ )
+ #(#LabelSpec
+ #label: 'Directory:'
+ #name: 'Label2'
+ #layout: #(#LayoutFrame 0 0 25 0 86 0 47 0)
+ #translateLabel: true
+ #adjust: #right
+ )
+ #(#InputFieldSpec
+ #name: 'EntryField3'
+ #layout: #(#LayoutFrame 92 0.0 25 0 0 1.0 47 0)
+ #activeHelpKey: #repositoryDirectory
+ #model: #repositoryDirectory
+ #acceptChannel: #acceptChannel
+ #modifiedChannel: #modifiedChannel
+ )
+ )
+
+ )
+ )
+ #(#FramedBoxSpec
+ #label: 'Default Namespace'
+ #name: 'FramedBox4'
+ #layout: #(#LayoutFrame 0 0.0 279 0 0 1.0 337 0)
+ #activeHelpKey: #defaultNamespace
+ #labelPosition: #topLeft
+ #translateLabel: true
+ #component:
+ #(#SpecCollection
+ #collection: #(
+ #(#InputFieldSpec
+ #name: 'EntryField4'
+ #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 22 0)
+ #model: #projectNamespace
+ #acceptChannel: #acceptChannel
+ #modifiedChannel: #modifiedChannel
+ )
+ )
+
+ )
+ )
#(#HorizontalPanelViewSpec
#name: 'HorizontalPanel1'
#layout: #(#LayoutFrame 0 0 -30 1 0 1 0 1)
@@ -897,6 +1184,7 @@
#(#ActionButtonSpec
#label: 'Cancel'
#name: 'Button1'
+ #activeHelpKey: #cancel
#translateLabel: true
#model: #cancel
#enableChannel: #modifiedChannel
@@ -906,6 +1194,7 @@
#(#ActionButtonSpec
#label: 'OK'
#name: 'Button2'
+ #activeHelpKey: #accept
#translateLabel: true
#model: #accept
#enableChannel: #modifiedChannel
@@ -915,119 +1204,6 @@
)
)
- #(#FramedBoxSpec
- #label: 'Project Type'
- #name: 'FramedBox1'
- #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 89 0)
- #labelPosition: #topLeft
- #translateLabel: true
- #component:
- #(#SpecCollection
- #collection: #(
- #(#RadioButtonSpec
- #label: 'Application'
- #name: 'RadioButton1'
- #layout: #(#LayoutFrame -1 0.0 10 0 135 0 32 0)
- #translateLabel: true
- #model: #projectType
- #isTriggerOnDown: true
- #select: #application
- )
- #(#RadioButtonSpec
- #label: 'Class Library'
- #name: 'RadioButton2'
- #layout: #(#LayoutFrame -1 0.0 38 0 135 0 60 0)
- #translateLabel: true
- #model: #projectType
- #isTriggerOnDown: true
- #select: #library
- )
- )
-
- )
- )
- #(#FramedBoxSpec
- #label: 'Directory'
- #name: 'FramedBox2'
- #layout: #(#LayoutFrame 0 0.0 89 0.0 0 1.0 149 0)
- #labelPosition: #topLeft
- #translateLabel: true
- #component:
- #(#SpecCollection
- #collection: #(
- #(#InputFieldSpec
- #name: 'EntryField1'
- #layout: #(#LayoutFrame 0 0.0 4 0 0 1.0 26 0)
- #enableChannel: #currentProjectWasNotLoadedFromFile
- #model: #projectDirectory
- #modifiedChannel: #modifiedChannel
- #acceptChannel: #acceptChannel
- )
- )
-
- )
- )
- #(#FramedBoxSpec
- #label: 'Repository'
- #name: 'FramedBox3'
- #layout: #(#LayoutFrame 0 0.0 152 0.0 0 1.0 235 0)
- #labelPosition: #topLeft
- #translateLabel: true
- #component:
- #(#SpecCollection
- #collection: #(
- #(#InputFieldSpec
- #name: 'EntryField2'
- #layout: #(#LayoutFrame 92 0.0 4 0 0 1.0 26 0)
- #model: #repositoryModule
- #modifiedChannel: #modifiedChannel
- #acceptChannel: #acceptChannel
- )
- #(#InputFieldSpec
- #name: 'EntryField3'
- #layout: #(#LayoutFrame 92 0.0 29 0 0 1.0 51 0)
- #model: #repositoryDirectory
- #modifiedChannel: #modifiedChannel
- #acceptChannel: #acceptChannel
- )
- #(#LabelSpec
- #label: 'Module:'
- #name: 'Label1'
- #layout: #(#LayoutFrame 7 0 4 0 86 0 26 0)
- #translateLabel: true
- #adjust: #right
- )
- #(#LabelSpec
- #label: 'Directory:'
- #name: 'Label2'
- #layout: #(#LayoutFrame 7 0 29 0 86 0 51 0)
- #translateLabel: true
- #adjust: #right
- )
- )
-
- )
- )
- #(#FramedBoxSpec
- #label: 'Default Namespace'
- #name: 'FramedBox4'
- #layout: #(#LayoutFrame 0 0.0 236 0 0 1.0 294 0)
- #labelPosition: #topLeft
- #translateLabel: true
- #component:
- #(#SpecCollection
- #collection: #(
- #(#InputFieldSpec
- #name: 'EntryField4'
- #layout: #(#LayoutFrame 0 0.0 4 0 0 1.0 26 0)
- #model: #projectNamespace
- #modifiedChannel: #modifiedChannel
- #acceptChannel: #acceptChannel
- )
- )
-
- )
- )
)
)
@@ -1296,6 +1472,11 @@
#(#Menu
#(
#(#MenuItem
+ #label: 'New'
+ #translateLabel: true
+ #value: #newProject
+ )
+ #(#MenuItem
#label: 'Load From...'
#translateLabel: true
#value: #openProject
@@ -1307,6 +1488,12 @@
#label: 'Save'
#translateLabel: true
#value: #saveProject
+ #enabled: #hasProjectSelectedAndProjectFilenameHolder
+ )
+ #(#MenuItem
+ #label: 'Save As...'
+ #translateLabel: true
+ #value: #saveProjectAs
#enabled: #hasProjectSelectedHolder
)
#(#MenuItem
@@ -1733,6 +1920,79 @@
"Created: / 23.3.1999 / 14:18:05 / cg"
!
+canDeliverBinaryForMacOS
+ ^ OperatingSystem platformName == #macOS
+!
+
+canDeliverBinaryForUnix
+ ^ OperatingSystem platformName == #unix
+!
+
+canDeliverBinaryForVMS
+ ^ OperatingSystem platformName == #vms
+
+!
+
+canDeliverBinaryForWin32
+ ^ OperatingSystem platformName == #win32
+!
+
+canDeliverForMacOS
+ |holder|
+
+ (holder := builder bindingAt:#canDeliverForMacOS) isNil ifTrue:[
+ holder := BlockValue
+ with:[:a1 :a2 | a1 or:[a2 not]]
+ arguments:(Array
+ with:self canDeliverBinaryForMacOS
+ with:self deliverCompiledBinary).
+ builder aspectAt:#canDeliverForMacOS put:holder.
+ ].
+ ^ holder.
+!
+
+canDeliverForUnix
+ |holder|
+
+ (holder := builder bindingAt:#canDeliverForUnix) isNil ifTrue:[
+ holder := BlockValue
+ with:[:a1 :a2 | a1 or:[a2 not]]
+ arguments:(Array
+ with:self canDeliverBinaryForUnix
+ with:self deliverCompiledBinary).
+ builder aspectAt:#canDeliverForUnix put:holder.
+ ].
+ ^ holder.
+!
+
+canDeliverForVMS
+ |holder|
+
+ (holder := builder bindingAt:#canDeliverForVMS) isNil ifTrue:[
+ holder := BlockValue
+ with:[:a1 :a2 | a1 or:[a2 not]]
+ arguments:(Array
+ with:self canDeliverBinaryForVMS
+ with:self deliverCompiledBinary).
+ builder aspectAt:#canDeliverForVMS put:holder.
+ ].
+ ^ holder.
+!
+
+canDeliverForWin32
+ |holder|
+
+ (holder := builder bindingAt:#canDeliverForWin32) isNil ifTrue:[
+ holder := BlockValue
+ with:[:a1 :a2 | a1 or:[a2 not]]
+ arguments:(Array
+ with:self canDeliverBinaryForWin32
+ with:self deliverCompiledBinary).
+ builder aspectAt:#canDeliverForWin32 put:holder.
+ ].
+ ^ holder.
+!
+
canRemoveSelectedClassFromPrerequisites
|holder|
@@ -1870,6 +2130,18 @@
"Created: / 23.3.1999 / 14:18:05 / cg"
!
+hasProjectSelectedAndProjectFilenameHolder
+ ^ [ |dir|
+
+ dir := self projectDirectory value asFilename.
+ (dir exists and:[dir isDirectory]) ifTrue:[
+ self hasProjectSelectedHolder value
+ ] ifFalse:[
+ false
+ ]
+ ].
+!
+
hasProjectSelectedHolder
|holder|
@@ -1899,13 +2171,27 @@
^ holder.
!
-installDirectory
+installDirectoryUnix
"automatically generated by UIPainter ..."
|holder|
- (holder := builder bindingAt:#installDirectory) isNil ifTrue:[
- builder aspectAt:#installDirectory put:(holder := '/opt' asValue).
+ (holder := builder bindingAt:#installDirectoryUnix) isNil ifTrue:[
+ builder aspectAt:#installDirectoryUnix put:(holder := '/opt/smalltalk' asValue).
+ holder onChangeSend:#value to:[modifiedChannel value:true].
+ ].
+ ^ holder.
+
+ "Created: / 23.3.1999 / 14:18:05 / cg"
+!
+
+installDirectoryWin32
+ "automatically generated by UIPainter ..."
+
+ |holder|
+
+ (holder := builder bindingAt:#installDirectoryWin32) isNil ifTrue:[
+ builder aspectAt:#installDirectoryWin32 put:(holder := '\Programme\SmalltalkX' asValue).
holder onChangeSend:#value to:[modifiedChannel value:true].
].
^ holder.
@@ -2052,6 +2338,24 @@
"Created: / 23.3.1999 / 14:18:05 / cg"
!
+projectPackage
+ |holder dir module|
+
+ (holder := builder bindingAt:#projectPackage) isNil ifTrue:[
+ builder aspectAt:#projectPackage put:(holder := '' asValue).
+ ].
+ holder value size == 0 ifTrue:[
+ (module := self repositoryModule value) notNil ifTrue:[
+ (dir := self repositoryDirectory value) notNil ifTrue:[
+ holder value:(module , ':' , dir)
+ ]
+ ]
+ ].
+ ^ holder.
+
+ "Created: / 23.3.1999 / 14:18:05 / cg"
+!
+
projectTreeHolder
"automatically generated by UIPainter ..."
@@ -2295,9 +2599,22 @@
(manager := Smalltalk at:#SourceCodeManager) isNil ifTrue:[^ false].
"/ does the repository contain the module/package ?
+ "/ since this is a slow operation (involving the CVS manager,
+ "/ remember checked modules here in a classVar
+ AlreadCheckedExistingModulesAndPackages isNil ifTrue:[
+ AlreadCheckedExistingModulesAndPackages := OrderedCollection new
+ ].
+ AlreadCheckedExistingModulesAndPackages do:[:entry |
+ (entry at:1) = moduleDir ifTrue:[
+ (entry at:2) = packageDir ifTrue:[
+ ^ true
+ ]
+ ]
+ ].
(manager checkForExistingModule:moduleDir package:packageDir) ifFalse:[^ false].
+ AlreadCheckedExistingModulesAndPackages add:(Array with:moduleDir with:packageDir).
^ true
!
@@ -2536,7 +2853,12 @@
self deliverSources value:(p propertyAt:#deliverSources) ? false.
self deliverLoadAllFile value:(p propertyAt:#deliverLoadAllFile) ? false.
- self installDirectory value:(p propertyAt:#installDirectory) ? '/opt'.
+ self installDirectoryUnix
+ value:(p propertyAt:#installDirectoryUnix) ?
+ ((p propertyAt:#installDirectory) ? '/opt/smalltalk').
+ self installDirectoryWin32
+ value:(p propertyAt:#installDirectoryWin32) ?
+ ((p propertyAt:#installDirectory) ? '\Programme\SmalltalkX').
l := p prerequisitePackages collect:[:entry |
|pName|
@@ -2563,7 +2885,7 @@
!
saveAspectsIntoProject
- |p s ns|
+ |p s ns dir|
p := self currentProject.
p notNil ifTrue:[
@@ -2573,7 +2895,13 @@
"/ self currentProjectWasNotLoadedFromFile value:p wasLoadedFromFile not.
p type:self projectType value.
-"/ p directory:self projectDirectory value.
+
+ dir := self projectDirectory value asFilename.
+ (dir exists and:[dir isDirectory]) ifFalse:[
+ self warn:'Invalid project directory: ' , dir pathName
+ ].
+
+ p directory:self projectDirectory value.
p repositoryModule:self repositoryModule value.
p repositoryDirectory:self repositoryDirectory value.
@@ -2592,7 +2920,8 @@
p propertyAt:#deliverGZipArchive put:self deliverGZipArchive value.
p propertyAt:#deliverLoadAllFile put:self deliverLoadAllFile value.
- p propertyAt:#installDirectory put:self installDirectory value.
+ p propertyAt:#installDirectoryUnix put:self installDirectoryUnix value.
+ p propertyAt:#installDirectoryWin32 put:self installDirectoryWin32 value.
p prerequisiteClasses:(self listOfRequiredClassesInPrerequisites value
collect:[:entry | entry string asSymbol]).
@@ -2678,19 +3007,27 @@
!
addClassesFromFilesInDirectoryWithFilter:aFilterBlockOrNil
- |project existingClasses prjDirectory anyChange|
+ |project existingClasses prjDirectory anyChange numSTFilesFound|
project := self currentProject.
existingClasses := project classInfo.
anyChange := false.
+ numSTFilesFound := 0.
prjDirectory := project directory asFilename.
+ (prjDirectory exists and:[prjDirectory isDirectory]) ifFalse:[
+ self warn:'Invalid project directory: ' , prjDirectory pathName.
+ ^ self
+ ].
+
prjDirectory directoryContents do:[:fn |
|f oldInfo cls|
f := prjDirectory construct:fn.
(f hasSuffix:'st') ifTrue:[
+ numSTFilesFound := numSTFilesFound + 1.
+
oldInfo := existingClasses
detect:[:clsInfo |
clsInfo classFileName = fn
@@ -2717,8 +3054,13 @@
]
]
].
+
anyChange ifTrue:[
self updateClassListForProject:project
+ ] ifFalse:[
+ numSTFilesFound == 0 ifTrue:[
+ self information:'No st-sourcefiles found in ' , prjDirectory pathName.
+ ]
]
!
@@ -3061,7 +3403,7 @@
w1Nm := w1 methodClass name.
w2Nm := w2 methodClass name.
- w1Nm < w2Nm methodClass name ifTrue:[
+ w1Nm < w2Nm ifTrue:[
true
] ifFalse:[
w1Nm = w2Nm ifFalse:[