diff -r bf7f7207fa07 -r 67cc88b7b310 Tools__ProjectDefinitionEditor.st --- /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 + " + + + + ^ + #(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 + " + + + + ^ + #(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 + " + + + + ^ + #(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 + " + + + + ^ + #(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 + " + + + + ^ + #(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 + " + + + + ^ + #(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 + " + + + + ^ + #(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 + " + + + + ^ #( + (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 + " + + + + ^ #( + (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 + " + + + + ^ + #(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 + " + + + + ^ + #(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 + " + + + + ^ + #(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 + " + + + + ^ + #(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 + " + + + + ^#( + (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 + " + + + + ^#( + (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 + " + + + + ^#( + (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//' ): + HTMLDocumentView openFullOnDocumentationFile:'TOP.html'. + + "/ add application-specific help files under the 'doc/online//help/appName' + "/ directory, and open a viewer with: + "/ HTMLDocumentView openFullOnDocumentationFile:'help//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$' +! !