author | Claus Gittinger <cg@exept.de> |
Wed, 26 Sep 2012 21:00:43 +0200 | |
changeset 2928 | 74762eba597e |
parent 2926 | c18d456bb5b3 |
child 2929 | f24fa4b3758d |
permissions | -rw-r--r-- |
2742 | 1 |
" |
2 |
COPYRIGHT (c) 2009 by eXept Software AG |
|
3 |
All Rights Reserved |
|
4 |
||
5 |
This software is furnished under a license and may be used |
|
6 |
only in accordance with the terms of that license and with the |
|
7 |
inclusion of the above copyright notice. This software may not |
|
8 |
be provided or otherwise made available to, or used by, any |
|
9 |
other person. No title to or ownership of the software is |
|
10 |
hereby transferred. |
|
11 |
" |
|
2636 | 12 |
"{ Package: 'stx:libtool2' }" |
13 |
||
14 |
"{ NameSpace: Tools }" |
|
15 |
||
16 |
AssistantApplication subclass:#ProjectBuilderAssistantApplication |
|
2687
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
17 |
instanceVariableNames:'packageToBuildHolder projectType projectTypeHolder |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
18 |
selectedProjectIndexHolder selectedProjectDefinition |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
19 |
listOfMatchingProjects listOfMatchingPackageIds |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
20 |
selectedProjectsComment hasProjectSelectedHolder newProjectsName |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
21 |
hideSTXProjects hideOtherApplicationClasses |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
22 |
hideOtherStartupClasses startMakeButtonEnabled |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
23 |
stopMakeButtonVisible makeOutputHolder newApplicationsName |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
24 |
listOfApplicationsInProject selectedApplicationIndexHolder |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
25 |
selectedApplication hasApplicationSelectedHolder |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
26 |
listOfStartupClassesInProject selectedStartupClassIndexHolder |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
27 |
selectedStartupClass hasStartupClassSelectedHolder |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
28 |
selectedApplicationsComment buildDirectoryHolder makeProcess |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
29 |
listOfClassesInProject makeOutputWindow projectBuilder |
2705 | 30 |
newStartupClassName usedCompilerHolder listOfNewProjectsName |
2724 | 31 |
newProjectsNameListExtendedComboBox productNameHolder |
32 |
companyNameHolder compilerWarnMessageHolder |
|
2910 | 33 |
compilerWarnMessageVisibleHolder listOfPrerequisitesInProject |
2919 | 34 |
nameOfUsedCompilerSuiteHolder usedCompilerIndexHolder' |
2913 | 35 |
classVariableNames:'LastUsedCompiler' |
2687
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
36 |
poolDictionaries:'' |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
37 |
category:'System-Support-Projects' |
2636 | 38 |
! |
39 |
||
2668 | 40 |
!ProjectBuilderAssistantApplication class methodsFor:'documentation'! |
41 |
||
2742 | 42 |
copyright |
43 |
" |
|
44 |
COPYRIGHT (c) 2009 by eXept Software AG |
|
45 |
All Rights Reserved |
|
46 |
||
47 |
This software is furnished under a license and may be used |
|
48 |
only in accordance with the terms of that license and with the |
|
49 |
inclusion of the above copyright notice. This software may not |
|
50 |
be provided or otherwise made available to, or used by, any |
|
51 |
other person. No title to or ownership of the software is |
|
52 |
hereby transferred. |
|
53 |
" |
|
54 |
! |
|
55 |
||
2668 | 56 |
documentation |
57 |
" |
|
58 |
a user friendly interface to the build process. |
|
59 |
Simply wraps up existing tools like the CodeGeneratorTool, the browsers |
|
60 |
and the ProjetBuilder |
|
61 |
||
62 |
[see also:] |
|
63 |
CodeGeneratorTool |
|
64 |
ProjectBuilder |
|
65 |
ProjectDefinition |
|
66 |
||
67 |
[author:] |
|
68 |
Claus Gittinger |
|
69 |
" |
|
2721 | 70 |
! |
71 |
||
72 |
help |
|
2825 | 73 |
" |
74 |
Packager - A Standalone-Executable Builder and Packager |
|
2721 | 75 |
|
2825 | 76 |
This assistant-application allows for standalone applications to be built very easily. |
77 |
It will generate all required classes, files, start the compilation process, |
|
78 |
generate a self-installable executable with a few mouse clicks. |
|
79 |
||
80 |
A simple demo application like the famous 'Hello World' can be generated in a few minutes. |
|
81 |
||
82 |
Prerequisites |
|
83 |
||
84 |
* Windows Users: |
|
85 |
Please install either the 'Borland Free Commandline Compiler Tools (bcc32)' |
|
86 |
or the 'Microsoft Visual-C++' package (also free). |
|
87 |
In addition, the 'NullSoft NSIS-Installer Package' is required. |
|
88 |
||
89 |
Due to limitations and bugs in the Visual-C++ compiler (limit on the size of |
|
90 |
string-constants), some Smalltalk code is still not compilable |
|
91 |
(currently, this affects classes which contain image-resource methods for big images). |
|
92 |
Although microsoft is doing their best (a relative measure) to make things better |
|
93 |
(they increase the string-limit with every new release), they still seem to be unable |
|
94 |
to figure out how ti use malloc for string-data). |
|
95 |
We are patiently waiting for a real fix and still using bcc in the meanwhile. |
|
96 |
Therefore, we recommend using the borland compiler suite. |
|
97 |
Please install it at its standard location ('C:\Borland') as our makefiles might |
|
98 |
still contain hard-coded pathes (yes, we are ashamed about this). |
|
99 |
||
100 |
* Unix Users: |
|
101 |
You should already have the gcc compile suite (including all required header files) |
|
102 |
installed and ready to use. For a lack of time on our side, there is currently no |
|
103 |
self-installer support for Unix. The packager will generate a zipped tar file, |
|
104 |
which must be deployed and unpacked for use. This may change in the near future. |
|
105 |
||
106 |
Packages, Projects, PackageIDs and ProjectDefinitions |
|
107 |
||
108 |
Smalltalk basically uses two objects for packaging: |
|
109 |
||
110 |
* PackageIDs (also called ProjectID's occasionally) |
|
111 |
* ProjectDefinitions |
|
112 |
||
113 |
Older ST/X versions used instances of a Project class - this is now obsolete and |
|
114 |
removed from the system (although there are still some minor uses of it, |
|
115 |
which might remain there for backward compatibility for some time, as some customers |
|
116 |
have built their own packaging scheme around it). |
|
117 |
||
118 |
PackageIDs |
|
119 |
||
120 |
These are simple symbols and are attached to classes and methods. If a method has |
|
121 |
a packageID different from its class, it is called an extension method. |
|
122 |
PackageIDs must have a certain fixed format: they always contain exactly two parts, |
|
123 |
which are separated by a colon character: the module and the directory part. |
|
124 |
The module is used as main-selector on where and how the source code repository is |
|
125 |
accessed. The directory is a path below that repository. If checked out into the local |
|
126 |
filesystem, the module defines the top-level directory. Thus, if a packageID is |
|
127 |
'stx:libbasic', the corresponding sources will be found in the repository associated |
|
128 |
to the 'stx' module, under the directory 'libbasic'. |
|
129 |
In the local file system, it will be found under 'stx/libbasic'. |
|
130 |
As another example, if the packageID is 'exept:expecco/plugins/foo', |
|
131 |
the repository is whichever is associated with the 'exept' module, and the subdirectory |
|
132 |
is 'expecco/plugins/foo'. The local path to the sourcefiles would be |
|
133 |
'exept/expecco/plugins/foo'. |
|
134 |
||
135 |
Please notice that it does make sense to associate different repositories to different |
|
136 |
modules: for example, you could setup the sourceCodeManager to use CVS access to the |
|
137 |
exept repository for everything under the 'stx' module, |
|
138 |
and at the same time, use a local SVN repository for everything under the 'myCompany' |
|
139 |
module. |
|
140 |
||
141 |
ProjectDefinitions |
|
142 |
||
143 |
These describe the contents of a project, such as the classes to include, |
|
144 |
the set of extension methods, any additional compilation information. |
|
145 |
ProjectDefinitions come in 3 flavours: |
|
146 |
||
147 |
* GUI Application Definition |
|
148 |
* non-GUI Application Definition |
|
149 |
* ClassLibrary Definition |
|
150 |
||
151 |
ProjectDefinitions are stored and managed as class-instances, located as subclasses |
|
152 |
of one of ApplicationDefinition or LibraryDefinition. |
|
153 |
As classes, they are themself managed, compiled and packaged as part of the project |
|
154 |
(and also have the same PackageID as their components). |
|
155 |
They are also treated like any other class w.r.t. source code management. |
|
156 |
||
157 |
Packaging |
|
158 |
||
159 |
All classes and extension methods belonging to a single package are supposed to be |
|
160 |
loaded (and possibly unloaded) together. They are also usually deployed inside a single |
|
161 |
dynamic link library ('dll', for short). In the Unix world, these are called |
|
162 |
'shared object' or 'so'. |
|
163 |
Finally, they are stored in a common directory both on the local file system and in a |
|
164 |
source code repository (CVS, SVN, etc.). |
|
165 |
||
166 |
Structure of a Project |
|
167 |
||
168 |
The artefacts as manipulated by the packager are: |
|
169 |
||
170 |
* the ProjectDefinition class |
|
171 |
This defines the type of application (GUI / non-GUI), |
|
172 |
its contents (i.e. the set of classes to be included in the binary itself and |
|
173 |
the set of library-dll's to be included in the deployed package), |
|
174 |
and some other metadata, such as icon, title etc. |
|
175 |
||
176 |
* the ApplicationModel class |
|
177 |
This defines the GUI, and is typically created using the UI-Painter. |
|
178 |
||
179 |
* the Startup class |
|
180 |
This is the first class which gets control when the executable is started; |
|
181 |
it can analyze the command line arguments, read patches or updates, |
|
182 |
start background ptocesses, and will eventually open the applications GUI. |
|
183 |
||
184 |
Build Procedure |
|
185 |
||
186 |
All of the three components above can be generated by the packager to provide an |
|
187 |
initial framework for further work. |
|
188 |
||
189 |
After the definition of those classes, all required files are stored in a temporary |
|
190 |
build directory. This means that the above classes are filed out, |
|
191 |
and make- and other support files are generated. |
|
192 |
||
193 |
Finally, the actual build process is started. This requires an external C-compiler. |
|
194 |
Under windows, both Borland-C (free download available via the internet) and Microsoft's |
|
195 |
Visual-C++ (also available for free) can be used (the later with some limitations as explained above). |
|
196 |
||
197 |
A self-installing executable is built using the NullSoft NSIS package. |
|
198 |
This is also required to be installed before the packager is started. |
|
199 |
||
200 |
After the build, all required files are packaged in a single install-file. |
|
201 |
This is called 'MyApplicationSetup.exe' and found in the project-specific subdirectory |
|
202 |
of the build directory. For deployment, this single file has to be delivered to a customer |
|
203 |
and executed there. |
|
204 |
||
205 |
Summary: It has NEVER been easier to create a GUI application with Smalltalk. |
|
206 |
" |
|
2668 | 207 |
! ! |
2636 | 208 |
|
2703 | 209 |
!ProjectBuilderAssistantApplication class methodsFor:'assistant pages spec'! |
210 |
||
211 |
assistantSpec |
|
212 |
^ #(Array |
|
213 |
( AssistantPageSpec |
|
214 |
pageTitle: 'Project Type Selection' |
|
215 |
windowSpecSelector: page1_projectTypeSelectionSpec |
|
216 |
enterCallbackSelector: updateListOfMatchingProjects |
|
217 |
infoText: 'Choose the <B>type</B> of project you are about to build.' |
|
218 |
) |
|
219 |
||
220 |
(AssistantPageSpec |
|
221 |
pageTitle: 'ProjectDefinition Selection' |
|
222 |
windowSpecSelector: page2_projectSelectionSpec |
|
2907
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
223 |
enterCallbackSelector: updateListOfMatchingProjectsAndProjectIDs |
2913 | 224 |
leaveCallbackSelector: fetchAttributesFromProjectDefinition |
2907
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
225 |
infoText: 'Choose an existing project definition or create a new one. These are subclasses of <I>ProjectDefinition</I> and define the type and contents of a project. Notice that the ID directly reflects the project''s location within the source code repository (module:directory/subdirectory...). If in doubt, use "<yourname>:demos/xxx_n".' |
2703 | 226 |
) |
227 |
||
228 |
(AssistantPageSpec |
|
229 |
pageTitle: 'Startup Application Selection' |
|
230 |
windowSpecSelector: page3_applicationSelectionSpec |
|
231 |
isEnabledQuerySelector: #projectTypeIsGuiApplication |
|
232 |
canEnterQuerySelector: #canEnterApplicationSelection |
|
233 |
enterCallbackSelector: updateListOfApplicationsInProject |
|
2825 | 234 |
infoText: 'Choose an existing application or create a new one. These are subclasses of <I>ApplicationModel</I> and define the GUI and control flow inside the application. Can also be left blank if the startup class does it all (stx build).' |
2703 | 235 |
) |
236 |
||
237 |
(AssistantPageSpec |
|
238 |
pageTitle: 'Startup Class Selection' |
|
239 |
windowSpecSelector: page4_startupClassSelectionSpec |
|
240 |
isEnabledQuerySelector: #projectTypeIsNotLibrary |
|
241 |
canEnterQuerySelector: #canEnterStartupClassSelection |
|
242 |
enterCallbackSelector: updateListOfStartupClassesInProject |
|
2825 | 243 |
infoText: 'Choose an existing startup-class or create a new one. These are subclasses of <I>StandaloneStartup</I> and start the application. Command line arguments can be interpreted there.' |
2703 | 244 |
) |
245 |
||
246 |
(AssistantPageSpec |
|
247 |
pageTitle: 'Specify Contents' |
|
248 |
windowSpecSelector: page5_specifyIncludedClasses |
|
249 |
enterCallbackSelector: enterContentsSpecification |
|
250 |
canEnterQuerySelector: #canEnterContentsSelection |
|
2825 | 251 |
infoText: 'Define which (other) classes are to be included. Press "<I>Scan</I>" to include all classes of the package; browse to edit the contents manually.' |
2703 | 252 |
) |
253 |
||
254 |
(AssistantPageSpec |
|
2872 | 255 |
pageTitle: 'Specify Prerequisites' |
256 |
windowSpecSelector: page5b_specifyPrerequisitePackages |
|
257 |
enterCallbackSelector: enterPrerequisitesSpecification |
|
258 |
canEnterQuerySelector: #canEnterPrerequisitesSelection |
|
2907
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
259 |
infoText: 'Define which packages are needed as prerequisites. Press "<I>Scan</I>" to search for prerequisites; browse to edit the list manually.' |
2872 | 260 |
) |
261 |
||
262 |
(AssistantPageSpec |
|
2724 | 263 |
pageTitle: 'Specify Project Attributes' |
264 |
windowSpecSelector: page6a_specifyProjectAttributes |
|
265 |
infoText: 'Define additional attributes.' |
|
266 |
enterCallbackSelector: updateProjectAttributes |
|
267 |
leaveCallbackSelector: #rememberProjectAttributes |
|
268 |
) |
|
269 |
||
270 |
(AssistantPageSpec |
|
2703 | 271 |
pageTitle: 'Specify Build Directory' |
2724 | 272 |
windowSpecSelector: page6b_specifyBuildDirectorySpec |
2913 | 273 |
infoText: 'Define where the build-process is to be performed and which compiler to use. All generated files are created below that directory. After deployment, the build directory is no longer needed (but you can keep it for a faster compile the next time).' |
2724 | 274 |
enterCallbackSelector: #checkCompilerAvailability |
2913 | 275 |
leaveCallbackSelector: #rememberUsedCompiler |
2703 | 276 |
) |
277 |
||
278 |
(AssistantPageSpec |
|
279 |
pageTitle: 'Build' |
|
280 |
windowSpecSelector: page7_buildSpec |
|
281 |
canEnterQuerySelector: #canEnterBuild |
|
282 |
enterCallbackSelector: #restoreMakeOutputsContents |
|
283 |
leaveCallbackSelector: #rememberMakeOutputsContents |
|
2907
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
284 |
infoText: 'Start the build-process. This will run make+bcc/vc to compile all required classes and nsis to generate a self-installable executable. You must have the compiler (borland-bcc or visual-c) and NullSoft NSIS packages installed for this to work.' |
2703 | 285 |
) |
286 |
||
287 |
(AssistantPageSpec |
|
288 |
pageTitle: 'Deploy' |
|
289 |
windowSpecSelector: page8_deploySpec |
|
290 |
canEnterQuerySelector: #canEnterDeploy |
|
2907
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
291 |
infoText: 'Find the installer to be deployed (or test-run the binary). You can open a Windows-Explorer there to copy the files for deployment. After that, the build directory is no longer needed. However, you can keep it for a faster compile the next time.' |
2703 | 292 |
) |
293 |
) decodeAsLiteralArray. |
|
2825 | 294 |
|
2913 | 295 |
"Modified: / 04-09-2012 / 09:49:50 / cg" |
2703 | 296 |
! ! |
297 |
||
2670 | 298 |
!ProjectBuilderAssistantApplication class methodsFor:'defaults'! |
299 |
||
300 |
defaultIcon |
|
2838 | 301 |
<resource: #programImage> |
302 |
||
2670 | 303 |
^ ToolbarIconLibrary projectBuilderIcon |
304 |
! |
|
305 |
||
306 |
windowLabelTemplate |
|
307 |
^ 'ST/X Packager: %1' |
|
308 |
! ! |
|
309 |
||
2703 | 310 |
!ProjectBuilderAssistantApplication class methodsFor:'help'! |
311 |
||
312 |
flyByHelpSpec |
|
313 |
<resource: #help> |
|
314 |
||
315 |
^ super flyByHelpSpec addPairsFrom:#( |
|
316 |
||
2706 | 317 |
#'projectType' |
318 |
'Choose the type of Project you are about to deploy.' |
|
319 |
||
320 |
#existingProjects |
|
321 |
'Projects with an existing ProjectDefinition of the chosen type (above).' |
|
2703 | 322 |
|
2706 | 323 |
#browseSelectedProject |
324 |
'Open a SystemBrowser on the selected Project.' |
|
325 |
||
326 |
#hideSTXBasePackages |
|
327 |
'Only show packages which are not already included in the basic ST/X delivery.' |
|
2703 | 328 |
|
329 |
#'listOfNewProjectsName' |
|
2706 | 330 |
'PackageID (module:directory). |
331 |
The pull-down list contains packageIDs for which no ProjectDefinition exists (yet).' |
|
332 |
||
333 |
#'createNewProject' |
|
334 |
'PackageID (module:directory). |
|
335 |
Click to create a new (empty) ProjectDefinition for the given PackageID.' |
|
2703 | 336 |
|
2922 | 337 |
#clearBuildDirectory |
338 |
'Clear the build directory.' |
|
339 |
||
340 |
#makeAll |
|
341 |
'Build a self-installing deployable package.' |
|
342 |
||
343 |
#makeExe |
|
344 |
'Build the executable only (for test-running).' |
|
345 |
||
346 |
#makeOutput |
|
347 |
'Displays the output of the build process (make command).' |
|
348 |
||
349 |
#openExplorer |
|
350 |
'Open a Windows Explorer on the build directory. You can double-click on the built executable there.' |
|
351 |
||
352 |
#openFileBrowser |
|
353 |
'Open a Filebrowser on the build directory.' |
|
354 |
||
355 |
#stopMake |
|
356 |
'Abort the ongoing build process. Please clear the build directory afterwards to remove any leftover garbage.' |
|
357 |
||
2703 | 358 |
) |
2922 | 359 |
|
360 |
"Modified: / 06-09-2012 / 16:09:10 / cg" |
|
2703 | 361 |
! ! |
362 |
||
2636 | 363 |
!ProjectBuilderAssistantApplication class methodsFor:'interface specs'! |
364 |
||
2645 | 365 |
page1_projectTypeSelectionSpec |
2636 | 366 |
"This resource specification was automatically generated |
367 |
by the UIPainter of ST/X." |
|
368 |
||
369 |
"Do not manually edit this!! If it is corrupted, |
|
370 |
the UIPainter may not be able to read the specification." |
|
371 |
||
372 |
" |
|
2648 | 373 |
UIPainter new openOnClass:Tools::ProjectBuilderAssistantApplication andSelector:#page1_projectTypeSelectionSpec |
374 |
Tools::ProjectBuilderAssistantApplication new openInterface:#page1_projectTypeSelectionSpec |
|
2636 | 375 |
" |
376 |
||
377 |
<resource: #canvas> |
|
378 |
||
379 |
^ |
|
380 |
#(FullSpec |
|
2645 | 381 |
name: #'page1_projectTypeSelectionSpec' |
2636 | 382 |
window: |
383 |
(WindowSpec |
|
384 |
label: 'Project Selection' |
|
385 |
name: 'Project Selection' |
|
386 |
min: (Point 0 0) |
|
387 |
bounds: (Rectangle 0 0 626 394) |
|
388 |
) |
|
389 |
component: |
|
390 |
(SpecCollection |
|
391 |
collection: ( |
|
392 |
(FramedBoxSpec |
|
2706 | 393 |
label: 'Project Type' |
2636 | 394 |
name: 'FramedBox1' |
2698
64d179f1eae7
changed: #page1_projectTypeSelectionSpec
Claus Gittinger <cg@exept.de>
parents:
2697
diff
changeset
|
395 |
layout: (LayoutFrame 0 0.0 0 0 4 1.0 120 0) |
2706 | 396 |
activeHelpKey: projectType |
2636 | 397 |
labelPosition: topLeft |
398 |
translateLabel: true |
|
399 |
component: |
|
400 |
(SpecCollection |
|
401 |
collection: ( |
|
402 |
(VerticalPanelViewSpec |
|
403 |
name: 'VerticalPanel1' |
|
404 |
layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) |
|
405 |
horizontalLayout: leftSpace |
|
406 |
verticalLayout: topSpace |
|
407 |
horizontalSpace: 3 |
|
408 |
verticalSpace: 3 |
|
409 |
component: |
|
410 |
(SpecCollection |
|
411 |
collection: ( |
|
412 |
(ViewSpec |
|
413 |
name: 'Box1' |
|
414 |
extent: (Point 10 10) |
|
415 |
) |
|
416 |
(RadioButtonSpec |
|
417 |
label: 'GUI Application' |
|
418 |
name: 'RadioButton1' |
|
419 |
translateLabel: true |
|
2659 | 420 |
model: projectTypeHolder |
2636 | 421 |
isTriggerOnDown: true |
422 |
onCallBackSelector: projectTypeChanged |
|
2897 | 423 |
select: #'GUI-Application' |
2636 | 424 |
extent: (Point 136 22) |
425 |
) |
|
426 |
(RadioButtonSpec |
|
427 |
label: 'Non-GUI Application' |
|
428 |
name: 'RadioButton2' |
|
429 |
translateLabel: true |
|
2659 | 430 |
model: projectTypeHolder |
2636 | 431 |
isTriggerOnDown: true |
432 |
onCallBackSelector: projectTypeChanged |
|
2897 | 433 |
select: #'NonGUI-Application' |
2636 | 434 |
extent: (Point 136 22) |
435 |
) |
|
436 |
(RadioButtonSpec |
|
437 |
label: 'Class Library' |
|
438 |
name: 'RadioButton3' |
|
439 |
translateLabel: true |
|
2659 | 440 |
model: projectTypeHolder |
2636 | 441 |
isTriggerOnDown: true |
442 |
onCallBackSelector: projectTypeChanged |
|
2897 | 443 |
select: #Library |
2636 | 444 |
extent: (Point 136 22) |
445 |
) |
|
446 |
) |
|
447 |
||
448 |
) |
|
449 |
) |
|
450 |
) |
|
451 |
||
452 |
) |
|
453 |
) |
|
454 |
(FramedBoxSpec |
|
2726
7263301b5216
changed: #page1_projectTypeSelectionSpec
Claus Gittinger <cg@exept.de>
parents:
2725
diff
changeset
|
455 |
label: 'Existing Projects of this Type (PackageIDs)' |
2636 | 456 |
name: 'FramedBox2' |
2698
64d179f1eae7
changed: #page1_projectTypeSelectionSpec
Claus Gittinger <cg@exept.de>
parents:
2697
diff
changeset
|
457 |
layout: (LayoutFrame 0 0.0 123 0 4 1.0 0 1) |
2706 | 458 |
activeHelpKey: existingProjects |
2636 | 459 |
labelPosition: topLeft |
460 |
translateLabel: true |
|
461 |
component: |
|
462 |
(SpecCollection |
|
463 |
collection: ( |
|
464 |
(VariableHorizontalPanelSpec |
|
465 |
name: 'VariableHorizontalPanel1' |
|
466 |
layout: (LayoutFrame 0 0 4 0 0 1 -26 1) |
|
467 |
component: |
|
468 |
(SpecCollection |
|
469 |
collection: ( |
|
470 |
(SequenceViewSpec |
|
471 |
name: 'List1' |
|
472 |
model: selectedProjectIndexHolder |
|
473 |
hasHorizontalScrollBar: true |
|
474 |
hasVerticalScrollBar: true |
|
475 |
useIndex: true |
|
2686
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
476 |
sequenceList: listOfMatchingPackageIds |
2636 | 477 |
) |
478 |
(TextEditorSpec |
|
479 |
name: 'TextEditor1' |
|
480 |
model: selectedProjectsComment |
|
481 |
hasHorizontalScrollBar: true |
|
482 |
hasVerticalScrollBar: true |
|
483 |
isReadOnly: true |
|
484 |
hasKeyboardFocusInitially: false |
|
485 |
) |
|
486 |
) |
|
487 |
||
488 |
) |
|
489 |
handles: (Any 0.34560327198364 1.0) |
|
490 |
) |
|
491 |
(CheckBoxSpec |
|
492 |
label: 'Hide ST/X Base Packages' |
|
493 |
name: 'CheckBox1' |
|
2659 | 494 |
layout: (LayoutFrame -1 0 -18 1 0 1 4 1) |
2706 | 495 |
activeHelpKey: hideSTXBasePackages |
2636 | 496 |
model: hideSTXProjects |
497 |
translateLabel: true |
|
498 |
) |
|
499 |
) |
|
500 |
||
501 |
) |
|
502 |
) |
|
503 |
) |
|
504 |
||
505 |
) |
|
506 |
) |
|
2897 | 507 |
|
508 |
"Modified: / 20-07-2012 / 13:27:45 / cg" |
|
2636 | 509 |
! |
510 |
||
2645 | 511 |
page2_projectSelectionSpec |
2636 | 512 |
"This resource specification was automatically generated |
513 |
by the UIPainter of ST/X." |
|
514 |
||
515 |
"Do not manually edit this!! If it is corrupted, |
|
516 |
the UIPainter may not be able to read the specification." |
|
517 |
||
518 |
" |
|
2648 | 519 |
UIPainter new openOnClass:Tools::ProjectBuilderAssistantApplication andSelector:#page2_projectSelectionSpec |
520 |
Tools::ProjectBuilderAssistantApplication new openInterface:#page2_projectSelectionSpec |
|
2636 | 521 |
" |
522 |
||
523 |
<resource: #canvas> |
|
524 |
||
525 |
^ |
|
526 |
#(FullSpec |
|
2645 | 527 |
name: #'page2_projectSelectionSpec' |
2636 | 528 |
window: |
529 |
(WindowSpec |
|
530 |
label: 'Project Selection' |
|
531 |
name: 'Project Selection' |
|
532 |
min: (Point 0 0) |
|
533 |
bounds: (Rectangle 0 0 521 453) |
|
534 |
) |
|
535 |
component: |
|
536 |
(SpecCollection |
|
537 |
collection: ( |
|
538 |
(FramedBoxSpec |
|
2706 | 539 |
label: 'New Project''s PackageID' |
2636 | 540 |
name: 'FramedBox3' |
541 |
layout: (LayoutFrame 0 0.0 5 0 4 1.0 72 0) |
|
542 |
labelPosition: topLeft |
|
543 |
translateLabel: true |
|
544 |
component: |
|
545 |
(SpecCollection |
|
546 |
collection: ( |
|
2706 | 547 |
(ExtendedComboBoxSpec |
548 |
name: 'NewProjectsNameListExtendedComboBox' |
|
549 |
layout: (LayoutFrame 1 0 6 0 -113 1 28 0) |
|
550 |
model: newProjectsName |
|
551 |
readOnly: false |
|
552 |
miniScrollerHorizontal: true |
|
553 |
postBuildCallback: postBuildNewProjectsNameListExtendedComboBox: |
|
554 |
activeHelpKey: listOfNewProjectsName |
|
555 |
) |
|
2636 | 556 |
(ActionButtonSpec |
557 |
label: 'Create' |
|
558 |
name: 'Button1' |
|
2659 | 559 |
layout: (LayoutFrame -100 1 6 0 2 1 28 0) |
2636 | 560 |
translateLabel: true |
561 |
model: createNewProject |
|
2703 | 562 |
activeHelpKey: createNewProject |
2706 | 563 |
|
2636 | 564 |
) |
2706 | 565 |
|
2636 | 566 |
) |
567 |
||
568 |
) |
|
569 |
) |
|
570 |
(FramedBoxSpec |
|
2706 | 571 |
label: 'Existing Projects with ProjectDefinition' |
2636 | 572 |
name: 'FramedBox4' |
2648 | 573 |
layout: (LayoutFrame 0 0.0 70 0 4 1.0 -30 1) |
2636 | 574 |
labelPosition: topLeft |
575 |
translateLabel: true |
|
576 |
component: |
|
577 |
(SpecCollection |
|
578 |
collection: ( |
|
579 |
(VariableHorizontalPanelSpec |
|
580 |
name: 'VariableHorizontalPanel2' |
|
581 |
layout: (LayoutFrame 0 0 4 0 0 1 -26 1) |
|
582 |
component: |
|
583 |
(SpecCollection |
|
584 |
collection: ( |
|
585 |
(SequenceViewSpec |
|
586 |
name: 'List2' |
|
587 |
model: selectedProjectIndexHolder |
|
588 |
hasHorizontalScrollBar: true |
|
589 |
hasVerticalScrollBar: true |
|
590 |
useIndex: true |
|
2686
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
591 |
sequenceList: listOfMatchingPackageIds |
2636 | 592 |
) |
593 |
(TextEditorSpec |
|
594 |
name: 'TextEditor2' |
|
595 |
model: selectedProjectsComment |
|
596 |
hasHorizontalScrollBar: true |
|
597 |
hasVerticalScrollBar: true |
|
598 |
isReadOnly: true |
|
599 |
hasKeyboardFocusInitially: false |
|
600 |
viewClassName: 'TextView' |
|
601 |
) |
|
602 |
) |
|
603 |
||
604 |
) |
|
605 |
handles: (Any 0.34560327198364 1.0) |
|
606 |
) |
|
607 |
(CheckBoxSpec |
|
608 |
label: 'Hide ST/X Base Packages' |
|
609 |
name: 'CheckBox1' |
|
2659 | 610 |
layout: (LayoutFrame -1 0 -17 1 0 1 5 1) |
2636 | 611 |
model: hideSTXProjects |
612 |
translateLabel: true |
|
2706 | 613 |
activeHelpKey: hideSTXBasePackages |
2636 | 614 |
) |
615 |
) |
|
616 |
||
617 |
) |
|
618 |
) |
|
2648 | 619 |
(HorizontalPanelViewSpec |
620 |
name: 'HorizontalPanel1' |
|
621 |
layout: (LayoutFrame 0 0 -30 1 0 1 0 1) |
|
622 |
horizontalLayout: leftSpace |
|
623 |
verticalLayout: center |
|
624 |
horizontalSpace: 3 |
|
625 |
verticalSpace: 3 |
|
626 |
component: |
|
627 |
(SpecCollection |
|
628 |
collection: ( |
|
629 |
(ActionButtonSpec |
|
630 |
label: 'Browse Selected Project' |
|
631 |
name: 'Button3' |
|
632 |
translateLabel: true |
|
633 |
model: doBrowseProject |
|
2659 | 634 |
enableChannel: hasProjectSelectedHolder |
2648 | 635 |
extent: (Point 180 22) |
2706 | 636 |
activeHelpKey: browseSelectedProject |
2648 | 637 |
) |
638 |
) |
|
639 |
||
640 |
) |
|
2636 | 641 |
) |
642 |
) |
|
643 |
||
644 |
) |
|
645 |
) |
|
646 |
! |
|
647 |
||
2645 | 648 |
page3_applicationSelectionSpec |
2636 | 649 |
"This resource specification was automatically generated |
650 |
by the UIPainter of ST/X." |
|
651 |
||
652 |
"Do not manually edit this!! If it is corrupted, |
|
653 |
the UIPainter may not be able to read the specification." |
|
654 |
||
655 |
" |
|
2648 | 656 |
UIPainter new openOnClass:Tools::ProjectBuilderAssistantApplication andSelector:#page3_applicationSelectionSpec |
657 |
Tools::ProjectBuilderAssistantApplication new openInterface:#page3_applicationSelectionSpec |
|
2636 | 658 |
" |
659 |
||
660 |
<resource: #canvas> |
|
661 |
||
662 |
^ |
|
663 |
#(FullSpec |
|
2645 | 664 |
name: #'page3_applicationSelectionSpec' |
2636 | 665 |
window: |
666 |
(WindowSpec |
|
667 |
label: 'Application Selection' |
|
668 |
name: 'Application Selection' |
|
669 |
min: (Point 0 0) |
|
2671 | 670 |
bounds: (Rectangle 0 0 519 406) |
2636 | 671 |
) |
672 |
component: |
|
673 |
(SpecCollection |
|
674 |
collection: ( |
|
675 |
(FramedBoxSpec |
|
2725 | 676 |
label: 'New Application Class' |
2636 | 677 |
name: 'FramedBox3' |
2725 | 678 |
layout: (LayoutFrame 0 0.0 5 0 4 1.0 70 0) |
2636 | 679 |
labelPosition: topLeft |
680 |
translateLabel: true |
|
681 |
component: |
|
682 |
(SpecCollection |
|
683 |
collection: ( |
|
684 |
(InputFieldSpec |
|
685 |
name: 'EntryField1' |
|
2659 | 686 |
layout: (LayoutFrame 1 0 6 0 -113 1 28 0) |
2636 | 687 |
model: newApplicationsName |
688 |
acceptOnReturn: true |
|
689 |
acceptOnTab: true |
|
2693 | 690 |
acceptOnLostFocus: true |
2636 | 691 |
acceptOnPointerLeave: true |
692 |
emptyFieldReplacementText: 'MyApplication' |
|
693 |
) |
|
694 |
(ActionButtonSpec |
|
695 |
label: 'Create' |
|
696 |
name: 'Button1' |
|
2659 | 697 |
layout: (LayoutFrame -100 1 6 0 1 1 28 0) |
2636 | 698 |
translateLabel: true |
699 |
model: createNewApplication |
|
700 |
) |
|
701 |
) |
|
702 |
||
703 |
) |
|
704 |
) |
|
705 |
(FramedBoxSpec |
|
706 |
label: 'Existing Applications' |
|
707 |
name: 'FramedBox4' |
|
2725 | 708 |
layout: (LayoutFrame 0 0.0 72 0 4 1.0 -30 1) |
2636 | 709 |
labelPosition: topLeft |
710 |
translateLabel: true |
|
711 |
component: |
|
712 |
(SpecCollection |
|
713 |
collection: ( |
|
714 |
(VariableHorizontalPanelSpec |
|
715 |
name: 'VariableHorizontalPanel2' |
|
2671 | 716 |
layout: (LayoutFrame 0 0 4 0 0 1 -26 1) |
2636 | 717 |
component: |
718 |
(SpecCollection |
|
719 |
collection: ( |
|
720 |
(SequenceViewSpec |
|
721 |
name: 'List2' |
|
722 |
model: selectedApplicationIndexHolder |
|
723 |
hasHorizontalScrollBar: true |
|
724 |
hasVerticalScrollBar: true |
|
725 |
useIndex: true |
|
726 |
sequenceList: listOfApplicationsInProject |
|
2671 | 727 |
ignoreReselect: false |
2636 | 728 |
) |
729 |
(TextEditorSpec |
|
730 |
name: 'TextEditor2' |
|
731 |
model: selectedApplicationsComment |
|
732 |
hasHorizontalScrollBar: true |
|
733 |
hasVerticalScrollBar: true |
|
734 |
isReadOnly: true |
|
735 |
hasKeyboardFocusInitially: false |
|
736 |
viewClassName: 'TextView' |
|
737 |
) |
|
738 |
) |
|
739 |
||
740 |
) |
|
741 |
handles: (Any 0.34560327198364 1.0) |
|
742 |
) |
|
2671 | 743 |
(CheckBoxSpec |
744 |
label: 'Hide other Application Classes' |
|
745 |
name: 'CheckBox1' |
|
746 |
layout: (LayoutFrame -1 0 -18 1 0 1 4 1) |
|
747 |
model: hideOtherApplicationClasses |
|
748 |
translateLabel: true |
|
749 |
) |
|
2636 | 750 |
) |
751 |
||
752 |
) |
|
753 |
) |
|
2648 | 754 |
(HorizontalPanelViewSpec |
755 |
name: 'HorizontalPanel1' |
|
756 |
layout: (LayoutFrame 0 0 -30 1 0 1 0 1) |
|
757 |
horizontalLayout: leftSpace |
|
758 |
verticalLayout: center |
|
759 |
horizontalSpace: 3 |
|
760 |
verticalSpace: 3 |
|
761 |
component: |
|
762 |
(SpecCollection |
|
763 |
collection: ( |
|
764 |
(ActionButtonSpec |
|
765 |
label: 'Browse Selected Application' |
|
766 |
name: 'Button3' |
|
767 |
translateLabel: true |
|
768 |
model: doBrowseApplication |
|
2659 | 769 |
enableChannel: hasApplicationSelectedHolder |
770 |
extent: (Point 180 22) |
|
771 |
) |
|
772 |
(ActionButtonSpec |
|
773 |
label: 'Launch Selected Application' |
|
774 |
name: 'Button4' |
|
775 |
translateLabel: true |
|
776 |
model: doLaunchApplication |
|
777 |
enableChannel: hasApplicationSelectedHolder |
|
2648 | 778 |
extent: (Point 180 22) |
779 |
) |
|
780 |
) |
|
781 |
||
782 |
) |
|
2636 | 783 |
) |
784 |
) |
|
785 |
||
786 |
) |
|
787 |
) |
|
788 |
! |
|
789 |
||
2656 | 790 |
page4_startupClassSelectionSpec |
2636 | 791 |
"This resource specification was automatically generated |
792 |
by the UIPainter of ST/X." |
|
793 |
||
794 |
"Do not manually edit this!! If it is corrupted, |
|
795 |
the UIPainter may not be able to read the specification." |
|
796 |
||
797 |
" |
|
2656 | 798 |
UIPainter new openOnClass:Tools::ProjectBuilderAssistantApplication andSelector:#page4_startupClassSelectionSpec |
799 |
Tools::ProjectBuilderAssistantApplication new openInterface:#page4_startupClassSelectionSpec |
|
2636 | 800 |
" |
801 |
||
802 |
<resource: #canvas> |
|
803 |
||
804 |
^ |
|
805 |
#(FullSpec |
|
2656 | 806 |
name: #'page4_startupClassSelectionSpec' |
807 |
window: |
|
808 |
(WindowSpec |
|
809 |
label: 'Startup Class Selection' |
|
810 |
name: 'Startup Class Selection' |
|
811 |
min: (Point 0 0) |
|
812 |
bounds: (Rectangle 0 0 521 408) |
|
813 |
) |
|
814 |
component: |
|
815 |
(SpecCollection |
|
816 |
collection: ( |
|
817 |
(FramedBoxSpec |
|
2725 | 818 |
label: 'New Startup Class' |
2656 | 819 |
name: 'FramedBox3' |
2725 | 820 |
layout: (LayoutFrame 0 0.0 5 0 4 1.0 70 0) |
2656 | 821 |
labelPosition: topLeft |
822 |
translateLabel: true |
|
823 |
component: |
|
824 |
(SpecCollection |
|
825 |
collection: ( |
|
826 |
(InputFieldSpec |
|
827 |
name: 'EntryField1' |
|
2659 | 828 |
layout: (LayoutFrame 1 0 6 0 -113 1 28 0) |
2656 | 829 |
model: newStartupClassName |
830 |
acceptOnReturn: true |
|
831 |
acceptOnTab: true |
|
2693 | 832 |
acceptOnLostFocus: true |
2656 | 833 |
acceptOnPointerLeave: true |
834 |
emptyFieldReplacementText: 'MyStandAloneStartup' |
|
835 |
) |
|
836 |
(ActionButtonSpec |
|
837 |
label: 'Create' |
|
838 |
name: 'Button1' |
|
2659 | 839 |
layout: (LayoutFrame -100 1 6 0 1 1 28 0) |
2656 | 840 |
translateLabel: true |
841 |
model: createNewStartupClass |
|
842 |
) |
|
843 |
) |
|
844 |
||
845 |
) |
|
846 |
) |
|
847 |
(FramedBoxSpec |
|
2725 | 848 |
label: 'Existing Startup Classes' |
2656 | 849 |
name: 'FramedBox4' |
2725 | 850 |
layout: (LayoutFrame 0 0.0 72 0 4 1.0 -30 1) |
2656 | 851 |
labelPosition: topLeft |
852 |
translateLabel: true |
|
853 |
component: |
|
854 |
(SpecCollection |
|
855 |
collection: ( |
|
856 |
(VariableHorizontalPanelSpec |
|
857 |
name: 'VariableHorizontalPanel2' |
|
2671 | 858 |
layout: (LayoutFrame 0 0 4 0 0 1 -26 1) |
2656 | 859 |
component: |
860 |
(SpecCollection |
|
861 |
collection: ( |
|
862 |
(SequenceViewSpec |
|
863 |
name: 'List2' |
|
864 |
model: selectedStartupClassIndexHolder |
|
865 |
hasHorizontalScrollBar: true |
|
866 |
hasVerticalScrollBar: true |
|
867 |
useIndex: true |
|
868 |
sequenceList: listOfStartupClassesInProject |
|
869 |
) |
|
870 |
(TextEditorSpec |
|
871 |
name: 'TextEditor2' |
|
872 |
model: selectedStartupClassesComment |
|
873 |
hasHorizontalScrollBar: true |
|
874 |
hasVerticalScrollBar: true |
|
875 |
isReadOnly: true |
|
876 |
hasKeyboardFocusInitially: false |
|
877 |
viewClassName: 'TextView' |
|
878 |
) |
|
879 |
) |
|
880 |
||
881 |
) |
|
882 |
handles: (Any 0.34560327198364 1.0) |
|
883 |
) |
|
2671 | 884 |
(CheckBoxSpec |
885 |
label: 'Hide other Startup Classes' |
|
886 |
name: 'CheckBox1' |
|
887 |
layout: (LayoutFrame -1 0 -20 1 0 1 2 1) |
|
888 |
model: hideOtherStartupClasses |
|
889 |
translateLabel: true |
|
890 |
) |
|
2656 | 891 |
) |
892 |
||
893 |
) |
|
894 |
) |
|
895 |
(HorizontalPanelViewSpec |
|
896 |
name: 'HorizontalPanel1' |
|
897 |
layout: (LayoutFrame 0 0 -30 1 0 1 0 1) |
|
898 |
horizontalLayout: leftSpace |
|
899 |
verticalLayout: center |
|
900 |
horizontalSpace: 3 |
|
901 |
verticalSpace: 3 |
|
902 |
component: |
|
903 |
(SpecCollection |
|
904 |
collection: ( |
|
905 |
(ActionButtonSpec |
|
906 |
label: 'Browse Selected StartupClass' |
|
907 |
name: 'Button3' |
|
908 |
translateLabel: true |
|
909 |
model: doBrowseStartupClass |
|
2659 | 910 |
enableChannel: hasStartupClassSelectedHolder |
2656 | 911 |
extent: (Point 180 22) |
912 |
) |
|
913 |
) |
|
914 |
||
915 |
) |
|
916 |
) |
|
917 |
) |
|
918 |
||
919 |
) |
|
920 |
) |
|
921 |
! |
|
922 |
||
923 |
page5_specifyIncludedClasses |
|
924 |
"This resource specification was automatically generated |
|
925 |
by the UIPainter of ST/X." |
|
926 |
||
927 |
"Do not manually edit this!! If it is corrupted, |
|
928 |
the UIPainter may not be able to read the specification." |
|
929 |
||
930 |
" |
|
931 |
UIPainter new openOnClass:Tools::ProjectBuilderAssistantApplication andSelector:#page5_specifyIncludedClasses |
|
932 |
Tools::ProjectBuilderAssistantApplication new openInterface:#page5_specifyIncludedClasses |
|
933 |
" |
|
934 |
||
935 |
<resource: #canvas> |
|
936 |
||
937 |
^ |
|
938 |
#(FullSpec |
|
939 |
name: #'page5_specifyIncludedClasses' |
|
2636 | 940 |
window: |
941 |
(WindowSpec |
|
942 |
label: 'Project Selection' |
|
943 |
name: 'Project Selection' |
|
944 |
min: (Point 0 0) |
|
945 |
bounds: (Rectangle 0 0 521 400) |
|
946 |
) |
|
947 |
component: |
|
948 |
(SpecCollection |
|
949 |
collection: ( |
|
950 |
(FramedBoxSpec |
|
951 |
label: 'Project Contents' |
|
952 |
name: 'FramedBox3' |
|
2648 | 953 |
layout: (LayoutFrame 0 0.0 5 0 4 1.0 -30 1) |
2636 | 954 |
labelPosition: topLeft |
955 |
translateLabel: true |
|
956 |
component: |
|
957 |
(SpecCollection |
|
958 |
collection: ( |
|
959 |
(SequenceViewSpec |
|
960 |
name: 'List1' |
|
961 |
layout: (LayoutFrame 0 0 0 0 0 1 0 1) |
|
962 |
initiallyDisabled: true |
|
963 |
hasHorizontalScrollBar: true |
|
964 |
hasVerticalScrollBar: true |
|
965 |
useIndex: false |
|
966 |
sequenceList: listOfClassesInProject |
|
967 |
) |
|
968 |
) |
|
969 |
||
970 |
) |
|
971 |
) |
|
2648 | 972 |
(HorizontalPanelViewSpec |
973 |
name: 'HorizontalPanel1' |
|
974 |
layout: (LayoutFrame 0 0 -30 1 0 1 0 1) |
|
975 |
horizontalLayout: center |
|
976 |
verticalLayout: center |
|
977 |
horizontalSpace: 3 |
|
978 |
verticalSpace: 3 |
|
979 |
component: |
|
980 |
(SpecCollection |
|
981 |
collection: ( |
|
982 |
(ActionButtonSpec |
|
983 |
label: 'Browse Project Definition' |
|
984 |
name: 'Button3' |
|
985 |
translateLabel: true |
|
2659 | 986 |
model: doBrowseProjectDefinitionClass |
2648 | 987 |
extent: (Point 180 22) |
988 |
) |
|
989 |
(ActionButtonSpec |
|
990 |
label: 'Update Contents (Scan)' |
|
991 |
name: 'Button4' |
|
992 |
translateLabel: true |
|
993 |
model: doGenerateProjectContentsDefinition |
|
994 |
extent: (Point 180 22) |
|
995 |
) |
|
996 |
) |
|
997 |
||
998 |
) |
|
2636 | 999 |
) |
1000 |
) |
|
1001 |
||
1002 |
) |
|
1003 |
) |
|
1004 |
! |
|
1005 |
||
2872 | 1006 |
page5b_specifyPrerequisitePackages |
1007 |
"This resource specification was automatically generated |
|
1008 |
by the UIPainter of ST/X." |
|
1009 |
||
1010 |
"Do not manually edit this!! If it is corrupted, |
|
1011 |
the UIPainter may not be able to read the specification." |
|
1012 |
||
1013 |
" |
|
1014 |
UIPainter new openOnClass:Tools::ProjectBuilderAssistantApplication andSelector:#page5b_specifyPrerequisitePackages |
|
1015 |
Tools::ProjectBuilderAssistantApplication new openInterface:#page5b_specifyPrerequisitePackages |
|
1016 |
" |
|
1017 |
||
1018 |
<resource: #canvas> |
|
1019 |
||
1020 |
^ |
|
1021 |
#(FullSpec |
|
1022 |
name: #'page5b_specifyPrerequisitePackages' |
|
1023 |
window: |
|
1024 |
(WindowSpec |
|
1025 |
label: 'Project Selection' |
|
1026 |
name: 'Project Selection' |
|
1027 |
min: (Point 0 0) |
|
1028 |
bounds: (Rectangle 0 0 521 400) |
|
1029 |
) |
|
1030 |
component: |
|
1031 |
(SpecCollection |
|
1032 |
collection: ( |
|
1033 |
(FramedBoxSpec |
|
1034 |
label: 'Prerequisite Packages' |
|
1035 |
name: 'FramedBox3' |
|
1036 |
layout: (LayoutFrame 0 0.0 5 0 4 1.0 -30 1) |
|
1037 |
labelPosition: topLeft |
|
1038 |
translateLabel: true |
|
1039 |
component: |
|
1040 |
(SpecCollection |
|
1041 |
collection: ( |
|
1042 |
(SequenceViewSpec |
|
1043 |
name: 'List1' |
|
1044 |
layout: (LayoutFrame 0 0 0 0 0 1 0 1) |
|
1045 |
initiallyDisabled: true |
|
1046 |
hasHorizontalScrollBar: true |
|
1047 |
hasVerticalScrollBar: true |
|
1048 |
useIndex: false |
|
1049 |
sequenceList: listOfPrerequisitesInProject |
|
1050 |
) |
|
1051 |
) |
|
1052 |
||
1053 |
) |
|
1054 |
) |
|
1055 |
(HorizontalPanelViewSpec |
|
1056 |
name: 'HorizontalPanel1' |
|
1057 |
layout: (LayoutFrame 0 0 -30 1 0 1 0 1) |
|
1058 |
horizontalLayout: center |
|
1059 |
verticalLayout: center |
|
1060 |
horizontalSpace: 3 |
|
1061 |
verticalSpace: 3 |
|
1062 |
component: |
|
1063 |
(SpecCollection |
|
1064 |
collection: ( |
|
1065 |
(ActionButtonSpec |
|
1066 |
label: 'Browse Project Definition' |
|
1067 |
name: 'Button3' |
|
1068 |
translateLabel: true |
|
1069 |
model: doBrowseProjectDefinitionClass |
|
1070 |
extent: (Point 180 22) |
|
1071 |
) |
|
1072 |
(ActionButtonSpec |
|
1073 |
label: 'Update Prerequisites (Scan)' |
|
1074 |
name: 'Button4' |
|
1075 |
translateLabel: true |
|
1076 |
model: doGenerateProjectPrerequisitesDefinition |
|
1077 |
extent: (Point 180 22) |
|
1078 |
) |
|
1079 |
) |
|
1080 |
||
1081 |
) |
|
1082 |
) |
|
1083 |
) |
|
1084 |
||
1085 |
) |
|
1086 |
) |
|
1087 |
||
1088 |
"Modified: / 19-01-2012 / 15:45:14 / cg" |
|
1089 |
! |
|
1090 |
||
2724 | 1091 |
page6a_specifyProjectAttributes |
2636 | 1092 |
"This resource specification was automatically generated |
1093 |
by the UIPainter of ST/X." |
|
1094 |
||
1095 |
"Do not manually edit this!! If it is corrupted, |
|
1096 |
the UIPainter may not be able to read the specification." |
|
1097 |
||
1098 |
" |
|
2724 | 1099 |
UIPainter new openOnClass:Tools::ProjectBuilderAssistantApplication andSelector:#page6a_specifyProjectAttributes |
1100 |
Tools::ProjectBuilderAssistantApplication new openInterface:#page6a_specifyProjectAttributes |
|
2636 | 1101 |
" |
1102 |
||
1103 |
<resource: #canvas> |
|
1104 |
||
1105 |
^ |
|
1106 |
#(FullSpec |
|
2724 | 1107 |
name: #'page6a_specifyProjectAttributes' |
2636 | 1108 |
window: |
1109 |
(WindowSpec |
|
1110 |
label: 'Project Selection' |
|
1111 |
name: 'Project Selection' |
|
1112 |
min: (Point 0 0) |
|
2681 | 1113 |
bounds: (Rectangle 0 0 521 239) |
2636 | 1114 |
) |
1115 |
component: |
|
1116 |
(SpecCollection |
|
1117 |
collection: ( |
|
1118 |
(FramedBoxSpec |
|
2724 | 1119 |
label: 'Product Information' |
1120 |
name: 'FramedBox3' |
|
1121 |
layout: (LayoutFrame 0 0.0 5 0 4 1.0 101 0) |
|
1122 |
labelPosition: topLeft |
|
1123 |
translateLabel: true |
|
1124 |
component: |
|
1125 |
(SpecCollection |
|
1126 |
collection: ( |
|
1127 |
(LabelSpec |
|
1128 |
label: 'Product Name:' |
|
1129 |
name: 'Label1' |
|
1130 |
layout: (LayoutFrame 0 0 10 0 148 0 32 0) |
|
1131 |
translateLabel: true |
|
1132 |
adjust: right |
|
1133 |
) |
|
1134 |
(InputFieldSpec |
|
1135 |
name: 'EntryField4' |
|
1136 |
layout: (LayoutFrame 150 0.0 10 0 0 1.0 32 0) |
|
1137 |
model: productNameHolder |
|
1138 |
acceptOnLostFocus: true |
|
1139 |
acceptOnPointerLeave: true |
|
1140 |
viewClassName: '' |
|
1141 |
) |
|
1142 |
(LabelSpec |
|
1143 |
label: 'Company Name:' |
|
1144 |
name: 'Label2' |
|
1145 |
layout: (LayoutFrame 0 0 39 0 148 0 61 0) |
|
1146 |
translateLabel: true |
|
1147 |
adjust: right |
|
1148 |
) |
|
1149 |
(InputFieldSpec |
|
1150 |
name: 'EntryField3' |
|
1151 |
layout: (LayoutFrame 150 0.0 39 0 0 1.0 61 0) |
|
1152 |
model: companyNameHolder |
|
1153 |
acceptOnLostFocus: true |
|
1154 |
acceptOnPointerLeave: true |
|
1155 |
viewClassName: '' |
|
1156 |
) |
|
1157 |
) |
|
1158 |
||
1159 |
) |
|
1160 |
) |
|
1161 |
) |
|
1162 |
||
1163 |
) |
|
1164 |
) |
|
1165 |
! |
|
1166 |
||
1167 |
page6b_specifyBuildDirectorySpec |
|
1168 |
"This resource specification was automatically generated |
|
1169 |
by the UIPainter of ST/X." |
|
1170 |
||
1171 |
"Do not manually edit this!! If it is corrupted, |
|
1172 |
the UIPainter may not be able to read the specification." |
|
1173 |
||
1174 |
" |
|
1175 |
UIPainter new openOnClass:Tools::ProjectBuilderAssistantApplication andSelector:#page6b_specifyBuildDirectorySpec |
|
1176 |
Tools::ProjectBuilderAssistantApplication new openInterface:#page6b_specifyBuildDirectorySpec |
|
1177 |
" |
|
1178 |
||
1179 |
<resource: #canvas> |
|
1180 |
||
1181 |
^ |
|
1182 |
#(FullSpec |
|
1183 |
name: #'page6b_specifyBuildDirectorySpec' |
|
1184 |
window: |
|
1185 |
(WindowSpec |
|
1186 |
label: 'Project Selection' |
|
1187 |
name: 'Project Selection' |
|
1188 |
min: (Point 0 0) |
|
1189 |
bounds: (Rectangle 0 0 521 361) |
|
1190 |
) |
|
1191 |
component: |
|
1192 |
(SpecCollection |
|
1193 |
collection: ( |
|
1194 |
(FramedBoxSpec |
|
2636 | 1195 |
label: 'Build Directory' |
1196 |
name: 'FramedBox3' |
|
1197 |
layout: (LayoutFrame 0 0.0 5 0 4 1.0 79 0) |
|
1198 |
labelPosition: topLeft |
|
1199 |
translateLabel: true |
|
1200 |
component: |
|
1201 |
(SpecCollection |
|
1202 |
collection: ( |
|
1203 |
(FilenameInputFieldSpec |
|
1204 |
name: 'FilenameEntryField1' |
|
1205 |
layout: (LayoutFrame 0 0.0 10 0 0 1.0 32 0) |
|
1206 |
model: buildDirectoryHolder |
|
1207 |
acceptOnPointerLeave: true |
|
1208 |
viewClassName: FilenameWidgetWithHistory |
|
1209 |
) |
|
1210 |
) |
|
1211 |
||
1212 |
) |
|
1213 |
) |
|
2681 | 1214 |
(FramedBoxSpec |
1215 |
label: 'Compiler / Toolchain' |
|
1216 |
name: 'FramedBox4' |
|
1217 |
layout: (LayoutFrame 0 0.0 81 0 4 1.0 155 0) |
|
1218 |
labelPosition: topLeft |
|
1219 |
translateLabel: true |
|
1220 |
component: |
|
1221 |
(SpecCollection |
|
1222 |
collection: ( |
|
1223 |
(ComboListSpec |
|
1224 |
name: 'ComboList1' |
|
1225 |
layout: (LayoutFrame 0 0 10 0 137 0 32 0) |
|
1226 |
model: usedCompilerHolder |
|
1227 |
comboList: listOfPossibleCompilers |
|
1228 |
useIndex: false |
|
1229 |
) |
|
2910 | 1230 |
(LabelSpec |
1231 |
label: 'Compiler Suite' |
|
1232 |
name: 'Label2' |
|
1233 |
layout: (LayoutFrame 163 0 10 0 0 1 32 0) |
|
1234 |
translateLabel: true |
|
1235 |
labelChannel: nameOfUsedCompilerSuiteHolder |
|
1236 |
adjust: left |
|
1237 |
) |
|
2681 | 1238 |
) |
1239 |
||
1240 |
) |
|
1241 |
) |
|
2919 | 1242 |
(TextEditorSpec |
1243 |
name: 'TextEditor1' |
|
2724 | 1244 |
layout: (LayoutFrame 2 0.0 158 0 -2 1.0 303 0) |
1245 |
level: -1 |
|
1246 |
visibilityChannel: compilerWarnMessageVisibleHolder |
|
2919 | 1247 |
model: compilerWarnMessageHolder |
1248 |
hasHorizontalScrollBar: true |
|
1249 |
hasVerticalScrollBar: true |
|
1250 |
miniScrollerHorizontal: true |
|
2910 | 1251 |
backgroundColor: (Color 100.0 49.9992370489052 49.9992370489052) |
2919 | 1252 |
hasKeyboardFocusInitially: false |
1253 |
postBuildCallback: postBuildWarnMessageView: |
|
2724 | 1254 |
) |
2636 | 1255 |
) |
1256 |
||
1257 |
) |
|
1258 |
) |
|
1259 |
! |
|
1260 |
||
2656 | 1261 |
page7_buildSpec |
2636 | 1262 |
"This resource specification was automatically generated |
1263 |
by the UIPainter of ST/X." |
|
1264 |
||
1265 |
"Do not manually edit this!! If it is corrupted, |
|
1266 |
the UIPainter may not be able to read the specification." |
|
1267 |
||
1268 |
" |
|
2656 | 1269 |
UIPainter new openOnClass:Tools::ProjectBuilderAssistantApplication andSelector:#page7_buildSpec |
1270 |
Tools::ProjectBuilderAssistantApplication new openInterface:#page7_buildSpec |
|
2636 | 1271 |
" |
1272 |
||
1273 |
<resource: #canvas> |
|
1274 |
||
1275 |
^ |
|
1276 |
#(FullSpec |
|
2656 | 1277 |
name: #'page7_buildSpec' |
2636 | 1278 |
window: |
1279 |
(WindowSpec |
|
1280 |
label: 'Project Selection' |
|
1281 |
name: 'Project Selection' |
|
1282 |
min: (Point 0 0) |
|
2906
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1283 |
bounds: (Rectangle 0 0 677 472) |
2636 | 1284 |
) |
1285 |
component: |
|
1286 |
(SpecCollection |
|
1287 |
collection: ( |
|
1288 |
(FramedBoxSpec |
|
1289 |
label: 'Make Output' |
|
1290 |
name: 'FramedBox3' |
|
2917 | 1291 |
layout: (LayoutFrame 0 0.0 5 0 4 1.0 -60 1) |
2636 | 1292 |
labelPosition: topLeft |
1293 |
translateLabel: true |
|
1294 |
component: |
|
1295 |
(SpecCollection |
|
1296 |
collection: ( |
|
1297 |
(TextEditorSpec |
|
2646 | 1298 |
name: 'MakeOutputWindow' |
2636 | 1299 |
layout: (LayoutFrame 0 0 0 0 0 1 0 1) |
2922 | 1300 |
activeHelpKey: makeOutput |
2636 | 1301 |
model: makeOutputHolder |
1302 |
hasHorizontalScrollBar: true |
|
1303 |
hasVerticalScrollBar: true |
|
1304 |
hasKeyboardFocusInitially: false |
|
1305 |
viewClassName: 'TextCollector' |
|
2646 | 1306 |
postBuildCallback: postBuildMakeOutputWindow: |
2636 | 1307 |
) |
1308 |
) |
|
1309 |
||
1310 |
) |
|
1311 |
) |
|
2648 | 1312 |
(HorizontalPanelViewSpec |
1313 |
name: 'HorizontalPanel1' |
|
2917 | 1314 |
layout: (LayoutFrame 0 0 -60 1 0 1 -30 1) |
2648 | 1315 |
horizontalLayout: leftSpace |
1316 |
verticalLayout: center |
|
1317 |
horizontalSpace: 3 |
|
1318 |
verticalSpace: 3 |
|
1319 |
component: |
|
1320 |
(SpecCollection |
|
1321 |
collection: ( |
|
1322 |
(ActionButtonSpec |
|
2674 | 1323 |
label: 'Make All' |
2648 | 1324 |
name: 'Button3' |
2922 | 1325 |
activeHelpKey: makeAll |
2648 | 1326 |
translateLabel: true |
2674 | 1327 |
model: doStartMakeAll |
2648 | 1328 |
enableChannel: startMakeButtonEnabled |
1329 |
extent: (Point 107 22) |
|
1330 |
) |
|
1331 |
(ActionButtonSpec |
|
2674 | 1332 |
label: 'Make EXE only' |
1333 |
name: 'Button5' |
|
2922 | 1334 |
activeHelpKey: makeExe |
2674 | 1335 |
translateLabel: true |
1336 |
model: doStartMakeExe |
|
1337 |
enableChannel: startMakeButtonEnabled |
|
1338 |
extent: (Point 107 22) |
|
1339 |
) |
|
1340 |
(ViewSpec |
|
1341 |
name: 'Box1' |
|
1342 |
extent: (Point 20 10) |
|
1343 |
) |
|
1344 |
(ActionButtonSpec |
|
2648 | 1345 |
label: 'Stop Make' |
1346 |
name: 'Button4' |
|
2922 | 1347 |
activeHelpKey: stopMake |
2648 | 1348 |
visibilityChannel: stopMakeButtonVisible |
1349 |
translateLabel: true |
|
1350 |
model: doStopMake |
|
1351 |
extent: (Point 107 22) |
|
1352 |
) |
|
2917 | 1353 |
) |
1354 |
||
1355 |
) |
|
1356 |
) |
|
1357 |
(HorizontalPanelViewSpec |
|
1358 |
name: 'HorizontalPanel2' |
|
1359 |
layout: (LayoutFrame 0 0 -30 1 0 1 0 1) |
|
1360 |
horizontalLayout: leftSpace |
|
1361 |
verticalLayout: center |
|
1362 |
horizontalSpace: 3 |
|
1363 |
verticalSpace: 3 |
|
1364 |
component: |
|
1365 |
(SpecCollection |
|
1366 |
collection: ( |
|
1367 |
(ActionButtonSpec |
|
1368 |
label: 'Explorer on Build Directory' |
|
1369 |
name: 'Button13' |
|
2922 | 1370 |
activeHelpKey: openExplorer |
2917 | 1371 |
visibilityChannel: osIsWindows |
1372 |
translateLabel: true |
|
1373 |
model: doOpenExplorer |
|
1374 |
extent: (Point 167 22) |
|
1375 |
) |
|
1376 |
(ActionButtonSpec |
|
1377 |
label: 'Browser on Build Directory' |
|
1378 |
name: 'Button11' |
|
2922 | 1379 |
activeHelpKey: openFileBrowser |
2917 | 1380 |
translateLabel: true |
1381 |
model: doBrowseBuildDirectory |
|
1382 |
extent: (Point 167 22) |
|
1383 |
) |
|
2906
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1384 |
(ViewSpec |
2922 | 1385 |
name: 'Box2' |
2906
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1386 |
extent: (Point 20 10) |
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1387 |
) |
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1388 |
(ActionButtonSpec |
2917 | 1389 |
label: 'Clear Build Directory' |
1390 |
name: 'Button12' |
|
2922 | 1391 |
activeHelpKey: clearBuildDirectory |
2906
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1392 |
translateLabel: true |
2917 | 1393 |
model: doClearBuildDirectory |
2906
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1394 |
extent: (Point 167 22) |
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1395 |
) |
2648 | 1396 |
) |
1397 |
||
1398 |
) |
|
2636 | 1399 |
) |
1400 |
) |
|
1401 |
||
1402 |
) |
|
1403 |
) |
|
1404 |
! |
|
1405 |
||
2676 | 1406 |
page8_deploySpec |
1407 |
"This resource specification was automatically generated |
|
1408 |
by the UIPainter of ST/X." |
|
1409 |
||
1410 |
"Do not manually edit this!! If it is corrupted, |
|
1411 |
the UIPainter may not be able to read the specification." |
|
1412 |
||
1413 |
" |
|
1414 |
UIPainter new openOnClass:Tools::ProjectBuilderAssistantApplication andSelector:#page8_deploySpec |
|
1415 |
Tools::ProjectBuilderAssistantApplication new openInterface:#page8_deploySpec |
|
1416 |
" |
|
1417 |
||
1418 |
<resource: #canvas> |
|
1419 |
||
1420 |
^ |
|
1421 |
#(FullSpec |
|
1422 |
name: #'page8_deploySpec' |
|
1423 |
window: |
|
1424 |
(WindowSpec |
|
1425 |
label: 'Project Selection' |
|
1426 |
name: 'Project Selection' |
|
1427 |
min: (Point 0 0) |
|
1428 |
bounds: (Rectangle 0 0 521 472) |
|
1429 |
) |
|
1430 |
component: |
|
1431 |
(SpecCollection |
|
1432 |
collection: ( |
|
1433 |
(FramedBoxSpec |
|
1434 |
label: 'Files for Deployment' |
|
1435 |
name: 'FramedBox3' |
|
1436 |
layout: (LayoutFrame 0 0.0 5 0 4 1.0 0 1) |
|
1437 |
labelPosition: topLeft |
|
1438 |
translateLabel: true |
|
1439 |
component: |
|
1440 |
(SpecCollection |
|
1441 |
collection: ( |
|
1442 |
(SubCanvasSpec |
|
1443 |
name: 'SubCanvas1' |
|
1444 |
layout: (LayoutFrame 0 0 0 0 0 1 -30 1) |
|
1445 |
hasHorizontalScrollBar: false |
|
1446 |
hasVerticalScrollBar: false |
|
1447 |
clientHolder: fileBrowserInstance |
|
1448 |
createNewApplication: true |
|
1449 |
createNewBuilder: true |
|
2675 | 1450 |
) |
2676 | 1451 |
(HorizontalPanelViewSpec |
1452 |
name: 'HorizontalPanel1' |
|
1453 |
layout: (LayoutFrame 0 0 -30 1 0 1 0 1) |
|
2679 | 1454 |
horizontalLayout: centerMax |
2676 | 1455 |
verticalLayout: center |
1456 |
horizontalSpace: 3 |
|
1457 |
verticalSpace: 3 |
|
1458 |
component: |
|
1459 |
(SpecCollection |
|
1460 |
collection: ( |
|
1461 |
(ActionButtonSpec |
|
1462 |
label: 'Open Windows Explorer' |
|
1463 |
name: 'Button1' |
|
2720 | 1464 |
visibilityChannel: isWindowsOS |
2676 | 1465 |
translateLabel: true |
2649 | 1466 |
resizeForLabel: true |
1467 |
model: doOpenExplorer |
|
1468 |
extent: (Point 172 22) |
|
1469 |
) |
|
2679 | 1470 |
(ActionButtonSpec |
1471 |
label: 'Open Console' |
|
1472 |
name: 'Button2' |
|
2724 | 1473 |
visibilityChannel: isUnixOS |
2679 | 1474 |
translateLabel: true |
1475 |
resizeForLabel: true |
|
1476 |
model: doOpenConsoleTerminal |
|
1477 |
extent: (Point 172 22) |
|
1478 |
) |
|
2649 | 1479 |
) |
1480 |
||
1481 |
) |
|
1482 |
) |
|
2636 | 1483 |
) |
1484 |
||
1485 |
) |
|
1486 |
) |
|
1487 |
) |
|
1488 |
||
1489 |
) |
|
1490 |
) |
|
2676 | 1491 |
! ! |
1492 |
||
2697 | 1493 |
!ProjectBuilderAssistantApplication class methodsFor:'misc specs'! |
1494 |
||
1495 |
newProjectsNameListSpec |
|
1496 |
"This resource specification was automatically generated |
|
1497 |
by the UIPainter of ST/X." |
|
1498 |
||
1499 |
"Do not manually edit this!! If it is corrupted, |
|
1500 |
the UIPainter may not be able to read the specification." |
|
1501 |
||
1502 |
" |
|
1503 |
UIPainter new openOnClass:Tools::ProjectBuilderAssistantApplication andSelector:#newProjectsNameListSpec |
|
1504 |
Tools::ProjectBuilderAssistantApplication new openInterface:#newProjectsNameListSpec |
|
1505 |
" |
|
1506 |
||
1507 |
<resource: #canvas> |
|
1508 |
||
1509 |
^ |
|
1510 |
#(FullSpec |
|
1511 |
name: newProjectsNameListSpec |
|
1512 |
window: |
|
1513 |
(WindowSpec |
|
1514 |
label: 'NewApplication' |
|
1515 |
name: 'NewApplication' |
|
1516 |
min: (Point 0 0) |
|
1517 |
bounds: (Rectangle 0 0 131 207) |
|
1518 |
) |
|
1519 |
component: |
|
1520 |
(SpecCollection |
|
1521 |
collection: ( |
|
1522 |
(SequenceViewSpec |
|
1523 |
name: 'ReferencePoint2' |
|
1524 |
layout: (LayoutFrame 0 0 0 0 0 1 0 1) |
|
2705 | 1525 |
activeHelpKey: listOfNewProjectsName |
2697 | 1526 |
model: newProjectsName |
1527 |
hasHorizontalScrollBar: true |
|
1528 |
hasVerticalScrollBar: true |
|
1529 |
miniScrollerHorizontal: true |
|
1530 |
miniScrollerVertical: false |
|
1531 |
useIndex: false |
|
1532 |
sequenceList: listOfNewProjectsName |
|
2705 | 1533 |
doubleClickChannel: newProjectsNameListDoubleClickChannel |
2697 | 1534 |
) |
1535 |
) |
|
1536 |
||
1537 |
) |
|
1538 |
) |
|
1539 |
! ! |
|
1540 |
||
2897 | 1541 |
!ProjectBuilderAssistantApplication class methodsFor:'startup'! |
1542 |
||
1543 |
openOn:aProjectDefinitionClass |
|
1544 |
^ self new openOn:aProjectDefinitionClass |
|
1545 |
||
1546 |
"Created: / 20-07-2012 / 12:33:25 / cg" |
|
1547 |
! |
|
1548 |
||
1549 |
openOnPackage:aPackageId |
|
1550 |
^ self new openOnPackage:aPackageId |
|
1551 |
||
1552 |
"Created: / 20-07-2012 / 13:22:50 / cg" |
|
1553 |
! ! |
|
1554 |
||
2676 | 1555 |
!ProjectBuilderAssistantApplication methodsFor:'actions'! |
1556 |
||
1557 |
buildDirectoryChanged |
|
1558 |
self updateButtonEnableState. |
|
2636 | 1559 |
! |
1560 |
||
2676 | 1561 |
createNewApplication |
1562 |
<resource: #uiCallback> |
|
1563 |
||
1564 |
|newAppName newAppClass| |
|
2636 | 1565 |
|
2676 | 1566 |
newAppName := self newApplicationsName value. |
1567 |
newAppName isEmptyOrNil ifTrue:[ |
|
1568 |
Dialog warn:'Please enter the name of the Application-Class first.'. |
|
1569 |
^ self |
|
1570 |
]. |
|
1571 |
||
1572 |
self withWaitCursorDo:[ |
|
1573 |
Class packageQuerySignal answer:(selectedProjectDefinition package) |
|
1574 |
do:[ |
|
2659 | 1575 |
newAppClass := ApplicationModel |
1576 |
subclass:newAppName asSymbol |
|
1577 |
instanceVariableNames:'' |
|
1578 |
classVariableNames:'' |
|
1579 |
poolDictionaries:'' |
|
1580 |
category:'Applications'. |
|
2832
c1e7c5d29577
CodeGeneratorTool->SmalltalkCodeGeneratorTool
Claus Gittinger <cg@exept.de>
parents:
2825
diff
changeset
|
1581 |
SmalltalkCodeGeneratorTool createApplicationCodeFor:newAppClass. |
2659 | 1582 |
]. |
2724 | 1583 |
self updateListOfApplicationsInProject. |
1584 |
self selectedApplicationIndexHolder value:(listOfApplicationsInProject value indexOf:newAppClass). |
|
2636 | 1585 |
]. |
2832
c1e7c5d29577
CodeGeneratorTool->SmalltalkCodeGeneratorTool
Claus Gittinger <cg@exept.de>
parents:
2825
diff
changeset
|
1586 |
|
c1e7c5d29577
CodeGeneratorTool->SmalltalkCodeGeneratorTool
Claus Gittinger <cg@exept.de>
parents:
2825
diff
changeset
|
1587 |
"Modified: / 31-01-2011 / 18:29:50 / cg" |
2636 | 1588 |
! |
1589 |
||
2676 | 1590 |
createNewProject |
1591 |
<resource: #uiCallback> |
|
1592 |
||
1593 |
|newProjectID projectDefinitionType projectDefinitionClass projectClasses| |
|
1594 |
||
1595 |
newProjectID := self newProjectsName value. |
|
1596 |
newProjectID isEmptyOrNil ifTrue:[ |
|
2686
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
1597 |
Dialog warn:(resources string:'Please enter a packageID first.'). |
2676 | 1598 |
^ self |
1599 |
]. |
|
1600 |
newProjectID asPackageId isModuleId ifTrue:[ |
|
2686
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
1601 |
Dialog warn:(resources stringWithCRs: |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
1602 |
'Please enter a corrent packageID. |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
1603 |
|
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
1604 |
All packages must be named like "%1:%2" |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
1605 |
(%2 can be a path like "dir/dir/...").' with:(resources string:'module')allItalic |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
1606 |
with:(resources string:'directory')allItalic). |
2676 | 1607 |
^ self |
1608 |
]. |
|
1609 |
||
2709 | 1610 |
self withWaitCursorDo:[ |
2900 | 1611 |
projectDefinitionType := self projectType. "/ ProjectDefinition perform:(self projectTypeHolder value). |
2676 | 1612 |
|
2709 | 1613 |
projectDefinitionClass := ProjectDefinition |
1614 |
definitionClassForPackage:newProjectID |
|
1615 |
projectType: projectDefinitionType |
|
1616 |
createIfAbsent:true. |
|
2676 | 1617 |
|
2709 | 1618 |
projectDefinitionClass compileDescriptionMethods. |
1619 |
self updateListOfMatchingProjects. |
|
1620 |
self updateListOfNewProjectsName. |
|
2676 | 1621 |
|
2709 | 1622 |
self selectedProjectIndexHolder value:( self listOfMatchingProjects value indexOf:projectDefinitionClass). |
2676 | 1623 |
|
2851 | 1624 |
projectClasses := projectDefinitionClass allClasses. |
2676 | 1625 |
|
1626 |
"/ projectDefinitionClass isGUIApplication ifTrue:[ |
|
1627 |
"/ "/ see if it has an AppModel class |
|
2659 | 1628 |
"/ (projectClasses contains:[:cls | cls isVisualStartable]) ifFalse:[ |
1629 |
"/ (Dialog confirm:'Create an Application Class ?') ifTrue:[ |
|
1630 |
"/ self halt. |
|
1631 |
"/ ]. |
|
1632 |
"/ ]. |
|
1633 |
"/ ]. |
|
2636 | 1634 |
|
1635 |
"/ projectDefinitionClass isLibrary ifFalse:[ |
|
1636 |
"/ "/ see if it has a Startup class |
|
1637 |
"/ (projectClasses contains:[:cls | cls isStartable]) ifFalse:[ |
|
1638 |
"/ ]. |
|
1639 |
"/ ]. |
|
2709 | 1640 |
|
1641 |
]. |
|
2851 | 1642 |
|
2900 | 1643 |
"Modified: / 06-08-2012 / 16:55:54 / cg" |
2636 | 1644 |
! |
1645 |
||
2676 | 1646 |
createNewStartupClass |
1647 |
<resource: #uiCallback> |
|
1648 |
||
2696 | 1649 |
|newClassName newStartupClass startupApplication| |
2676 | 1650 |
|
1651 |
newClassName := self newStartupClassName value. |
|
1652 |
newClassName isEmptyOrNil ifTrue:[ |
|
1653 |
Dialog warn:'Please enter the name of the Startup-Class first.'. |
|
1654 |
^ self |
|
1655 |
]. |
|
1656 |
||
2719 | 1657 |
self withWaitCursorDo:[ |
1658 |
|pkg| |
|
1659 |
||
1660 |
pkg := selectedProjectDefinition notNil |
|
1661 |
ifTrue:[selectedProjectDefinition package] |
|
1662 |
ifFalse:[newProjectsName value]. |
|
1663 |
Class packageQuerySignal answer:pkg |
|
2676 | 1664 |
do:[ |
1665 |
newStartupClass := StandaloneStartup |
|
2659 | 1666 |
subclass:newClassName asSymbol |
1667 |
instanceVariableNames:'' |
|
1668 |
classVariableNames:'' |
|
1669 |
poolDictionaries:'' |
|
2696 | 1670 |
category:'Applications'. |
1671 |
||
1672 |
self projectTypeIsGuiApplication ifTrue: [startupApplication := selectedApplication]. |
|
2832
c1e7c5d29577
CodeGeneratorTool->SmalltalkCodeGeneratorTool
Claus Gittinger <cg@exept.de>
parents:
2825
diff
changeset
|
1673 |
SmalltalkCodeGeneratorTool createStartupCodeFor:newStartupClass forStartOf:startupApplication. |
2659 | 1674 |
]. |
2724 | 1675 |
self updateListOfStartupClassesInProject. |
1676 |
self selectedStartupClassIndexHolder value:(listOfStartupClassesInProject value indexOf:newStartupClass). |
|
2659 | 1677 |
]. |
2832
c1e7c5d29577
CodeGeneratorTool->SmalltalkCodeGeneratorTool
Claus Gittinger <cg@exept.de>
parents:
2825
diff
changeset
|
1678 |
|
c1e7c5d29577
CodeGeneratorTool->SmalltalkCodeGeneratorTool
Claus Gittinger <cg@exept.de>
parents:
2825
diff
changeset
|
1679 |
"Modified: / 31-01-2011 / 18:29:47 / cg" |
2659 | 1680 |
! |
1681 |
||
2676 | 1682 |
doAddClassToProject |
1683 |
<resource: #uiCallback> |
|
2636 | 1684 |
|
1685 |
Transcript showCR:self class name, ': action for doAddClassToProject ...'. |
|
1686 |
self halt. |
|
1687 |
! |
|
1688 |
||
2676 | 1689 |
doBrowseApplication |
1690 |
<resource: #uiCallback> |
|
2636 | 1691 |
|
1692 |
|appClass| |
|
1693 |
||
2659 | 1694 |
self hasApplicationSelected ifTrue:[ |
1695 |
appClass := self listOfApplicationsInProject value at:(self selectedApplicationIndexHolder value). |
|
1696 |
UserPreferences systemBrowserClass |
|
2668 | 1697 |
openInClass:appClass class selector:#windowSpec. |
2659 | 1698 |
]. |
2636 | 1699 |
! |
1700 |
||
2906
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1701 |
doBrowseBuildDirectory |
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1702 |
<resource: #uiCallback> |
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1703 |
|
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1704 |
UserPreferences current fileBrowserClass |
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1705 |
openIn:projectBuilder packageBuildDirectory asFilename |
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1706 |
"/ projectBuilder packageBuildDirectory asFilename openExplorer |
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1707 |
|
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1708 |
"Created: / 20-08-2012 / 17:05:54 / cg" |
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1709 |
! |
8057ed7bccd2
added: #doBrowseBuildDirectory
Claus Gittinger <cg@exept.de>
parents:
2900
diff
changeset
|
1710 |
|
2676 | 1711 |
doBrowseProject |
1712 |
<resource: #uiCallback> |
|
1713 |
||
1714 |
UserPreferences systemBrowserClass openOnPackage:selectedProjectDefinition package. |
|
2636 | 1715 |
! |
1716 |
||
2676 | 1717 |
doBrowseProjectDefinitionClass |
1718 |
<resource: #uiCallback> |
|
1719 |
||
1720 |
|defClass| |
|
1721 |
||
1722 |
self hasProjectSelected ifTrue:[ |
|
1723 |
defClass := self selectedProjectDefinition. |
|
1724 |
UserPreferences systemBrowserClass |
|
2659 | 1725 |
openInClass:defClass class selector:#classNamesAndAttributes. |
1726 |
]. |
|
1727 |
! |
|
1728 |
||
2676 | 1729 |
doBrowseStartupClass |
1730 |
<resource: #uiCallback> |
|
1731 |
||
1732 |
|startupClass| |
|
1733 |
||
1734 |
self hasStartupClassSelected ifTrue:[ |
|
1735 |
startupClass := self listOfStartupClassesInProject value at:(self selectedStartupClassIndexHolder value). |
|
1736 |
UserPreferences systemBrowserClass |
|
1737 |
openInClass:startupClass class selector:#main:. |
|
2659 | 1738 |
]. |
1739 |
! |
|
1740 |
||
2917 | 1741 |
doClearBuildDirectory |
1742 |
<resource: #uiCallback> |
|
1743 |
||
2928 | 1744 |
projectBuilder isNil ifTrue:[ self getProjectBuilder ]. |
1745 |
projectBuilder buildDirectory notNil ifTrue:[ |
|
1746 |
projectBuilder packageBuildDirectory asFilename recursiveRemove |
|
1747 |
]. |
|
2917 | 1748 |
|
1749 |
"Created: / 05-09-2012 / 10:35:54 / cg" |
|
1750 |
! |
|
1751 |
||
2676 | 1752 |
doGenerateProjectContentsDefinition |
1753 |
self generatePackageContentsMethods |
|
1754 |
! |
|
1755 |
||
2872 | 1756 |
doGenerateProjectPrerequisitesDefinition |
1757 |
self generatePackageContentsMethods |
|
1758 |
||
1759 |
"Created: / 19-01-2012 / 15:44:23 / cg" |
|
1760 |
! |
|
1761 |
||
2676 | 1762 |
doLaunchApplication |
1763 |
<resource: #uiCallback> |
|
1764 |
||
1765 |
|appClass| |
|
1766 |
||
1767 |
self hasApplicationSelected ifTrue:[ |
|
1768 |
appClass := self listOfApplicationsInProject value at:(self selectedApplicationIndexHolder value). |
|
1769 |
appClass open. |
|
2659 | 1770 |
]. |
1771 |
! |
|
1772 |
||
2679 | 1773 |
doOpenConsoleTerminal |
1774 |
"/ OperatingSystem |
|
1775 |
"/ executeCommand:'cmd.exe' |
|
1776 |
"/ inDirectory:(projectBuilder packageBuildDirectory) |
|
2724 | 1777 |
OperatingSystem isUNIXlike ifTrue:[ |
1778 |
VT100TerminalView openShellIn:(projectBuilder packageBuildDirectory) |
|
1779 |
] ifFalse:[ |
|
1780 |
OperatingSystem |
|
1781 |
executeCommand:'c:\windows\System32\cmd.exe' |
|
1782 |
inDirectory:(projectBuilder packageBuildDirectory) |
|
1783 |
] |
|
2679 | 1784 |
! |
1785 |
||
2676 | 1786 |
doOpenExplorer |
2899 | 1787 |
projectBuilder packageBuildDirectory asFilename openExplorer |
1788 |
||
1789 |
"Modified: / 21-07-2012 / 12:29:21 / cg" |
|
2676 | 1790 |
! |
1791 |
||
2674 | 1792 |
doStartMakeAll |
2636 | 1793 |
<resource: #uiCallback> |
1794 |
||
1795 |
self stopMakeButtonVisible value:true. |
|
1796 |
self startMakeButtonEnabled value:false. |
|
1797 |
||
2724 | 1798 |
self infoHolder value:'Building (make) - please wait...'. |
2646 | 1799 |
makeOutputWindow clear. |
1800 |
||
2636 | 1801 |
makeProcess := |
1802 |
[ |
|
1803 |
[ |
|
2674 | 1804 |
self runBuildProcess:'all' |
1805 |
] ensure:[ |
|
1806 |
self stopMakeButtonVisible value:false. |
|
1807 |
self startMakeButtonEnabled value:true. |
|
1808 |
makeProcess := nil. |
|
1809 |
self updateButtonEnableState. |
|
2724 | 1810 |
self infoHolder value:''. |
2674 | 1811 |
]. |
1812 |
] newProcess. |
|
1813 |
||
1814 |
makeProcess priority:4. |
|
1815 |
makeProcess priorityRange:(4 to:8). |
|
1816 |
makeProcess resume. |
|
1817 |
! |
|
1818 |
||
2675 | 1819 |
doStartMakeExe |
2674 | 1820 |
<resource: #uiCallback> |
1821 |
||
1822 |
self stopMakeButtonVisible value:true. |
|
1823 |
self startMakeButtonEnabled value:false. |
|
1824 |
||
2724 | 1825 |
self infoHolder value:'Building (make) - please wait...'. |
2674 | 1826 |
makeOutputWindow clear. |
1827 |
||
1828 |
makeProcess := |
|
1829 |
[ |
|
1830 |
[ |
|
1831 |
self runBuildProcess:'exe' |
|
2636 | 1832 |
] ensure:[ |
1833 |
self stopMakeButtonVisible value:false. |
|
1834 |
self startMakeButtonEnabled value:true. |
|
2646 | 1835 |
makeProcess := nil. |
2648 | 1836 |
self updateButtonEnableState. |
2724 | 1837 |
self infoHolder value:''. |
2636 | 1838 |
]. |
1839 |
] newProcess. |
|
1840 |
||
1841 |
makeProcess priority:4. |
|
1842 |
makeProcess priorityRange:(4 to:8). |
|
1843 |
makeProcess resume. |
|
1844 |
! |
|
1845 |
||
2676 | 1846 |
doStopMake |
1847 |
<resource: #uiCallback> |
|
1848 |
||
1849 |
|p| |
|
2646 | 1850 |
|
2676 | 1851 |
(p := makeProcess) notNil ifTrue:[ |
1852 |
makeProcess := nil. |
|
1853 |
p terminate. |
|
1854 |
p waitUntilTerminated. |
|
1855 |
||
1856 |
makeOutputWindow endEntry. |
|
1857 |
makeOutputWindow cr. |
|
1858 |
makeOutputWindow nextPutLine:('Make Cancelled' colorizeAllWith:Color white on:Color red). |
|
1859 |
makeOutputWindow endEntry. |
|
1860 |
]. |
|
2646 | 1861 |
! |
1862 |
||
2913 | 1863 |
fetchSelectedProject |
1864 |
|selectedProjectIndex| |
|
1865 |
||
1866 |
selectedProjectIndex := self selectedProjectIndexHolder value. |
|
1867 |
(selectedProjectIndex ? 0) == 0 ifTrue:[ |
|
1868 |
selectedProjectDefinition := nil. |
|
1869 |
] ifFalse:[ |
|
1870 |
selectedProjectDefinition := self listOfMatchingProjects value at:(selectedProjectIndex). |
|
1871 |
]. |
|
1872 |
self hasProjectSelectedHolder value:(selectedProjectDefinition notNil). |
|
1873 |
||
1874 |
"Created: / 04-09-2012 / 09:52:32 / cg" |
|
1875 |
! |
|
1876 |
||
2928 | 1877 |
getProjectBuilder |
1878 |
projectBuilder := ProjectBuilder new. |
|
1879 |
projectBuilder package:(selectedProjectDefinition package). |
|
1880 |
projectBuilder usedCompilerForBuild:(usedCompilerHolder value). |
|
1881 |
^ projectBuilder |
|
1882 |
||
1883 |
"Created: / 26-09-2012 / 20:57:32 / cg" |
|
1884 |
! |
|
1885 |
||
2676 | 1886 |
projectTypeChanged |
1887 |
<resource: #uiCallback> |
|
1888 |
||
1889 |
self updateListOfMatchingProjects |
|
2636 | 1890 |
! |
1891 |
||
2674 | 1892 |
runBuildProcess:what |
2636 | 1893 |
<resource: #uiCallback> |
1894 |
||
2646 | 1895 |
self assert:makeOutputWindow notNil. |
1896 |
self assert:makeOutputWindow model == self makeOutputHolder. |
|
1897 |
||
1898 |
ActivityNotification handle:[:ex | |
|
1899 |
ex messageText notNil ifTrue:[ |
|
1900 |
makeOutputWindow endEntry. |
|
1901 |
makeOutputWindow cr. |
|
2659 | 1902 |
makeOutputWindow nextPutLine:(ex messageText colorizeAllWith:Color white on:Color blue). |
2646 | 1903 |
makeOutputWindow endEntry. |
2687
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
1904 |
]. |
2646 | 1905 |
ex proceed. |
1906 |
] do:[ |
|
2928 | 1907 |
self getProjectBuilder. |
2674 | 1908 |
|
1909 |
Error handle:[:ex | |
|
1910 |
makeOutputWindow endEntry. |
|
1911 |
makeOutputWindow cr. |
|
2682 | 1912 |
makeOutputWindow nextPutLine:(ex description colorizeAllWith:Color white on:Color red). |
2674 | 1913 |
makeOutputWindow endEntry. |
2682 | 1914 |
ex proceed. |
2674 | 1915 |
] do:[ |
1916 |
projectBuilder buildWithColorizedOutputTo:makeOutputWindow. |
|
1917 |
]. |
|
2646 | 1918 |
]. |
2874 | 1919 |
|
2928 | 1920 |
"Modified: / 26-09-2012 / 20:57:42 / cg" |
2636 | 1921 |
! |
1922 |
||
2676 | 1923 |
selectedApplicationChanged |
1924 |
|idx| |
|
2671 | 1925 |
|
2676 | 1926 |
((idx := self selectedApplicationIndexHolder value) isNil |
1927 |
or:[idx == 0]) ifTrue:[ |
|
1928 |
selectedApplication := nil. |
|
1929 |
] ifFalse:[ |
|
1930 |
selectedApplication := self listOfApplicationsInProject value at:idx. |
|
2636 | 1931 |
]. |
2676 | 1932 |
self hasApplicationSelectedHolder value:(selectedApplication notNil). |
2659 | 1933 |
|
2676 | 1934 |
"/ selectedApplication notNil ifTrue:[ |
1935 |
"/ "/ generate startupClass code |
|
1936 |
"/ CodeGeneratorTool |
|
2656 | 1937 |
"/ compile:(selectedProjectDefinition startupClassName_codeFor:(selectedApplication name)) |
1938 |
"/ forClass:selectedProjectDefinition theMetaclass |
|
1939 |
"/ inCategory:'description - startup'. |
|
1940 |
"/ ]. |
|
2636 | 1941 |
self updateApplicationComment. |
1942 |
self updateButtonEnableState. |
|
1943 |
! |
|
1944 |
||
2676 | 1945 |
selectedProjectChanged |
2913 | 1946 |
self fetchSelectedProject. |
2676 | 1947 |
|
1948 |
self updateComment. |
|
1949 |
self updateListOfApplicationsInProject. |
|
2636 | 1950 |
self updateButtonEnableState. |
2913 | 1951 |
|
1952 |
"Modified: / 04-09-2012 / 09:52:43 / cg" |
|
2656 | 1953 |
! |
1954 |
||
2676 | 1955 |
selectedStartupClassChanged |
1956 |
self selectedStartupClassIndexHolder value isNil ifTrue:[ |
|
1957 |
selectedStartupClass := nil. |
|
1958 |
] ifFalse:[ |
|
1959 |
selectedStartupClass := self listOfStartupClassesInProject value at:(self selectedStartupClassIndexHolder value). |
|
2656 | 1960 |
]. |
2659 | 1961 |
self hasStartupClassSelectedHolder value:(selectedStartupClass notNil). |
1962 |
||
2656 | 1963 |
selectedStartupClass notNil ifTrue:[ |
1964 |
"/ generate startupClass code |
|
2832
c1e7c5d29577
CodeGeneratorTool->SmalltalkCodeGeneratorTool
Claus Gittinger <cg@exept.de>
parents:
2825
diff
changeset
|
1965 |
SmalltalkCodeGeneratorTool |
2656 | 1966 |
compile:(selectedProjectDefinition startupClassName_codeFor:(selectedStartupClass name)) |
1967 |
forClass:selectedProjectDefinition theMetaclass |
|
1968 |
inCategory:'description - startup'. |
|
1969 |
]. |
|
1970 |
self updateButtonEnableState. |
|
2832
c1e7c5d29577
CodeGeneratorTool->SmalltalkCodeGeneratorTool
Claus Gittinger <cg@exept.de>
parents:
2825
diff
changeset
|
1971 |
|
c1e7c5d29577
CodeGeneratorTool->SmalltalkCodeGeneratorTool
Claus Gittinger <cg@exept.de>
parents:
2825
diff
changeset
|
1972 |
"Modified: / 31-01-2011 / 18:29:42 / cg" |
2676 | 1973 |
! ! |
2636 | 1974 |
|
2676 | 1975 |
!ProjectBuilderAssistantApplication methodsFor:'aspects'! |
2636 | 1976 |
|
2676 | 1977 |
buildDirectoryHolder |
1978 |
<resource: #uiAspect> |
|
2636 | 1979 |
|
1980 |
|buildDirectory| |
|
1981 |
||
1982 |
buildDirectoryHolder isNil ifTrue:[ |
|
1983 |
buildDirectoryHolder := nil asValue. |
|
1984 |
buildDirectoryHolder onChangeSend:#buildDirectoryChanged to:self. |
|
1985 |
]. |
|
1986 |
buildDirectoryHolder value isEmptyOrNil ifTrue:[ |
|
2686
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
1987 |
buildDirectory := ProjectBuilder previousBuildDirectory. |
2636 | 1988 |
buildDirectory isNil ifTrue:[ |
1989 |
buildDirectory := UserPreferences current buildDirectory. |
|
1990 |
buildDirectory isNil ifTrue:[ |
|
1991 |
buildDirectory := Filename tempDirectory construct:'stx_build'. |
|
1992 |
]. |
|
1993 |
]. |
|
1994 |
buildDirectoryHolder value: buildDirectory. |
|
1995 |
]. |
|
1996 |
^ buildDirectoryHolder. |
|
1997 |
! |
|
1998 |
||
2724 | 1999 |
companyNameHolder |
2000 |
<resource: #uiAspect> |
|
2001 |
||
2002 |
companyNameHolder isNil ifTrue:[ |
|
2003 |
companyNameHolder := 'MyCompany' asValue. |
|
2004 |
]. |
|
2005 |
^ companyNameHolder. |
|
2006 |
! |
|
2007 |
||
2008 |
compilerWarnMessageHolder |
|
2009 |
<resource: #uiAspect> |
|
2010 |
||
2011 |
compilerWarnMessageHolder isNil ifTrue:[ |
|
2012 |
compilerWarnMessageHolder := '' asValue. |
|
2013 |
]. |
|
2014 |
^ compilerWarnMessageHolder. |
|
2015 |
! |
|
2016 |
||
2017 |
compilerWarnMessageVisibleHolder |
|
2018 |
<resource: #uiAspect> |
|
2019 |
||
2020 |
compilerWarnMessageVisibleHolder isNil ifTrue:[ |
|
2021 |
compilerWarnMessageVisibleHolder := false asValue. |
|
2022 |
]. |
|
2023 |
^ compilerWarnMessageVisibleHolder. |
|
2024 |
! |
|
2025 |
||
2676 | 2026 |
hasApplicationSelectedHolder |
2027 |
<resource: #uiAspect> |
|
2028 |
||
2029 |
hasApplicationSelectedHolder isNil ifTrue:[ |
|
2659 | 2030 |
hasApplicationSelectedHolder := nil asValue. |
2031 |
]. |
|
2032 |
^ hasApplicationSelectedHolder. |
|
2636 | 2033 |
! |
2034 |
||
2676 | 2035 |
hasProjectSelectedHolder |
2036 |
<resource: #uiAspect> |
|
2037 |
||
2038 |
hasProjectSelectedHolder isNil ifTrue:[ |
|
2659 | 2039 |
hasProjectSelectedHolder := nil asValue. |
2040 |
]. |
|
2041 |
^ hasProjectSelectedHolder. |
|
2648 | 2042 |
! |
2043 |
||
2676 | 2044 |
hasStartupClassSelectedHolder |
2045 |
<resource: #uiAspect> |
|
2046 |
||
2047 |
hasStartupClassSelectedHolder isNil ifTrue:[ |
|
2659 | 2048 |
hasStartupClassSelectedHolder := nil asValue. |
2049 |
]. |
|
2050 |
^ hasStartupClassSelectedHolder. |
|
2636 | 2051 |
! |
2052 |
||
2676 | 2053 |
hideOtherApplicationClasses |
2054 |
<resource: #uiAspect> |
|
2055 |
||
2056 |
hideOtherApplicationClasses isNil ifTrue:[ |
|
2671 | 2057 |
hideOtherApplicationClasses := true asValue. |
2058 |
hideOtherApplicationClasses onChangeSend:#updateListOfApplicationsInProject to:self. |
|
2059 |
]. |
|
2060 |
^ hideOtherApplicationClasses. |
|
2061 |
! |
|
2062 |
||
2676 | 2063 |
hideOtherStartupClasses |
2064 |
<resource: #uiAspect> |
|
2065 |
||
2066 |
hideOtherStartupClasses isNil ifTrue:[ |
|
2067 |
hideOtherStartupClasses := true asValue. |
|
2068 |
hideOtherStartupClasses onChangeSend:#updateListOfStartupClassesInProject to:self. |
|
2671 | 2069 |
]. |
2676 | 2070 |
^ hideOtherStartupClasses. |
2671 | 2071 |
! |
2072 |
||
2676 | 2073 |
hideSTXProjects |
2074 |
<resource: #uiAspect> |
|
2075 |
||
2076 |
hideSTXProjects isNil ifTrue:[ |
|
2077 |
hideSTXProjects := true asValue. |
|
2078 |
hideSTXProjects onChangeSend:#updateListOfMatchingProjects to:self. |
|
2079 |
]. |
|
2080 |
^ hideSTXProjects. |
|
2081 |
! |
|
2082 |
||
2083 |
listOfApplicationsInProject |
|
2084 |
<resource: #uiAspect> |
|
2085 |
||
2086 |
listOfApplicationsInProject isNil ifTrue:[ |
|
2636 | 2087 |
listOfApplicationsInProject := ValueHolder new. |
2088 |
]. |
|
2089 |
^ listOfApplicationsInProject. |
|
2090 |
! |
|
2091 |
||
2676 | 2092 |
listOfClassesInProject |
2093 |
<resource: #uiAspect> |
|
2094 |
||
2095 |
listOfClassesInProject isNil ifTrue:[ |
|
2636 | 2096 |
listOfClassesInProject := ValueHolder new. |
2097 |
]. |
|
2098 |
^ listOfClassesInProject. |
|
2099 |
! |
|
2100 |
||
2686
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2101 |
listOfMatchingPackageIds |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2102 |
<resource: #uiAspect> |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2103 |
|
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2104 |
listOfMatchingPackageIds isNil ifTrue:[ |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2105 |
listOfMatchingPackageIds := ValueHolder new. |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2106 |
]. |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2107 |
^ listOfMatchingPackageIds. |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2108 |
! |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2109 |
|
2676 | 2110 |
listOfMatchingProjects |
2111 |
<resource: #uiAspect> |
|
2636 | 2112 |
|
2113 |
listOfMatchingProjects isNil ifTrue:[ |
|
2114 |
listOfMatchingProjects := ValueHolder new. |
|
2115 |
]. |
|
2116 |
^ listOfMatchingProjects. |
|
2117 |
! |
|
2118 |
||
2697 | 2119 |
listOfNewProjectsName |
2120 |
||
2121 |
<resource: #uiAspect> |
|
2122 |
||
2123 |
listOfNewProjectsName isNil ifTrue:[ |
|
2124 |
listOfNewProjectsName := ValueHolder new. |
|
2125 |
]. |
|
2126 |
^ listOfNewProjectsName. |
|
2127 |
! |
|
2128 |
||
2681 | 2129 |
listOfPossibleCompilers |
2874 | 2130 |
^ Tools::ProjectBuilder listOfPossibleCompilers |
2131 |
||
2919 | 2132 |
"Modified: / 05-09-2012 / 19:10:24 / cg" |
2681 | 2133 |
! |
2134 |
||
2872 | 2135 |
listOfPrerequisitesInProject |
2136 |
<resource: #uiAspect> |
|
2137 |
||
2138 |
listOfPrerequisitesInProject isNil ifTrue:[ |
|
2139 |
listOfPrerequisitesInProject := ValueHolder new. |
|
2140 |
]. |
|
2141 |
^ listOfPrerequisitesInProject. |
|
2142 |
||
2143 |
"Created: / 19-01-2012 / 15:39:34 / cg" |
|
2144 |
! |
|
2145 |
||
2676 | 2146 |
listOfStartupClassesInProject |
2147 |
<resource: #uiAspect> |
|
2148 |
||
2149 |
listOfStartupClassesInProject isNil ifTrue:[ |
|
2150 |
listOfStartupClassesInProject := ValueHolder new. |
|
2151 |
]. |
|
2152 |
^ listOfStartupClassesInProject. |
|
2153 |
! |
|
2154 |
||
2155 |
makeOutputHolder |
|
2156 |
<resource: #uiAspect> |
|
2636 | 2157 |
|
2158 |
makeOutputHolder isNil ifTrue:[ |
|
2646 | 2159 |
makeOutputHolder := ValueHolder new. |
2636 | 2160 |
]. |
2161 |
^ makeOutputHolder. |
|
2162 |
! |
|
2163 |
||
2910 | 2164 |
nameOfUsedCompilerSuiteHolder |
2165 |
<resource: #uiAspect> |
|
2166 |
||
2167 |
nameOfUsedCompilerSuiteHolder isNil ifTrue:[ |
|
2168 |
nameOfUsedCompilerSuiteHolder := nil asValue. |
|
2169 |
]. |
|
2170 |
^ nameOfUsedCompilerSuiteHolder. |
|
2171 |
||
2172 |
"Created: / 03-09-2012 / 19:32:27 / cg" |
|
2173 |
! |
|
2174 |
||
2676 | 2175 |
newApplicationsName |
2176 |
<resource: #uiAspect> |
|
2177 |
||
2178 |
"automatically generated by UIPainter ..." |
|
2179 |
||
2180 |
"*** the code below creates a default model when invoked." |
|
2181 |
"*** (which may not be the one you wanted)" |
|
2182 |
"*** Please change as required and accept it in the browser." |
|
2183 |
"*** (and replace this comment by something more useful ;-)" |
|
2184 |
||
2185 |
newApplicationsName isNil ifTrue:[ |
|
2186 |
newApplicationsName := ValueHolder new. |
|
2187 |
"/ if your app needs to be notified of changes, uncomment one of the lines below: |
|
2636 | 2188 |
"/ newApplicationsName addDependent:self. |
2189 |
"/ newApplicationsName onChangeSend:#newApplicationsNameChanged to:self. |
|
2190 |
]. |
|
2191 |
^ newApplicationsName. |
|
2192 |
! |
|
2193 |
||
2676 | 2194 |
newProjectsName |
2195 |
<resource: #uiAspect> |
|
2196 |
||
2197 |
newProjectsName isNil ifTrue:[ |
|
2636 | 2198 |
newProjectsName := nil asValue. |
2199 |
]. |
|
2200 |
^ newProjectsName. |
|
2201 |
! |
|
2202 |
||
2705 | 2203 |
newProjectsNameListDoubleClickChannel |
2204 |
"automatically generated by UIPainter ..." |
|
2205 |
||
2206 |
"*** the code below creates a default model when invoked." |
|
2207 |
"*** (which may not be the one you wanted)" |
|
2208 |
"*** Please change as required and accept it in the browser." |
|
2209 |
||
2210 |
|holder| |
|
2211 |
||
2212 |
(holder := builder bindingAt:#newProjectsNameListDoubleClickChannel) isNil ifTrue:[ |
|
2213 |
holder := TriggerValue new. |
|
2214 |
builder aspectAt:#newProjectsNameListDoubleClickChannel put:holder. |
|
2215 |
holder onChangeEvaluate:[ |
|
2216 |
newProjectsNameListExtendedComboBox notNil ifTrue: [ |
|
2217 |
newProjectsNameListExtendedComboBox closeMenu. |
|
2218 |
] |
|
2219 |
] |
|
2220 |
]. |
|
2221 |
^ holder. |
|
2222 |
! |
|
2223 |
||
2676 | 2224 |
newStartupClassName |
2225 |
<resource: #uiAspect> |
|
2226 |
||
2227 |
newStartupClassName isNil ifTrue:[ |
|
2228 |
newStartupClassName := ValueHolder new. |
|
2229 |
]. |
|
2230 |
^ newStartupClassName. |
|
2659 | 2231 |
! |
2232 |
||
2724 | 2233 |
productNameHolder |
2234 |
<resource: #uiAspect> |
|
2235 |
||
2236 |
productNameHolder isNil ifTrue:[ |
|
2237 |
productNameHolder := 'MyProduct' asValue. |
|
2238 |
]. |
|
2239 |
^ productNameHolder. |
|
2240 |
! |
|
2241 |
||
2676 | 2242 |
projectType |
2897 | 2243 |
^ self projectTypeHolder value |
2244 |
||
2245 |
"Modified: / 20-07-2012 / 13:28:46 / cg" |
|
2659 | 2246 |
! |
2247 |
||
2676 | 2248 |
projectType:aProjectTypeSymbol |
2249 |
self assert:(ProjectDefinition projectTypes includes:aProjectTypeSymbol). |
|
2659 | 2250 |
self projectTypeHolder value:aProjectTypeSymbol |
2897 | 2251 |
|
2252 |
"Modified: / 20-07-2012 / 13:28:25 / cg" |
|
2659 | 2253 |
! |
2254 |
||
2676 | 2255 |
projectTypeHolder |
2256 |
<resource: #uiAspect> |
|
2659 | 2257 |
|
2676 | 2258 |
projectTypeHolder isNil ifTrue:[ |
2259 |
projectTypeHolder := RadioButtonGroup new. |
|
2897 | 2260 |
projectTypeHolder value:ProjectDefinition guiApplicationType. |
2659 | 2261 |
]. |
2262 |
^ projectTypeHolder. |
|
2897 | 2263 |
|
2264 |
"Modified: / 20-07-2012 / 13:30:16 / cg" |
|
2636 | 2265 |
! |
2266 |
||
2676 | 2267 |
selectedApplicationIndexHolder |
2268 |
<resource: #uiAspect> |
|
2269 |
||
2270 |
selectedApplicationIndexHolder isNil ifTrue:[ |
|
2636 | 2271 |
selectedApplicationIndexHolder := ValueHolder new. |
2272 |
selectedApplicationIndexHolder onChangeSend:#selectedApplicationChanged to:self. |
|
2273 |
]. |
|
2274 |
^ selectedApplicationIndexHolder. |
|
2275 |
! |
|
2276 |
||
2676 | 2277 |
selectedApplicationsComment |
2278 |
<resource: #uiAspect> |
|
2279 |
||
2280 |
"automatically generated by UIPainter ..." |
|
2636 | 2281 |
|
2282 |
"*** the code below creates a default model when invoked." |
|
2283 |
"*** (which may not be the one you wanted)" |
|
2284 |
"*** Please change as required and accept it in the browser." |
|
2285 |
"*** (and replace this comment by something more useful ;-)" |
|
2286 |
||
2287 |
selectedApplicationsComment isNil ifTrue:[ |
|
2288 |
selectedApplicationsComment := '' asValue. |
|
2289 |
"/ if your app needs to be notified of changes, uncomment one of the lines below: |
|
2290 |
"/ selectedApplicationsComment addDependent:self. |
|
2291 |
"/ selectedApplicationsComment onChangeSend:#selectedApplicationsCommentChanged to:self. |
|
2292 |
]. |
|
2293 |
^ selectedApplicationsComment. |
|
2294 |
! |
|
2295 |
||
2676 | 2296 |
selectedProjectDefinition |
2297 |
<resource: #uiAspect> |
|
2636 | 2298 |
|
2676 | 2299 |
^ selectedProjectDefinition. |
2636 | 2300 |
! |
2301 |
||
2676 | 2302 |
selectedProjectIndexHolder |
2303 |
<resource: #uiAspect> |
|
2636 | 2304 |
|
2305 |
selectedProjectIndexHolder isNil ifTrue:[ |
|
2306 |
selectedProjectIndexHolder := ValueHolder new. |
|
2307 |
selectedProjectIndexHolder onChangeSend:#selectedProjectChanged to:self. |
|
2308 |
]. |
|
2309 |
^ selectedProjectIndexHolder. |
|
2676 | 2310 |
! |
2311 |
||
2312 |
selectedProjectsComment |
|
2313 |
<resource: #uiAspect> |
|
2314 |
||
2315 |
selectedProjectsComment isNil ifTrue:[ |
|
2316 |
selectedProjectsComment := '' asValue. |
|
2317 |
]. |
|
2318 |
^ selectedProjectsComment. |
|
2319 |
! |
|
2320 |
||
2321 |
selectedStartupClassIndexHolder |
|
2322 |
<resource: #uiAspect> |
|
2323 |
||
2324 |
selectedStartupClassIndexHolder isNil ifTrue:[ |
|
2325 |
selectedStartupClassIndexHolder := ValueHolder new. |
|
2326 |
selectedStartupClassIndexHolder onChangeSend:#selectedStartupClassChanged to:self. |
|
2327 |
]. |
|
2328 |
^ selectedStartupClassIndexHolder. |
|
2329 |
! |
|
2330 |
||
2331 |
startMakeButtonEnabled |
|
2332 |
<resource: #uiAspect> |
|
2333 |
||
2334 |
startMakeButtonEnabled isNil ifTrue:[ |
|
2335 |
startMakeButtonEnabled := true asValue. |
|
2336 |
]. |
|
2337 |
^ startMakeButtonEnabled. |
|
2338 |
! |
|
2339 |
||
2340 |
stopMakeButtonVisible |
|
2341 |
<resource: #uiAspect> |
|
2342 |
||
2343 |
stopMakeButtonVisible isNil ifTrue:[ |
|
2344 |
stopMakeButtonVisible := false asValue. |
|
2345 |
]. |
|
2346 |
^ stopMakeButtonVisible. |
|
2681 | 2347 |
! |
2348 |
||
2349 |
usedCompilerHolder |
|
2350 |
<resource: #uiAspect> |
|
2351 |
||
2352 |
usedCompilerHolder isNil ifTrue:[ |
|
2353 |
usedCompilerHolder := ValueHolder new. |
|
2913 | 2354 |
usedCompilerHolder value:(LastUsedCompiler ? ProjectBuilder defaultUsedCompiler). |
2724 | 2355 |
usedCompilerHolder onChangeSend:#checkCompilerAvailability to:self. |
2681 | 2356 |
]. |
2357 |
^ usedCompilerHolder. |
|
2874 | 2358 |
|
2913 | 2359 |
"Modified: / 04-09-2012 / 09:43:20 / cg" |
2676 | 2360 |
! ! |
2361 |
||
2362 |
!ProjectBuilderAssistantApplication methodsFor:'initialization & release'! |
|
2363 |
||
2687
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
2364 |
fileBrowserInstance |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
2365 |
"setup the embedded fileBrowser (in the last page)" |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
2366 |
|
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
2367 |
|targetDirectory browser| |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
2368 |
|
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
2369 |
targetDirectory := projectBuilder packageBuildDirectory. |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
2370 |
|
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
2371 |
browser := FileBrowserV2 new. |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
2372 |
browser onDirectory:targetDirectory. |
2724 | 2373 |
OperatingSystem isMSWINDOWSlike ifTrue:[ |
2374 |
browser filter:'*.exe;*.com'. |
|
2375 |
] ifFalse:[ |
|
2376 |
browser filter:'*'. |
|
2377 |
]. |
|
2687
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
2378 |
^ browser. |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
2379 |
! |
66343568f2b2
changed: #fileBrowserInstance
Claus Gittinger <cg@exept.de>
parents:
2686
diff
changeset
|
2380 |
|
2897 | 2381 |
openOn:aProjectDefinitionClass |
2899 | 2382 |
|type apps startupClass pageToGo| |
2897 | 2383 |
|
2384 |
self allButOpen. |
|
2385 |
aProjectDefinitionClass isLibraryDefinition ifTrue:[ |
|
2386 |
type := ProjectDefinition libraryType |
|
2387 |
] ifFalse:[ |
|
2388 |
aProjectDefinitionClass isGUIApplication ifTrue:[ |
|
2389 |
type := ProjectDefinition guiApplicationType |
|
2390 |
] ifFalse:[ |
|
2391 |
type := ProjectDefinition nonGuiApplicationType |
|
2392 |
] |
|
2393 |
]. |
|
2394 |
self projectTypeHolder value:type. |
|
2395 |
self hideSTXProjects value:false. |
|
2396 |
selectedProjectDefinition := aProjectDefinitionClass. |
|
2397 |
self selectedProjectIndexHolder value:(self listOfMatchingPackageIds value indexOf:aProjectDefinitionClass package). |
|
2398 |
self hasProjectSelectedHolder value:true. |
|
2399 |
||
2899 | 2400 |
pageToGo := 3. |
2897 | 2401 |
type == ProjectDefinition guiApplicationType ifTrue:[ |
2402 |
(startupClass := aProjectDefinitionClass startupClass) notNil ifTrue:[ |
|
2899 | 2403 |
self updateListOfStartupClassesInProject. |
2897 | 2404 |
selectedStartupClass := startupClass. |
2899 | 2405 |
self selectedStartupClassIndexHolder value:(self listOfStartupClassesInProject value indexOf:startupClass). |
2406 |
pageToGo := 5. |
|
2897 | 2407 |
]. |
2408 |
"/ apps := (aProjectDefinitionClass classes select:[:cls | cls isKindOf:ApplicationModel]) |
|
2409 |
]. |
|
2899 | 2410 |
self gotoPage:pageToGo. |
2897 | 2411 |
self openWindow. |
2412 |
||
2413 |
"Created: / 20-07-2012 / 12:34:02 / cg" |
|
2414 |
! |
|
2415 |
||
2416 |
openOnPackage:aPackageId |
|
2417 |
self allButOpen. |
|
2418 |
self projectTypeHolder value:(ProjectDefinition guiApplicationType). |
|
2419 |
self hideSTXProjects value:false. |
|
2420 |
self selectedProjectIndexHolder value:(self listOfMatchingPackageIds indexOf:aPackageId). |
|
2421 |
self hasProjectSelectedHolder value:true. |
|
2422 |
self gotoPage:2. |
|
2423 |
self openWindow. |
|
2424 |
||
2425 |
"Created: / 20-07-2012 / 13:24:38 / cg" |
|
2426 |
! |
|
2427 |
||
2676 | 2428 |
postBuildMakeOutputWindow:aView |
2917 | 2429 |
makeOutputWindow := aView. |
2430 |
makeOutputWindow lineLimit:10000. |
|
2431 |
||
2432 |
"Modified: / 05-09-2012 / 11:11:45 / cg" |
|
2676 | 2433 |
! |
2434 |
||
2705 | 2435 |
postBuildNewProjectsNameListExtendedComboBox:anExtendedComboBox |
2697 | 2436 |
|
2437 |
|menu| |
|
2438 |
||
2439 |
menu := SubCanvas new. |
|
2440 |
menu client:self spec:#newProjectsNameListSpec builder:nil. |
|
2705 | 2441 |
anExtendedComboBox closeOnSelect: false. |
2442 |
anExtendedComboBox menuWidget:menu. |
|
2697 | 2443 |
|
2705 | 2444 |
anExtendedComboBox editor |
2697 | 2445 |
immediateAccept:true; |
2446 |
acceptOnLeave:true; |
|
2447 |
acceptOnLostFocus:true; |
|
2448 |
acceptOnPointerLeave:true; |
|
2449 |
acceptOnReturn:true; |
|
2450 |
acceptOnTab:true. |
|
2705 | 2451 |
|
2452 |
newProjectsNameListExtendedComboBox := anExtendedComboBox. |
|
2697 | 2453 |
! |
2454 |
||
2919 | 2455 |
postBuildWarnMessageView:aView |
2456 |
aView font:(Label defaultFont). |
|
2457 |
||
2458 |
"Created: / 05-09-2012 / 19:34:29 / cg" |
|
2459 |
! |
|
2460 |
||
2676 | 2461 |
postBuildWith:aBuilder |
2462 |
super postBuildWith:aBuilder. |
|
2463 |
self updateListOfMatchingProjects. |
|
2697 | 2464 |
self updateListOfNewProjectsName. |
2676 | 2465 |
|
2466 |
Smalltalk addDependent:self. |
|
2467 |
! |
|
2468 |
||
2469 |
release |
|
2470 |
Smalltalk removeDependent:self. |
|
2471 |
super release |
|
2472 |
! ! |
|
2473 |
||
2474 |
!ProjectBuilderAssistantApplication methodsFor:'menu actions'! |
|
2475 |
||
2476 |
openDocumentation |
|
2477 |
self openHTMLDocument:'tools/misc/TOP.html#PACKAGER'. |
|
2659 | 2478 |
! ! |
2479 |
||
2636 | 2480 |
!ProjectBuilderAssistantApplication methodsFor:'private'! |
2481 |
||
2676 | 2482 |
commentFromClass:aClass |
2483 |
|docMethod comment indents minIndent maxLineLength| |
|
2636 | 2484 |
|
2485 |
docMethod := aClass class compiledMethodAt:#documentation. |
|
2486 |
docMethod notNil ifTrue:[ |
|
2487 |
comment := docMethod comment. |
|
2488 |
comment := comment asStringCollection |
|
2489 |
collect:[:line | line withoutTrailingSeparators]. |
|
2490 |
[comment notEmpty and:[comment first isBlank]] whileTrue:[ comment removeFirst ]. |
|
2491 |
maxLineLength := (comment collect:[:line | line size]) max. |
|
2492 |
indents := comment collect:[:line | |
|
2493 |
line isEmptyOrNil |
|
2494 |
ifTrue:[maxLineLength] |
|
2495 |
ifFalse:[ line findFirst:[:ch | ch isSeparator not]]]. |
|
2496 |
(minIndent := indents min) > 1 ifTrue:[ |
|
2497 |
comment := comment collect:[:line | line copyFrom:minIndent]. |
|
2498 |
]. |
|
2499 |
comment := comment asString. |
|
2500 |
]. |
|
2501 |
^ comment |
|
2659 | 2502 |
! |
2503 |
||
2676 | 2504 |
generatePackageContentsMethods |
2505 |
<resource: #uiCallback> |
|
2506 |
||
2507 |
Class packageQuerySignal answer:(selectedProjectDefinition package) |
|
2508 |
do:[ |
|
2509 |
selectedProjectDefinition |
|
2510 |
forEachContentsMethodsCodeToCompileDo:[:code :category | |
|
2832
c1e7c5d29577
CodeGeneratorTool->SmalltalkCodeGeneratorTool
Claus Gittinger <cg@exept.de>
parents:
2825
diff
changeset
|
2511 |
SmalltalkCodeGeneratorTool |
2676 | 2512 |
compile:code |
2513 |
forClass:selectedProjectDefinition theMetaclass |
|
2514 |
inCategory:category. |
|
2515 |
] |
|
2516 |
ignoreOldDefinition:true |
|
2659 | 2517 |
]. |
2676 | 2518 |
self updateListOfClassesInProject |
2832
c1e7c5d29577
CodeGeneratorTool->SmalltalkCodeGeneratorTool
Claus Gittinger <cg@exept.de>
parents:
2825
diff
changeset
|
2519 |
|
c1e7c5d29577
CodeGeneratorTool->SmalltalkCodeGeneratorTool
Claus Gittinger <cg@exept.de>
parents:
2825
diff
changeset
|
2520 |
"Modified: / 31-01-2011 / 18:29:44 / cg" |
2659 | 2521 |
! |
2522 |
||
2676 | 2523 |
hasApplicationSelected |
2524 |
^ self selectedApplicationIndexHolder value notNil |
|
2525 |
! |
|
2526 |
||
2527 |
hasBuildDirectorySpecified |
|
2528 |
^ self buildDirectoryHolder value notEmptyOrNil |
|
2659 | 2529 |
! |
2530 |
||
2676 | 2531 |
hasProjectBuilder |
2532 |
^ projectBuilder notNil |
|
2533 |
! |
|
2534 |
||
2535 |
hasProjectSelected |
|
2536 |
^ self selectedProjectIndexHolder value notNil |
|
2537 |
! |
|
2538 |
||
2539 |
hasStartupClassSelected |
|
2540 |
^ self selectedStartupClassIndexHolder value notNil |
|
2636 | 2541 |
! ! |
2542 |
||
2656 | 2543 |
!ProjectBuilderAssistantApplication methodsFor:'queries'! |
2544 |
||
2676 | 2545 |
canEnterApplicationSelection |
2857 | 2546 |
self hasProjectSelected ifFalse:[ |
2547 |
self infoHolder value:'no project selected'. |
|
2548 |
^ false |
|
2549 |
]. |
|
2550 |
^ true |
|
2551 |
||
2552 |
"Modified: / 23-08-2011 / 12:12:35 / cg" |
|
2656 | 2553 |
! |
2554 |
||
2676 | 2555 |
canEnterBuild |
2857 | 2556 |
self hasBuildDirectorySpecified ifFalse:[ |
2557 |
self infoHolder value:'no build directory specified'. |
|
2558 |
^ false |
|
2559 |
]. |
|
2560 |
^ true |
|
2561 |
||
2562 |
"Modified: / 23-08-2011 / 12:13:29 / cg" |
|
2656 | 2563 |
! |
2564 |
||
2659 | 2565 |
canEnterContentsSelection |
2897 | 2566 |
|prj cls impl mthd| |
2857 | 2567 |
|
2568 |
self hasProjectSelected ifFalse:[ |
|
2569 |
self infoHolder value:'no project selected'. |
|
2570 |
^ false |
|
2571 |
]. |
|
2572 |
"self hasApplicationSelected ifFalse:[^ false]." |
|
2573 |
(self projectTypeIsLibrary or:[self hasStartupClassSelected]) ifFalse:[ |
|
2915 | 2574 |
self infoHolder value:'Must be either library or have a startup class'. |
2857 | 2575 |
^ false |
2576 |
]. |
|
2577 |
prj := self selectedProjectDefinition. |
|
2578 |
([prj startupClassName] on:Error do:nil) notNil ifFalse:[ |
|
2915 | 2579 |
self infoHolder value:'Must have a startup class'. |
2857 | 2580 |
^ false |
2581 |
]. |
|
2582 |
([prj startupSelector] on:Error do:nil) notNil ifFalse:[ |
|
2915 | 2583 |
self infoHolder value:'Must have a startup selector'. |
2857 | 2584 |
^ false |
2585 |
]. |
|
2586 |
(prj class compiledMethodAt:#startupSelector) isNil ifTrue:[ |
|
2915 | 2587 |
self infoHolder value:('Inherited startup selector is "%1"' bindWith:prj startupSelector). |
2864
fcdea80a431e
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2863
diff
changeset
|
2588 |
impl := prj class whichClassImplements:#startupSelector. |
2865
2600408a8005
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2864
diff
changeset
|
2589 |
impl isNil ifTrue:[ |
2915 | 2590 |
self infoHolder value:('Inherited startup selector (%1) not implemented in %2' |
2865
2600408a8005
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2864
diff
changeset
|
2591 |
bindWith:prj startupSelector |
2600408a8005
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2864
diff
changeset
|
2592 |
with:prj class name). |
2864
fcdea80a431e
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2863
diff
changeset
|
2593 |
^ false |
fcdea80a431e
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2863
diff
changeset
|
2594 |
]. |
2857 | 2595 |
]. |
2897 | 2596 |
(mthd := prj class compiledMethodAt:#startupClassName) package == prj package ifFalse:[ |
2597 |
mthd package == PackageId noProjectID ifFalse:[ |
|
2915 | 2598 |
self infoHolder value:('Startup class method (#startupClassName) of %3 must be in package "%1" (is in "%2")' |
2872 | 2599 |
bindWith:prj package |
2600 |
with:(prj class compiledMethodAt:#startupClassName) package |
|
2601 |
with:prj class name). |
|
2602 |
^ false |
|
2603 |
]. |
|
2857 | 2604 |
]. |
2897 | 2605 |
(mthd := prj class compiledMethodAt:#startupSelector) notNil ifTrue:[ |
2606 |
mthd package == prj package ifFalse:[ |
|
2607 |
mthd package == PackageId noProjectID ifFalse:[ |
|
2915 | 2608 |
self infoHolder value:('Startup class method (#startupSelector) of %3 must be in package "%1" (is in "%2")' |
2872 | 2609 |
bindWith:prj package |
2897 | 2610 |
with:mthd package |
2872 | 2611 |
with:prj class name). |
2612 |
^ false |
|
2613 |
] |
|
2857 | 2614 |
]. |
2615 |
]. |
|
2864
fcdea80a431e
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2863
diff
changeset
|
2616 |
cls := Smalltalk classNamed:prj startupClassName. |
fcdea80a431e
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2863
diff
changeset
|
2617 |
cls isNil ifTrue:[ |
2915 | 2618 |
self infoHolder value:('Startup class "%1" does not exist' bindWith:prj startupClassName). |
2864
fcdea80a431e
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2863
diff
changeset
|
2619 |
^ false. |
fcdea80a431e
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2863
diff
changeset
|
2620 |
]. |
fcdea80a431e
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2863
diff
changeset
|
2621 |
(cls implements:(prj startupSelector)) ifFalse:[ |
2865
2600408a8005
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2864
diff
changeset
|
2622 |
(cls respondsTo:(prj startupSelector)) ifFalse:[ |
2915 | 2623 |
self infoHolder value:('Startup class "%1" does not implement startup selector "%2"' |
2865
2600408a8005
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2864
diff
changeset
|
2624 |
bindWith:cls name |
2600408a8005
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2864
diff
changeset
|
2625 |
with:prj startupSelector). |
2600408a8005
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2864
diff
changeset
|
2626 |
^ false |
2600408a8005
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2864
diff
changeset
|
2627 |
]. |
2864
fcdea80a431e
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2863
diff
changeset
|
2628 |
]. |
2915 | 2629 |
self infoHolder value:nil. |
2857 | 2630 |
^ true. |
2631 |
||
2915 | 2632 |
"Modified: / 04-09-2012 / 10:29:43 / cg" |
2659 | 2633 |
! |
2634 |
||
2676 | 2635 |
canEnterDeploy |
2857 | 2636 |
self hasProjectBuilder ifFalse:[ |
2915 | 2637 |
self infoHolder value:'Nothing to deploy (please build first)'. |
2857 | 2638 |
^ false |
2639 |
]. |
|
2915 | 2640 |
self infoHolder value:nil. |
2857 | 2641 |
^ true |
2642 |
||
2915 | 2643 |
"Modified: / 04-09-2012 / 10:30:18 / cg" |
2656 | 2644 |
! |
2645 |
||
2872 | 2646 |
canEnterPrerequisitesSelection |
2647 |
|prj cls impl| |
|
2648 |
||
2649 |
self hasProjectSelected ifFalse:[ |
|
2650 |
self infoHolder value:'no project selected'. |
|
2651 |
^ false |
|
2652 |
]. |
|
2653 |
^ true. |
|
2654 |
||
2655 |
"Created: / 19-01-2012 / 15:37:30 / cg" |
|
2656 |
! |
|
2657 |
||
2676 | 2658 |
canEnterStartupClassSelection |
2857 | 2659 |
self hasProjectSelected ifFalse:[ |
2660 |
self infoHolder value:'no project selected'. |
|
2661 |
^ false |
|
2662 |
]. |
|
2676 | 2663 |
^ self hasProjectSelected "and:[ self hasApplicationSelected ]" |
2857 | 2664 |
|
2665 |
"Modified: / 23-08-2011 / 12:16:35 / cg" |
|
2696 | 2666 |
! |
2667 |
||
2724 | 2668 |
isUnixOS |
2669 |
^ OperatingSystem isUNIXlike |
|
2670 |
! |
|
2671 |
||
2720 | 2672 |
isWindowsOS |
2673 |
^ OperatingSystem isMSWINDOWSlike |
|
2674 |
! |
|
2675 |
||
2696 | 2676 |
projectTypeIsGuiApplication |
2897 | 2677 |
^ self projectTypeHolder value == ProjectDefinition guiApplicationType |
2678 |
||
2679 |
"Modified: / 20-07-2012 / 13:29:59 / cg" |
|
2696 | 2680 |
! |
2681 |
||
2682 |
projectTypeIsLibrary |
|
2897 | 2683 |
^ self projectTypeHolder value == ProjectDefinition libraryType |
2684 |
||
2685 |
"Modified: / 20-07-2012 / 13:29:24 / cg" |
|
2696 | 2686 |
! |
2687 |
||
2688 |
projectTypeIsNotLibrary |
|
2689 |
^ self projectTypeIsLibrary not |
|
2656 | 2690 |
! ! |
2691 |
||
2636 | 2692 |
!ProjectBuilderAssistantApplication methodsFor:'specs'! |
2693 |
||
2676 | 2694 |
assistantSpec |
2703 | 2695 |
^ self class assistantSpec |
2676 | 2696 |
! ! |
2697 |
||
2698 |
!ProjectBuilderAssistantApplication methodsFor:'update'! |
|
2699 |
||
2724 | 2700 |
checkCompilerAvailability |
2919 | 2701 |
|cmd suite warnMsg1 warnMsg2 sep usedCompiler| |
2724 | 2702 |
|
2703 |
cmd := 'cc'. |
|
2704 |
warnMsg1 := warnMsg2 := ''. |
|
2705 |
||
2919 | 2706 |
usedCompiler := self usedCompilerHolder value. |
2707 |
usedCompiler = 'bcc' ifTrue:[ |
|
2724 | 2708 |
cmd := 'bcc32'. |
2709 |
]. |
|
2919 | 2710 |
usedCompiler = 'vc' ifTrue:[ |
2724 | 2711 |
cmd := 'cl'. |
2913 | 2712 |
warnMsg1 := 'Due to bugs in this C-compiler, some classes may not be compilable.'. |
2724 | 2713 |
]. |
2919 | 2714 |
usedCompiler = 'lcc' ifTrue:[ |
2724 | 2715 |
cmd := 'lcc'. |
2919 | 2716 |
warnMsg1 := 'The LCC C-compiler suite is not officially supported.'. |
2724 | 2717 |
]. |
2919 | 2718 |
usedCompiler = 'tcc' ifTrue:[ |
2910 | 2719 |
cmd := 'tcc'. |
2720 |
OperatingSystem isMSWINDOWSlike ifTrue:[ |
|
2919 | 2721 |
warnMsg1 := 'The Tiny C-compiler suite is not yet supported (linkage).'. |
2910 | 2722 |
]. |
2723 |
]. |
|
2919 | 2724 |
usedCompiler = 'gcc' ifTrue:[ |
2725 |
cmd := 'gcc'. |
|
2726 |
]. |
|
2727 |
usedCompiler = 'mingw' ifTrue:[ |
|
2724 | 2728 |
cmd := 'gcc'. |
2729 |
OperatingSystem isMSWINDOWSlike ifTrue:[ |
|
2919 | 2730 |
warnMsg1 := 'The MINGW C-compiler suite is not officially supported.'. |
2724 | 2731 |
]. |
2732 |
]. |
|
2919 | 2733 |
|
2922 | 2734 |
suite := ProjectBuilder suiteNameOfCompiler:(self usedCompilerHolder value). |
2910 | 2735 |
self nameOfUsedCompilerSuiteHolder value:suite. |
2724 | 2736 |
|
2737 |
(OperatingSystem canExecuteCommand:cmd) ifFalse:[ |
|
2913 | 2738 |
warnMsg2 := |
2724 | 2739 |
'The "%1"-command seems to be not in your path. |
2740 |
Please ensure that you installed the |
|
2910 | 2741 |
"%2" compiler suite correctly. |
2742 |
(However, the makefiles might know where to find the compiler)' bindWith:cmd with:suite. |
|
2724 | 2743 |
]. |
2744 |
||
2745 |
(warnMsg1 notEmpty or:[warnMsg2 notEmpty]) ifTrue:[ |
|
2746 |
sep := ''. |
|
2747 |
(warnMsg2 notEmpty) ifTrue:[ sep := '\\' withCRs ]. |
|
2748 |
||
2749 |
self compilerWarnMessageHolder value:('Warning: |
|
2750 |
||
2751 |
',warnMsg1,sep,warnMsg2). |
|
2752 |
self compilerWarnMessageVisibleHolder value:true. |
|
2753 |
] ifFalse:[ |
|
2754 |
self compilerWarnMessageVisibleHolder value:false |
|
2755 |
]. |
|
2910 | 2756 |
|
2922 | 2757 |
"Modified: / 06-09-2012 / 15:58:58 / cg" |
2724 | 2758 |
! |
2759 |
||
2926 | 2760 |
delayedUpdate:something with:anArgument from:changedObject |
2761 |
changedObject == Smalltalk ifTrue:[ |
|
2762 |
(something == #newClass |
|
2763 |
or:[something == #classRemove |
|
2764 |
or:[something == #projectOrganization]]) ifTrue:[ |
|
2765 |
self updateListOfMatchingProjects. |
|
2766 |
self updateListOfNewProjectsName. |
|
2767 |
^ self. |
|
2768 |
]. |
|
2769 |
^ self. |
|
2770 |
]. |
|
2771 |
||
2772 |
"Created: / 10-09-2012 / 14:07:47 / cg" |
|
2773 |
! |
|
2774 |
||
2686
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2775 |
enterContentsSpecification |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2776 |
|toAdd| |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2777 |
|
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2778 |
self updateListOfClassesInProject. |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2779 |
|
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2780 |
toAdd := OrderedCollection new. |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2781 |
|
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2782 |
"/ ensure that startup & app-class are in the list |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2783 |
selectedApplication notNil ifTrue:[ |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2784 |
(selectedProjectDefinition classNames includes:selectedApplication name) ifFalse:[ |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2785 |
toAdd add:selectedApplication. |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2786 |
]. |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2787 |
]. |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2788 |
selectedStartupClass notNil ifTrue:[ |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2789 |
(selectedProjectDefinition classNames includes:selectedStartupClass name) ifFalse:[ |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2790 |
toAdd add:selectedStartupClass. |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2791 |
]. |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2792 |
]. |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2793 |
|
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2794 |
selectedProjectDefinition includeClasses:toAdd usingCompiler:nil. |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2795 |
|
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2796 |
self updateListOfClassesInProject. |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2797 |
! |
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2798 |
|
2872 | 2799 |
enterPrerequisitesSpecification |
2800 |
|toAdd| |
|
2801 |
||
2802 |
self updateListOfPrerequisitesInProject. |
|
2803 |
||
2804 |
"/ toAdd := OrderedCollection new. |
|
2805 |
"/ |
|
2806 |
"/ "/ ensure that startup & app-class are in the list |
|
2807 |
"/ selectedApplication notNil ifTrue:[ |
|
2808 |
"/ (selectedProjectDefinition classNames includes:selectedApplication name) ifFalse:[ |
|
2809 |
"/ toAdd add:selectedApplication. |
|
2810 |
"/ ]. |
|
2811 |
"/ ]. |
|
2812 |
"/ selectedStartupClass notNil ifTrue:[ |
|
2813 |
"/ (selectedProjectDefinition classNames includes:selectedStartupClass name) ifFalse:[ |
|
2814 |
"/ toAdd add:selectedStartupClass. |
|
2815 |
"/ ]. |
|
2816 |
"/ ]. |
|
2817 |
"/ |
|
2818 |
"/ selectedProjectDefinition includeClasses:toAdd usingCompiler:nil. |
|
2819 |
"/ |
|
2820 |
"/ self updateListOfClassesInProject. |
|
2821 |
||
2822 |
"Created: / 19-01-2012 / 15:36:47 / cg" |
|
2823 |
! |
|
2824 |
||
2913 | 2825 |
fetchAttributesFromProjectDefinition |
2826 |
self fetchSelectedProject. |
|
2827 |
selectedProjectDefinition notNil ifTrue:[ |
|
2828 |
self productNameHolder value: selectedProjectDefinition productName. |
|
2829 |
self companyNameHolder value: selectedProjectDefinition companyName. |
|
2830 |
]. |
|
2831 |
||
2832 |
"Created: / 04-09-2012 / 09:50:46 / cg" |
|
2833 |
! |
|
2834 |
||
2676 | 2835 |
rememberMakeOutputsContents |
2836 |
makeOutputHolder value:(makeOutputWindow contents) |
|
2837 |
! |
|
2838 |
||
2724 | 2839 |
rememberProjectAttributes |
2840 |
self assert:selectedProjectDefinition notNil. |
|
2841 |
Class withoutUpdatingChangesDo:[ |
|
2842 |
self productNameHolder value ~= selectedProjectDefinition productName ifTrue:[ |
|
2843 |
selectedProjectDefinition class compile:(selectedProjectDefinition |
|
2844 |
productName_codeFor:(self productNameHolder value)). |
|
2845 |
]. |
|
2846 |
self companyNameHolder value ~= selectedProjectDefinition companyName ifTrue:[ |
|
2847 |
selectedProjectDefinition class compile:(selectedProjectDefinition |
|
2848 |
companyName_codeFor:(self companyNameHolder value)). |
|
2849 |
] |
|
2850 |
]. |
|
2851 |
! |
|
2852 |
||
2913 | 2853 |
rememberUsedCompiler |
2854 |
LastUsedCompiler := self usedCompilerHolder value. |
|
2855 |
||
2856 |
"Created: / 04-09-2012 / 09:45:42 / cg" |
|
2857 |
! |
|
2858 |
||
2676 | 2859 |
restoreMakeOutputsContents |
2860 |
makeOutputWindow contents:makeOutputHolder value |
|
2646 | 2861 |
! |
2862 |
||
2676 | 2863 |
update:something with:anArgument from:changedObject |
2864 |
changedObject == Smalltalk ifTrue:[ |
|
2865 |
(something == #newClass |
|
2866 |
or:[something == #classRemove |
|
2867 |
or:[something == #projectOrganization]]) ifTrue:[ |
|
2926 | 2868 |
self enqueueDelayedUpdate:something with:anArgument from:changedObject. |
2676 | 2869 |
^ self. |
2870 |
]. |
|
2871 |
^ self. |
|
2872 |
]. |
|
2873 |
super update:something with:anArgument from:changedObject |
|
2926 | 2874 |
|
2875 |
"Modified: / 10-09-2012 / 14:08:17 / cg" |
|
2636 | 2876 |
! |
2877 |
||
2676 | 2878 |
updateApplicationComment |
2879 |
|comment| |
|
2636 | 2880 |
|
2676 | 2881 |
self selectedApplicationIndexHolder value notNil ifTrue:[ |
2882 |
comment := self commentFromClass:selectedApplication. |
|
2883 |
comment isNil ifTrue:[ |
|
2884 |
comment := 'Application has no comment' allItalic colorizeAllWith:Color lightGrey. |
|
2885 |
]. |
|
2886 |
] ifFalse:[ |
|
2887 |
comment := 'Please select an Application' allItalic colorizeAllWith:Color lightGrey. |
|
2888 |
]. |
|
2889 |
self selectedApplicationsComment value:comment. |
|
2636 | 2890 |
! |
2891 |
||
2676 | 2892 |
updateComment |
2893 |
|comment| |
|
2636 | 2894 |
|
2676 | 2895 |
self selectedProjectIndexHolder value notNil ifTrue:[ |
2896 |
comment := self commentFromClass:selectedProjectDefinition. |
|
2897 |
comment isNil ifTrue:[ |
|
2898 |
comment := 'Project has no comment' allItalic colorizeAllWith:Color lightGrey. |
|
2899 |
]. |
|
2900 |
] ifFalse:[ |
|
2901 |
comment := 'Please select a Project' allItalic colorizeAllWith:Color lightGrey. |
|
2902 |
]. |
|
2903 |
self selectedProjectsComment value:comment. |
|
2636 | 2904 |
! |
2905 |
||
2676 | 2906 |
updateListOfApplicationsInProject |
2907 |
|oldList applicationClasses package appClass appClassIndex| |
|
2636 | 2908 |
|
2649 | 2909 |
appClassIndex := nil. |
2910 |
||
2636 | 2911 |
selectedProjectDefinition isNil ifTrue:[ |
2912 |
applicationClasses := #() |
|
2913 |
] ifFalse:[ |
|
2914 |
package := selectedProjectDefinition package. |
|
2915 |
||
2916 |
applicationClasses := Smalltalk allClasses |
|
2917 |
select:[:cls | |
|
2671 | 2918 |
((cls isSubclassOf:ApplicationModel) |
2919 |
and:[ self hideOtherApplicationClasses value not |
|
2920 |
or:[ cls package = package ]]) |
|
2636 | 2921 |
]. |
2922 |
applicationClasses := applicationClasses asOrderedCollection. |
|
2923 |
applicationClasses sort:[:a :b | a name < b name]. |
|
2649 | 2924 |
|
2668 | 2925 |
"/ startUpClassName := [ selectedProjectDefinition startupClassName ] ifError:[ nil ]. |
2926 |
"/ startUpClassName notNil ifTrue:[ |
|
2927 |
"/ startUpClass := Smalltalk classNamed:startUpClassName. |
|
2928 |
"/ startUpClass notNil ifTrue:[ |
|
2929 |
"/ appClassIndex := applicationClasses indexOf:startUpClass. |
|
2930 |
"/ appClassIndex == 0 ifTrue:[ appClassIndex := nil ]. |
|
2931 |
"/ ]. |
|
2932 |
"/ ]. |
|
2636 | 2933 |
]. |
2649 | 2934 |
|
2668 | 2935 |
oldList := self listOfApplicationsInProject value. |
2936 |
oldList = applicationClasses ifFalse:[ |
|
2937 |
appClass := selectedApplication. |
|
2938 |
appClassIndex := applicationClasses indexOf:appClass. |
|
2939 |
appClassIndex == 0 ifTrue:[ appClassIndex := nil ]. |
|
2940 |
||
2941 |
self listOfApplicationsInProject value:applicationClasses. |
|
2942 |
self selectedApplicationIndexHolder value:appClassIndex. |
|
2943 |
]. |
|
2636 | 2944 |
! |
2945 |
||
2676 | 2946 |
updateListOfClassesInProject |
2947 |
self listOfClassesInProject value:(selectedProjectDefinition classNames). |
|
2948 |
! |
|
2636 | 2949 |
|
2676 | 2950 |
updateListOfMatchingProjects |
2719 | 2951 |
|query matching projectType idx| |
2676 | 2952 |
|
2953 |
projectType := self projectType. |
|
2863
eb998d836550
changed: #updateListOfMatchingProjects
Claus Gittinger <cg@exept.de>
parents:
2857
diff
changeset
|
2954 |
projectType = ProjectDefinition libraryType ifTrue:[ |
2719 | 2955 |
query := #isLibraryDefinition |
2956 |
] ifFalse:[ |
|
2863
eb998d836550
changed: #updateListOfMatchingProjects
Claus Gittinger <cg@exept.de>
parents:
2857
diff
changeset
|
2957 |
projectType = ProjectDefinition guiApplicationType ifTrue:[ |
2719 | 2958 |
query := #isGUIApplication |
2959 |
] ifFalse:[ |
|
2863
eb998d836550
changed: #updateListOfMatchingProjects
Claus Gittinger <cg@exept.de>
parents:
2857
diff
changeset
|
2960 |
projectType = ProjectDefinition nonGuiApplicationType ifTrue:[ |
2719 | 2961 |
query := #isConsoleApplication |
2962 |
] ifFalse:[ |
|
2897 | 2963 |
self halt:'oops'. |
2964 |
projectType := ProjectDefinition guiApplicationType. |
|
2719 | 2965 |
]. |
2966 |
]. |
|
2967 |
]. |
|
2968 |
||
2969 |
Class flushSubclassInfo. |
|
2970 |
||
2676 | 2971 |
matching := ProjectDefinition allSubclasses |
2972 |
select:[:defClass | |
|
2973 |
|match| |
|
2636 | 2974 |
|
2676 | 2975 |
match := false. |
2863
eb998d836550
changed: #updateListOfMatchingProjects
Claus Gittinger <cg@exept.de>
parents:
2857
diff
changeset
|
2976 |
|
2676 | 2977 |
defClass isAbstract ifFalse:[ |
2978 |
(self hideSTXProjects value not |
|
2979 |
or:[ defClass package asPackageId module ~= 'stx' ]) |
|
2980 |
ifTrue:[ |
|
2719 | 2981 |
match := defClass perform:query |
2676 | 2982 |
]. |
2983 |
]. |
|
2863
eb998d836550
changed: #updateListOfMatchingProjects
Claus Gittinger <cg@exept.de>
parents:
2857
diff
changeset
|
2984 |
match |
eb998d836550
changed: #updateListOfMatchingProjects
Claus Gittinger <cg@exept.de>
parents:
2857
diff
changeset
|
2985 |
]. |
2719 | 2986 |
|
2676 | 2987 |
matching sort:[:a :b | a name < b name]. |
2988 |
self listOfMatchingProjects value:matching. |
|
2686
5a19c21dada0
ensure starup and application are in the classList of the projectDef
Claus Gittinger <cg@exept.de>
parents:
2685
diff
changeset
|
2989 |
self listOfMatchingPackageIds value:(matching collect:[:def | def package]). |
2636 | 2990 |
|
2676 | 2991 |
idx := matching indexOf:selectedProjectDefinition. |
2992 |
idx == 0 ifTrue:[ |
|
2993 |
self selectedProjectIndexHolder value:nil. |
|
2994 |
] ifFalse:[ |
|
2995 |
self selectedProjectIndexHolder value:idx. |
|
2636 | 2996 |
]. |
2863
eb998d836550
changed: #updateListOfMatchingProjects
Claus Gittinger <cg@exept.de>
parents:
2857
diff
changeset
|
2997 |
|
2897 | 2998 |
"Modified: / 20-07-2012 / 15:04:15 / cg" |
2659 | 2999 |
! |
3000 |
||
2907
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
3001 |
updateListOfMatchingProjectsAndProjectIDs |
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
3002 |
self updateListOfMatchingProjects. |
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
3003 |
self updateListOfNewProjectsName. |
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
3004 |
|
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
3005 |
"Created: / 20-08-2012 / 19:33:12 / cg" |
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
3006 |
! |
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
3007 |
|
2697 | 3008 |
updateListOfNewProjectsName |
3009 |
|loadedProjectIDsWithoutProjectDefinition| |
|
3010 |
||
3011 |
loadedProjectIDsWithoutProjectDefinition := Smalltalk allLoadedProjectIDs |
|
3012 |
select:[:eachProjectID | |
|
3013 |
eachProjectID ~= PackageId noProjectID |
|
3014 |
and:[ (ProjectDefinition definitionClassForPackage: eachProjectID) isNil ]. |
|
3015 |
]. |
|
2907
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
3016 |
loadedProjectIDsWithoutProjectDefinition := loadedProjectIDsWithoutProjectDefinition asOrderedCollection. |
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
3017 |
loadedProjectIDsWithoutProjectDefinition addFirst:(OperatingSystem getLoginName,':','demos','/','demo1'). |
2697 | 3018 |
self listOfNewProjectsName value:loadedProjectIDsWithoutProjectDefinition. |
2907
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
3019 |
|
c842e3e6f526
added: #updateListOfMatchingProjectsAndProjectIDs
Claus Gittinger <cg@exept.de>
parents:
2906
diff
changeset
|
3020 |
"Modified: / 20-08-2012 / 19:31:35 / cg" |
2697 | 3021 |
! |
3022 |
||
2872 | 3023 |
updateListOfPrerequisitesInProject |
3024 |
self listOfPrerequisitesInProject value:(selectedProjectDefinition preRequisites). |
|
3025 |
||
3026 |
"Created: / 19-01-2012 / 15:39:15 / cg" |
|
3027 |
! |
|
3028 |
||
2659 | 3029 |
updateListOfStartupClassesInProject |
3030 |
|startupClasses package startUpClassName startUpClass startupClassIndex| |
|
3031 |
||
3032 |
startupClassIndex := nil. |
|
3033 |
self selectedStartupClassIndexHolder value:nil. |
|
3034 |
||
3035 |
selectedProjectDefinition isNil ifTrue:[ |
|
3036 |
startupClasses := #() |
|
3037 |
] ifFalse:[ |
|
3038 |
package := selectedProjectDefinition package. |
|
3039 |
||
3040 |
startupClasses := Smalltalk allClasses |
|
3041 |
select:[:cls | |
|
2671 | 3042 |
((cls includesBehavior:StandaloneStartup) |
3043 |
and:[ self hideOtherStartupClasses value not |
|
3044 |
or:[ cls package = package ]]) |
|
2674 | 3045 |
or:[ cls == Smalltalk |
3046 |
and:[ self hideOtherStartupClasses value not ] ] |
|
2659 | 3047 |
]. |
3048 |
startupClasses := startupClasses asOrderedCollection. |
|
3049 |
startupClasses sort:[:a :b | a name < b name]. |
|
3050 |
||
3051 |
startUpClassName := [ selectedProjectDefinition startupClassName ] ifError:[ nil ]. |
|
3052 |
startUpClassName notNil ifTrue:[ |
|
3053 |
startUpClass := Smalltalk classNamed:startUpClassName. |
|
3054 |
startUpClass notNil ifTrue:[ |
|
3055 |
startupClassIndex := startupClasses indexOf:startUpClass. |
|
3056 |
startupClassIndex == 0 ifTrue:[ startupClassIndex := nil ]. |
|
3057 |
]. |
|
3058 |
]. |
|
3059 |
]. |
|
2674 | 3060 |
|
2659 | 3061 |
self listOfStartupClassesInProject value:startupClasses. |
3062 |
self selectedStartupClassIndexHolder value:startupClassIndex. |
|
2724 | 3063 |
! |
3064 |
||
3065 |
updateProjectAttributes |
|
3066 |
self assert:selectedProjectDefinition notNil. |
|
3067 |
self productNameHolder value:(selectedProjectDefinition productName). |
|
3068 |
self companyNameHolder value:(selectedProjectDefinition companyName). |
|
2636 | 3069 |
! ! |
3070 |
||
3071 |
!ProjectBuilderAssistantApplication class methodsFor:'documentation'! |
|
3072 |
||
2864
fcdea80a431e
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2863
diff
changeset
|
3073 |
version |
fcdea80a431e
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2863
diff
changeset
|
3074 |
^ '$Header$' |
fcdea80a431e
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2863
diff
changeset
|
3075 |
! |
fcdea80a431e
changed: #canEnterContentsSelection
Claus Gittinger <cg@exept.de>
parents:
2863
diff
changeset
|
3076 |
|
2636 | 3077 |
version_CVS |
3078 |
^ '$Header$' |
|
3079 |
! ! |