--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__ProjectDefinitionEditor.st Tue Sep 05 18:46:36 2006 +0200
@@ -0,0 +1,1742 @@
+"{ Package: 'stx:libtool2' }"
+
+"{ NameSpace: Tools }"
+
+ResourceSpecEditor subclass:#ProjectDefinitionEditor
+ instanceVariableNames:'definitionClass classList selectedClassIndexHolder
+ classesTableColumns revisionNrHolder companyNameHolder
+ fileMajorVersionNrHolder minorVersionNrHolder iconFileNameHolder
+ fileReleaseNrHolder productNameHolder majorVersionNrHolder
+ fileRevisionNrHolder fileDescriptionHolder releaseNrHolder
+ fileMinorVersionNrHolder descriptionHolder legalCopyrightHolder
+ isApplicationDefinitionHolder isNonGUIApplicationHolder
+ startSinglethreadedHolder startupClassHolder
+ startupSelectorHolder'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Tools'
+!
+
+Object subclass:#ClassListEntry
+ instanceVariableNames:'className autoloaded win32 unix'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:ProjectDefinitionEditor
+!
+
+!ProjectDefinitionEditor class methodsFor:'documentation'!
+
+documentation
+"
+ unfinished app-definition editor
+
+ [author:]
+ cg (cg@FUSI)
+
+ [instance variables:]
+
+ [class variables:]
+
+ [see also:]
+
+"
+!
+
+examples
+"
+ Starting the application:
+ [exBegin]
+ (ProjectDefinitionEditor new
+ definitionClass:stx_libbasic) open
+ [exEnd]
+
+ [exBegin]
+ (ProjectDefinitionEditor new
+ definitionClass:bosch_dapasx_application) open
+ [exEnd]
+"
+! !
+
+!ProjectDefinitionEditor class methodsFor:'interface specs'!
+
+classesSpec
+ "This resource specification was automatically generated
+ by the UIPainter of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIPainter may not be able to read the specification."
+
+ "
+ UIPainter new openOnClass:ApplicationDefinitionEditor andSelector:#classesSpec
+ ApplicationDefinitionEditor new openInterface:#classesSpec
+ "
+
+ <resource: #canvas>
+
+ ^
+ #(FullSpec
+ name: classesSpec
+ window:
+ (WindowSpec
+ label: 'NewApplication'
+ name: 'NewApplication'
+ min: (Point 0 0)
+ bounds: (Rectangle 0 0 300 300)
+ )
+ component:
+ (SpecCollection
+ collection: (
+ (DataSetSpec
+ name: 'ClassesTable'
+ layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+ model: selectedClassIndexHolder
+ hasHorizontalScrollBar: true
+ hasVerticalScrollBar: true
+ dataList: classList
+ columnHolder: classesTableColumns
+ )
+ )
+
+ )
+ )
+!
+
+compilationSpec
+ "This resource specification was automatically generated
+ by the UIPainter of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIPainter may not be able to read the specification."
+
+ "
+ UIPainter new openOnClass:ApplicationDefinitionEditor andSelector:#compilationSpec
+ ApplicationDefinitionEditor new openInterface:#compilationSpec
+ "
+
+ <resource: #canvas>
+
+ ^
+ #(FullSpec
+ name: compilationSpec
+ window:
+ (WindowSpec
+ label: 'NewApplication'
+ name: 'NewApplication'
+ min: (Point 0 0)
+ bounds: (Rectangle 0 0 433 300)
+ )
+ component:
+ (SpecCollection
+ collection: (
+ (FramedBoxSpec
+ label: 'Optimization'
+ name: 'FramedBox1'
+ layout: (LayoutFrame 0 0 0 0 0 1 -57 0.5)
+ labelPosition: topLeft
+ translateLabel: true
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'STC Optimization Flags:'
+ name: 'Label1'
+ layout: (LayoutFrame 0 0.0 7 0 160 0 29 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'STCOptimizationFlagsEntryField'
+ layout: (LayoutFrame 162 0.0 5 0 0 1.0 27 0)
+ model: stcOptimizationFlagsHolder
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (LabelSpec
+ label: 'CC Optimization Flags:'
+ name: 'Label2'
+ layout: (LayoutFrame 0 0.0 35 0 160 0 57 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'CCOptimizationFlagsEntryField'
+ layout: (LayoutFrame 162 0.0 33 0 0 1.0 55 0)
+ model: ccOptimizationFlagsHolder
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ )
+
+ )
+ )
+ (FramedBoxSpec
+ label: 'Includes'
+ name: 'FramedBox2'
+ layout: (LayoutFrame 0 0 98 0 0 1 10 0.5)
+ labelPosition: topLeft
+ translateLabel: true
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'Additional Includes:'
+ name: 'Label3'
+ layout: (LayoutFrame 0 0.0 7 0 160 0 29 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'IncludeFlagsEntryField'
+ layout: (LayoutFrame 162 0.0 5 0 0 1.0 27 0)
+ model: includeFlagsHolder
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ )
+
+ )
+ )
+ )
+
+ )
+ )
+
+ "Modified: / 05-09-2006 / 13:28:00 / cg"
+!
+
+descriptionSpec
+ "This resource specification was automatically generated
+ by the UIPainter of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIPainter may not be able to read the specification."
+
+ "
+ UIPainter new openOnClass:ApplicationDefinitionBuilder andSelector:#descriptionSpec
+ ApplicationDefinitionBuilder new openInterface:#descriptionSpec
+ "
+
+ <resource: #canvas>
+
+ ^
+ #(FullSpec
+ name: descriptionSpec
+ window:
+ (WindowSpec
+ label: 'NewApplication'
+ name: 'NewApplication'
+ min: (Point 0 0)
+ bounds: (Rectangle 0 0 433 300)
+ )
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'Company:'
+ name: 'CompanyLabel'
+ layout: (LayoutFrame 2 0.0 13 0 160 0 35 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'CompanyEntryField'
+ layout: (LayoutFrame 162 0.0 12 0 -2 1.0 34 0)
+ model: companyNameHolder
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (LabelSpec
+ label: 'Description:'
+ name: 'DescriptionLabel'
+ layout: (LayoutFrame 2 0.0 39 0 160 0 61 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'DescriptionEntryField'
+ layout: (LayoutFrame 162 0.0 38 0 -2 1.0 60 0)
+ model: descriptionHolder
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (LabelSpec
+ label: 'ProductName:'
+ name: 'ProductNameLabel'
+ layout: (LayoutFrame 2 0.0 65 0 160 0 87 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'ProductNameEntryField'
+ layout: (LayoutFrame 162 0.0 64 0 -2 1.0 86 0)
+ model: productNameHolder
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (LabelSpec
+ label: 'ProductVersion:'
+ name: 'ProductVersionLabel'
+ layout: (LayoutFrame 2 0.0 91 0 160 0 113 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'MajorVersionNrEntryField'
+ layout: (LayoutFrame 162 0.0 90 0 182 0.0 112 0)
+ model: majorVersionNrHolder
+ type: number
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (InputFieldSpec
+ name: 'MinorVersionNrEntryField'
+ layout: (LayoutFrame 184 0.0 90 0 204 0.0 112 0)
+ model: minorVersionNrHolder
+ type: numberOrNil
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (InputFieldSpec
+ name: 'RevisionNrEntryField'
+ layout: (LayoutFrame 206 0.0 90 0 226 0.0 112 0)
+ model: revisionNrHolder
+ type: number
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (InputFieldSpec
+ name: 'ReleaseNrEntryField'
+ layout: (LayoutFrame 228 0.0 90 0 248 0.0 112 0)
+ model: releaseNrHolder
+ type: number
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (LabelSpec
+ label: 'LegalCopyright:'
+ name: 'LegalCopyrightLabel'
+ layout: (LayoutFrame 2 0.0 119 0 160 0 141 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'LegalCopyrightEntryField'
+ layout: (LayoutFrame 162 0.0 118 0 -2 1.0 140 0)
+ model: legalCopyrightHolder
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (LabelSpec
+ label: 'FileDescriptionDescription:'
+ name: 'FileDescriptionLabel'
+ layout: (LayoutFrame 2 0.0 161 0 160 0 183 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'FileDescriptionEntryField'
+ layout: (LayoutFrame 162 0.0 160 0 -2 1.0 182 0)
+ model: fileDescriptionHolder
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (LabelSpec
+ label: 'FileVersion:'
+ name: 'FileVersionLabel'
+ layout: (LayoutFrame 2 0.0 187 0 160 0 209 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'FileMajorVersionNrEntryField'
+ layout: (LayoutFrame 162 0.0 186 0 182 0.0 208 0)
+ model: fileMajorVersionNrHolder
+ type: number
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (InputFieldSpec
+ name: 'FileMinorVersionNrEntryField'
+ layout: (LayoutFrame 184 0.0 186 0 204 0.0 208 0)
+ model: fileMinorVersionNrHolder
+ type: number
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (InputFieldSpec
+ name: 'FileRevisionNrEntryField'
+ layout: (LayoutFrame 206 0.0 186 0 226 0.0 208 0)
+ model: fileRevisionNrHolder
+ type: number
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (InputFieldSpec
+ name: 'FileReleaseNrEntryField'
+ layout: (LayoutFrame 228 0.0 186 0 248 0.0 208 0)
+ model: fileReleaseNrHolder
+ type: number
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (LabelSpec
+ label: 'Icon Filename:'
+ name: 'IconFileNameLabel'
+ layout: (LayoutFrame 2 0.0 236 0 160 0 258 0)
+ visibilityChannel: isApplicationDefinitionHolder
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'IconFileNameEntryField'
+ layout: (LayoutFrame 162 0.0 234 0 -2 1.0 256 0)
+ visibilityChannel: isApplicationDefinitionHolder
+ model: iconFilenameHolder
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ )
+
+ )
+ )
+!
+
+extensionsSpec
+ "This resource specification was automatically generated
+ by the UIPainter of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIPainter may not be able to read the specification."
+
+ "
+ UIPainter new openOnClass:ApplicationDefinitionEditor andSelector:#extensionsSpec
+ ApplicationDefinitionEditor new openInterface:#extensionsSpec
+ "
+
+ <resource: #canvas>
+
+ ^
+ #(FullSpec
+ name: extensionsSpec
+ window:
+ (WindowSpec
+ label: 'NewApplication'
+ name: 'NewApplication'
+ min: (Point 0 0)
+ bounds: (Rectangle 0 0 300 300)
+ )
+ component:
+ (SpecCollection
+ collection: (
+ (DataSetSpec
+ name: 'ExtensionsTable'
+ layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+ model: selectedExtensionIndexHolder
+ hasHorizontalScrollBar: true
+ hasVerticalScrollBar: true
+ dataList: extensionsList
+ columnHolder: extensionsTableColumns
+ )
+ )
+
+ )
+ )
+!
+
+prerequisitesSpec
+ "This resource specification was automatically generated
+ by the UIPainter of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIPainter may not be able to read the specification."
+
+ "
+ UIPainter new openOnClass:ApplicationDefinitionEditor andSelector:#extensionsSpec
+ ApplicationDefinitionEditor new openInterface:#extensionsSpec
+ "
+
+ <resource: #canvas>
+
+ ^
+ #(FullSpec
+ name: extensionsSpec
+ window:
+ (WindowSpec
+ label: 'NewApplication'
+ name: 'NewApplication'
+ min: (Point 0 0)
+ bounds: (Rectangle 0 0 300 300)
+ )
+ component:
+ (SpecCollection
+ collection: (
+ (DataSetSpec
+ name: 'ExtensionsTable'
+ layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+ model: selectedPrerequisitesIndexHolder
+ hasHorizontalScrollBar: true
+ hasVerticalScrollBar: true
+ dataList: prerequisitesList
+ columnHolder: prerequisitesTableColumns
+ )
+ )
+
+ )
+ )
+
+ "Created: / 05-09-2006 / 13:21:32 / cg"
+!
+
+startupSpec
+ "This resource specification was automatically generated
+ by the UIPainter of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIPainter may not be able to read the specification."
+
+ "
+ UIPainter new openOnClass:ApplicationDefinitionEditor andSelector:#startupSpec
+ ApplicationDefinitionEditor new openInterface:#startupSpec
+ "
+
+ <resource: #canvas>
+
+ ^
+ #(FullSpec
+ name: startupSpec
+ window:
+ (WindowSpec
+ label: 'NewApplication'
+ name: 'NewApplication'
+ min: (Point 0 0)
+ bounds: (Rectangle 0 0 433 300)
+ )
+ component:
+ (SpecCollection
+ collection: (
+ (FramedBoxSpec
+ label: 'Startup'
+ name: 'FramedBox1'
+ layout: (LayoutFrame 0 0 0 0 0 1 -57 0.5)
+ labelPosition: topLeft
+ translateLabel: true
+ component:
+ (SpecCollection
+ collection: (
+ (LabelSpec
+ label: 'Startup Class:'
+ name: 'Label1'
+ layout: (LayoutFrame 0 0.0 7 0 160 0 29 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'StartupClassEntryField'
+ layout: (LayoutFrame 162 0.0 5 0 0 1.0 27 0)
+ model: startupClassHolder
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ (LabelSpec
+ label: 'Startup Selector:'
+ name: 'Label2'
+ layout: (LayoutFrame 0 0.0 35 0 160 0 57 0)
+ translateLabel: true
+ adjust: right
+ )
+ (InputFieldSpec
+ name: 'StartupSelectorEntryField'
+ layout: (LayoutFrame 162 0.0 33 0 0 1.0 55 0)
+ model: startupSelectorHolder
+ acceptOnReturn: true
+ acceptOnTab: true
+ acceptOnLostFocus: true
+ acceptOnPointerLeave: false
+ )
+ )
+
+ )
+ )
+ (FramedBoxSpec
+ label: 'Execution'
+ name: 'FramedBox2'
+ layout: (LayoutFrame 0 0 97 0 0 1 10 0.5)
+ labelPosition: topLeft
+ translateLabel: true
+ component:
+ (SpecCollection
+ collection: (
+ (CheckBoxSpec
+ label: 'Non-GUI Application'
+ name: 'CheckBox1'
+ layout: (LayoutFrame 0 0.0 7 0 0 0.5 29 0)
+ model: isNonGUIApplicationHolder
+ translateLabel: true
+ )
+ (CheckBoxSpec
+ label: 'Singlethreaded'
+ name: 'CheckBox2'
+ layout: (LayoutFrame 0 0.5 7 0 0 1 29 0)
+ enableChannel: isNonGUIApplicationHolder
+ model: startSinglethreadedHolder
+ translateLabel: true
+ )
+ )
+
+ )
+ )
+ )
+
+ )
+ )
+!
+
+windowSpec
+ "This resource specification was automatically generated
+ by the UIPainter of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIPainter may not be able to read the specification."
+
+ "
+ UIPainter new openOnClass:ApplicationDefinitionBuilder andSelector:#windowSpec
+ ApplicationDefinitionBuilder new openInterface:#windowSpec
+ ApplicationDefinitionBuilder open
+ "
+
+ <resource: #canvas>
+
+ ^
+ #(FullSpec
+ name: windowSpec
+ window:
+ (WindowSpec
+ label: 'ApplicationDefinitionBuilder'
+ name: 'ApplicationDefinitionBuilder'
+ min: (Point 10 10)
+ max: (Point 1024 768)
+ bounds: (Rectangle 0 0 596 339)
+ menu: mainMenu
+ )
+ component:
+ (SpecCollection
+ collection: (
+ (NoteBookViewSpec
+ name: 'NoteBook1'
+ layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+ model: selectedTabIndexHolder
+ menu: tabList
+ useIndex: true
+ )
+ )
+
+ )
+ )
+
+ "Modified: / 03-09-2006 / 10:57:33 / cg"
+! !
+
+!ProjectDefinitionEditor class methodsFor:'list specs'!
+
+tabListForApplication
+ "This resource specification was automatically generated
+ by the TabListEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the TabListEditor may not be able to read the specification."
+
+ "
+ TabListEditor new openOnClass: self andSelector:#tabList
+ "
+
+ <resource: #tabList>
+
+ ^ #(
+ (TabItem
+ label: 'Classes'
+ createNewBuilder: false
+ translateLabel: true
+ minorKey: classesSpec
+ )
+ (TabItem
+ label: 'Extensions'
+ minorKey: extensionsSpec
+ )
+ (TabItem
+ label: 'Prerequisites'
+ minorKey: prerequisitesSpec
+ )
+ (TabItem
+ label: 'Description'
+ minorKey: descriptionSpec
+ )
+ (TabItem
+ label: 'Compilation'
+ minorKey: compilationSpec
+ )
+ (TabItem
+ label: 'Startup'
+ minorKey: startupSpec
+ )
+ )
+
+ collect:[:aTab| TabItem new fromLiteralArrayEncoding:aTab ]
+
+ "Created: / 05-09-2006 / 16:24:48 / cg"
+!
+
+tabListForLibrary
+ "This resource specification was automatically generated
+ by the TabListEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the TabListEditor may not be able to read the specification."
+
+ "
+ TabListEditor new openOnClass: self andSelector:#tabList
+ "
+
+ <resource: #tabList>
+
+ ^ #(
+ (TabItem
+ label: 'Classes'
+ createNewBuilder: false
+ translateLabel: true
+ minorKey: classesSpec
+ )
+ (TabItem
+ label: 'Extensions'
+ minorKey: extensionsSpec
+ )
+ (TabItem
+ label: 'Prerequisites'
+ minorKey: prerequisitesSpec
+ )
+ (TabItem
+ label: 'Description'
+ minorKey: descriptionSpec
+ )
+ (TabItem
+ label: 'Compilation'
+ minorKey: compilationSpec
+ )
+ (TabItem
+ label: 'Startup'
+ minorKey: startupSpec
+ )
+ )
+
+ collect:[:aTab| TabItem new fromLiteralArrayEncoding:aTab ]
+
+ "Created: / 05-09-2006 / 16:24:52 / cg"
+! !
+
+!ProjectDefinitionEditor class methodsFor:'menu specs'!
+
+classListMenu
+ "This resource specification was automatically generated
+ by the MenuEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the MenuEditor may not be able to read the specification."
+
+ "
+ MenuEditor new openOnClass:ApplicationDefinitionEditor andSelector:#classListMenu
+ (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor classListMenu)) startUp
+ "
+
+ <resource: #menu>
+
+ ^
+ #(Menu
+ (
+ (MenuItem
+ label: 'Generate'
+ itemValue: menuGenerateClassList
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Add...'
+ itemValue: menuAddClass
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Remove...'
+ itemValue: menuRemoveClass
+ translateLabel: true
+ )
+ )
+ nil
+ nil
+ )
+!
+
+extensionsListMenu
+ "This resource specification was automatically generated
+ by the MenuEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the MenuEditor may not be able to read the specification."
+
+ "
+ MenuEditor new openOnClass:ApplicationDefinitionEditor andSelector:#extensionsListMenu
+ (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor extensionsListMenu)) startUp
+ "
+
+ <resource: #menu>
+
+ ^
+ #(Menu
+ (
+ (MenuItem
+ label: 'Generate'
+ itemValue: menuGenerateExtensionsList
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Add...'
+ itemValue: menuAddExtension
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Remove...'
+ itemValue: menuRemoveExtension
+ translateLabel: true
+ )
+ )
+ nil
+ nil
+ )
+!
+
+mainMenu
+ "This resource specification was automatically generated
+ by the MenuEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the MenuEditor may not be able to read the specification."
+
+ "
+ MenuEditor new openOnClass:ApplicationDefinitionEditor andSelector:#mainMenu
+ (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor mainMenu)) startUp
+ "
+
+ <resource: #menu>
+
+ ^
+ #(Menu
+ (
+ (MenuItem
+ label: 'File'
+ translateLabel: true
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ label: 'New'
+ itemValue: menuNew
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Open...'
+ itemValue: menuOpen
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Save'
+ itemValue: menuSave
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Save As...'
+ itemValue: menuSaveAs
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Exit'
+ itemValue: closeRequest
+ translateLabel: true
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ label: 'Classes'
+ translateLabel: true
+ isVisible: classesMenuVisibleHolder
+ submenuChannel: classListMenu
+ keepLinkedMenu: true
+ )
+ (MenuItem
+ label: 'Extensions'
+ translateLabel: true
+ isVisible: extensionsMenuVisibleHolder
+ submenuChannel: extensionsListMenu
+ keepLinkedMenu: true
+ )
+ (MenuItem
+ label: 'Prerequisites'
+ translateLabel: true
+ isVisible: prerequisitesMenuVisibleHolder
+ submenuChannel: prerequisitesListMenu
+ keepLinkedMenu: true
+ )
+ (MenuItem
+ label: 'Help'
+ translateLabel: true
+ startGroup: right
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ label: 'Documentation'
+ itemValue: openDocumentation
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'About this Application...'
+ itemValue: openAboutThisApplication
+ translateLabel: true
+ )
+ )
+ nil
+ nil
+ )
+ )
+ )
+ nil
+ nil
+ )
+!
+
+prerequisitesListMenu
+ "This resource specification was automatically generated
+ by the MenuEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the MenuEditor may not be able to read the specification."
+
+ "
+ MenuEditor new openOnClass:ApplicationDefinitionEditor andSelector:#extensionsListMenu
+ (Menu new fromLiteralArrayEncoding:(ApplicationDefinitionEditor extensionsListMenu)) startUp
+ "
+
+ <resource: #menu>
+
+ ^
+ #(Menu
+ (
+ (MenuItem
+ label: 'Generate'
+ itemValue: menuGeneratePrerequisitesList
+ translateLabel: true
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Add...'
+ itemValue: menuAddPrerequisite
+ translateLabel: true
+ )
+ (MenuItem
+ label: 'Remove...'
+ itemValue: menuRemovePrerequisite
+ translateLabel: true
+ )
+ )
+ nil
+ nil
+ )
+
+ "Modified: / 05-09-2006 / 13:24:58 / cg"
+! !
+
+!ProjectDefinitionEditor class methodsFor:'tableColumns specs'!
+
+classesTableColumns
+ "This resource specification was automatically generated
+ by the DataSetBuilder of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the DataSetBuilder may not be able to read the specification."
+
+ "
+ DataSetBuilder new openOnClass:ApplicationDefinitionEditor andSelector:#classesTableColumns
+ "
+
+ <resource: #tableColumns>
+
+ ^#(
+ (DataSetColumnSpec
+ label: 'Auto'
+ labelButtonType: Button
+ rendererType: CheckToggle
+ model: autoloaded
+ )
+ (DataSetColumnSpec
+ label: 'Win32'
+ labelButtonType: Button
+ rendererType: CheckToggle
+ model: win32
+ )
+ (DataSetColumnSpec
+ label: 'Unix'
+ labelButtonType: Button
+ rendererType: CheckToggle
+ model: unix
+ )
+ (DataSetColumnSpec
+ label: 'Class'
+ labelButtonType: Button
+ model: className
+ )
+ )
+
+!
+
+extensionsTableColumns
+ "This resource specification was automatically generated
+ by the DataSetBuilder of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the DataSetBuilder may not be able to read the specification."
+
+ "
+ DataSetBuilder new openOnClass:ApplicationDefinitionEditor andSelector:#extensionsTableColumns
+ "
+
+ <resource: #tableColumns>
+
+ ^#(
+ (DataSetColumnSpec
+ label: 'Class'
+ labelButtonType: Button
+ model: className
+ )
+ (DataSetColumnSpec
+ label: 'Selector'
+ labelButtonType: Button
+ model: selector
+ )
+ )
+
+!
+
+prerequisitesTableColumns
+ "This resource specification was automatically generated
+ by the DataSetBuilder of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the DataSetBuilder may not be able to read the specification."
+
+ "
+ DataSetBuilder new openOnClass:ApplicationDefinitionEditor andSelector:#prerequisitesTableColumns
+ "
+
+ <resource: #tableColumns>
+
+ ^#(
+ (DataSetColumnSpec
+ label: 'Package'
+ labelButtonType: Button
+ model: package
+ )
+ )
+
+! !
+
+!ProjectDefinitionEditor methodsFor:'accessing'!
+
+definitionClass
+ ^ definitionClass
+
+ "Created: / 04-09-2006 / 16:30:09 / cg"
+!
+
+definitionClass:aClass
+ definitionClass := aClass.
+ self isApplicationDefinitionHolder value:( definitionClass isApplicationDefinition ).
+
+ "Created: / 04-09-2006 / 16:30:18 / cg"
+ "Modified: / 04-09-2006 / 19:22:40 / cg"
+! !
+
+!ProjectDefinitionEditor methodsFor:'aspects'!
+
+classList
+ classList isNil ifTrue:[
+ classList := #() asValue.
+ ].
+ ^ classList.
+
+ "Modified: / 05-09-2006 / 10:22:35 / cg"
+!
+
+classesTableColumns
+ classesTableColumns isNil ifTrue:[
+ classesTableColumns := self class classesTableColumns asValue.
+ ].
+ ^ classesTableColumns.
+
+ "Modified: / 04-09-2006 / 17:58:09 / cg"
+!
+
+companyNameHolder
+ companyNameHolder isNil ifTrue:[
+ companyNameHolder := ValueHolder new.
+ ].
+ ^ companyNameHolder.
+
+ "Created: / 04-09-2006 / 17:58:02 / cg"
+!
+
+descriptionHolder
+ descriptionHolder isNil ifTrue:[
+ descriptionHolder := ValueHolder new.
+ ].
+ ^ descriptionHolder.
+
+ "Modified: / 04-09-2006 / 17:58:15 / cg"
+!
+
+fileDescriptionHolder
+ fileDescriptionHolder isNil ifTrue:[
+ fileDescriptionHolder := ValueHolder new.
+ ].
+ ^ fileDescriptionHolder.
+
+ "Modified: / 04-09-2006 / 17:58:19 / cg"
+!
+
+fileMajorVersionNrHolder
+ "automatically generated by UIPainter ..."
+
+ "*** the code below creates a default model when invoked."
+ "*** (which may not be the one you wanted)"
+ "*** Please change as required and accept it in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ fileMajorVersionNrHolder isNil ifTrue:[
+ fileMajorVersionNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ fileMajorVersionNrHolder addDependent:self.
+"/ fileMajorVersionNrHolder onChangeSend:#fileMajorVersionNrHolderChanged to:self.
+ ].
+ ^ fileMajorVersionNrHolder.
+!
+
+fileMinorVersionNrHolder
+ "automatically generated by UIPainter ..."
+
+ "*** the code below creates a default model when invoked."
+ "*** (which may not be the one you wanted)"
+ "*** Please change as required and accept it in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ fileMinorVersionNrHolder isNil ifTrue:[
+ fileMinorVersionNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ fileMinorVersionNrHolder addDependent:self.
+"/ fileMinorVersionNrHolder onChangeSend:#fileMinorVersionNrHolderChanged to:self.
+ ].
+ ^ fileMinorVersionNrHolder.
+!
+
+fileReleaseNrHolder
+ "automatically generated by UIPainter ..."
+
+ "*** the code below creates a default model when invoked."
+ "*** (which may not be the one you wanted)"
+ "*** Please change as required and accept it in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ fileReleaseNrHolder isNil ifTrue:[
+ fileReleaseNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ fileReleaseNrHolder addDependent:self.
+"/ fileReleaseNrHolder onChangeSend:#fileReleaseNrHolderChanged to:self.
+ ].
+ ^ fileReleaseNrHolder.
+!
+
+fileRevisionNrHolder
+ "automatically generated by UIPainter ..."
+
+ "*** the code below creates a default model when invoked."
+ "*** (which may not be the one you wanted)"
+ "*** Please change as required and accept it in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ fileRevisionNrHolder isNil ifTrue:[
+ fileRevisionNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ fileRevisionNrHolder addDependent:self.
+"/ fileRevisionNrHolder onChangeSend:#fileRevisionNrHolderChanged to:self.
+ ].
+ ^ fileRevisionNrHolder.
+!
+
+iconFileNameHolder
+ iconFileNameHolder isNil ifTrue:[
+ iconFileNameHolder := ValueHolder new.
+ ].
+ ^ iconFileNameHolder.
+
+ "Created: / 04-09-2006 / 18:01:22 / cg"
+!
+
+iconFilenameHolder
+ "automatically generated by UIPainter ..."
+
+ "*** the code below creates a default model when invoked."
+ "*** (which may not be the one you wanted)"
+ "*** Please change as required and accept it in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ iconFilenameHolder isNil ifTrue:[
+ iconFilenameHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ iconFilenameHolder addDependent:self.
+"/ iconFilenameHolder onChangeSend:#iconFilenameHolderChanged to:self.
+ ].
+ ^ iconFilenameHolder.
+!
+
+isApplicationDefinitionHolder
+ isApplicationDefinitionHolder isNil ifTrue:[
+ isApplicationDefinitionHolder := false asValue
+ ].
+ ^ isApplicationDefinitionHolder.
+
+ "Created: / 04-09-2006 / 19:22:47 / cg"
+!
+
+isNonGUIApplicationHolder
+ isNonGUIApplicationHolder isNil ifTrue:[
+ isNonGUIApplicationHolder := false asValue.
+ ].
+ ^ isNonGUIApplicationHolder.
+
+ "Created: / 05-09-2006 / 13:34:31 / cg"
+!
+
+legalCopyrightHolder
+ "automatically generated by UIPainter ..."
+
+ "*** the code below creates a default model when invoked."
+ "*** (which may not be the one you wanted)"
+ "*** Please change as required and accept it in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ legalCopyrightHolder isNil ifTrue:[
+ legalCopyrightHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ legalCopyrightHolder addDependent:self.
+"/ legalCopyrightHolder onChangeSend:#legalCopyrightHolderChanged to:self.
+ ].
+ ^ legalCopyrightHolder.
+!
+
+majorVersionNrHolder
+ "automatically generated by UIPainter ..."
+
+ "*** the code below creates a default model when invoked."
+ "*** (which may not be the one you wanted)"
+ "*** Please change as required and accept it in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ majorVersionNrHolder isNil ifTrue:[
+ majorVersionNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ majorVersionNrHolder addDependent:self.
+"/ majorVersionNrHolder onChangeSend:#majorVersionNrHolderChanged to:self.
+ ].
+ ^ majorVersionNrHolder.
+!
+
+minorVersionNrHolder
+ "automatically generated by UIPainter ..."
+
+ "*** the code below creates a default model when invoked."
+ "*** (which may not be the one you wanted)"
+ "*** Please change as required and accept it in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ minorVersionNrHolder isNil ifTrue:[
+ minorVersionNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ minorVersionNrHolder addDependent:self.
+"/ minorVersionNrHolder onChangeSend:#minorVersionNrHolderChanged to:self.
+ ].
+ ^ minorVersionNrHolder.
+!
+
+productNameHolder
+ "automatically generated by UIPainter ..."
+
+ "*** the code below creates a default model when invoked."
+ "*** (which may not be the one you wanted)"
+ "*** Please change as required and accept it in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ productNameHolder isNil ifTrue:[
+ productNameHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ productNameHolder addDependent:self.
+"/ productNameHolder onChangeSend:#productNameHolderChanged to:self.
+ ].
+ ^ productNameHolder.
+!
+
+releaseNrHolder
+ "automatically generated by UIPainter ..."
+
+ "*** the code below creates a default model when invoked."
+ "*** (which may not be the one you wanted)"
+ "*** Please change as required and accept it in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ releaseNrHolder isNil ifTrue:[
+ releaseNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ releaseNrHolder addDependent:self.
+"/ releaseNrHolder onChangeSend:#releaseNrHolderChanged to:self.
+ ].
+ ^ releaseNrHolder.
+!
+
+revisionNrHolder
+ "automatically generated by UIPainter ..."
+
+ "*** the code below creates a default model when invoked."
+ "*** (which may not be the one you wanted)"
+ "*** Please change as required and accept it in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ revisionNrHolder isNil ifTrue:[
+ revisionNrHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ revisionNrHolder addDependent:self.
+"/ revisionNrHolder onChangeSend:#revisionNrHolderChanged to:self.
+ ].
+ ^ revisionNrHolder.
+!
+
+selectedClassIndexHolder
+ "automatically generated by UIPainter ..."
+
+ "*** the code below creates a default model when invoked."
+ "*** (which may not be the one you wanted)"
+ "*** Please change as required and accept it in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ selectedClassIndexHolder isNil ifTrue:[
+ selectedClassIndexHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ selectedClassIndexHolder addDependent:self.
+"/ selectedClassIndexHolder onChangeSend:#selectedClassIndexHolderChanged to:self.
+ ].
+ ^ selectedClassIndexHolder.
+!
+
+startSinglethreadedHolder
+ startSinglethreadedHolder isNil ifTrue:[
+ startSinglethreadedHolder := false asValue.
+ ].
+ ^ startSinglethreadedHolder.
+
+ "Created: / 05-09-2006 / 13:34:54 / cg"
+!
+
+startupClassHolder
+ startupClassHolder isNil ifTrue:[
+ startupClassHolder := '' asValue.
+ ].
+ ^ startupClassHolder.
+
+ "Created: / 05-09-2006 / 13:34:08 / cg"
+!
+
+startupSelectorHolder
+ startupSelectorHolder isNil ifTrue:[
+ startupSelectorHolder := '' asValue.
+ ].
+ ^ startupSelectorHolder.
+
+ "Created: / 05-09-2006 / 13:34:20 / cg"
+!
+
+tabList
+ "Generated by the TabListEditor"
+
+ |list|
+
+ (list := builder bindingAt:#tabList) isNil ifTrue:[
+ builder aspectAt:#tabList put:(list := self class tabListForApplication asValue).
+ ].
+ ^ list
+
+ "Modified: / 05-09-2006 / 16:28:09 / cg"
+! !
+
+!ProjectDefinitionEditor methodsFor:'aspects-menu'!
+
+classesMenuVisibleHolder
+ ^ builder booleanValueAspectFor:#'classesMenuVisibleHolder'
+
+ "Modified: / 03-09-2006 / 10:57:00 / cg"
+!
+
+extensionsMenuVisibleHolder
+ ^ builder booleanValueAspectFor:#'extensionsMenuVisibleHolder'
+
+ "Created: / 05-09-2006 / 13:03:16 / cg"
+!
+
+prerequisitesMenuVisibleHolder
+ ^ builder booleanValueAspectFor:#'prerequisitesMenuVisibleHolder'
+
+ "Created: / 05-09-2006 / 13:26:45 / cg"
+!
+
+selectedTabIndexHolder
+ |h|
+
+ h := builder valueAspectFor:#'selectedTabIndexHolder' initialValue:nil.
+ h addDependent:self.
+ ^ h
+
+ "Created: / 03-09-2006 / 10:58:05 / cg"
+! !
+
+!ProjectDefinitionEditor methodsFor:'change & update'!
+
+fetchClassListEntries
+ |entries|
+
+ entries := OrderedCollection new.
+ definitionClass
+ classNamesAndAttributesDo:[:className :attributes |
+ |entry|
+
+ entry := ClassListEntry new.
+ entry
+ className:className
+ autoloaded:(attributes includes:#autoload)
+ win32:(attributes includes:#win32)
+ unix:(attributes includes:#unix).
+ entries add:entry.
+ ].
+
+ ^ entries.
+
+ "Created: / 05-09-2006 / 12:31:26 / cg"
+!
+
+fetchValues
+ |definitionClass isApplicationDefinition|
+
+ definitionClass := self definitionClass.
+ definitionClass isNil ifTrue:[^ self ].
+
+ isApplicationDefinition := definitionClass isApplicationDefinition.
+
+ self isApplicationDefinitionHolder value:isApplicationDefinition.
+ isApplicationDefinition ifTrue:[
+ self startupClassHolder value:(definitionClass startupClass).
+ self startupSelectorHolder value:(definitionClass startupSelector).
+ self iconFileNameHolder value:(definitionClass iconFileName).
+ self tabList value:(self class tabListForApplication).
+ ] ifFalse:[
+ self tabList value:(self class tabListForLibrary).
+ ].
+
+ self companyNameHolder value:(definitionClass companyName).
+ self descriptionHolder value:(definitionClass description).
+ self legalCopyrightHolder value:(definitionClass legalCopyright).
+ self productNameHolder value:(definitionClass productName).
+ self majorVersionNrHolder value:(definitionClass majorVersionNr asInteger).
+ self minorVersionNrHolder value:(definitionClass minorVersionNr asInteger).
+ self revisionNrHolder value:(definitionClass revisionNr asInteger).
+ self releaseNrHolder value:(definitionClass releaseNr asInteger).
+
+ self fileDescriptionHolder value:(definitionClass fileDescription).
+ self fileMajorVersionNrHolder value:(definitionClass fileMajorVersionNr asInteger).
+ self fileMinorVersionNrHolder value:(definitionClass fileMinorVersionNr asInteger).
+ self fileRevisionNrHolder value:(definitionClass fileRevisionNr asInteger).
+ self fileReleaseNrHolder value:(definitionClass fileReleaseNr asInteger).
+
+ self classList value:(self fetchClassListEntries).
+
+ self window
+ label:(isApplicationDefinition
+ ifTrue:'Application'
+ ifFalse:'Library' )
+ , ' Definition: ',definitionClass name.
+
+ "Created: / 04-09-2006 / 16:34:39 / cg"
+ "Modified: / 05-09-2006 / 16:26:45 / cg"
+!
+
+update:something with:parameter from:changedObject
+ changedObject == self selectedTabIndexHolder ifTrue:[
+ self updateMenuVisibility.
+ ^ self.
+ ].
+ ^ super update:something with:parameter from:changedObject
+
+ "Created: / 03-09-2006 / 10:59:42 / cg"
+!
+
+updateMenuVisibility
+ self classesMenuVisibleHolder value:(self hasClassesTabSelected).
+ self extensionsMenuVisibleHolder value:(self hasExtensionsTabSelected).
+ self prerequisitesMenuVisibleHolder value:(self hasPrerequisitesTabSelected).
+
+ "Created: / 03-09-2006 / 11:01:48 / cg"
+ "Modified: / 05-09-2006 / 13:27:10 / cg"
+! !
+
+!ProjectDefinitionEditor methodsFor:'initialization & release'!
+
+closeRequest
+ (self hasUnsavedChanges) ifTrue:[
+ (self confirm:(resources string:'Close without saving ?')) ifFalse:[
+ ^ self
+ ]
+ ].
+
+ ^ super closeRequest
+
+ "Modified: / 03-09-2006 / 10:53:14 / cg"
+!
+
+postBuildWith:aBuilder
+ super postBuildWith:aBuilder.
+ self selectedTabIndexHolder value:1.
+ self updateMenuVisibility.
+ self fetchValues.
+
+ "Modified: / 04-09-2006 / 16:28:09 / cg"
+!
+
+postOpenWith:aBuilder
+ "This is a hook method generated by the Browser.
+ It will be invoked right after the applications window has been opened.
+ Add any app-specific actions here (starting background processes etc.).
+ See also #postBuildWith:, which is invoked before opening."
+
+ "/ add any code here ...
+
+ ^ super postOpenWith:aBuilder
+! !
+
+!ProjectDefinitionEditor methodsFor:'menu actions'!
+
+menuNew
+ "This method was generated by the Browser.
+ It will be invoked when the menu-item 'new' is selected."
+
+ "/ change below and add any actions as required here ...
+ self warn:'no action for ''new'' available.'.
+!
+
+menuOpen
+ self warn:'no action for ''open'' defined.'.
+
+ "Modified: / 05-09-2006 / 16:28:51 / cg"
+!
+
+menuSave
+ self menuSaveAs:definitionClass name
+
+ "Modified: / 05-09-2006 / 13:48:27 / cg"
+!
+
+menuSaveAs
+ |className class newPackage|
+
+ className := Dialog
+ requestClassName:'Name of new Definition class'
+ okLabel:'Create'
+ initialAnswer:'privete_myProject'.
+ className isEmptyOrNil ifTrue:[^ self].
+ class := Smalltalk classNamed:className.
+ class notNil ifTrue:[
+ Dialog warn:(resources
+ string:'A class named %1 already exists'
+ with:className).
+ ^ self.
+ ].
+ newPackage := className copy replaceAll:$_ with:$/.
+ newPackage replace:$/ with:$:.
+ class := ApplicationDefinition newNamed:className package:newPackage.
+ self menuSaveAs:class.
+
+ "Modified: / 05-09-2006 / 16:20:16 / cg"
+!
+
+menuSaveAs:aClassName
+ self halt.
+
+ "Created: / 05-09-2006 / 13:48:03 / cg"
+!
+
+openAboutThisApplication
+ "This method was generated by the Browser.
+ It will be invoked when the menu-item 'help-about' is selected."
+
+ "/ could open a customized aboutBox here ...
+ super openAboutThisApplication
+!
+
+openDocumentation
+ "This method was generated by the Browser.
+ It will be invoked when the menu-item 'help-documentation' is selected."
+
+ "/ change below as required ...
+
+ "/ to open an HTML viewer on some document (under 'doc/online/<language>/' ):
+ HTMLDocumentView openFullOnDocumentationFile:'TOP.html'.
+
+ "/ add application-specific help files under the 'doc/online/<language>/help/appName'
+ "/ directory, and open a viewer with:
+ "/ HTMLDocumentView openFullOnDocumentationFile:'help/<MyApplication>/TOP.html'.
+! !
+
+!ProjectDefinitionEditor methodsFor:'queries'!
+
+hasClassesTabSelected
+ ^ self selectedTabIndex == 1
+
+ "Created: / 03-09-2006 / 11:00:39 / cg"
+!
+
+hasExtensionsTabSelected
+ ^ self selectedTabIndex == 2
+
+ "Created: / 05-09-2006 / 13:02:26 / cg"
+!
+
+hasPrerequisitesTabSelected
+ ^ self selectedTabIndex == 3
+
+ "Created: / 05-09-2006 / 13:27:16 / cg"
+!
+
+hasUnsavedChanges
+ ^ false
+
+ "Created: / 03-09-2006 / 10:53:05 / cg"
+!
+
+selectedTabIndex
+ ^ self selectedTabIndexHolder value
+
+ "Created: / 03-09-2006 / 11:00:48 / cg"
+! !
+
+!ProjectDefinitionEditor::ClassListEntry methodsFor:'accessing'!
+
+autoloaded
+ ^ autoloaded
+!
+
+autoloaded:something
+ autoloaded := something.
+!
+
+className
+ ^ className
+!
+
+className:something
+ className := something.
+!
+
+className:classNameArg autoloaded:autoloadedArg win32:win32Arg unix:unixArg
+ className := classNameArg.
+ autoloaded := autoloadedArg.
+ win32 := win32Arg.
+ unix := unixArg.
+!
+
+unix
+ ^ unix
+!
+
+unix:something
+ unix := something.
+!
+
+win32
+ ^ win32
+!
+
+win32:something
+ win32 := something.
+! !
+
+!ProjectDefinitionEditor class methodsFor:'documentation'!
+
+version
+ ^ '$Header$'
+! !