"{ Package: 'stx:libtool2' }"
"{ NameSpace: Tools }"
ResourceSpecEditor subclass:#ProjectDefinitionEditor
instanceVariableNames:'definitionClass classList extensionsList selectedClassIndexHolder
classesTableColumns revisionNrHolder companyNameHolder
fileMajorVersionNrHolder minorVersionNrHolder iconFileNameHolder
fileReleaseNrHolder productNameHolder majorVersionNrHolder
fileRevisionNrHolder fileDescriptionHolder releaseNrHolder
fileMinorVersionNrHolder descriptionHolder legalCopyrightHolder
isApplicationDefinitionHolder isNonGUIApplicationHolder
startSinglethreadedHolder startupClassNameHolder
startupSelectorHolder'
classVariableNames:''
poolDictionaries:''
category:'Interface-Tools'
!
Object subclass:#ClassListEntry
instanceVariableNames:'className autoloaded win32 unix'
classVariableNames:''
poolDictionaries:''
privateIn:ProjectDefinitionEditor
!
Object subclass:#ExtensionsListEntry
instanceVariableNames:'className selector'
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: startupClassNameHolder
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
)
)
)
)
)
)
)
"Modified: / 06-09-2006 / 18:41:56 / cg"
!
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'!
tabList
^ self tabListForApplication.
"Created: / 06-09-2006 / 13:38:03 / cg"
!
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: 'Description'
minorKey: descriptionSpec
)
(TabItem
label: 'Classes'
createNewBuilder: false
translateLabel: true
minorKey: classesSpec
)
(TabItem
label: 'Extensions'
minorKey: extensionsSpec
)
(TabItem
label: 'Prerequisites'
minorKey: prerequisitesSpec
)
(TabItem
label: 'Compilation'
minorKey: compilationSpec
)
(TabItem
label: 'Startup'
minorKey: startupSpec
)
)
collect:[:aTab| TabItem new fromLiteralArrayEncoding:aTab ]
"Created: / 05-09-2006 / 16:24:48 / cg"
"Modified: / 06-09-2006 / 18:44:34 / 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: 'Description'
minorKey: descriptionSpec
)
(TabItem
label: 'Classes'
createNewBuilder: false
translateLabel: true
minorKey: classesSpec
)
(TabItem
label: 'Extensions'
minorKey: extensionsSpec
)
(TabItem
label: 'Prerequisites'
minorKey: prerequisitesSpec
)
(TabItem
label: 'Compilation'
minorKey: compilationSpec
)
)
collect:[:aTab| TabItem new fromLiteralArrayEncoding:aTab ]
"Created: / 05-09-2006 / 16:24:52 / cg"
"Modified: / 06-09-2006 / 18:44:38 / 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:Tools::ProjectDefinitionEditor andSelector:#classesTableColumns
"
<resource: #tableColumns>
^#(
(DataSetColumnSpec
label: 'Auto'
labelButtonType: Button
rendererType: CheckToggle
model: autoloaded
canSelect: false
)
(DataSetColumnSpec
label: 'Win32'
labelButtonType: Button
rendererType: CheckToggle
model: win32
canSelect: false
)
(DataSetColumnSpec
label: 'Unix'
labelButtonType: Button
rendererType: CheckToggle
model: unix
canSelect: false
)
(DataSetColumnSpec
label: 'Class'
labelButtonType: Button
model: className
canSelect: false
)
)
!
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:Tools::ProjectDefinitionEditor andSelector:#extensionsTableColumns
"
<resource: #tableColumns>
^#(
(DataSetColumnSpec
label: 'Class'
labelButtonType: Button
model: className
canSelect: false
)
(DataSetColumnSpec
label: 'Selector'
labelButtonType: Button
model: selector
canSelect: false
)
)
!
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"
!
extensionsList
extensionsList isNil ifTrue:[
extensionsList := #() asValue.
].
^ extensionsList.
"Created: / 06-09-2006 / 18:47:54 / 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"
!
startupClassNameHolder
startupClassNameHolder isNil ifTrue:[
startupClassNameHolder := '' asValue.
].
^ startupClassNameHolder.
"Created: / 06-09-2006 / 18:41:52 / 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: / 06-09-2006 / 17:58:08 / 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"
!
fetchExtensionsListEntries
|entries|
entries := OrderedCollection new.
definitionClass
extensionMethodNames pairWiseDo:[:className :selector |
|entry|
entry := ExtensionsListEntry new.
entry className:className selector:selector.
entries add:entry.
].
^ entries.
"Created: / 06-09-2006 / 18:45:15 / cg"
!
fetchValues
|definitionClass isApplicationDefinition|
definitionClass := self definitionClass.
definitionClass isNil ifTrue:[^ self ].
isApplicationDefinition := definitionClass isApplicationDefinition.
self isApplicationDefinitionHolder value:isApplicationDefinition.
isApplicationDefinition ifTrue:[
self startupClassNameHolder value:(definitionClass startupClassName).
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 extensionsList value:(self fetchExtensionsListEntries).
self window
label:(isApplicationDefinition
ifTrue:'Application'
ifFalse:'Library' )
, ' Definition: ',definitionClass name.
"Created: / 04-09-2006 / 16:34:39 / cg"
"Modified: / 06-09-2006 / 18:45: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::ExtensionsListEntry methodsFor:'accessing'!
className
^ className
!
className:classNameArg selector:selectorArg
className := classNameArg.
selector := selectorArg.
!
selector
^ selector
! !
!ProjectDefinitionEditor class methodsFor:'documentation'!
version
^ '$Header$'
! !