0033661: Data Exchange, Step Import - Tessellated GDTs are not imported
[occt.git] / adm / genconf.tcl
1 #!/usr/bin/tclsh
2
3 # =======================================================================
4 # Created on: 2012-01-26
5 # Created by: Kirill GAVRILOV
6 # Copyright (c) 2012 OPEN CASCADE SAS
7 #
8 # This file is part of Open CASCADE Technology software library.
9 #
10 # This library is free software; you can redistribute it and/or modify it under
11 # the terms of the GNU Lesser General Public License version 2.1 as published
12 # by the Free Software Foundation, with special exception defined in the file
13 # OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
14 # distribution for complete text of the license and disclaimer of any warranty.
15 #
16 # Alternatively, this file may be used under the terms of Open CASCADE
17 # commercial license or contractual agreement.
18
19 # =======================================================================
20 # GUI procedure for search of third-party tools and generation of environment
21 # customization script
22 # =======================================================================
23
24 # load tools
25 source [file join [file dirname [info script]] genconfdeps.tcl]
26
27 # proxy variable for implicit file path normalization
28 set PRODUCTS_PATH_INPUT "$::PRODUCTS_PATH"
29
30 package require Tk
31
32 set aRowIter 0
33 set aCheckRowIter 0
34 frame .myFrame -padx 5 -pady 5
35 pack  .myFrame -fill both -expand 1
36 frame .myFrame.myPrjFrame
37 frame .myFrame.myVsFrame
38 frame .myFrame.myHxxChecks
39 frame .myFrame.myChecks
40
41 # project file format
42 set SYS_PRJFMT_LIST {}
43 set SYS_PRJNAME_LIST {}
44 if { "$::tcl_platform(platform)" == "windows" } {
45   lappend ::SYS_PRJFMT_LIST "vcxproj"
46   lappend ::SYS_PRJNAME_LIST "Visual Studio (.vcxproj)"
47 }
48 if { "$tcl_platform(os)" == "Darwin" } {
49   lappend ::SYS_PRJFMT_LIST "xcd"
50   lappend ::SYS_PRJNAME_LIST "XCode (.xcd)"
51 }
52 lappend ::SYS_PRJFMT_LIST "cbp"
53 lappend ::SYS_PRJNAME_LIST "Code Blocks (.cbp)"
54 lappend ::SYS_PRJFMT_LIST "pro"
55 lappend ::SYS_PRJNAME_LIST "Qt Creator (.pro)"
56
57 set aPrjIndex [lsearch $::SYS_PRJFMT_LIST $::PRJFMT]
58 set ::PRJNAME [lindex $::SYS_PRJNAME_LIST $aPrjIndex]
59 set ::CONFIG "Release"
60
61 set SYS_VS_LIST {}
62 set SYS_VC_LIST {}
63 set SYS_VCVARS_LIST {}
64
65 # detect installed Visual Studio 2017+ instances by running vswhere.exe
66 if { ! [catch {exec vswhere.exe -version "\[15.0,15.99\]" -latest -requires Microsoft.VisualStudio.Workload.NativeDesktop -property installationPath} res] && "$res" != "" } {
67   lappend ::SYS_VS_LIST "Visual Studio 2017 (15, toolset v141)"
68   lappend ::SYS_VC_LIST "vc141"
69   lappend ::SYS_VCVARS_LIST "$res\\VC\\Auxiliary\\Build\\vcvarsall.bat"
70 }
71 if { ! [catch {exec vswhere.exe -version "\[15.0,15.99\]" -latest -requires Microsoft.VisualStudio.Workload.Universal -property installationPath} res] && "$res" != "" } {
72   lappend ::SYS_VS_LIST "Visual Studio 2017 (15, toolset v141) UWP"
73   lappend ::SYS_VC_LIST "vc141-uwp"
74   lappend ::SYS_VCVARS_LIST "$res\\VC\\Auxiliary\\Build\\vcvarsall.bat"
75 }
76 if { ! [catch {exec vswhere.exe -version "\[16.0,16.99\]" -latest -requires Microsoft.VisualStudio.Workload.NativeDesktop -property installationPath} res] && "$res" != "" } {
77   lappend ::SYS_VS_LIST "Visual Studio 2019 (16, toolset v142)"
78   lappend ::SYS_VC_LIST "vc142"
79   lappend ::SYS_VCVARS_LIST "$res\\VC\\Auxiliary\\Build\\vcvarsall.bat"
80 }
81 if { ! [catch {exec vswhere.exe -version "\[16.0,16.99\]" -latest -requires Microsoft.VisualStudio.Workload.Universal -property installationPath} res] && "$res" != "" } {
82   lappend ::SYS_VS_LIST "Visual Studio 2019 (16, toolset v142) UWP"
83   lappend ::SYS_VC_LIST "vc142-uwp"
84   lappend ::SYS_VCVARS_LIST "$res\\VC\\Auxiliary\\Build\\vcvarsall.bat"
85 }
86 if { ! [catch {exec vswhere.exe -version "\[16.0,16.99\]" -latest -requires Microsoft.VisualStudio.Component.VC.ClangCL -property installationPath} res] && "$res" != "" } {
87   lappend ::SYS_VS_LIST "Visual Studio 2019 (16, toolset ClangCL)"
88   lappend ::SYS_VC_LIST "vclang"
89   lappend ::SYS_VCVARS_LIST "$res\\VC\Auxiliary\\Build\\vcvarsall.bat"
90 }
91 if { ! [catch {exec vswhere.exe -version "\[17.0,17.99\]" -latest -requires Microsoft.VisualStudio.Workload.NativeDesktop -property installationPath} res] && "$res" != "" } {
92   lappend ::SYS_VS_LIST "Visual Studio 2022 (17, toolset v143)"
93   lappend ::SYS_VC_LIST "vc143"
94   lappend ::SYS_VCVARS_LIST "$res\\VC\\Auxiliary\\Build\\vcvarsall.bat"
95 }
96 if { ! [catch {exec vswhere.exe -version "\[17.0,17.99\]" -latest -requires Microsoft.VisualStudio.Workload.Universal -property installationPath} res] && "$res" != "" } {
97   lappend ::SYS_VS_LIST "Visual Studio 2022 (17, toolset v143) UWP"
98   lappend ::SYS_VC_LIST "vc143-uwp"
99   lappend ::SYS_VCVARS_LIST "$res\\VC\\Auxiliary\\Build\\vcvarsall.bat"
100 }
101 if { ! [catch {exec vswhere.exe -version "\[17.0,17.99\]" -latest -requires Microsoft.VisualStudio.Component.VC.ClangCL -property installationPath} res] && "$res" != "" } {
102   lappend ::SYS_VS_LIST "Visual Studio 2022 (17, toolset ClangCL)"
103   lappend ::SYS_VC_LIST "vclang"
104   lappend ::SYS_VCVARS_LIST "$res\\VC\\Auxiliary\\Build\\vcvarsall.bat"
105 }
106
107 # detect installed Visual Studio instances from global environment
108 if { [info exists ::env(VS140COMNTOOLS)] } {
109   lappend ::SYS_VS_LIST "Visual Studio 2015 (14, toolset v140)"
110   lappend ::SYS_VC_LIST "vc14"
111   lappend ::SYS_VCVARS_LIST "%VS140COMNTOOLS%..\\..\\VC\\vcvarsall.bat"
112
113   lappend ::SYS_VS_LIST "Visual Studio 2015 (14, toolset v140) UWP"
114   lappend ::SYS_VC_LIST "vc14-uwp"
115   lappend ::SYS_VCVARS_LIST "%VS140COMNTOOLS%..\\..\\VC\\vcvarsall.bat"
116 }
117 if { [info exists ::env(VS120COMNTOOLS)] } {
118   lappend ::SYS_VS_LIST "Visual Studio 2013 (12, toolset v120)"
119   lappend ::SYS_VC_LIST "vc12"
120   lappend ::SYS_VCVARS_LIST "%VS120COMNTOOLS%..\\..\\VC\\vcvarsall.bat"
121 }
122 if { [info exists ::env(VS110COMNTOOLS)] } {
123   lappend ::SYS_VS_LIST "Visual Studio 2012 (11, toolset v110)"
124   lappend ::SYS_VC_LIST "vc11"
125   lappend ::SYS_VCVARS_LIST "%VS110COMNTOOLS%..\\..\\VC\\vcvarsall.bat"
126 }
127 if { [info exists ::env(VS100COMNTOOLS)] } {
128   lappend ::SYS_VS_LIST "Visual Studio 2010 (10, toolset v100)"
129   lappend ::SYS_VC_LIST "vc10"
130   lappend ::SYS_VCVARS_LIST "%VS100COMNTOOLS%..\\..\\VC\\vcvarsall.bat"
131 }
132 if { [info exists ::env(VS90COMNTOOLS)] } {
133   lappend ::SYS_VS_LIST "Visual Studio 2008 (9, toolset v90)"
134   lappend ::SYS_VC_LIST "vc9"
135   lappend ::SYS_VCVARS_LIST "%VS90COMNTOOLS%..\\..\\VC\\vcvarsall.bat"
136 }
137 if { [info exists ::env(VS80COMNTOOLS)] } {
138   lappend ::SYS_VS_LIST "Visual Studio 2005 (8, toolset v80)"
139   lappend ::SYS_VC_LIST "vc8"
140   lappend ::SYS_VCVARS_LIST "%VS80COMNTOOLS%..\\..\\VC\\vcvarsall.bat"
141 }
142 lappend ::SYS_VS_LIST "Custom"
143 lappend ::SYS_VC_LIST "vcX"
144 lappend ::SYS_VCVARS_LIST "%VSXXCOMNTOOLS%..\\..\\VC\\vcvarsall.bat"
145
146 set aVcVerIndex [lsearch $::SYS_VC_LIST $::VCVER]
147 set ::VSVER  [lindex $::SYS_VS_LIST     $aVcVerIndex]
148 if { "$::VCVARS" == "" } {
149   set ::VCVARS [lindex $::SYS_VCVARS_LIST $aVcVerIndex]
150 }
151
152 proc wokdep:gui:Close {} {
153   # if changed ask
154   exit
155 }
156
157 proc wokdep:gui:configSuffix {} {
158   if { "$::CONFIG" == "Debug" } {
159     return "D"
160   }
161   return ""
162 }
163
164 proc wokdep:gui:SwitchConfig {} {
165   set ::PRJFMT [lindex $::SYS_PRJFMT_LIST [.myFrame.myPrjFrame.myPrjCombo current]]
166   set ::VCVER  [lindex $::SYS_VC_LIST     [.myFrame.myVsFrame.myVsCombo current]]
167   set ::VCVARS [lindex $::SYS_VCVARS_LIST [.myFrame.myVsFrame.myVsCombo current]]
168
169   set ::CSF_OPT_INC {}
170   set ::CSF_OPT_LIB32 {}
171   set ::CSF_OPT_LIB64 {}
172   set ::CSF_OPT_BIN32 {}
173   set ::CSF_OPT_BIN64 {}
174   set ::CSF_OPT_LIB32D {}
175   set ::CSF_OPT_LIB64D {}
176   set ::CSF_OPT_BIN32D {}
177   set ::CSF_OPT_BIN64D {}
178   wokdep:gui:UpdateList
179 }
180
181 proc wokdep:gui:SwitchArch {} {
182   wokdep:gui:Show3264Bitness ::aRowIter
183
184   if { [llength [grid info .myFrame.mySave]] != 0 } {
185     grid forget .myFrame.mySave .myFrame.myClose
186   }
187
188   # Bottom section
189   grid .myFrame.mySave  -row $::aRowIter -column 4 -columnspan 2
190   grid .myFrame.myClose -row $::aRowIter -column 6 -columnspan 2
191 }
192
193 # update label text and visibility
194 font create wokdep:gui:EmptyFont -size -1
195 proc wokdep:gui:SetLabelText {theLabel theText} {
196   set aFont TkDefaultFont
197   if { $theText == "" } {
198     set aFont wokdep:gui:EmptyFont
199   }
200   $theLabel configure -text $theText -font $aFont
201 }
202
203 proc wokdep:gui:UpdateList {} {
204   set anIncErrs   {}
205   set anLib32Errs {}
206   set anLib64Errs {}
207   set anBin32Errs {}
208   set anBin64Errs {}
209   wokdep:SearchTclTk     anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
210   if { "$::HAVE_FREETYPE" == "true" } {
211     wokdep:SearchFreeType anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
212   }
213   wokdep:SearchX11       anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
214   if { "$::HAVE_GLES2" == "true" } {
215     wokdep:SearchEGL     anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
216     wokdep:SearchGLES    anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
217   }
218   if { "$::HAVE_FREEIMAGE" == "true" } {
219     wokdep:SearchFreeImage anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
220   }
221   if { "$::HAVE_FFMPEG" == "true" } {
222     wokdep:SearchFFmpeg  anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
223   }
224   if { "$::HAVE_OPENVR" == "true" } {
225     wokdep:SearchOpenVR  anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
226   }
227   if { "$::HAVE_TBB" == "true" } {
228     wokdep:SearchTBB     anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
229   }
230 #  if { "$::HAVE_OPENCL" == "true" } {
231 #    wokdep:SearchOpenCL  anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
232 #  }
233   if { "$::HAVE_VTK" == "true" } {
234     wokdep:SearchVTK  anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
235   }
236
237   if { "$::HAVE_ZLIB" == "true" } {
238     set aCheckLib "z"
239     if { "$::tcl_platform(platform)" == "windows" } {
240       set aCheckLib "zlib"
241     }
242     wokdep:SearchStandardLibrary  anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs "zlib" "zlib.h" "$aCheckLib" {"zlib"}
243   }
244   if { "$::HAVE_LIBLZMA" == "true" } {
245     set aCheckLib "lzma"
246     if { "$::tcl_platform(platform)" == "windows" } {
247       set aCheckLib "liblzma"
248     }
249     wokdep:SearchStandardLibrary  anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs "liblzma" "lzma.h" "$aCheckLib" {"lzma" "xz"}
250   }
251   if { "$::HAVE_E57" == "true" } {
252     wokdep:SearchStandardLibrary  anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs "e57" "e57/E57Foundation.h" "E57RefImpl" {"e57"}
253     set aCheckLib "xerces-c"
254     if { "$::tcl_platform(platform)" == "windows" } {
255       set aCheckLib "xerces-c_3"
256     }
257     wokdep:SearchStandardLibrary  anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs "xerces-c" "xercesc/sax2/XMLReaderFactory.hpp" "$aCheckLib" {"xerces"}
258   }
259   if { "$::HAVE_RAPIDJSON" == "true" } {
260     wokdep:SearchRapidJson anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
261   }
262   if { "$::HAVE_DRACO" == "true" } {
263     set aDummy {}
264     wokdep:SearchStandardLibrary  anIncErrs anLib32Errs anLib64Errs aDummy aDummy "draco" "draco/compression/decode.h" "draco" {"draco"}
265   }
266
267   if {"$::BUILD_Inspector" == "true" } {
268     set ::CHECK_QT "true"
269   }
270
271   if { "$::CHECK_QT" == "true" } {
272     wokdep:SearchQt     anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
273   }
274
275   if { "$::CHECK_JDK" == "true" } {
276     wokdep:SearchJDK     anIncErrs anLib32Errs anLib64Errs anBin32Errs anBin64Errs
277   }
278
279   wokdep:gui:SetLabelText .myFrame.myIncErrLbl [join $anIncErrs   "\n"]
280
281   wokdep:gui:SetLabelText .myFrame.myIncErrLbl     [join $anIncErrs   "\n"]
282   wokdep:gui:SetLabelText .myFrame.myLib32_ErrLbl  [join $anLib32Errs "\n"]
283   wokdep:gui:SetLabelText .myFrame.myLib64_ErrLbl  [join $anLib64Errs "\n"]
284   wokdep:gui:SetLabelText .myFrame.myBin32_ErrLbl  [join $anBin32Errs "\n"]
285   wokdep:gui:SetLabelText .myFrame.myBin64_ErrLbl  [join $anBin64Errs "\n"]
286
287   wokdep:gui:SetLabelText .myFrame.myLib32D_ErrLbl [join $anLib32Errs "\n"]
288   wokdep:gui:SetLabelText .myFrame.myLib64D_ErrLbl [join $anLib64Errs "\n"]
289   wokdep:gui:SetLabelText .myFrame.myBin32D_ErrLbl [join $anBin32Errs "\n"]
290   wokdep:gui:SetLabelText .myFrame.myBin64D_ErrLbl [join $anBin64Errs "\n"]
291
292   # merge duplicates
293   set ::CSF_OPT_LIB32  [lsort -unique $::CSF_OPT_LIB32]
294   set ::CSF_OPT_LIB64  [lsort -unique $::CSF_OPT_LIB64]
295   set ::CSF_OPT_BIN32  [lsort -unique $::CSF_OPT_BIN32]
296   set ::CSF_OPT_BIN64  [lsort -unique $::CSF_OPT_BIN64]
297   set ::CSF_OPT_LIB32D [lsort -unique $::CSF_OPT_LIB32D]
298   set ::CSF_OPT_LIB64D [lsort -unique $::CSF_OPT_LIB64D]
299   set ::CSF_OPT_BIN32D [lsort -unique $::CSF_OPT_BIN32D]
300   set ::CSF_OPT_BIN64D [lsort -unique $::CSF_OPT_BIN64D]
301 }
302
303 proc wokdep:gui:BrowseVcVars {} {
304   set aResult [tk_chooseDirectory -initialdir $::VCVARS -title "Choose a directory"]
305   if { "$aResult" != "" } {
306     set ::VCVARS $aResult
307   }
308 }
309
310 proc wokdep:gui:BrowsePartiesRoot {} {
311   set aResult [tk_chooseDirectory -initialdir $::PRODUCTS_PATH_INPUT -title "Choose a directory"]
312   if { "$aResult" != "" } {
313     set ::PRODUCTS_PATH_INPUT $aResult
314     wokdep:gui:UpdateList
315   }
316 }
317
318 proc wokdep:gui:AddIncPath {} {
319   set aResult [tk_chooseDirectory -title "Choose a directory"]
320   if { "$aResult" != "" } {
321     lappend ::CSF_OPT_INC "$aResult"
322     wokdep:gui:UpdateList
323   }
324 }
325
326 proc wokdep:gui:AddLibPath {} {
327   set aCfg [wokdep:gui:configSuffix]
328   set aResult [tk_chooseDirectory -title "Choose a directory"]
329   if { "$aResult" != "" } {
330     lappend ::CSF_OPT_LIB${::ARCH}${aCfg} "$aResult"
331     wokdep:gui:UpdateList
332   }
333 }
334
335 proc wokdep:gui:AddBinPath {} {
336   set aCfg [wokdep:gui:configSuffix]
337   set aResult [tk_chooseDirectory -title "Choose a directory"]
338   if { "$aResult" != "" } {
339     lappend ::CSF_OPT_BIN${::ARCH}${aCfg} "$aResult"
340     wokdep:gui:UpdateList
341   }
342 }
343
344 proc wokdep:gui:RemoveIncPath {} {
345   set aSelIndices [.myFrame.myIncList curselection]
346   if { [llength $aSelIndices] != 0 } {
347     .myFrame.myIncList delete [lindex $aSelIndices 0]
348   }
349   wokdep:gui:UpdateList
350 }
351
352 proc wokdep:gui:RemoveLibPath {} {
353   set aCfg [wokdep:gui:configSuffix]
354   set aSelIndices [.myFrame.myLib${::ARCH}${aCfg}_List curselection]
355   if { [llength $aSelIndices] != 0 } {
356     .myFrame.myLib${::ARCH}${aCfg}_List delete [lindex $aSelIndices 0]
357   }
358   wokdep:gui:UpdateList
359 }
360
361 proc wokdep:gui:RemoveBinPath {} {
362   set aCfg [wokdep:gui:configSuffix]
363   set aSelIndices [.myFrame.myBin${::ARCH}${aCfg}_List curselection]
364   if { [llength $aSelIndices] != 0 } {
365     .myFrame.myBin${::ARCH}${aCfg}_List delete [lindex $aSelIndices 0]
366   }
367   wokdep:gui:UpdateList
368 }
369
370 proc wokdep:gui:ResetIncPath {} {
371   set ::CSF_OPT_INC {}
372   wokdep:gui:UpdateList
373 }
374
375 proc wokdep:gui:ResetLibPath {} {
376   set ::CSF_OPT_LIB${::ARCH}  {}
377   set ::CSF_OPT_LIB${::ARCH}D {}
378   set ::CSF_OPT_BIN${::ARCH}  {}
379   set ::CSF_OPT_BIN${::ARCH}D {}
380   wokdep:gui:UpdateList
381 }
382
383 proc wokdep:gui:Show3264Bitness { theRowIter } {
384   upvar $theRowIter aRowIter
385
386   set aArchOld ""
387   set aCfg [wokdep:gui:configSuffix]
388   if { "$::ARCH" == "32" } {
389     set aArchOld "64"
390   } else {
391     set aArchOld "32"
392   }
393
394   set aCfgOld "D"
395   if { "$::CONFIG" == "Debug" } { set aCfgOld "" }
396   set aDelArch ${aArchOld}${aCfg}
397   if { [llength [grid info .myFrame.myLib${aDelArch}_Lbl]] != 0 } {
398     grid forget .myFrame.myLib${aDelArch}_Lbl .myFrame.myLib${aDelArch}_List   .myFrame.myLib${aDelArch}_Scrl
399     grid forget .myFrame.myLib${aDelArch}_Add .myFrame.myLib${aDelArch}_Remove .myFrame.myLib${aDelArch}_Clear .myFrame.myLib${aDelArch}_ErrLbl
400     grid forget .myFrame.myBin${aDelArch}_Lbl .myFrame.myBin${aDelArch}_List   .myFrame.myBin${aDelArch}_Scrl
401     grid forget .myFrame.myBin${aDelArch}_Add .myFrame.myBin${aDelArch}_Remove .myFrame.myBin${aDelArch}_Clear .myFrame.myBin${aDelArch}_ErrLbl
402   }
403   set aDelCfg ${::ARCH}${aCfgOld}
404   if { [llength [grid info .myFrame.myLib${aDelCfg}_Lbl]] != 0 } {
405     grid forget .myFrame.myLib${aDelCfg}_Lbl .myFrame.myLib${aDelCfg}_List   .myFrame.myLib${aDelCfg}_Scrl
406     grid forget .myFrame.myLib${aDelCfg}_Add .myFrame.myLib${aDelCfg}_Remove .myFrame.myLib${aDelCfg}_Clear .myFrame.myLib${aDelCfg}_ErrLbl
407     grid forget .myFrame.myBin${aDelCfg}_Lbl .myFrame.myBin${aDelCfg}_List   .myFrame.myBin${aDelCfg}_Scrl
408     grid forget .myFrame.myBin${aDelCfg}_Add .myFrame.myBin${aDelCfg}_Remove .myFrame.myBin${aDelCfg}_Clear .myFrame.myBin${aDelCfg}_ErrLbl
409   }
410
411   set aNewCfg ${::ARCH}${aCfg}
412   # Additional libraries search paths
413   grid .myFrame.myLib${aNewCfg}_Lbl    -row $aRowIter -column 0 -columnspan 10 -sticky w
414   incr aRowIter
415   grid .myFrame.myLib${aNewCfg}_List   -row $aRowIter -column 0 -rowspan 4 -columnspan 5
416   grid .myFrame.myLib${aNewCfg}_Scrl   -row $aRowIter -column 5 -rowspan 4
417   grid .myFrame.myLib${aNewCfg}_Add    -row $aRowIter -column 6
418   incr aRowIter
419   #grid .myFrame.myLib${aNewCfg}_Edit   -row $aRowIter -column 6
420   incr aRowIter
421   grid .myFrame.myLib${aNewCfg}_Remove -row $aRowIter -column 6
422   incr aRowIter
423   grid .myFrame.myLib${aNewCfg}_Clear  -row $aRowIter -column 6
424   incr aRowIter
425   grid .myFrame.myLib${aNewCfg}_ErrLbl -row $aRowIter -column 0 -columnspan 10 -sticky w
426   incr aRowIter
427
428   # Additional executables search paths
429   grid .myFrame.myBin${aNewCfg}_Lbl    -row $aRowIter -column 0 -columnspan 10 -sticky w
430   incr aRowIter
431   grid .myFrame.myBin${aNewCfg}_List   -row $aRowIter -column 0 -rowspan 4 -columnspan 5
432   grid .myFrame.myBin${aNewCfg}_Scrl   -row $aRowIter -column 5 -rowspan 4
433   grid .myFrame.myBin${aNewCfg}_Add    -row $aRowIter -column 6
434   incr aRowIter
435   #grid .myFrame.myBin${aNewCfg}_Edit   -row $aRowIter -column 6
436   incr aRowIter
437   grid .myFrame.myBin${aNewCfg}_Remove -row $aRowIter -column 6
438   incr aRowIter
439   grid .myFrame.myBin${aNewCfg}_Clear  -row $aRowIter -column 6
440   incr aRowIter
441   grid .myFrame.myBin${aNewCfg}_ErrLbl -row $aRowIter -column 0 -columnspan 10 -sticky w
442   incr aRowIter
443 }
444
445 # Header
446 ttk::label    .myFrame.myPrjFrame.myPrjLbl     -text "Project format:" -padding {5 5 20 5}
447 ttk::combobox .myFrame.myPrjFrame.myPrjCombo   -values $SYS_PRJNAME_LIST -state readonly -textvariable PRJNAME -width 40
448 ttk::label    .myFrame.myVsFrame.myVsLbl       -text "Visual Studio configuration:" -padding {5 5 20 5}
449 ttk::combobox .myFrame.myVsFrame.myVsCombo     -values $SYS_VS_LIST -state readonly -textvariable VSVER -width 40
450 ttk::combobox .myFrame.myVsFrame.myArchCombo   -values { {32} {64} } -textvariable ARCH -state readonly -width 6
451 ttk::combobox .myFrame.myVsFrame.myConfigCombo -values { {Release} {Debug} } -textvariable CONFIG -state readonly -width 6
452 entry         .myFrame.myVcEntry     -textvariable VCVER  -width 10
453 entry         .myFrame.myVcVarsEntry -textvariable VCVARS -width 70
454 ttk::button   .myFrame.myVcBrowseBtn -text "Browse" -command wokdep:gui:BrowseVcVars
455 ttk::label    .myFrame.myHxxChecks.myRelDebInfoLbl   -text "Release with Debug info"
456 checkbutton   .myFrame.myHxxChecks.myRelDebInfoCheck -offvalue "false" -onvalue "true" -variable HAVE_RelWithDebInfo
457
458 #
459 ttk::combobox .myFrame.myHxxChecks.myScutsCombo   -values { {ShortCut} {Copy} {HardLink} } -textvariable SHORTCUT_HEADERS -state readonly -width 12
460 ttk::label    .myFrame.myHxxChecks.myScutsLbl     -text "Strategy for filling headers folder inc:"
461
462 #
463 ttk::label    .myFrame.mySrchLbl       -text "3rd-parties search path:" -padding {5 5 80 5}
464 entry         .myFrame.mySrchEntry     -textvariable PRODUCTS_PATH_INPUT -width 80
465 ttk::button   .myFrame.mySrchBrowseBtn -text "Browse" -command wokdep:gui:BrowsePartiesRoot
466 checkbutton   .myFrame.myChecks.myFreeTypeCheck -offvalue "false" -onvalue "true" -variable HAVE_FREETYPE  -command wokdep:gui:UpdateList
467 ttk::label    .myFrame.myChecks.myFreeTypeLbl   -text "Use FreeType"
468 checkbutton   .myFrame.myChecks.myFImageCheck   -offvalue "false" -onvalue "true" -variable HAVE_FREEIMAGE -command wokdep:gui:UpdateList
469 ttk::label    .myFrame.myChecks.myFImageLbl     -text "Use FreeImage"
470 checkbutton   .myFrame.myChecks.myTbbCheck      -offvalue "false" -onvalue "true" -variable HAVE_TBB       -command wokdep:gui:UpdateList
471 ttk::label    .myFrame.myChecks.myTbbLbl        -text "Use Intel TBB"
472 checkbutton   .myFrame.myChecks.myOpenVrCheck   -offvalue "false" -onvalue "true" -variable HAVE_OPENVR    -command wokdep:gui:UpdateList
473 ttk::label    .myFrame.myChecks.myOpenVrLbl     -text "Use OpenVR"
474 if { "$::tcl_platform(os)" != "Darwin" } {
475   checkbutton .myFrame.myChecks.myGlesCheck     -offvalue "false" -onvalue "true" -variable HAVE_GLES2     -command wokdep:gui:UpdateList
476   ttk::label  .myFrame.myChecks.myGlesLbl       -text "Use OpenGL ES"
477 }
478 if { "$::tcl_platform(platform)" == "windows" } {
479   checkbutton .myFrame.myChecks.myD3dCheck      -offvalue "false" -onvalue "true" -variable HAVE_D3D       -command wokdep:gui:UpdateList
480   ttk::label  .myFrame.myChecks.myD3dLbl        -text "Use Direct3D"
481 }
482 checkbutton   .myFrame.myChecks.myFFmpegCheck   -offvalue "false" -onvalue "true" -variable HAVE_FFMPEG    -command wokdep:gui:UpdateList
483 ttk::label    .myFrame.myChecks.myFFmpegLbl     -text "Use FFmpeg"
484 #checkbutton   .myFrame.myChecks.myOpenClCheck   -offvalue "false" -onvalue "true" -variable HAVE_OPENCL    -command wokdep:gui:UpdateList
485 #ttk::label    .myFrame.myChecks.myOpenClLbl     -text "Use OpenCL"
486 checkbutton   .myFrame.myChecks.myRapidJsonCheck -offvalue "false" -onvalue "true" -variable HAVE_RAPIDJSON -command wokdep:gui:UpdateList
487 ttk::label    .myFrame.myChecks.myRapidJsonLbl   -text "Use RapidJSON"
488 checkbutton   .myFrame.myChecks.myDracoCheck    -offvalue "false" -onvalue "true" -variable HAVE_DRACO     -command wokdep:gui:UpdateList
489 ttk::label    .myFrame.myChecks.myDracoLbl      -text "Use Draco"
490
491 checkbutton   .myFrame.myChecks.myXLibCheck     -offvalue "false" -onvalue "true" -variable HAVE_XLIB
492 ttk::label    .myFrame.myChecks.myXLibLbl       -text "Use X11 for windows drawing"
493 ttk::label    .myFrame.myChecks.myVtkLbl        -text "Use VTK"
494 checkbutton   .myFrame.myChecks.myVtkCheck      -offvalue "false" -onvalue "true" -variable HAVE_VTK       -command wokdep:gui:UpdateList
495
496 checkbutton   .myFrame.myChecks.myZLibCheck     -offvalue "false" -onvalue "true" -variable HAVE_ZLIB      -command wokdep:gui:UpdateList
497 ttk::label    .myFrame.myChecks.myZLibLbl       -text "Use zlib"
498 checkbutton   .myFrame.myChecks.myLzmaCheck     -offvalue "false" -onvalue "true" -variable HAVE_LIBLZMA   -command wokdep:gui:UpdateList
499 ttk::label    .myFrame.myChecks.myLzmaLbl       -text "Use liblzma"
500 checkbutton   .myFrame.myChecks.myE57Check      -offvalue "false" -onvalue "true" -variable HAVE_E57       -command wokdep:gui:UpdateList
501 ttk::label    .myFrame.myChecks.myE57Lbl        -text "Use E57"
502
503 checkbutton   .myFrame.myChecks.myQtCheck       -offvalue "false" -onvalue "true" -variable CHECK_QT       -command wokdep:gui:UpdateList
504 ttk::label    .myFrame.myChecks.myQtLbl         -text "Search Qt"
505 checkbutton   .myFrame.myChecks.myJDKCheck      -offvalue "false" -onvalue "true" -variable CHECK_JDK      -command wokdep:gui:UpdateList
506 ttk::label    .myFrame.myChecks.myJDKLbl        -text "Search JDK"
507
508 if { "$::tcl_platform(platform)" == "windows" } {
509   checkbutton   .myFrame.myChecks.myInspectorBuild -offvalue "false" -onvalue "true" -variable BUILD_Inspector      -command wokdep:gui:UpdateList
510   ttk::label    .myFrame.myChecks.myInspectorLbl   -text "Build Inspector"
511 }
512
513 # Additional headers search paths
514 ttk::label    .myFrame.myIncLbl    -text "Additional headers search paths:" -padding {5 5 80 5}
515 scrollbar     .myFrame.myIncScrl   -command ".myFrame.myIncList yview"
516 listbox       .myFrame.myIncList   -listvariable CSF_OPT_INC -width 80 -height 5 -yscrollcommand ".myFrame.myIncScrl set"
517 ttk::button   .myFrame.myIncAdd    -text "Add"     -command wokdep:gui:AddIncPath
518 ttk::button   .myFrame.myIncEdit   -text "Edit"
519 ttk::button   .myFrame.myIncRemove -text "Remove"  -command wokdep:gui:RemoveIncPath
520 ttk::button   .myFrame.myIncClear  -text "Reset"   -command wokdep:gui:ResetIncPath
521 ttk::label    .myFrame.myIncErrLbl -text "Error: " -foreground red -padding {5 5 5 5}
522
523 # Additional libraries (32-bit) search paths
524 ttk::label    .myFrame.myLib32_Lbl    -text "Additional libraries (32-bit) search paths:" -padding {5 5 80 5}
525 scrollbar     .myFrame.myLib32_Scrl   -command ".myFrame.myLib32_List yview"
526 listbox       .myFrame.myLib32_List   -listvariable CSF_OPT_LIB32 -width 80 -height 5 -yscrollcommand ".myFrame.myLib32_Scrl set"
527 ttk::button   .myFrame.myLib32_Add    -text "Add"     -command wokdep:gui:AddLibPath
528 ttk::button   .myFrame.myLib32_Edit   -text "Edit"
529 ttk::button   .myFrame.myLib32_Remove -text "Remove"  -command wokdep:gui:RemoveLibPath
530 ttk::button   .myFrame.myLib32_Clear  -text "Reset"   -command wokdep:gui:ResetLibPath
531 ttk::label    .myFrame.myLib32_ErrLbl -text "Error: " -foreground red -padding {5 5 5 5}
532
533 # Additional debug libraries (32-bit) search paths
534 ttk::label    .myFrame.myLib32D_Lbl    -text "Additional debug libraries (32-bit) search paths:" -padding {5 5 80 5}
535 scrollbar     .myFrame.myLib32D_Scrl   -command ".myFrame.myLib32D_List yview"
536 listbox       .myFrame.myLib32D_List   -listvariable CSF_OPT_LIB32D -width 80 -height 5 -yscrollcommand ".myFrame.myLib32D_Scrl set"
537 ttk::button   .myFrame.myLib32D_Add    -text "Add"     -command wokdep:gui:AddLibPath
538 ttk::button   .myFrame.myLib32D_Edit   -text "Edit"
539 ttk::button   .myFrame.myLib32D_Remove -text "Remove"  -command wokdep:gui:RemoveLibPath
540 ttk::button   .myFrame.myLib32D_Clear  -text "Reset"   -command wokdep:gui:ResetLibPath
541 ttk::label    .myFrame.myLib32D_ErrLbl -text "Error: " -foreground red -padding {5 5 5 5}
542
543 # Additional libraries (64-bit) search paths
544 ttk::label    .myFrame.myLib64_Lbl    -text "Additional libraries (64-bit) search paths:" -padding {5 5 80 5}
545 scrollbar     .myFrame.myLib64_Scrl   -command ".myFrame.myLib64_List yview"
546 listbox       .myFrame.myLib64_List   -listvariable CSF_OPT_LIB64 -width 80 -height 5 -yscrollcommand ".myFrame.myLib64_Scrl set"
547 ttk::button   .myFrame.myLib64_Add    -text "Add"     -command wokdep:gui:AddLibPath
548 ttk::button   .myFrame.myLib64_Edit   -text "Edit"
549 ttk::button   .myFrame.myLib64_Remove -text "Remove"  -command wokdep:gui:RemoveLibPath
550 ttk::button   .myFrame.myLib64_Clear  -text "Reset"   -command wokdep:gui:ResetLibPath
551 ttk::label    .myFrame.myLib64_ErrLbl -text "Error: " -foreground red -padding {5 5 5 5}
552
553 # Additional debug libraries (64-bit) search paths
554 ttk::label    .myFrame.myLib64D_Lbl    -text "Additional debug libraries (64-bit) search paths:" -padding {5 5 80 5}
555 scrollbar     .myFrame.myLib64D_Scrl   -command ".myFrame.myLib64D_List yview"
556 listbox       .myFrame.myLib64D_List   -listvariable CSF_OPT_LIB64D -width 80 -height 5 -yscrollcommand ".myFrame.myLib64D_Scrl set"
557 ttk::button   .myFrame.myLib64D_Add    -text "Add"     -command wokdep:gui:AddLibPath
558 ttk::button   .myFrame.myLib64D_Edit   -text "Edit"
559 ttk::button   .myFrame.myLib64D_Remove -text "Remove"  -command wokdep:gui:RemoveLibPath
560 ttk::button   .myFrame.myLib64D_Clear  -text "Reset"   -command wokdep:gui:ResetLibPath
561 ttk::label    .myFrame.myLib64D_ErrLbl -text "Error: " -foreground red -padding {5 5 5 5}
562
563 # Additional executables (32-bit) search paths
564 ttk::label    .myFrame.myBin32_Lbl    -text "Additional executables (32-bit) search paths:" -padding {5 5 80 5}
565 scrollbar     .myFrame.myBin32_Scrl   -command ".myFrame.myBin32_List yview"
566 listbox       .myFrame.myBin32_List   -listvariable CSF_OPT_BIN32 -width 80 -height 5 -yscrollcommand ".myFrame.myBin32_Scrl set"
567 ttk::button   .myFrame.myBin32_Add    -text "Add"     -command wokdep:gui:AddBinPath
568 ttk::button   .myFrame.myBin32_Edit   -text "Edit"
569 ttk::button   .myFrame.myBin32_Remove -text "Remove"  -command wokdep:gui:RemoveBinPath
570 ttk::button   .myFrame.myBin32_Clear  -text "Reset"   -command wokdep:gui:ResetLibPath
571 ttk::label    .myFrame.myBin32_ErrLbl -text "Error: " -foreground red -padding {5 5 5 5}
572
573 # Additional debug executables (32-bit) search paths
574 ttk::label    .myFrame.myBin32D_Lbl    -text "Additional debug executables (32-bit) search paths:" -padding {5 5 80 5}
575 scrollbar     .myFrame.myBin32D_Scrl   -command ".myFrame.myBin32D_List yview"
576 listbox       .myFrame.myBin32D_List   -listvariable CSF_OPT_BIN32D -width 80 -height 5 -yscrollcommand ".myFrame.myBin32D_Scrl set"
577 ttk::button   .myFrame.myBin32D_Add    -text "Add"     -command wokdep:gui:AddBinPath
578 ttk::button   .myFrame.myBin32D_Edit   -text "Edit"
579 ttk::button   .myFrame.myBin32D_Remove -text "Remove"  -command wokdep:gui:RemoveBinPath
580 ttk::button   .myFrame.myBin32D_Clear  -text "Reset"   -command wokdep:gui:ResetLibPath
581 ttk::label    .myFrame.myBin32D_ErrLbl -text "Error: " -foreground red -padding {5 5 5 5}
582
583 # Additional executables (64-bit) search paths
584 ttk::label    .myFrame.myBin64_Lbl    -text "Additional executables (64-bit) search paths:" -padding {5 5 80 5}
585 scrollbar     .myFrame.myBin64_Scrl   -command ".myFrame.myBin64_List yview"
586 listbox       .myFrame.myBin64_List   -listvariable CSF_OPT_BIN64 -width 80 -height 5 -yscrollcommand ".myFrame.myBin64_Scrl set"
587 ttk::button   .myFrame.myBin64_Add    -text "Add"     -command wokdep:gui:AddBinPath
588 ttk::button   .myFrame.myBin64_Edit   -text "Edit"
589 ttk::button   .myFrame.myBin64_Remove -text "Remove"  -command wokdep:gui:RemoveBinPath
590 ttk::button   .myFrame.myBin64_Clear  -text "Reset"   -command wokdep:gui:ResetLibPath
591 ttk::label    .myFrame.myBin64_ErrLbl -text "Error: " -foreground red -padding {5 5 5 5}
592
593 # Additional debug executables (64-bit) search paths
594 ttk::label    .myFrame.myBin64D_Lbl    -text "Additional debug executables (64-bit) search paths:" -padding {5 5 80 5}
595 scrollbar     .myFrame.myBin64D_Scrl   -command ".myFrame.myBin64D_List yview"
596 listbox       .myFrame.myBin64D_List   -listvariable CSF_OPT_BIN64D -width 80 -height 5 -yscrollcommand ".myFrame.myBin64D_Scrl set"
597 ttk::button   .myFrame.myBin64D_Add    -text "Add"     -command wokdep:gui:AddBinPath
598 ttk::button   .myFrame.myBin64D_Edit   -text "Edit"
599 ttk::button   .myFrame.myBin64D_Remove -text "Remove"  -command wokdep:gui:RemoveBinPath
600 ttk::button   .myFrame.myBin64D_Clear  -text "Reset"   -command wokdep:gui:ResetLibPath
601 ttk::label    .myFrame.myBin64D_ErrLbl -text "Error: " -foreground red -padding {5 5 5 5}
602
603 # Bottom
604 ttk::button   .myFrame.mySave  -text "Save"  -command wokdep:SaveCustom
605 ttk::button   .myFrame.myClose -text "Close" -command wokdep:gui:Close
606
607 # Create grid
608 # Header
609 grid .myFrame.myPrjFrame            -row $aRowIter -column 0 -columnspan 10 -sticky w
610 grid .myFrame.myPrjFrame.myPrjLbl   -row 0 -column 0
611 grid .myFrame.myPrjFrame.myPrjCombo -row 0 -column 1
612 if { "$tcl_platform(platform)" == "windows" } {
613   incr aRowIter
614   grid .myFrame.myVsFrame               -row $aRowIter -column 0 -columnspan 10 -sticky w
615   grid .myFrame.myVsFrame.myVsLbl       -row 0 -column 0
616   grid .myFrame.myVsFrame.myVsCombo     -row 0 -column 1 -padx 5
617   grid .myFrame.myVsFrame.myArchCombo   -row 0 -column 2
618   grid .myFrame.myVsFrame.myConfigCombo -row 0 -column 3
619   incr aRowIter
620   grid .myFrame.myVcEntry     -row $aRowIter -column 0
621   grid .myFrame.myVcVarsEntry -row $aRowIter -column 1 -columnspan 4 -sticky w
622   grid .myFrame.myVcBrowseBtn -row $aRowIter -column 6
623   incr aRowIter
624 } else {
625   grid .myFrame.myVsFrame               -row $aRowIter -column 4 -sticky w
626   grid .myFrame.myVsFrame.myConfigCombo -row 0 -column 0
627   incr aRowIter
628 }
629
630 #
631 grid .myFrame.myHxxChecks -row $aRowIter -column 0 -columnspan 10 -sticky w
632 grid .myFrame.myHxxChecks.myScutsLbl     -row 0 -column 0
633 grid .myFrame.myHxxChecks.myScutsCombo   -row 0 -column 1
634 if { "$tcl_platform(platform)" == "windows" } {
635   grid .myFrame.myHxxChecks.myRelDebInfoCheck -row 0 -column 2
636   grid .myFrame.myHxxChecks.myRelDebInfoLbl   -row 0 -column 3
637 }
638 incr aRowIter
639 #
640 grid .myFrame.mySrchLbl       -row $aRowIter -column 0 -columnspan 10 -sticky w
641 incr aRowIter
642 grid .myFrame.mySrchEntry     -row $aRowIter -column 0 -columnspan 5
643 grid .myFrame.mySrchBrowseBtn -row $aRowIter -column 6
644 incr aRowIter
645
646 grid .myFrame.myChecks        -row $aRowIter -column 0 -columnspan 10 -sticky w
647 incr aRowIter
648 grid .myFrame.myChecks.myFreeTypeCheck  -row $aCheckRowIter -column 0 -sticky e
649 grid .myFrame.myChecks.myFreeTypeLbl    -row $aCheckRowIter -column 1 -sticky w
650 grid .myFrame.myChecks.myRapidJsonCheck -row $aCheckRowIter -column 2 -sticky e
651 grid .myFrame.myChecks.myRapidJsonLbl   -row $aCheckRowIter -column 3 -sticky w
652 if { "$::tcl_platform(os)" != "Darwin" } {
653   grid .myFrame.myChecks.myGlesCheck     -row $aCheckRowIter -column 4 -sticky e
654   grid .myFrame.myChecks.myGlesLbl       -row $aCheckRowIter -column 5 -sticky w
655 }
656 #grid .myFrame.myChecks.myOpenClCheck   -row $aCheckRowIter -column 6 -sticky e
657 #grid .myFrame.myChecks.myOpenClLbl     -row $aCheckRowIter -column 7 -sticky w
658 grid .myFrame.myChecks.myZLibCheck     -row $aCheckRowIter -column 6 -sticky e
659 grid .myFrame.myChecks.myZLibLbl       -row $aCheckRowIter -column 7 -sticky w
660
661 grid .myFrame.myChecks.myQtCheck      -row $aCheckRowIter -column 12 -sticky e
662 grid .myFrame.myChecks.myQtLbl        -row $aCheckRowIter -column 13 -sticky w
663
664 incr aCheckRowIter
665 grid .myFrame.myChecks.myFImageCheck   -row $aCheckRowIter -column 0 -sticky e
666 grid .myFrame.myChecks.myFImageLbl     -row $aCheckRowIter -column 1 -sticky w
667 grid .myFrame.myChecks.myDracoCheck    -row $aCheckRowIter -column 2 -sticky e
668 grid .myFrame.myChecks.myDracoLbl      -row $aCheckRowIter -column 3 -sticky w
669
670 if { "$::tcl_platform(platform)" == "windows" } {
671   grid .myFrame.myChecks.myD3dCheck    -row $aCheckRowIter -column 4 -sticky e
672   grid .myFrame.myChecks.myD3dLbl      -row $aCheckRowIter -column 5 -sticky w
673 } else {
674   grid .myFrame.myChecks.myXLibCheck   -row $aCheckRowIter -column 4 -sticky e
675   grid .myFrame.myChecks.myXLibLbl     -row $aCheckRowIter -column 5 -sticky w
676 }
677 grid .myFrame.myChecks.myLzmaCheck     -row $aCheckRowIter -column 6 -sticky e
678 grid .myFrame.myChecks.myLzmaLbl       -row $aCheckRowIter -column 7 -sticky w
679 grid .myFrame.myChecks.myJDKCheck      -row $aCheckRowIter -column 12 -sticky e
680 grid .myFrame.myChecks.myJDKLbl        -row $aCheckRowIter -column 13 -sticky w
681
682 incr aCheckRowIter
683 grid .myFrame.myChecks.myFFmpegCheck   -row $aCheckRowIter -column 0 -sticky e
684 grid .myFrame.myChecks.myFFmpegLbl     -row $aCheckRowIter -column 1 -sticky w
685 grid .myFrame.myChecks.myVtkCheck      -row $aCheckRowIter -column 2 -sticky e
686 grid .myFrame.myChecks.myVtkLbl        -row $aCheckRowIter -column 3 -sticky w
687 grid .myFrame.myChecks.myOpenVrCheck   -row $aCheckRowIter -column 4 -sticky e
688 grid .myFrame.myChecks.myOpenVrLbl     -row $aCheckRowIter -column 5 -sticky w
689 grid .myFrame.myChecks.myE57Check      -row $aCheckRowIter -column 6 -sticky e
690 grid .myFrame.myChecks.myE57Lbl        -row $aCheckRowIter -column 7 -sticky w
691
692 if { "$::tcl_platform(platform)" == "windows" } {
693   grid .myFrame.myChecks.myInspectorBuild      -row $aCheckRowIter -column 12 -sticky e
694   grid .myFrame.myChecks.myInspectorLbl        -row $aCheckRowIter -column 13 -sticky w
695 }
696
697 incr aCheckRowIter
698
699 grid .myFrame.myChecks.myTbbCheck      -row $aCheckRowIter -column 12 -sticky e
700 grid .myFrame.myChecks.myTbbLbl        -row $aCheckRowIter -column 13 -sticky w
701
702 incr aCheckRowIter
703
704 # Additional headers search paths
705 grid .myFrame.myIncLbl    -row $aRowIter -column 0 -columnspan 10 -sticky w
706 incr aRowIter
707 grid .myFrame.myIncList   -row $aRowIter -column 0 -rowspan 4 -columnspan 5
708 grid .myFrame.myIncScrl   -row $aRowIter -column 5 -rowspan 4
709 grid .myFrame.myIncAdd    -row $aRowIter -column 6
710 incr aRowIter
711 #grid .myFrame.myIncEdit   -row $aRowIter -column 6
712 incr aRowIter
713 grid .myFrame.myIncRemove -row $aRowIter -column 6
714 incr aRowIter
715 grid .myFrame.myIncClear  -row $aRowIter -column 6
716 incr aRowIter
717 grid .myFrame.myIncErrLbl -row $aRowIter -column 0 -columnspan 10 -sticky w
718 incr aRowIter
719
720 # Additional search paths
721 wokdep:gui:Show3264Bitness aRowIter
722
723 # Bottom section
724 grid .myFrame.mySave  -row $aRowIter -column 4 -columnspan 2
725 grid .myFrame.myClose -row $aRowIter -column 6 -columnspan 2
726
727 # Bind events
728 bind .myFrame.myPrjFrame.myPrjCombo <<ComboboxSelected>> {
729   wokdep:gui:SwitchConfig
730 }
731 bind .myFrame.myVsFrame.myVsCombo <<ComboboxSelected>> {
732   wokdep:gui:SwitchConfig
733 }
734 bind .myFrame.myVsFrame.myArchCombo <<ComboboxSelected>> {
735   wokdep:gui:SwitchArch
736 }
737 bind .myFrame.myVsFrame.myConfigCombo <<ComboboxSelected>> {
738   wokdep:gui:SwitchArch
739 }
740
741 .myFrame.mySrchEntry configure -validate all -validatecommand {
742   set ::PRODUCTS_PATH [file normalize "$::PRODUCTS_PATH_INPUT"]
743   #return [file exists "$::PRODUCTS_PATH"]
744   wokdep:gui:UpdateList
745   return 1
746 }
747
748 wokdep:gui:UpdateList