0000: 0a 0a 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 61 ...namespace eva
0010: 6c 20 63 70 72 6f 6a 65 63 74 20 7b 0a 20 20 20 l cproject {.
0020: 20 76 61 72 69 61 62 6c 65 20 70 72 6f 6a 65 63 variable projec
0030: 74 20 22 22 0a 20 20 20 20 76 61 72 69 61 62 6c t "". variabl
0040: 65 20 67 72 6f 75 70 20 41 6c 6c 0a 20 20 20 20 e group All.
0050: 76 61 72 69 61 62 6c 65 20 67 72 6f 75 70 62 65 variable groupbe
0060: 66 6f 72 65 20 22 22 0a 20 20 20 20 76 61 72 69 fore "". vari
0070: 61 62 6c 65 20 67 72 6f 75 70 73 20 41 6c 6c 0a able groups All.
0080: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 69 6e variable lin
0090: 6b 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ks. variable
00a0: 73 63 72 69 70 74 74 61 62 73 0a 20 20 20 20 76 scripttabs. v
00b0: 61 72 69 61 62 6c 65 20 64 65 62 75 67 72 65 6c ariable debugrel
00c0: 65 61 73 65 62 65 66 6f 72 65 20 22 22 0a 20 20 easebefore "".
00d0: 20 20 76 61 72 69 61 62 6c 65 20 64 65 62 75 67 variable debug
00e0: 72 65 6c 65 61 73 65 20 64 65 62 75 67 0a 20 20 release debug.
00f0: 20 20 76 61 72 69 61 62 6c 65 20 66 69 6c 65 73 variable files
0100: 20 22 22 0a 0a 20 20 20 20 76 61 72 69 61 62 6c "".. variabl
0110: 65 20 74 68 69 73 64 61 74 61 43 0a 20 20 20 20 e thisdataC.
0120: 76 61 72 69 61 62 6c 65 20 64 61 74 61 43 0a 20 variable dataC.
0130: 20 20 20 76 61 72 69 61 62 6c 65 20 74 68 69 73 variable this
0140: 64 61 74 61 4c 0a 20 20 20 20 76 61 72 69 61 62 dataL. variab
0150: 6c 65 20 64 61 74 61 4c 0a 20 20 20 20 76 61 72 le dataL. var
0160: 69 61 62 6c 65 20 74 68 69 73 64 61 74 61 45 0a iable thisdataE.
0170: 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 61 74 variable dat
0180: 61 45 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65 aE.. variable
0190: 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 73 74 61 74 compilationstat
01a0: 75 73 0a 7d 0a 0a 23 23 23 23 23 23 23 23 23 23 us.}..##########
01b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
01c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
01d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
01e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
01f0: 23 23 23 23 23 23 0a 23 20 20 20 70 72 6f 6a 65 ######.# proje
0200: 63 74 20 63 72 65 61 74 69 6f 6e 2f 65 64 69 74 ct creation/edit
0210: 69 6f 6e 0a 23 23 23 23 23 23 23 23 23 23 23 23 ion.############
0220: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0230: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0260: 23 23 23 23 0a 0a 70 72 6f 63 20 63 70 72 6f 6a ####..proc cproj
0270: 65 63 74 3a 3a 49 6e 69 74 20 7b 20 77 20 7d 20 ect::Init { w }
0280: 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 70 {. variable p
0290: 72 6f 6a 65 63 74 0a 0a 20 20 20 20 74 72 61 63 roject.. trac
02a0: 65 20 76 61 72 20 3a 3a 63 70 72 6f 6a 65 63 74 e var ::cproject
02b0: 3a 3a 67 72 6f 75 70 20 77 20 22 63 70 72 6f 6a ::group w "cproj
02c0: 65 63 74 3a 3a 53 65 74 47 72 6f 75 70 41 63 74 ect::SetGroupAct
02d0: 69 76 65 3b 23 22 0a 20 20 20 20 74 72 61 63 65 ive;#". trace
02e0: 20 76 61 72 20 3a 3a 63 70 72 6f 6a 65 63 74 3a var ::cproject:
02f0: 3a 64 65 62 75 67 72 65 6c 65 61 73 65 20 77 20 :debugrelease w
0300: 22 63 70 72 6f 6a 65 63 74 3a 3a 53 65 74 44 65 "cproject::SetDe
0310: 62 75 67 52 65 6c 65 61 73 65 41 63 74 69 76 65 bugReleaseActive
0320: 3b 23 22 0a 0a 20 20 20 20 69 66 20 7b 20 5b 69 ;#".. if { [i
0330: 6e 66 6f 20 65 78 69 73 74 73 20 52 61 6d 44 65 nfo exists RamDe
0340: 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 bugger::options(
0350: 72 65 63 65 6e 74 70 72 6f 6a 65 63 74 73 29 5d recentprojects)]
0360: 20 26 26 20 5c 0a 09 20 20 20 20 5b 6c 6c 65 6e && \.. [llen
0370: 67 74 68 20 24 52 61 6d 44 65 62 75 67 67 65 72 gth $RamDebugger
0380: 3a 3a 6f 70 74 69 6f 6e 73 28 72 65 63 65 6e 74 ::options(recent
0390: 70 72 6f 6a 65 63 74 73 29 5d 20 3e 20 30 20 7d projects)] > 0 }
03a0: 20 7b 0a 09 73 65 74 20 70 72 6f 6a 65 63 74 20 {..set project
03b0: 5b 6c 69 6e 64 65 78 20 24 52 61 6d 44 65 62 75 [lindex $RamDebu
03c0: 67 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 72 65 gger::options(re
03d0: 63 65 6e 74 70 72 6f 6a 65 63 74 73 29 20 30 5d centprojects) 0]
03e0: 0a 09 63 61 74 63 68 20 7b 20 4f 70 65 6e 50 72 ..catch { OpenPr
03f0: 6f 6a 65 63 74 20 24 77 20 30 20 7d 0a 20 20 20 oject $w 0 }.
0400: 20 7d 0a 7d 0a 0a 70 72 6f 63 20 63 70 72 6f 6a }.}..proc cproj
0410: 65 63 74 3a 3a 73 79 6e 63 74 6f 55 49 20 7b 7d ect::synctoUI {}
0420: 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
0430: 74 68 69 73 64 61 74 61 43 0a 20 20 20 20 76 61 thisdataC. va
0440: 72 69 61 62 6c 65 20 64 61 74 61 43 0a 20 20 20 riable dataC.
0450: 20 76 61 72 69 61 62 6c 65 20 74 68 69 73 64 61 variable thisda
0460: 74 61 4c 0a 20 20 20 20 76 61 72 69 61 62 6c 65 taL. variable
0470: 20 64 61 74 61 4c 0a 20 20 20 20 76 61 72 69 61 dataL. varia
0480: 62 6c 65 20 74 68 69 73 64 61 74 61 45 0a 20 20 ble thisdataE.
0490: 20 20 76 61 72 69 61 62 6c 65 20 64 61 74 61 45 variable dataE
04a0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 68 . variable th
04b0: 69 73 64 61 74 61 53 0a 20 20 20 20 76 61 72 69 isdataS. vari
04c0: 61 62 6c 65 20 64 61 74 61 53 0a 20 20 20 20 76 able dataS. v
04d0: 61 72 69 61 62 6c 65 20 67 72 6f 75 70 0a 20 20 ariable group.
04e0: 20 20 76 61 72 69 61 62 6c 65 20 64 65 62 75 67 variable debug
04f0: 72 65 6c 65 61 73 65 0a 0a 20 20 20 20 66 6f 72 release.. for
0500: 65 61 63 68 20 69 20 5b 61 72 72 61 79 20 6e 61 each i [array na
0510: 6d 65 73 20 64 61 74 61 43 20 24 67 72 6f 75 70 mes dataC $group
0520: 2c 24 64 65 62 75 67 72 65 6c 65 61 73 65 2c 2a ,$debugrelease,*
0530: 5d 20 7b 0a 09 72 65 67 65 78 70 20 7b 5e 5b 5e ] {..regexp {^[^
0540: 2c 5d 2b 2c 5b 5e 2c 5d 2b 2c 28 2e 2a 29 7d 20 ,]+,[^,]+,(.*)}
0550: 24 69 20 7b 7d 20 70 72 6f 70 0a 09 73 65 74 20 $i {} prop..set
0560: 74 68 69 73 64 61 74 61 43 28 24 70 72 6f 70 29 thisdataC($prop)
0570: 20 24 64 61 74 61 43 28 24 69 29 0a 20 20 20 20 $dataC($i).
0580: 7d 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 }. foreach i
0590: 5b 61 72 72 61 79 20 6e 61 6d 65 73 20 64 61 74 [array names dat
05a0: 61 4c 20 24 64 65 62 75 67 72 65 6c 65 61 73 65 aL $debugrelease
05b0: 2c 2a 5d 20 7b 0a 09 72 65 67 65 78 70 20 7b 5e ,*] {..regexp {^
05c0: 5b 5e 2c 5d 2b 2c 28 2e 2a 29 7d 20 24 69 20 7b [^,]+,(.*)} $i {
05d0: 7d 20 70 72 6f 70 0a 09 73 65 74 20 74 68 69 73 } prop..set this
05e0: 64 61 74 61 4c 28 24 70 72 6f 70 29 20 24 64 61 dataL($prop) $da
05f0: 74 61 4c 28 24 69 29 0a 20 20 20 20 7d 0a 20 20 taL($i). }.
0600: 20 20 66 6f 72 65 61 63 68 20 69 20 5b 61 72 72 foreach i [arr
0610: 61 79 20 6e 61 6d 65 73 20 64 61 74 61 53 20 24 ay names dataS $
0620: 64 65 62 75 67 72 65 6c 65 61 73 65 2c 2a 5d 20 debugrelease,*]
0630: 7b 0a 09 72 65 67 65 78 70 20 7b 5e 5b 5e 2c 5d {..regexp {^[^,]
0640: 2b 2c 28 2e 2a 29 7d 20 24 69 20 7b 7d 20 70 72 +,(.*)} $i {} pr
0650: 6f 70 0a 09 73 65 74 20 74 68 69 73 64 61 74 61 op..set thisdata
0660: 53 28 24 70 72 6f 70 29 20 24 64 61 74 61 53 28 S($prop) $dataS(
0670: 24 69 29 0a 20 20 20 20 7d 0a 20 20 20 20 66 6f $i). }. fo
0680: 72 65 61 63 68 20 69 20 5b 61 72 72 61 79 20 6e reach i [array n
0690: 61 6d 65 73 20 64 61 74 61 45 20 24 64 65 62 75 ames dataE $debu
06a0: 67 72 65 6c 65 61 73 65 2c 2a 5d 20 7b 0a 09 72 grelease,*] {..r
06b0: 65 67 65 78 70 20 7b 5e 5b 5e 2c 5d 2b 2c 28 2e egexp {^[^,]+,(.
06c0: 2a 29 7d 20 24 69 20 7b 7d 20 70 72 6f 70 0a 09 *)} $i {} prop..
06d0: 73 65 74 20 74 68 69 73 64 61 74 61 45 28 24 70 set thisdataE($p
06e0: 72 6f 70 29 20 24 64 61 74 61 45 28 24 69 29 0a rop) $dataE($i).
06f0: 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 63 70 }.}..proc cp
0700: 72 6f 6a 65 63 74 3a 3a 73 79 6e 63 66 72 6f 6d roject::syncfrom
0710: 55 49 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 UI {} {. vari
0720: 61 62 6c 65 20 74 68 69 73 64 61 74 61 43 0a 20 able thisdataC.
0730: 20 20 20 76 61 72 69 61 62 6c 65 20 64 61 74 61 variable data
0740: 43 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 C. variable t
0750: 68 69 73 64 61 74 61 4c 0a 20 20 20 20 76 61 72 hisdataL. var
0760: 69 61 62 6c 65 20 64 61 74 61 4c 0a 20 20 20 20 iable dataL.
0770: 76 61 72 69 61 62 6c 65 20 74 68 69 73 64 61 74 variable thisdat
0780: 61 53 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 aS. variable
0790: 64 61 74 61 53 0a 20 20 20 20 76 61 72 69 61 62 dataS. variab
07a0: 6c 65 20 74 68 69 73 64 61 74 61 45 0a 20 20 20 le thisdataE.
07b0: 20 76 61 72 69 61 62 6c 65 20 64 61 74 61 45 0a variable dataE.
07c0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 67 72 6f variable gro
07d0: 75 70 62 65 66 6f 72 65 0a 20 20 20 20 76 61 72 upbefore. var
07e0: 69 61 62 6c 65 20 64 65 62 75 67 72 65 6c 65 61 iable debugrelea
07f0: 73 65 62 65 66 6f 72 65 0a 0a 20 20 20 20 69 66 sebefore.. if
0800: 20 7b 20 24 64 65 62 75 67 72 65 6c 65 61 73 65 { $debugrelease
0810: 62 65 66 6f 72 65 20 3d 3d 20 22 22 20 7d 20 7b before == "" } {
0820: 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 66 return }.. f
0830: 6f 72 65 61 63 68 20 69 20 5b 61 72 72 61 79 20 oreach i [array
0840: 6e 61 6d 65 73 20 64 61 74 61 43 20 24 67 72 6f names dataC $gro
0850: 75 70 62 65 66 6f 72 65 2c 24 64 65 62 75 67 72 upbefore,$debugr
0860: 65 6c 65 61 73 65 62 65 66 6f 72 65 2c 2a 5d 20 eleasebefore,*]
0870: 7b 0a 09 72 65 67 65 78 70 20 7b 5e 5b 5e 2c 5d {..regexp {^[^,]
0880: 2b 2c 5b 5e 2c 5d 2b 2c 28 2e 2a 29 7d 20 24 69 +,[^,]+,(.*)} $i
0890: 20 7b 7d 20 70 72 6f 70 0a 0a 09 69 66 20 7b 20 {} prop...if {
08a0: 24 67 72 6f 75 70 62 65 66 6f 72 65 20 3d 3d 20 $groupbefore ==
08b0: 22 41 6c 6c 22 20 7c 7c 20 24 64 65 62 75 67 72 "All" || $debugr
08c0: 65 6c 65 61 73 65 62 65 66 6f 72 65 20 3d 3d 20 eleasebefore ==
08d0: 22 62 6f 74 68 22 20 7d 20 7b 0a 09 20 20 20 20 "both" } {..
08e0: 54 72 61 6e 73 66 65 72 44 61 74 61 54 6f 4c 6f TransferDataToLo
08f0: 77 65 72 47 72 6f 75 70 73 20 24 67 72 6f 75 70 werGroups $group
0900: 62 65 66 6f 72 65 20 24 64 65 62 75 67 72 65 6c before $debugrel
0910: 65 61 73 65 62 65 66 6f 72 65 20 24 70 72 6f 70 easebefore $prop
0920: 20 24 64 61 74 61 43 28 24 69 29 20 5c 0a 09 09 $dataC($i) \...
0930: 20 20 20 20 24 74 68 69 73 64 61 74 61 43 28 24 $thisdataC($
0940: 70 72 6f 70 29 20 64 61 74 61 43 0a 09 7d 0a 09 prop) dataC..}..
0950: 73 65 74 20 64 61 74 61 43 28 24 69 29 20 24 74 set dataC($i) $t
0960: 68 69 73 64 61 74 61 43 28 24 70 72 6f 70 29 0a hisdataC($prop).
0970: 20 20 20 20 7d 0a 20 20 20 20 66 6f 72 65 61 63 }. foreac
0980: 68 20 69 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 h i [array names
0990: 20 64 61 74 61 4c 20 24 64 65 62 75 67 72 65 6c dataL $debugrel
09a0: 65 61 73 65 62 65 66 6f 72 65 2c 2a 5d 20 7b 0a easebefore,*] {.
09b0: 09 72 65 67 65 78 70 20 7b 5e 5b 5e 2c 5d 2b 2c .regexp {^[^,]+,
09c0: 28 2e 2a 29 7d 20 24 69 20 7b 7d 20 70 72 6f 70 (.*)} $i {} prop
09d0: 0a 09 69 66 20 7b 20 24 64 65 62 75 67 72 65 6c ..if { $debugrel
09e0: 65 61 73 65 62 65 66 6f 72 65 20 3d 3d 20 22 62 easebefore == "b
09f0: 6f 74 68 22 20 7d 20 7b 0a 09 20 20 20 20 54 72 oth" } {.. Tr
0a00: 61 6e 73 66 65 72 44 61 74 61 54 6f 4c 6f 77 65 ansferDataToLowe
0a10: 72 47 72 6f 75 70 73 20 22 22 20 24 64 65 62 75 rGroups "" $debu
0a20: 67 72 65 6c 65 61 73 65 62 65 66 6f 72 65 20 24 greleasebefore $
0a30: 70 72 6f 70 20 24 64 61 74 61 4c 28 24 69 29 20 prop $dataL($i)
0a40: 24 74 68 69 73 64 61 74 61 4c 28 24 70 72 6f 70 $thisdataL($prop
0a50: 29 20 5c 0a 09 09 64 61 74 61 4c 0a 09 7d 0a 09 ) \...dataL..}..
0a60: 73 65 74 20 64 61 74 61 4c 28 24 69 29 20 24 74 set dataL($i) $t
0a70: 68 69 73 64 61 74 61 4c 28 24 70 72 6f 70 29 0a hisdataL($prop).
0a80: 20 20 20 20 7d 0a 20 20 20 20 66 6f 72 65 61 63 }. foreac
0a90: 68 20 69 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 h i [array names
0aa0: 20 64 61 74 61 53 20 24 64 65 62 75 67 72 65 6c dataS $debugrel
0ab0: 65 61 73 65 62 65 66 6f 72 65 2c 2a 5d 20 7b 0a easebefore,*] {.
0ac0: 09 72 65 67 65 78 70 20 7b 5e 5b 5e 2c 5d 2b 2c .regexp {^[^,]+,
0ad0: 28 2e 2a 29 7d 20 24 69 20 7b 7d 20 70 72 6f 70 (.*)} $i {} prop
0ae0: 0a 09 69 66 20 7b 20 21 5b 69 6e 66 6f 20 65 78 ..if { ![info ex
0af0: 69 73 74 73 20 74 68 69 73 64 61 74 61 53 28 24 ists thisdataS($
0b00: 70 72 6f 70 29 5d 20 7d 20 7b 20 63 6f 6e 74 69 prop)] } { conti
0b10: 6e 75 65 20 7d 0a 09 69 66 20 7b 20 24 64 65 62 nue }..if { $deb
0b20: 75 67 72 65 6c 65 61 73 65 62 65 66 6f 72 65 20 ugreleasebefore
0b30: 3d 3d 20 22 62 6f 74 68 22 20 7d 20 7b 0a 09 20 == "both" } {..
0b40: 20 20 20 54 72 61 6e 73 66 65 72 44 61 74 61 54 TransferDataT
0b50: 6f 4c 6f 77 65 72 47 72 6f 75 70 73 20 22 22 20 oLowerGroups ""
0b60: 24 64 65 62 75 67 72 65 6c 65 61 73 65 62 65 66 $debugreleasebef
0b70: 6f 72 65 20 24 70 72 6f 70 20 24 64 61 74 61 53 ore $prop $dataS
0b80: 28 24 69 29 20 24 74 68 69 73 64 61 74 61 53 28 ($i) $thisdataS(
0b90: 24 70 72 6f 70 29 20 5c 0a 09 09 64 61 74 61 53 $prop) \...dataS
0ba0: 0a 09 7d 0a 09 73 65 74 20 64 61 74 61 53 28 24 ..}..set dataS($
0bb0: 69 29 20 24 74 68 69 73 64 61 74 61 53 28 24 70 i) $thisdataS($p
0bc0: 72 6f 70 29 0a 20 20 20 20 7d 0a 20 20 20 20 66 rop). }. f
0bd0: 6f 72 65 61 63 68 20 69 20 5b 61 72 72 61 79 20 oreach i [array
0be0: 6e 61 6d 65 73 20 64 61 74 61 45 20 24 64 65 62 names dataE $deb
0bf0: 75 67 72 65 6c 65 61 73 65 62 65 66 6f 72 65 2c ugreleasebefore,
0c00: 2a 5d 20 7b 0a 09 72 65 67 65 78 70 20 7b 5e 5b *] {..regexp {^[
0c10: 5e 2c 5d 2b 2c 28 2e 2a 29 7d 20 24 69 20 7b 7d ^,]+,(.*)} $i {}
0c20: 20 70 72 6f 70 0a 09 69 66 20 7b 20 24 64 65 62 prop..if { $deb
0c30: 75 67 72 65 6c 65 61 73 65 62 65 66 6f 72 65 20 ugreleasebefore
0c40: 3d 3d 20 22 62 6f 74 68 22 20 7d 20 7b 0a 09 20 == "both" } {..
0c50: 20 20 20 54 72 61 6e 73 66 65 72 44 61 74 61 54 TransferDataT
0c60: 6f 4c 6f 77 65 72 47 72 6f 75 70 73 20 22 22 20 oLowerGroups ""
0c70: 24 64 65 62 75 67 72 65 6c 65 61 73 65 62 65 66 $debugreleasebef
0c80: 6f 72 65 20 24 70 72 6f 70 20 24 64 61 74 61 45 ore $prop $dataE
0c90: 28 24 69 29 20 24 74 68 69 73 64 61 74 61 45 28 ($i) $thisdataE(
0ca0: 24 70 72 6f 70 29 20 5c 0a 09 09 64 61 74 61 45 $prop) \...dataE
0cb0: 0a 09 7d 0a 09 73 65 74 20 64 61 74 61 45 28 24 ..}..set dataE($
0cc0: 69 29 20 24 74 68 69 73 64 61 74 61 45 28 24 70 i) $thisdataE($p
0cd0: 72 6f 70 29 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 rop). }.}..pr
0ce0: 6f 63 20 63 70 72 6f 6a 65 63 74 3a 3a 54 72 61 oc cproject::Tra
0cf0: 6e 73 66 65 72 44 61 74 61 54 6f 4c 6f 77 65 72 nsferDataToLower
0d00: 47 72 6f 75 70 73 20 7b 20 67 72 20 64 72 20 70 Groups { gr dr p
0d10: 72 6f 70 20 6f 6c 64 64 61 74 61 20 6e 65 77 64 rop olddata newd
0d20: 61 74 61 20 64 61 74 61 6e 61 6d 65 20 7d 20 7b ata dataname } {
0d30: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 61 . variable da
0d40: 74 61 43 0a 20 20 20 20 76 61 72 69 61 62 6c 65 taC. variable
0d50: 20 64 61 74 61 4c 0a 20 20 20 20 76 61 72 69 61 dataL. varia
0d60: 62 6c 65 20 64 61 74 61 53 0a 20 20 20 20 76 61 ble dataS. va
0d70: 72 69 61 62 6c 65 20 64 61 74 61 45 0a 0a 20 20 riable dataE..
0d80: 20 20 75 70 76 61 72 20 30 20 24 64 61 74 61 6e upvar 0 $datan
0d90: 61 6d 65 20 64 61 74 61 0a 0a 20 20 20 20 73 65 ame data.. se
0da0: 74 20 74 6f 61 64 64 20 22 22 0a 20 20 20 20 73 t toadd "". s
0db0: 65 74 20 74 6f 64 65 6c 20 22 22 0a 0a 20 20 20 et todel ""..
0dc0: 20 69 66 20 7b 20 21 5b 73 74 72 69 6e 67 20 6d if { ![string m
0dd0: 61 74 63 68 20 2a 64 69 72 73 20 24 70 72 6f 70 atch *dirs $prop
0de0: 5d 20 7d 20 7b 0a 09 73 65 74 20 6f 6c 64 64 61 ] } {..set oldda
0df0: 74 61 4c 20 5b 72 65 67 65 78 70 20 2d 69 6e 6c taL [regexp -inl
0e00: 69 6e 65 20 2d 61 6c 6c 20 7b 5b 5e 5c 73 3b 5d ine -all {[^\s;]
0e10: 2b 7d 20 24 6f 6c 64 64 61 74 61 5d 0a 09 73 65 +} $olddata]..se
0e20: 74 20 6e 65 77 64 61 74 61 4c 20 5b 72 65 67 65 t newdataL [rege
0e30: 78 70 20 2d 69 6e 6c 69 6e 65 20 2d 61 6c 6c 20 xp -inline -all
0e40: 7b 5b 5e 5c 73 3b 5d 2b 7d 20 24 6e 65 77 64 61 {[^\s;]+} $newda
0e50: 74 61 5d 0a 09 73 65 74 20 73 65 61 72 63 68 63 ta]..set searchc
0e60: 6d 64 20 6c 73 65 61 72 63 68 0a 20 20 20 20 7d md lsearch. }
0e70: 20 65 6c 73 65 20 7b 0a 09 73 65 74 20 6f 6c 64 else {..set old
0e80: 64 61 74 61 4c 20 24 6f 6c 64 64 61 74 61 0a 09 dataL $olddata..
0e90: 73 65 74 20 6e 65 77 64 61 74 61 4c 20 24 6e 65 set newdataL $ne
0ea0: 77 64 61 74 61 0a 09 73 65 74 20 73 65 61 72 63 wdata..set searc
0eb0: 68 63 6d 64 20 52 61 6d 44 65 62 75 67 67 65 72 hcmd RamDebugger
0ec0: 3a 3a 6c 73 65 61 72 63 68 66 69 6c 65 0a 20 20 ::lsearchfile.
0ed0: 20 20 7d 0a 0a 20 20 20 20 66 6f 72 65 61 63 68 }.. foreach
0ee0: 20 69 20 24 6e 65 77 64 61 74 61 4c 20 7b 0a 09 i $newdataL {..
0ef0: 69 66 20 7b 20 5b 24 73 65 61 72 63 68 63 6d 64 if { [$searchcmd
0f00: 20 24 6f 6c 64 64 61 74 61 4c 20 24 69 5d 20 3d $olddataL $i] =
0f10: 3d 20 2d 31 20 7d 20 7b 20 6c 61 70 70 65 6e 64 = -1 } { lappend
0f20: 20 74 6f 61 64 64 20 24 69 20 7d 0a 20 20 20 20 toadd $i }.
0f30: 7d 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 }. foreach i
0f40: 24 6f 6c 64 64 61 74 61 4c 20 7b 0a 09 69 66 20 $olddataL {..if
0f50: 7b 20 5b 24 73 65 61 72 63 68 63 6d 64 20 24 6e { [$searchcmd $n
0f60: 65 77 64 61 74 61 4c 20 24 69 5d 20 3d 3d 20 2d ewdataL $i] == -
0f70: 31 20 7d 20 7b 20 6c 61 70 70 65 6e 64 20 74 6f 1 } { lappend to
0f80: 64 65 6c 20 24 69 20 7d 0a 20 20 20 20 7d 0a 20 del $i }. }.
0f90: 20 20 20 66 6f 72 65 61 63 68 20 69 20 5b 61 72 foreach i [ar
0fa0: 72 61 79 20 6e 61 6d 65 73 20 64 61 74 61 20 2a ray names data *
0fb0: 2c 24 70 72 6f 70 5d 20 7b 0a 09 73 77 69 74 63 ,$prop] {..switc
0fc0: 68 20 24 64 61 74 61 6e 61 6d 65 20 7b 0a 09 20 h $dataname {..
0fd0: 20 20 20 64 61 74 61 43 20 7b 20 72 65 67 65 78 dataC { regex
0fe0: 70 20 7b 5e 28 5b 5e 2c 5d 2b 29 2c 28 5b 5e 2c p {^([^,]+),([^,
0ff0: 5d 2b 29 2c 28 2e 2a 29 7d 20 24 69 20 7b 7d 20 ]+),(.*)} $i {}
1000: 67 72 5f 69 6e 20 64 72 5f 69 6e 20 70 72 6f 70 gr_in dr_in prop
1010: 5f 69 6e 20 7d 0a 09 20 20 20 20 64 61 74 61 4c _in }.. dataL
1020: 20 2d 20 64 61 74 61 53 20 2d 20 64 61 74 61 45 - dataS - dataE
1030: 20 7b 0a 09 09 73 65 74 20 67 72 5f 69 6e 20 22 {...set gr_in "
1040: 22 0a 09 09 72 65 67 65 78 70 20 7b 5e 28 5b 5e "...regexp {^([^
1050: 2c 5d 2b 29 2c 28 2e 2a 29 7d 20 24 69 20 7b 7d ,]+),(.*)} $i {}
1060: 20 64 72 5f 69 6e 20 70 72 6f 70 5f 69 6e 0a 09 dr_in prop_in..
1070: 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 24 }..}..if { $
1080: 67 72 5f 69 6e 20 3d 3d 20 24 67 72 20 26 26 20 gr_in == $gr &&
1090: 24 64 72 5f 69 6e 20 3d 3d 20 24 64 72 20 7d 20 $dr_in == $dr }
10a0: 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 0a 09 69 { continue }...i
10b0: 66 20 7b 20 24 67 72 20 3d 3d 20 22 41 6c 6c 22 f { $gr == "All"
10c0: 20 26 26 20 24 64 72 20 3d 3d 20 22 62 6f 74 68 && $dr == "both
10d0: 22 20 7d 20 7b 0a 09 20 20 20 20 23 20 6e 6f 74 " } {.. # not
10e0: 68 69 6e 67 0a 09 7d 20 65 6c 73 65 69 66 20 7b hing..} elseif {
10f0: 20 24 67 72 20 3d 3d 20 22 41 6c 6c 22 20 7d 20 $gr == "All" }
1100: 7b 0a 09 20 20 20 20 69 66 20 7b 20 24 64 72 20 {.. if { $dr
1110: 21 3d 20 24 64 72 5f 69 6e 20 7d 20 7b 20 63 6f != $dr_in } { co
1120: 6e 74 69 6e 75 65 20 7d 0a 09 7d 20 65 6c 73 65 ntinue }..} else
1130: 69 66 20 7b 20 24 64 72 20 3d 3d 20 22 62 6f 74 if { $dr == "bot
1140: 68 22 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b h" } {.. if {
1150: 20 24 67 72 20 21 3d 20 24 67 72 5f 69 6e 20 7d $gr != $gr_in }
1160: 20 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 09 7d { continue }..}
1170: 20 65 6c 73 65 20 7b 20 63 6f 6e 74 69 6e 75 65 else { continue
1180: 20 7d 0a 0a 09 69 66 20 7b 20 24 64 61 74 61 6e }...if { $datan
1190: 61 6d 65 20 3d 3d 20 22 64 61 74 61 53 22 20 7d ame == "dataS" }
11a0: 20 7b 0a 09 20 20 20 20 72 65 67 73 75 62 20 2d {.. regsub -
11b0: 61 6c 6c 20 7b 28 3f 6e 29 5e 5c 73 2a 5c 23 2e all {(?n)^\s*\#.
11c0: 2a 24 7d 20 24 64 61 74 61 28 24 69 29 20 22 22 *$} $data($i) ""
11d0: 20 72 65 73 0a 09 20 20 20 20 69 66 20 7b 20 5b res.. if { [
11e0: 73 74 72 69 6e 67 20 74 72 69 6d 20 24 72 65 73 string trim $res
11f0: 5d 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 09 73 65 ] == "" } {...se
1200: 74 20 64 61 74 61 28 24 69 29 20 24 6e 65 77 64 t data($i) $newd
1210: 61 74 61 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 ata.. }..
1220: 63 6f 6e 74 69 6e 75 65 0a 09 7d 0a 0a 09 69 66 continue..}...if
1230: 20 7b 20 21 5b 73 74 72 69 6e 67 20 6d 61 74 63 { ![string matc
1240: 68 20 2a 64 69 72 73 20 24 70 72 6f 70 5d 20 7d h *dirs $prop] }
1250: 20 7b 0a 09 20 20 20 20 73 65 74 20 64 61 74 61 {.. set data
1260: 4c 6f 63 61 6c 20 5b 72 65 67 65 78 70 20 2d 69 Local [regexp -i
1270: 6e 6c 69 6e 65 20 2d 61 6c 6c 20 7b 5b 5e 5c 73 nline -all {[^\s
1280: 3b 5d 2b 7d 20 24 64 61 74 61 28 24 69 29 5d 0a ;]+} $data($i)].
1290: 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 73 .} else {.. s
12a0: 65 74 20 64 61 74 61 4c 6f 63 61 6c 20 24 64 61 et dataLocal $da
12b0: 74 61 28 24 69 29 0a 09 7d 0a 09 66 6f 72 65 61 ta($i)..}..forea
12c0: 63 68 20 6a 20 24 74 6f 61 64 64 20 7b 0a 09 20 ch j $toadd {..
12d0: 20 20 20 69 66 20 7b 20 5b 24 73 65 61 72 63 68 if { [$search
12e0: 63 6d 64 20 24 64 61 74 61 4c 6f 63 61 6c 20 24 cmd $dataLocal $
12f0: 6a 5d 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 09 69 j] == -1 } {...i
1300: 66 20 7b 20 21 5b 73 74 72 69 6e 67 20 6d 61 74 f { ![string mat
1310: 63 68 20 2a 64 69 72 73 20 24 70 72 6f 70 5d 20 ch *dirs $prop]
1320: 7d 20 7b 0a 09 09 20 20 20 20 61 70 70 65 6e 64 } {... append
1330: 20 64 61 74 61 28 24 69 29 20 22 20 24 6a 22 0a data($i) " $j".
1340: 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 ..} else {...
1350: 20 6c 61 70 70 65 6e 64 20 64 61 74 61 28 24 69 lappend data($i
1360: 29 20 24 6a 0a 09 09 7d 0a 09 20 20 20 20 7d 0a ) $j...}.. }.
1370: 09 7d 0a 09 66 6f 72 65 61 63 68 20 6a 20 24 74 .}..foreach j $t
1380: 6f 64 65 6c 20 7b 0a 09 20 20 20 20 69 66 20 7b odel {.. if {
1390: 20 5b 24 73 65 61 72 63 68 63 6d 64 20 24 64 61 [$searchcmd $da
13a0: 74 61 4c 6f 63 61 6c 20 24 6a 5d 20 21 3d 20 2d taLocal $j] != -
13b0: 31 20 7d 20 7b 0a 09 09 69 66 20 7b 20 21 5b 73 1 } {...if { ![s
13c0: 74 72 69 6e 67 20 6d 61 74 63 68 20 2a 64 69 72 tring match *dir
13d0: 73 20 24 70 72 6f 70 5d 20 7d 20 7b 0a 09 09 20 s $prop] } {...
13e0: 20 20 20 73 65 74 20 69 70 6f 73 20 5b 24 73 65 set ipos [$se
13f0: 61 72 63 68 63 6d 64 20 24 64 61 74 61 4c 6f 63 archcmd $dataLoc
1400: 61 6c 20 24 6a 5d 0a 09 09 20 20 20 20 73 65 74 al $j]... set
1410: 20 64 61 74 61 28 24 69 29 20 5b 6a 6f 69 6e 20 data($i) [join
1420: 5b 6c 72 65 70 6c 61 63 65 20 24 64 61 74 61 4c [lreplace $dataL
1430: 6f 63 61 6c 20 24 69 70 6f 73 20 24 69 70 6f 73 ocal $ipos $ipos
1440: 5d 5d 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 ]]...} else {...
1450: 20 20 20 20 73 65 74 20 69 70 6f 73 20 5b 24 73 set ipos [$s
1460: 65 61 72 63 68 63 6d 64 20 24 64 61 74 61 4c 6f earchcmd $dataLo
1470: 63 61 6c 20 24 6a 5d 0a 09 09 20 20 20 20 73 65 cal $j]... se
1480: 74 20 64 61 74 61 28 24 69 29 20 5b 6c 72 65 70 t data($i) [lrep
1490: 6c 61 63 65 20 24 64 61 74 61 28 24 69 29 20 24 lace $data($i) $
14a0: 69 70 6f 73 20 24 69 70 6f 73 5d 0a 09 09 7d 0a ipos $ipos]...}.
14b0: 09 20 20 20 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 . }..}..if {
14c0: 21 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 2a ![string match *
14d0: 64 69 72 73 20 24 70 72 6f 70 5d 20 7d 20 7b 0a dirs $prop] } {.
14e0: 09 20 20 20 20 73 65 74 20 64 61 74 61 28 24 69 . set data($i
14f0: 29 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 ) [string trim $
1500: 64 61 74 61 28 24 69 29 5d 0a 09 7d 0a 20 20 20 data($i)]..}.
1510: 20 7d 0a 7d 0a 0a 70 72 6f 63 20 63 70 72 6f 6a }.}..proc cproj
1520: 65 63 74 3a 3a 53 61 76 65 50 72 6f 6a 65 63 74 ect::SaveProject
1530: 43 20 7b 20 77 20 7d 20 7b 0a 20 20 20 20 76 61 C { w } {. va
1540: 72 69 61 62 6c 65 20 70 72 6f 6a 65 63 74 0a 20 riable project.
1550: 20 20 20 76 61 72 69 61 62 6c 65 20 67 72 6f 75 variable grou
1560: 70 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 67 p. variable g
1570: 72 6f 75 70 73 0a 20 20 20 20 76 61 72 69 61 62 roups. variab
1580: 6c 65 20 6c 69 6e 6b 73 0a 20 20 20 20 76 61 72 le links. var
1590: 69 61 62 6c 65 20 73 63 72 69 70 74 74 61 62 73 iable scripttabs
15a0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 65 . variable de
15b0: 62 75 67 72 65 6c 65 61 73 65 0a 20 20 20 20 76 bugrelease. v
15c0: 61 72 69 61 62 6c 65 20 66 69 6c 65 73 0a 20 20 ariable files.
15d0: 20 20 76 61 72 69 61 62 6c 65 20 74 68 69 73 64 variable thisd
15e0: 61 74 61 43 0a 20 20 20 20 76 61 72 69 61 62 6c ataC. variabl
15f0: 65 20 64 61 74 61 43 0a 20 20 20 20 76 61 72 69 e dataC. vari
1600: 61 62 6c 65 20 74 68 69 73 64 61 74 61 4c 0a 20 able thisdataL.
1610: 20 20 20 76 61 72 69 61 62 6c 65 20 64 61 74 61 variable data
1620: 4c 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 L. variable t
1630: 68 69 73 64 61 74 61 53 0a 20 20 20 20 76 61 72 hisdataS. var
1640: 69 61 62 6c 65 20 64 61 74 61 53 0a 20 20 20 20 iable dataS.
1650: 76 61 72 69 61 62 6c 65 20 74 68 69 73 64 61 74 variable thisdat
1660: 61 45 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 aE. variable
1670: 64 61 74 61 45 0a 0a 20 20 20 20 69 66 20 7b 20 dataE.. if {
1680: 24 70 72 6f 6a 65 63 74 20 3d 3d 20 22 22 20 7d $project == "" }
1690: 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 { return }..
16a0: 20 73 79 6e 63 66 72 6f 6d 55 49 0a 0a 20 20 20 syncfromUI..
16b0: 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 set err [catch
16c0: 7b 20 6f 70 65 6e 20 24 70 72 6f 6a 65 63 74 20 { open $project
16d0: 77 20 7d 20 66 6f 75 74 5d 0a 20 20 20 20 69 66 w } fout]. if
16e0: 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09 57 61 72 { $err } {..War
16f0: 6e 57 69 6e 20 22 43 6f 75 6c 64 20 6e 6f 74 20 nWin "Could not
1700: 6f 70 65 6e 20 66 69 6c 65 20 27 24 70 72 6f 6a open file '$proj
1710: 65 63 74 27 20 74 6f 20 73 61 76 65 20 28 24 66 ect' to save ($f
1720: 6f 75 74 29 22 20 24 77 0a 09 72 65 74 75 72 6e out)" $w..return
1730: 0a 20 20 20 20 7d 0a 20 20 20 20 66 6f 72 65 61 . }. forea
1740: 63 68 20 69 20 5b 6c 69 73 74 20 67 72 6f 75 70 ch i [list group
1750: 73 20 67 72 6f 75 70 20 6c 69 6e 6b 73 20 73 63 s group links sc
1760: 72 69 70 74 74 61 62 73 20 64 65 62 75 67 72 65 ripttabs debugre
1770: 6c 65 61 73 65 20 66 69 6c 65 73 20 74 68 69 73 lease files this
1780: 64 61 74 61 43 20 64 61 74 61 43 20 74 68 69 73 dataC dataC this
1790: 64 61 74 61 4c 20 5c 0a 09 20 20 20 20 64 61 74 dataL \.. dat
17a0: 61 4c 20 74 68 69 73 64 61 74 61 53 20 64 61 74 aL thisdataS dat
17b0: 61 53 20 74 68 69 73 64 61 74 61 45 20 64 61 74 aS thisdataE dat
17c0: 61 45 20 5d 20 7b 0a 09 69 66 20 7b 20 5b 61 72 aE ] {..if { [ar
17d0: 72 61 79 20 65 78 69 73 74 73 20 24 69 5d 20 7d ray exists $i] }
17e0: 20 7b 0a 09 20 20 20 20 70 75 74 73 20 24 66 6f {.. puts $fo
17f0: 75 74 20 5b 6c 69 73 74 20 61 72 72 61 79 20 73 ut [list array s
1800: 65 74 20 24 69 20 5b 61 72 72 61 79 20 67 65 74 et $i [array get
1810: 20 24 69 5d 5d 0a 09 7d 20 65 6c 73 65 20 7b 0a $i]]..} else {.
1820: 09 20 20 20 20 70 75 74 73 20 24 66 6f 75 74 20 . puts $fout
1830: 5b 6c 69 73 74 20 73 65 74 20 24 69 20 5b 73 65 [list set $i [se
1840: 74 20 24 69 5d 5d 0a 09 7d 0a 20 20 20 20 7d 0a t $i]]..}. }.
1850: 20 20 20 20 63 6c 6f 73 65 20 24 66 6f 75 74 0a close $fout.
1860: 0a 20 20 20 20 69 66 20 7b 20 5b 52 61 6d 44 65 . if { [RamDe
1870: 62 75 67 67 65 72 3a 3a 6c 73 65 61 72 63 68 66 bugger::lsearchf
1880: 69 6c 65 20 24 52 61 6d 44 65 62 75 67 67 65 72 ile $RamDebugger
1890: 3a 3a 6f 70 74 69 6f 6e 73 28 72 65 63 65 6e 74 ::options(recent
18a0: 70 72 6f 6a 65 63 74 73 29 20 24 70 72 6f 6a 65 projects) $proje
18b0: 63 74 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 73 ct] != -1 } {..s
18c0: 65 74 20 69 70 6f 73 20 5b 52 61 6d 44 65 62 75 et ipos [RamDebu
18d0: 67 67 65 72 3a 3a 6c 73 65 61 72 63 68 66 69 6c gger::lsearchfil
18e0: 65 20 24 52 61 6d 44 65 62 75 67 67 65 72 3a 3a e $RamDebugger::
18f0: 6f 70 74 69 6f 6e 73 28 72 65 63 65 6e 74 70 72 options(recentpr
1900: 6f 6a 65 63 74 73 29 20 24 70 72 6f 6a 65 63 74 ojects) $project
1910: 5d 0a 09 73 65 74 20 52 61 6d 44 65 62 75 67 67 ]..set RamDebugg
1920: 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 72 65 63 65 er::options(rece
1930: 6e 74 70 72 6f 6a 65 63 74 73 29 20 5b 6c 72 65 ntprojects) [lre
1940: 70 6c 61 63 65 20 24 52 61 6d 44 65 62 75 67 67 place $RamDebugg
1950: 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 72 65 63 65 er::options(rece
1960: 6e 74 70 72 6f 6a 65 63 74 73 29 20 5c 0a 09 20 ntprojects) \..
1970: 20 20 20 24 69 70 6f 73 20 24 69 70 6f 73 5d 0a $ipos $ipos].
1980: 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 52 61 }. set Ra
1990: 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f mDebugger::optio
19a0: 6e 73 28 72 65 63 65 6e 74 70 72 6f 6a 65 63 74 ns(recentproject
19b0: 73 29 20 5b 6c 69 6e 73 65 72 74 20 24 52 61 6d s) [linsert $Ram
19c0: 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e Debugger::option
19d0: 73 28 72 65 63 65 6e 74 70 72 6f 6a 65 63 74 73 s(recentprojects
19e0: 29 20 5c 0a 09 20 20 20 20 30 20 24 70 72 6f 6a ) \.. 0 $proj
19f0: 65 63 74 5d 0a 7d 0a 0a 0a 70 72 6f 63 20 63 70 ect].}...proc cp
1a00: 72 6f 6a 65 63 74 3a 3a 55 70 64 61 74 65 43 6f roject::UpdateCo
1a10: 6d 62 6f 56 61 6c 75 65 73 20 7b 20 63 6f 6d 62 mboValues { comb
1a20: 6f 20 76 61 72 6e 61 6d 65 20 7d 20 7b 0a 20 20 o varname } {.
1a30: 20 20 69 66 20 7b 20 21 5b 77 69 6e 66 6f 20 65 if { ![winfo e
1a40: 78 69 73 74 73 20 24 63 6f 6d 62 6f 5d 20 7d 20 xists $combo] }
1a50: 7b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 24 { return }. $
1a60: 63 6f 6d 62 6f 20 63 6f 6e 66 69 67 75 72 65 20 combo configure
1a70: 2d 76 61 6c 75 65 73 20 5b 73 65 74 20 24 76 61 -values [set $va
1a80: 72 6e 61 6d 65 5d 0a 7d 0a 0a 70 72 6f 63 20 63 rname].}..proc c
1a90: 70 72 6f 6a 65 63 74 3a 3a 4e 65 77 50 72 6f 6a project::NewProj
1aa0: 65 63 74 20 7b 20 77 20 7d 20 7b 0a 20 20 20 20 ect { w } {.
1ab0: 76 61 72 69 61 62 6c 65 20 70 72 6f 6a 65 63 74 variable project
1ac0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 67 72 . variable gr
1ad0: 6f 75 70 62 65 66 6f 72 65 0a 20 20 20 20 76 61 oupbefore. va
1ae0: 72 69 61 62 6c 65 20 67 72 6f 75 70 0a 20 20 20 riable group.
1af0: 20 76 61 72 69 61 62 6c 65 20 67 72 6f 75 70 73 variable groups
1b00: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 69 . variable li
1b10: 6e 6b 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 nks. variable
1b20: 20 73 63 72 69 70 74 74 61 62 73 0a 20 20 20 20 scripttabs.
1b30: 76 61 72 69 61 62 6c 65 20 64 65 62 75 67 72 65 variable debugre
1b40: 6c 65 61 73 65 0a 20 20 20 20 76 61 72 69 61 62 lease. variab
1b50: 6c 65 20 66 69 6c 65 73 0a 20 20 20 20 76 61 72 le files. var
1b60: 69 61 62 6c 65 20 74 68 69 73 64 61 74 61 43 0a iable thisdataC.
1b70: 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 61 74 variable dat
1b80: 61 43 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 aC. variable
1b90: 74 68 69 73 64 61 74 61 4c 0a 20 20 20 20 76 61 thisdataL. va
1ba0: 72 69 61 62 6c 65 20 64 61 74 61 4c 0a 20 20 20 riable dataL.
1bb0: 20 76 61 72 69 61 62 6c 65 20 74 68 69 73 64 61 variable thisda
1bc0: 74 61 45 0a 20 20 20 20 76 61 72 69 61 62 6c 65 taE. variable
1bd0: 20 64 61 74 61 45 0a 0a 0a 20 20 20 20 73 65 74 dataE... set
1be0: 20 74 79 70 65 73 20 7b 0a 09 7b 7b 50 72 6f 6a types {..{{Proj
1bf0: 65 63 74 20 66 69 6c 65 73 7d 20 20 20 20 20 20 ect files}
1c00: 7b 2e 70 72 6a 7d 20 20 20 7d 0a 09 7b 7b 41 6c {.prj} }..{{Al
1c10: 6c 20 46 69 6c 65 73 7d 20 20 20 20 20 20 20 20 l Files}
1c20: 2a 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 * }.
1c30: 20 7d 0a 20 20 20 20 73 65 74 20 64 69 72 20 24 }. set dir $
1c40: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 RamDebugger::opt
1c50: 69 6f 6e 73 28 64 65 66 61 75 6c 74 64 69 72 29 ions(defaultdir)
1c60: 0a 0a 20 20 20 20 73 65 74 20 66 69 6c 65 20 5b .. set file [
1c70: 74 6b 5f 67 65 74 53 61 76 65 46 69 6c 65 20 2d tk_getSaveFile -
1c80: 66 69 6c 65 74 79 70 65 73 20 24 74 79 70 65 73 filetypes $types
1c90: 20 2d 69 6e 69 74 69 61 6c 64 69 72 20 24 64 69 -initialdir $di
1ca0: 72 20 2d 70 61 72 65 6e 74 20 24 77 20 5c 0a 09 r -parent $w \..
1cb0: 2d 74 69 74 6c 65 20 22 4e 65 77 20 70 72 6f 6a -title "New proj
1cc0: 65 63 74 22 20 2d 64 65 66 61 75 6c 74 65 78 74 ect" -defaultext
1cd0: 65 6e 73 69 6f 6e 20 2e 70 72 6a 5d 0a 20 20 20 ension .prj].
1ce0: 20 69 66 20 7b 20 24 66 69 6c 65 20 3d 3d 20 22 if { $file == "
1cf0: 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 0a " } { return }..
1d00: 20 20 20 20 73 65 74 20 52 61 6d 44 65 62 75 67 set RamDebug
1d10: 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 64 65 66 ger::options(def
1d20: 61 75 6c 74 64 69 72 29 20 5b 66 69 6c 65 20 64 aultdir) [file d
1d30: 69 72 6e 61 6d 65 20 24 66 69 6c 65 5d 0a 0a 20 irname $file]..
1d40: 20 20 20 73 65 74 20 70 72 6f 6a 65 63 74 20 24 set project $
1d50: 66 69 6c 65 0a 20 20 20 20 73 65 74 20 64 65 62 file. set deb
1d60: 75 67 72 65 6c 65 61 73 65 62 65 66 6f 72 65 20 ugreleasebefore
1d70: 22 22 0a 20 20 20 20 73 65 74 20 67 72 6f 75 70 "". set group
1d80: 73 20 41 6c 6c 0a 20 20 20 20 73 65 74 20 6c 69 s All. set li
1d90: 6e 6b 73 20 4c 69 6e 6b 0a 20 20 20 20 73 65 74 nks Link. set
1da0: 20 73 63 72 69 70 74 74 61 62 73 20 53 63 72 69 scripttabs Scri
1db0: 70 74 0a 20 20 20 20 73 65 74 20 66 69 6c 65 73 pt. set files
1dc0: 20 22 22 0a 0a 20 20 20 20 4e 65 77 44 61 74 61 "".. NewData
1dd0: 0a 0a 20 20 20 20 73 65 74 20 64 65 62 75 67 72 .. set debugr
1de0: 65 6c 65 61 73 65 20 64 65 62 75 67 0a 20 20 20 elease debug.
1df0: 20 73 65 74 20 67 72 6f 75 70 20 41 6c 6c 0a 7d set group All.}
1e00: 0a 0a 70 72 6f 63 20 63 70 72 6f 6a 65 63 74 3a ..proc cproject:
1e10: 3a 4e 65 77 44 61 74 61 20 7b 7d 20 7b 0a 20 20 :NewData {} {.
1e20: 20 20 76 61 72 69 61 62 6c 65 20 70 72 6f 6a 65 variable proje
1e30: 63 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ct. variable
1e40: 74 68 69 73 64 61 74 61 43 0a 20 20 20 20 76 61 thisdataC. va
1e50: 72 69 61 62 6c 65 20 64 61 74 61 43 0a 20 20 20 riable dataC.
1e60: 20 76 61 72 69 61 62 6c 65 20 74 68 69 73 64 61 variable thisda
1e70: 74 61 4c 0a 20 20 20 20 76 61 72 69 61 62 6c 65 taL. variable
1e80: 20 64 61 74 61 4c 0a 20 20 20 20 76 61 72 69 61 dataL. varia
1e90: 62 6c 65 20 74 68 69 73 64 61 74 61 53 0a 20 20 ble thisdataS.
1ea0: 20 20 76 61 72 69 61 62 6c 65 20 64 61 74 61 53 variable dataS
1eb0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 68 . variable th
1ec0: 69 73 64 61 74 61 45 0a 20 20 20 20 76 61 72 69 isdataE. vari
1ed0: 61 62 6c 65 20 64 61 74 61 45 0a 20 20 20 20 76 able dataE. v
1ee0: 61 72 69 61 62 6c 65 20 67 72 6f 75 70 73 0a 20 ariable groups.
1ef0: 20 20 20 76 61 72 69 61 62 6c 65 20 6c 69 6e 6b variable link
1f00: 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 73 s. variable s
1f10: 63 72 69 70 74 74 61 62 73 0a 0a 20 20 20 20 66 cripttabs.. f
1f20: 6f 72 65 61 63 68 20 69 20 5b 6c 69 73 74 20 43 oreach i [list C
1f30: 20 4c 20 53 20 45 5d 20 7b 0a 09 63 61 74 63 68 L S E] {..catch
1f40: 20 7b 20 75 6e 73 65 74 20 64 61 74 61 24 69 20 { unset data$i
1f50: 7d 0a 09 63 61 74 63 68 20 7b 20 75 6e 73 65 74 }..catch { unset
1f60: 20 74 68 69 73 64 61 74 61 24 69 20 7d 0a 20 20 thisdata$i }.
1f70: 20 20 7d 0a 20 20 20 20 66 6f 72 65 61 63 68 20 }. foreach
1f80: 69 20 5b 6c 69 73 74 20 64 65 62 75 67 20 72 65 i [list debug re
1f90: 6c 65 61 73 65 20 62 6f 74 68 5d 20 7b 0a 09 66 lease both] {..f
1fa0: 6f 72 65 61 63 68 20 67 72 6f 75 70 20 24 67 72 oreach group $gr
1fb0: 6f 75 70 73 20 7b 0a 09 20 20 20 20 73 65 74 20 oups {.. set
1fc0: 64 61 74 61 43 28 24 67 72 6f 75 70 2c 24 69 2c dataC($group,$i,
1fd0: 69 6e 63 6c 75 64 65 64 69 72 73 29 20 2e 0a 09 includedirs) ...
1fe0: 20 20 20 20 73 65 74 20 64 61 74 61 43 28 24 67 set dataC($g
1ff0: 72 6f 75 70 2c 24 69 2c 64 65 66 69 6e 65 73 29 roup,$i,defines)
2000: 20 22 22 0a 09 20 20 20 20 73 65 74 20 64 61 74 "".. set dat
2010: 61 43 28 24 67 72 6f 75 70 2c 24 69 2c 63 6f 6d aC($group,$i,com
2020: 70 69 6c 65 72 29 20 22 67 63 63 22 0a 09 20 20 piler) "gcc"..
2030: 20 20 73 77 69 74 63 68 20 24 69 20 7b 0a 09 09 switch $i {...
2040: 64 65 62 75 67 20 7b 0a 09 09 20 20 20 20 73 65 debug {... se
2050: 74 20 64 61 74 61 43 28 24 67 72 6f 75 70 2c 24 t dataC($group,$
2060: 69 2c 66 6c 61 67 73 29 20 22 2d 63 20 2d 67 22 i,flags) "-c -g"
2070: 0a 09 09 7d 0a 09 09 72 65 6c 65 61 73 65 20 7b ...}...release {
2080: 0a 09 09 20 20 20 20 73 65 74 20 64 61 74 61 43 ... set dataC
2090: 28 24 67 72 6f 75 70 2c 24 69 2c 66 6c 61 67 73 ($group,$i,flags
20a0: 29 20 22 2d 63 20 2d 4f 33 22 0a 09 09 7d 0a 09 ) "-c -O3"...}..
20b0: 09 62 6f 74 68 20 7b 0a 09 09 20 20 20 20 73 65 .both {... se
20c0: 74 20 64 61 74 61 43 28 24 67 72 6f 75 70 2c 24 t dataC($group,$
20d0: 69 2c 66 6c 61 67 73 29 20 22 2d 63 22 0a 09 09 i,flags) "-c"...
20e0: 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 66 6f 72 }.. }..}..for
20f0: 65 61 63 68 20 6c 69 6e 6b 20 24 6c 69 6e 6b 73 each link $links
2100: 20 7b 0a 09 20 20 20 20 73 65 74 20 64 61 74 61 {.. set data
2110: 4c 28 24 69 2c 24 6c 69 6e 6b 2c 6c 69 62 72 61 L($i,$link,libra
2120: 72 69 65 73 64 69 72 73 29 20 2e 0a 09 20 20 20 riesdirs) ...
2130: 20 73 65 74 20 64 61 74 61 4c 28 24 69 2c 24 6c set dataL($i,$l
2140: 69 6e 6b 2c 6c 69 6e 6b 67 72 6f 75 70 73 29 20 ink,linkgroups)
2150: 41 6c 6c 0a 09 20 20 20 20 73 65 74 20 64 61 74 All.. set dat
2160: 61 4c 28 24 69 2c 24 6c 69 6e 6b 2c 6c 69 62 72 aL($i,$link,libr
2170: 61 72 69 65 73 29 20 22 6c 69 62 63 20 6c 69 62 aries) "libc lib
2180: 6d 22 0a 09 20 20 20 20 73 65 74 20 64 61 74 61 m".. set data
2190: 4c 28 24 69 2c 24 6c 69 6e 6b 2c 6c 69 6e 6b 65 L($i,$link,linke
21a0: 72 29 20 22 67 63 63 22 0a 09 20 20 20 20 73 65 r) "gcc".. se
21b0: 74 20 64 61 74 61 4c 28 24 69 2c 24 6c 69 6e 6b t dataL($i,$link
21c0: 2c 6c 69 6e 6b 66 6c 61 67 73 29 20 22 22 0a 09 ,linkflags) ""..
21d0: 20 20 20 20 73 65 74 20 64 61 74 61 4c 28 24 69 set dataL($i
21e0: 2c 24 6c 69 6e 6b 2c 6c 69 6e 6b 65 78 65 29 20 ,$link,linkexe)
21f0: 5b 66 69 6c 65 20 72 6f 6f 74 20 5b 66 69 6c 65 [file root [file
2200: 20 74 61 69 6c 20 24 70 72 6f 6a 65 63 74 5d 5d tail $project]]
2210: 0a 09 20 20 20 20 0a 09 20 20 20 20 69 66 20 7b .. .. if {
2220: 20 24 69 20 21 3d 20 22 62 6f 74 68 22 20 7d 20 $i != "both" }
2230: 7b 0a 09 09 73 65 74 20 64 61 74 61 45 28 24 69 {...set dataE($i
2240: 2c 65 78 65 63 64 69 72 29 20 5b 66 69 6c 65 20 ,execdir) [file
2250: 6a 6f 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 join [file dirna
2260: 6d 65 20 24 70 72 6f 6a 65 63 74 5d 20 5b 66 69 me $project] [fi
2270: 6c 65 20 72 6f 6f 74 20 24 70 72 6f 6a 65 63 74 le root $project
2280: 5d 5f 24 69 5d 0a 09 09 73 65 74 20 64 61 74 61 ]_$i]...set data
2290: 45 28 24 69 2c 65 78 65 29 20 5b 66 69 6c 65 20 E($i,exe) [file
22a0: 72 6f 6f 74 20 5b 66 69 6c 65 20 74 61 69 6c 20 root [file tail
22b0: 24 70 72 6f 6a 65 63 74 5d 5d 0a 09 20 20 20 20 $project]]..
22c0: 7d 20 65 6c 73 65 20 7b 0a 09 09 73 65 74 20 64 } else {...set d
22d0: 61 74 61 45 28 24 69 2c 65 78 65 63 64 69 72 29 ataE($i,execdir)
22e0: 20 22 22 0a 09 09 73 65 74 20 64 61 74 61 45 28 ""...set dataE(
22f0: 24 69 2c 65 78 65 29 20 22 22 0a 09 09 0a 09 20 $i,exe) "".....
2300: 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 64 61 }.. set da
2310: 74 61 45 28 24 69 2c 65 78 65 61 72 67 73 29 20 taE($i,exeargs)
2320: 22 22 0a 09 7d 0a 09 66 6f 72 65 61 63 68 20 73 ""..}..foreach s
2330: 63 72 69 70 74 74 61 62 20 24 73 63 72 69 70 74 cripttab $script
2340: 74 61 62 73 20 7b 0a 09 20 20 20 20 73 65 74 20 tabs {.. set
2350: 64 61 74 61 53 28 24 69 2c 24 73 63 72 69 70 74 dataS($i,$script
2360: 74 61 62 2c 73 63 72 69 70 74 29 20 68 65 6c 70 tab,script) help
2370: 0a 09 20 20 20 20 73 65 74 20 64 61 74 61 53 28 .. set dataS(
2380: 24 69 2c 24 73 63 72 69 70 74 74 61 62 2c 65 78 $i,$scripttab,ex
2390: 65 63 75 74 65 74 69 6d 65 29 20 22 4e 6f 20 61 ecutetime) "No a
23a0: 75 74 6f 6d 61 74 69 63 22 0a 09 7d 0a 20 20 20 utomatic"..}.
23b0: 20 7d 0a 7d 0a 0a 70 72 6f 63 20 63 70 72 6f 6a }.}..proc cproj
23c0: 65 63 74 3a 3a 4f 70 65 6e 50 72 6f 6a 65 63 74 ect::OpenProject
23d0: 20 7b 20 77 20 7b 20 61 73 6b 20 31 20 7d 20 7d { w { ask 1 } }
23e0: 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
23f0: 70 72 6f 6a 65 63 74 0a 20 20 20 20 76 61 72 69 project. vari
2400: 61 62 6c 65 20 67 72 6f 75 70 62 65 66 6f 72 65 able groupbefore
2410: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 67 72 . variable gr
2420: 6f 75 70 0a 20 20 20 20 76 61 72 69 61 62 6c 65 oup. variable
2430: 20 67 72 6f 75 70 73 0a 20 20 20 20 76 61 72 69 groups. vari
2440: 61 62 6c 65 20 6c 69 6e 6b 73 0a 20 20 20 20 76 able links. v
2450: 61 72 69 61 62 6c 65 20 73 63 72 69 70 74 74 61 ariable scriptta
2460: 62 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 bs. variable
2470: 64 65 62 75 67 72 65 6c 65 61 73 65 0a 20 20 20 debugrelease.
2480: 20 76 61 72 69 61 62 6c 65 20 66 69 6c 65 73 0a variable files.
2490: 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 61 74 variable dat
24a0: 61 43 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 aC. variable
24b0: 64 61 74 61 4c 0a 20 20 20 20 76 61 72 69 61 62 dataL. variab
24c0: 6c 65 20 64 61 74 61 45 0a 20 20 20 20 76 61 72 le dataE. var
24d0: 69 61 62 6c 65 20 64 65 62 75 67 72 65 6c 65 61 iable debugrelea
24e0: 73 65 62 65 66 6f 72 65 0a 0a 20 20 20 20 69 66 sebefore.. if
24f0: 20 7b 20 24 61 73 6b 20 7d 20 7b 0a 23 20 20 20 { $ask } {.#
2500: 20 20 20 20 20 20 20 73 65 74 20 72 65 74 20 5b set ret [
2510: 44 69 61 6c 6f 67 57 69 6e 3a 3a 6d 65 73 73 61 DialogWin::messa
2520: 67 65 42 6f 78 20 2d 64 65 66 61 75 6c 74 20 6f geBox -default o
2530: 6b 20 2d 69 63 6f 6e 20 77 61 72 6e 69 6e 67 20 k -icon warning
2540: 2d 6d 65 73 73 61 67 65 20 5c 0a 23 20 20 20 20 -message \.#
2550: 20 20 20 20 20 20 20 20 20 20 22 41 72 65 20 79 "Are y
2560: 6f 75 20 73 75 72 65 20 74 6f 20 64 69 73 63 61 ou sure to disca
2570: 72 64 20 61 6c 6c 20 70 72 6f 6a 65 63 74 20 64 rd all project d
2580: 61 74 61 3f 22 20 2d 70 61 72 65 6e 74 20 24 77 ata?" -parent $w
2590: 20 5c 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 \.#
25a0: 20 20 2d 74 69 74 6c 65 20 22 64 69 73 63 61 72 -title "discar
25b0: 64 20 64 61 74 61 22 20 2d 74 79 70 65 20 6f 6b d data" -type ok
25c0: 63 61 6e 63 65 6c 5d 0a 23 20 20 20 20 20 20 20 cancel].#
25d0: 20 20 20 69 66 20 7b 20 24 72 65 74 20 3d 3d 20 if { $ret ==
25e0: 22 63 61 6e 63 65 6c 22 20 7d 20 7b 20 72 65 74 "cancel" } { ret
25f0: 75 72 6e 20 7d 0a 0a 09 73 65 74 20 74 79 70 65 urn }...set type
2600: 73 20 7b 0a 09 20 20 20 20 7b 7b 50 72 6f 6a 65 s {.. {{Proje
2610: 63 74 20 66 69 6c 65 73 7d 20 20 20 20 20 20 7b ct files} {
2620: 2e 70 72 6a 7d 20 20 20 7d 0a 09 20 20 20 20 7b .prj} }.. {
2630: 7b 41 6c 6c 20 46 69 6c 65 73 7d 20 20 20 20 20 {All Files}
2640: 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 7d 0a * }.
2650: 09 7d 0a 09 0a 09 73 65 74 20 64 69 72 20 24 52 .}....set dir $R
2660: 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 amDebugger::opti
2670: 6f 6e 73 28 64 65 66 61 75 6c 74 64 69 72 29 0a ons(defaultdir).
2680: 09 0a 09 73 65 74 20 66 69 6c 65 20 5b 74 6b 5f ...set file [tk_
2690: 67 65 74 4f 70 65 6e 46 69 6c 65 20 2d 66 69 6c getOpenFile -fil
26a0: 65 74 79 70 65 73 20 24 74 79 70 65 73 20 2d 69 etypes $types -i
26b0: 6e 69 74 69 61 6c 64 69 72 20 24 64 69 72 20 2d nitialdir $dir -
26c0: 70 61 72 65 6e 74 20 24 77 20 5c 0a 09 20 20 20 parent $w \..
26d0: 20 2d 74 69 74 6c 65 20 22 4f 70 65 6e 20 65 78 -title "Open ex
26e0: 69 73 74 69 6e 67 20 70 72 6f 6a 65 63 74 22 20 isting project"
26f0: 2d 64 65 66 61 75 6c 74 65 78 74 65 6e 73 69 6f -defaultextensio
2700: 6e 20 2e 70 72 6a 5d 0a 09 69 66 20 7b 20 24 66 n .prj]..if { $f
2710: 69 6c 65 20 3d 3d 20 22 22 20 7d 20 7b 20 72 65 ile == "" } { re
2720: 74 75 72 6e 20 7d 0a 20 20 20 20 7d 20 65 6c 73 turn }. } els
2730: 65 20 7b 20 73 65 74 20 66 69 6c 65 20 24 70 72 e { set file $pr
2740: 6f 6a 65 63 74 20 7d 0a 0a 20 20 20 20 73 65 74 oject }.. set
2750: 20 70 72 6f 6a 65 63 74 20 24 66 69 6c 65 0a 0a project $file..
2760: 20 20 20 20 74 72 61 63 65 20 76 64 65 6c 65 74 trace vdelet
2770: 65 20 3a 3a 63 70 72 6f 6a 65 63 74 3a 3a 67 72 e ::cproject::gr
2780: 6f 75 70 20 77 20 22 63 70 72 6f 6a 65 63 74 3a oup w "cproject:
2790: 3a 53 65 74 47 72 6f 75 70 41 63 74 69 76 65 3b :SetGroupActive;
27a0: 23 22 0a 20 20 20 20 74 72 61 63 65 20 76 64 65 #". trace vde
27b0: 6c 65 74 65 20 3a 3a 63 70 72 6f 6a 65 63 74 3a lete ::cproject:
27c0: 3a 64 65 62 75 67 72 65 6c 65 61 73 65 20 77 20 :debugrelease w
27d0: 22 63 70 72 6f 6a 65 63 74 3a 3a 53 65 74 44 65 "cproject::SetDe
27e0: 62 75 67 52 65 6c 65 61 73 65 41 63 74 69 76 65 bugReleaseActive
27f0: 3b 23 22 0a 20 20 20 20 74 72 61 63 65 20 76 64 ;#". trace vd
2800: 65 6c 65 74 65 20 3a 3a 63 70 72 6f 6a 65 63 74 elete ::cproject
2810: 3a 3a 6c 69 6e 6b 73 20 77 20 22 55 70 64 61 74 ::links w "Updat
2820: 65 4c 69 6e 6b 74 61 62 73 20 3b 23 22 0a 20 20 eLinktabs ;#".
2830: 20 20 74 72 61 63 65 20 76 64 65 6c 65 74 65 20 trace vdelete
2840: 3a 3a 63 70 72 6f 6a 65 63 74 3a 3a 73 63 72 69 ::cproject::scri
2850: 70 74 74 61 62 73 20 77 20 22 55 70 64 61 74 65 pttabs w "Update
2860: 53 63 72 69 70 74 74 61 62 73 20 3b 23 22 0a 20 Scripttabs ;#".
2870: 20 20 20 0a 20 20 20 20 73 65 74 20 65 72 72 20 . set err
2880: 5b 63 61 74 63 68 20 7b 0a 09 69 66 20 7b 20 5b [catch {..if { [
2890: 69 6e 74 65 72 70 20 65 78 69 73 74 73 20 63 70 interp exists cp
28a0: 72 6f 6a 65 63 74 5f 74 6d 70 5d 20 7d 20 7b 20 roject_tmp] } {
28b0: 69 6e 74 65 72 70 20 64 65 6c 65 74 65 20 63 70 interp delete cp
28c0: 72 6f 6a 65 63 74 5f 74 6d 70 20 7d 0a 09 69 6e roject_tmp }..in
28d0: 74 65 72 70 20 63 72 65 61 74 65 20 63 70 72 6f terp create cpro
28e0: 6a 65 63 74 5f 74 6d 70 0a 09 63 70 72 6f 6a 65 ject_tmp..cproje
28f0: 63 74 5f 74 6d 70 20 65 76 61 6c 20 5b 6c 69 73 ct_tmp eval [lis
2900: 74 20 73 6f 75 72 63 65 20 24 66 69 6c 65 5d 0a t source $file].
2910: 09 73 65 74 20 67 72 6f 75 70 73 20 5b 63 70 72 .set groups [cpr
2920: 6f 6a 65 63 74 5f 74 6d 70 20 65 76 61 6c 20 73 oject_tmp eval s
2930: 65 74 20 67 72 6f 75 70 73 5d 0a 09 69 66 20 7b et groups]..if {
2940: 20 5b 63 61 74 63 68 20 7b 20 73 65 74 20 6c 69 [catch { set li
2950: 6e 6b 73 20 5b 63 70 72 6f 6a 65 63 74 5f 74 6d nks [cproject_tm
2960: 70 20 65 76 61 6c 20 73 65 74 20 6c 69 6e 6b 73 p eval set links
2970: 5d 20 7d 5d 7d 20 7b 0a 09 20 20 20 20 73 65 74 ] }]} {.. set
2980: 20 6c 69 6e 6b 73 20 4c 69 6e 6b 0a 09 7d 0a 09 links Link..}..
2990: 69 66 20 7b 20 5b 63 61 74 63 68 20 7b 20 73 65 if { [catch { se
29a0: 74 20 73 63 72 69 70 74 74 61 62 73 20 5b 63 70 t scripttabs [cp
29b0: 72 6f 6a 65 63 74 5f 74 6d 70 20 65 76 61 6c 20 roject_tmp eval
29c0: 73 65 74 20 73 63 72 69 70 74 74 61 62 73 5d 20 set scripttabs]
29d0: 7d 5d 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 73 }]} {.. set s
29e0: 63 72 69 70 74 74 61 62 73 20 53 63 72 69 70 74 cripttabs Script
29f0: 0a 09 7d 0a 09 69 6e 74 65 72 70 20 64 65 6c 65 ..}..interp dele
2a00: 74 65 20 63 70 72 6f 6a 65 63 74 5f 74 6d 70 0a te cproject_tmp.
2a10: 09 23 20 74 72 69 63 6b 20 62 65 63 61 75 73 65 .# trick because
2a20: 20 4e 65 77 44 61 74 61 20 6e 65 65 64 73 20 74 NewData needs t
2a30: 6f 20 68 61 76 65 20 67 72 6f 75 70 73 20 61 6e o have groups an
2a40: 64 20 6c 69 6e 6b 73 20 64 65 66 69 6e 65 64 0a d links defined.
2a50: 09 4e 65 77 44 61 74 61 0a 09 73 6f 75 72 63 65 .NewData..source
2a60: 20 24 66 69 6c 65 0a 20 20 20 20 7d 20 65 72 72 $file. } err
2a70: 73 74 72 69 6e 67 5d 0a 20 20 20 20 0a 20 20 20 string]. .
2a80: 20 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 0a 09 if { $err } {..
2a90: 57 61 72 6e 57 69 6e 20 22 45 72 72 6f 72 20 6f WarnWin "Error o
2aa0: 70 65 6e 69 6e 67 20 70 72 6f 6a 65 63 74 20 27 pening project '
2ab0: 24 66 69 6c 65 27 20 28 24 65 72 72 73 74 72 69 $file' ($errstri
2ac0: 6e 67 29 22 20 24 77 0a 09 72 65 74 75 72 6e 0a ng)" $w..return.
2ad0: 20 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b }. if { [
2ae0: 61 72 72 61 79 20 65 78 69 73 74 73 20 64 61 74 array exists dat
2af0: 61 5d 20 7d 20 7b 0a 09 23 20 75 70 67 72 61 64 a] } {..# upgrad
2b00: 65 20 6f 6c 64 20 76 65 72 73 69 6f 6e 73 0a 09 e old versions..
2b10: 73 65 74 20 6c 69 6e 6b 73 20 4c 69 6e 6b 0a 09 set links Link..
2b20: 66 6f 72 65 61 63 68 20 69 20 5b 61 72 72 61 79 foreach i [array
2b30: 20 6e 61 6d 65 73 20 64 61 74 61 5d 20 7b 0a 09 names data] {..
2b40: 20 20 20 20 69 66 20 7b 20 5b 72 65 67 65 78 70 if { [regexp
2b50: 20 7b 28 6c 69 62 72 61 72 69 65 73 64 69 72 73 {(librariesdirs
2b60: 7c 6c 69 62 72 61 72 69 65 73 7c 6c 69 6e 6b 66 |libraries|linkf
2b70: 6c 61 67 73 29 24 7d 20 24 69 5d 20 7d 20 7b 0a lags)$} $i] } {.
2b80: 09 09 72 65 67 65 78 70 20 7b 5e 28 5b 5e 2c 5d ..regexp {^([^,]
2b90: 2b 29 2c 28 2e 2a 29 7d 20 24 69 20 7b 7d 20 64 +),(.*)} $i {} d
2ba0: 72 20 72 20 0a 09 09 73 65 74 20 64 61 74 61 4c r r ...set dataL
2bb0: 28 24 64 72 2c 4c 69 6e 6b 2c 24 72 29 20 24 64 ($dr,Link,$r) $d
2bc0: 61 74 61 28 24 69 29 0a 09 20 20 20 20 7d 20 65 ata($i).. } e
2bd0: 6c 73 65 69 66 20 7b 20 5b 72 65 67 65 78 70 20 lseif { [regexp
2be0: 7b 28 65 78 65 63 64 69 72 7c 65 78 65 7c 65 78 {(execdir|exe|ex
2bf0: 65 61 72 67 73 29 24 7d 20 24 69 5d 20 7d 20 7b eargs)$} $i] } {
2c00: 0a 09 09 73 65 74 20 64 61 74 61 45 28 24 69 29 ...set dataE($i)
2c10: 20 24 64 61 74 61 28 24 69 29 0a 09 20 20 20 20 $data($i)..
2c20: 7d 20 65 6c 73 65 20 7b 20 73 65 74 20 64 61 74 } else { set dat
2c30: 61 43 28 24 69 29 20 24 64 61 74 61 28 24 69 29 aC($i) $data($i)
2c40: 20 7d 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }..}. }.
2c50: 23 20 74 6f 20 61 63 74 69 76 61 74 65 20 74 68 # to activate th
2c60: 65 20 74 72 61 63 65 0a 20 20 20 20 73 65 74 20 e trace. set
2c70: 67 72 6f 75 70 62 65 66 6f 72 65 20 22 22 0a 20 groupbefore "".
2c80: 20 20 20 73 65 74 20 64 65 62 75 67 72 65 6c 65 set debugrele
2c90: 61 73 65 62 65 66 6f 72 65 20 22 22 0a 0a 20 20 asebefore ""..
2ca0: 20 20 74 72 61 63 65 20 76 61 72 20 3a 3a 63 70 trace var ::cp
2cb0: 72 6f 6a 65 63 74 3a 3a 67 72 6f 75 70 20 77 20 roject::group w
2cc0: 22 63 70 72 6f 6a 65 63 74 3a 3a 53 65 74 47 72 "cproject::SetGr
2cd0: 6f 75 70 41 63 74 69 76 65 3b 23 22 0a 20 20 20 oupActive;#".
2ce0: 20 74 72 61 63 65 20 76 61 72 20 3a 3a 63 70 72 trace var ::cpr
2cf0: 6f 6a 65 63 74 3a 3a 64 65 62 75 67 72 65 6c 65 oject::debugrele
2d00: 61 73 65 20 77 20 22 63 70 72 6f 6a 65 63 74 3a ase w "cproject:
2d10: 3a 53 65 74 44 65 62 75 67 52 65 6c 65 61 73 65 :SetDebugRelease
2d20: 41 63 74 69 76 65 3b 23 22 0a 20 20 20 20 74 72 Active;#". tr
2d30: 61 63 65 20 76 61 72 20 3a 3a 63 70 72 6f 6a 65 ace var ::cproje
2d40: 63 74 3a 3a 6c 69 6e 6b 73 20 77 20 22 55 70 64 ct::links w "Upd
2d50: 61 74 65 4c 69 6e 6b 74 61 62 73 20 3b 23 22 0a ateLinktabs ;#".
2d60: 20 20 20 20 74 72 61 63 65 20 76 61 72 20 3a 3a trace var ::
2d70: 63 70 72 6f 6a 65 63 74 3a 3a 73 63 72 69 70 74 cproject::script
2d80: 74 61 62 73 20 77 20 22 55 70 64 61 74 65 53 63 tabs w "UpdateSc
2d90: 72 69 70 74 74 61 62 73 20 3b 23 22 0a 20 20 20 ripttabs ;#".
2da0: 0a 20 20 20 20 73 65 74 20 6c 69 6e 6b 73 20 24 . set links $
2db0: 6c 69 6e 6b 73 0a 20 20 20 20 73 65 74 20 73 63 links. set sc
2dc0: 72 69 70 74 74 61 62 73 20 24 73 63 72 69 70 74 ripttabs $script
2dd0: 74 61 62 73 0a 0a 20 20 20 20 73 65 74 20 67 72 tabs.. set gr
2de0: 6f 75 70 20 24 67 72 6f 75 70 0a 0a 20 20 20 20 oup $group..
2df0: 73 65 74 20 67 72 6f 75 70 62 65 66 6f 72 65 20 set groupbefore
2e00: 24 67 72 6f 75 70 0a 20 20 20 20 73 65 74 20 64 $group. set d
2e10: 65 62 75 67 72 65 6c 65 61 73 65 62 65 66 6f 72 ebugreleasebefor
2e20: 65 20 24 64 65 62 75 67 72 65 6c 65 61 73 65 0a e $debugrelease.
2e30: 0a 20 20 20 20 69 66 20 7b 20 5b 52 61 6d 44 65 . if { [RamDe
2e40: 62 75 67 67 65 72 3a 3a 6c 73 65 61 72 63 68 66 bugger::lsearchf
2e50: 69 6c 65 20 24 52 61 6d 44 65 62 75 67 67 65 72 ile $RamDebugger
2e60: 3a 3a 6f 70 74 69 6f 6e 73 28 72 65 63 65 6e 74 ::options(recent
2e70: 70 72 6f 6a 65 63 74 73 29 20 24 70 72 6f 6a 65 projects) $proje
2e80: 63 74 5d 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 73 ct] != -1 } {..s
2e90: 65 74 20 69 70 6f 73 20 5b 52 61 6d 44 65 62 75 et ipos [RamDebu
2ea0: 67 67 65 72 3a 3a 6c 73 65 61 72 63 68 66 69 6c gger::lsearchfil
2eb0: 65 20 24 52 61 6d 44 65 62 75 67 67 65 72 3a 3a e $RamDebugger::
2ec0: 6f 70 74 69 6f 6e 73 28 72 65 63 65 6e 74 70 72 options(recentpr
2ed0: 6f 6a 65 63 74 73 29 20 24 70 72 6f 6a 65 63 74 ojects) $project
2ee0: 5d 0a 09 73 65 74 20 52 61 6d 44 65 62 75 67 67 ]..set RamDebugg
2ef0: 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 72 65 63 65 er::options(rece
2f00: 6e 74 70 72 6f 6a 65 63 74 73 29 20 5b 6c 72 65 ntprojects) [lre
2f10: 70 6c 61 63 65 20 24 52 61 6d 44 65 62 75 67 67 place $RamDebugg
2f20: 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 72 65 63 65 er::options(rece
2f30: 6e 74 70 72 6f 6a 65 63 74 73 29 20 5c 0a 09 09 ntprojects) \...
2f40: 24 69 70 6f 73 20 24 69 70 6f 73 5d 0a 20 20 20 $ipos $ipos].
2f50: 20 7d 0a 20 20 20 20 73 65 74 20 52 61 6d 44 65 }. set RamDe
2f60: 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 bugger::options(
2f70: 72 65 63 65 6e 74 70 72 6f 6a 65 63 74 73 29 20 recentprojects)
2f80: 5b 6c 69 6e 73 65 72 74 20 24 52 61 6d 44 65 62 [linsert $RamDeb
2f90: 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 72 ugger::options(r
2fa0: 65 63 65 6e 74 70 72 6f 6a 65 63 74 73 29 20 5c ecentprojects) \
2fb0: 0a 09 20 20 20 20 30 20 24 70 72 6f 6a 65 63 74 .. 0 $project
2fc0: 5d 0a 7d 0a 0a 70 72 6f 63 20 63 70 72 6f 6a 65 ].}..proc cproje
2fd0: 63 74 3a 3a 53 61 76 65 50 72 6f 6a 65 63 74 20 ct::SaveProject
2fe0: 7b 20 77 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 { w } {. vari
2ff0: 61 62 6c 65 20 70 72 6f 6a 65 63 74 0a 20 20 20 able project.
3000: 20 73 65 74 20 74 79 70 65 73 20 7b 0a 09 7b 7b set types {..{{
3010: 50 72 6f 6a 65 63 74 20 66 69 6c 65 73 7d 20 20 Project files}
3020: 20 20 20 20 7b 2e 70 72 6a 7d 20 20 20 7d 0a 09 {.prj} }..
3030: 7b 7b 41 6c 6c 20 46 69 6c 65 73 7d 20 20 20 20 {{All Files}
3040: 20 20 20 20 2a 20 20 20 20 20 20 20 20 20 20 7d * }
3050: 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 64 . }. set d
3060: 69 72 20 24 52 61 6d 44 65 62 75 67 67 65 72 3a ir $RamDebugger:
3070: 3a 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74 :options(default
3080: 64 69 72 29 0a 0a 20 20 20 20 73 65 74 20 66 69 dir).. set fi
3090: 6c 65 20 5b 74 6b 5f 67 65 74 53 61 76 65 46 69 le [tk_getSaveFi
30a0: 6c 65 20 2d 66 69 6c 65 74 79 70 65 73 20 24 74 le -filetypes $t
30b0: 79 70 65 73 20 2d 69 6e 69 74 69 61 6c 64 69 72 ypes -initialdir
30c0: 20 24 64 69 72 20 2d 70 61 72 65 6e 74 20 24 77 $dir -parent $w
30d0: 20 5c 0a 09 2d 74 69 74 6c 65 20 22 53 61 76 65 \..-title "Save
30e0: 20 70 72 6f 6a 65 63 74 22 20 2d 64 65 66 61 75 project" -defau
30f0: 6c 74 65 78 74 65 6e 73 69 6f 6e 20 2e 70 72 6a ltextension .prj
3100: 5d 0a 20 20 20 20 69 66 20 7b 20 24 66 69 6c 65 ]. if { $file
3110: 20 3d 3d 20 22 22 20 7d 20 7b 20 72 65 74 75 72 == "" } { retur
3120: 6e 20 7d 0a 0a 20 20 20 20 23 73 65 74 20 52 61 n }.. #set Ra
3130: 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f mDebugger::optio
3140: 6e 73 28 64 65 66 61 75 6c 74 64 69 72 29 20 5b ns(defaultdir) [
3150: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 66 69 file dirname $fi
3160: 6c 65 5d 0a 20 20 20 20 0a 20 20 20 20 73 65 74 le]. . set
3170: 20 70 72 6f 6a 65 63 74 20 24 66 69 6c 65 0a 20 project $file.
3180: 20 20 20 53 61 76 65 50 72 6f 6a 65 63 74 43 20 SaveProjectC
3190: 24 77 0a 7d 0a 0a 70 72 6f 63 20 63 70 72 6f 6a $w.}..proc cproj
31a0: 65 63 74 3a 3a 53 65 74 47 72 6f 75 70 41 63 74 ect::SetGroupAct
31b0: 69 76 65 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 ive {} {. var
31c0: 69 61 62 6c 65 20 67 72 6f 75 70 62 65 66 6f 72 iable groupbefor
31d0: 65 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 67 e. variable g
31e0: 72 6f 75 70 0a 20 20 20 20 76 61 72 69 61 62 6c roup. variabl
31f0: 65 20 64 65 62 75 67 72 65 6c 65 61 73 65 0a 20 e debugrelease.
3200: 20 20 20 76 61 72 69 61 62 6c 65 20 74 68 69 73 variable this
3210: 64 61 74 61 0a 20 20 20 20 76 61 72 69 61 62 6c data. variabl
3220: 65 20 64 61 74 61 0a 0a 20 20 20 20 73 65 74 20 e data.. set
3230: 64 69 72 20 5b 49 73 50 72 6f 6a 65 63 74 4e 61 dir [IsProjectNa
3240: 6d 65 4f 6b 5d 0a 0a 20 20 20 20 73 79 6e 63 66 meOk].. syncf
3250: 72 6f 6d 55 49 0a 0a 20 20 20 20 73 65 74 20 67 romUI.. set g
3260: 72 6f 75 70 62 65 66 6f 72 65 20 24 67 72 6f 75 roupbefore $grou
3270: 70 0a 20 20 20 20 73 79 6e 63 74 6f 55 49 0a 7d p. synctoUI.}
3280: 0a 0a 70 72 6f 63 20 63 70 72 6f 6a 65 63 74 3a ..proc cproject:
3290: 3a 53 65 74 44 65 62 75 67 52 65 6c 65 61 73 65 :SetDebugRelease
32a0: 41 63 74 69 76 65 20 7b 7d 20 7b 0a 20 20 20 20 Active {} {.
32b0: 76 61 72 69 61 62 6c 65 20 64 65 62 75 67 72 65 variable debugre
32c0: 6c 65 61 73 65 62 65 66 6f 72 65 0a 20 20 20 20 leasebefore.
32d0: 76 61 72 69 61 62 6c 65 20 64 65 62 75 67 72 65 variable debugre
32e0: 6c 65 61 73 65 0a 20 20 20 20 76 61 72 69 61 62 lease. variab
32f0: 6c 65 20 74 68 69 73 64 61 74 61 0a 20 20 20 20 le thisdata.
3300: 76 61 72 69 61 62 6c 65 20 64 61 74 61 0a 0a 20 variable data..
3310: 20 20 20 73 65 74 20 64 69 72 20 5b 49 73 50 72 set dir [IsPr
3320: 6f 6a 65 63 74 4e 61 6d 65 4f 6b 5d 0a 20 20 20 ojectNameOk].
3330: 20 73 79 6e 63 66 72 6f 6d 55 49 0a 20 20 20 20 syncfromUI.
3340: 73 65 74 20 64 65 62 75 67 72 65 6c 65 61 73 65 set debugrelease
3350: 62 65 66 6f 72 65 20 24 64 65 62 75 67 72 65 6c before $debugrel
3360: 65 61 73 65 0a 20 20 20 20 73 79 6e 63 74 6f 55 ease. synctoU
3370: 49 0a 7d 0a 0a 70 72 6f 63 20 63 70 72 6f 6a 65 I.}..proc cproje
3380: 63 74 3a 3a 43 72 65 61 74 65 4d 6f 64 69 66 79 ct::CreateModify
3390: 47 72 6f 75 70 20 7b 20 77 20 77 68 61 74 20 7d Group { w what }
33a0: 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 {. variable
33b0: 67 72 6f 75 70 0a 20 20 20 20 76 61 72 69 61 62 group. variab
33c0: 6c 65 20 67 72 6f 75 70 73 0a 20 20 20 20 76 61 le groups. va
33d0: 72 69 61 62 6c 65 20 66 69 6c 65 73 0a 20 20 20 riable files.
33e0: 20 76 61 72 69 61 62 6c 65 20 64 61 74 61 43 0a variable dataC.
33f0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 67 72 6f variable gro
3400: 75 70 62 65 66 6f 72 65 0a 0a 20 20 20 20 73 65 upbefore.. se
3410: 74 20 64 69 72 20 5b 49 73 50 72 6f 6a 65 63 74 t dir [IsProject
3420: 4e 61 6d 65 4f 6b 5d 0a 20 20 20 20 73 79 6e 63 NameOk]. sync
3430: 66 72 6f 6d 55 49 0a 0a 20 20 20 20 69 66 20 7b fromUI.. if {
3440: 20 24 77 68 61 74 20 3d 3d 20 22 64 65 6c 65 74 $what == "delet
3450: 65 22 20 7d 20 7b 0a 09 69 66 20 7b 20 24 67 72 e" } {..if { $gr
3460: 6f 75 70 20 3d 3d 20 22 41 6c 6c 22 20 7d 20 7b oup == "All" } {
3470: 0a 09 20 20 20 20 57 61 72 6e 57 69 6e 20 22 47 .. WarnWin "G
3480: 72 6f 75 70 20 27 41 6c 6c 27 20 63 61 6e 6e 6f roup 'All' canno
3490: 74 20 62 65 20 64 65 6c 65 74 65 64 22 20 24 77 t be deleted" $w
34a0: 0a 09 20 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a .. return..}.
34b0: 09 73 65 74 20 72 65 74 20 5b 44 69 61 6c 6f 67 .set ret [Dialog
34c0: 57 69 6e 3a 3a 6d 65 73 73 61 67 65 42 6f 78 20 Win::messageBox
34d0: 2d 64 65 66 61 75 6c 74 20 6f 6b 20 2d 69 63 6f -default ok -ico
34e0: 6e 20 77 61 72 6e 69 6e 67 20 2d 6d 65 73 73 61 n warning -messa
34f0: 67 65 20 5c 0a 09 20 20 20 20 22 41 72 65 20 79 ge \.. "Are y
3500: 6f 75 20 73 75 72 65 20 74 6f 20 64 65 6c 65 74 ou sure to delet
3510: 65 20 67 72 6f 75 70 20 27 24 67 72 6f 75 70 27 e group '$group'
3520: 3f 22 20 2d 70 61 72 65 6e 74 20 24 77 20 5c 0a ?" -parent $w \.
3530: 09 20 20 20 20 2d 74 69 74 6c 65 20 22 64 65 6c . -title "del
3540: 65 74 65 20 67 72 6f 75 70 22 20 2d 74 79 70 65 ete group" -type
3550: 20 6f 6b 63 61 6e 63 65 6c 5d 0a 09 69 66 20 7b okcancel]..if {
3560: 20 24 72 65 74 20 3d 3d 20 22 63 61 6e 63 65 6c $ret == "cancel
3570: 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 09 " } { return }..
3580: 0a 09 66 6f 72 20 7b 20 73 65 74 20 69 20 30 20 ..for { set i 0
3590: 7d 20 7b 20 24 69 20 3c 20 5b 6c 6c 65 6e 67 74 } { $i < [llengt
35a0: 68 20 24 66 69 6c 65 73 5d 20 7d 20 7b 20 69 6e h $files] } { in
35b0: 63 72 20 69 20 7d 20 7b 0a 09 20 20 20 20 66 6f cr i } {.. fo
35c0: 72 65 61 63 68 20 22 66 69 6c 65 20 74 79 70 65 reach "file type
35d0: 20 67 72 6f 75 70 5f 69 6e 20 70 61 74 68 22 20 group_in path"
35e0: 5b 6c 69 6e 64 65 78 20 24 66 69 6c 65 73 20 24 [lindex $files $
35f0: 69 5d 20 62 72 65 61 6b 0a 09 20 20 20 20 69 66 i] break.. if
3600: 20 7b 20 24 67 72 6f 75 70 20 3d 3d 20 24 67 72 { $group == $gr
3610: 6f 75 70 5f 69 6e 20 7d 20 7b 0a 09 09 73 65 74 oup_in } {...set
3620: 20 66 69 6c 65 73 20 5b 6c 72 65 70 6c 61 63 65 files [lreplace
3630: 20 24 66 69 6c 65 73 20 24 69 20 24 69 20 5b 6c $files $i $i [l
3640: 69 73 74 20 24 66 69 6c 65 20 24 74 79 70 65 20 ist $file $type
3650: 41 6c 6c 20 24 70 61 74 68 5d 5d 0a 09 20 20 20 All $path]]..
3660: 20 7d 0a 09 7d 0a 09 73 65 74 20 69 70 6f 73 20 }..}..set ipos
3670: 5b 6c 73 65 61 72 63 68 20 24 67 72 6f 75 70 73 [lsearch $groups
3680: 20 24 67 72 6f 75 70 5d 0a 09 73 65 74 20 67 72 $group]..set gr
3690: 6f 75 70 73 20 5b 6c 72 65 70 6c 61 63 65 20 24 oups [lreplace $
36a0: 67 72 6f 75 70 73 20 24 69 70 6f 73 20 24 69 70 groups $ipos $ip
36b0: 6f 73 5d 0a 09 66 6f 72 65 61 63 68 20 69 20 5b os]..foreach i [
36c0: 61 72 72 61 79 20 6e 61 6d 65 73 20 64 61 74 61 array names data
36d0: 43 20 24 67 72 6f 75 70 2c 2a 5d 20 7b 0a 09 20 C $group,*] {..
36e0: 20 20 20 75 6e 73 65 74 20 64 61 74 61 43 28 24 unset dataC($
36f0: 69 29 0a 09 7d 0a 09 73 65 74 20 67 72 6f 75 70 i)..}..set group
3700: 62 65 66 6f 72 65 20 22 22 0a 09 73 65 74 20 67 before ""..set g
3710: 72 6f 75 70 20 41 6c 6c 0a 09 72 65 74 75 72 6e roup All..return
3720: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 43 6f 70 79 . }.. Copy
3730: 4e 61 6d 65 73 70 61 63 65 20 3a 3a 44 69 61 6c Namespace ::Dial
3740: 6f 67 57 69 6e 20 3a 3a 44 69 61 6c 6f 67 57 69 ogWin ::DialogWi
3750: 6e 43 52 0a 0a 20 20 20 20 73 77 69 74 63 68 20 nCR.. switch
3760: 24 77 68 61 74 20 7b 0a 09 63 72 65 61 74 65 20 $what {..create
3770: 7b 0a 09 20 20 20 20 73 65 74 20 74 69 74 6c 65 {.. set title
3780: 20 22 4e 65 77 20 67 72 6f 75 70 22 0a 09 20 20 "New group"..
3790: 20 20 73 65 74 20 6c 61 62 65 6c 20 22 45 6e 74 set label "Ent
37a0: 65 72 20 6e 65 77 20 67 72 6f 75 70 20 6e 61 6d er new group nam
37b0: 65 22 0a 09 7d 0a 09 72 65 6e 61 6d 65 20 7b 0a e"..}..rename {.
37c0: 09 20 20 20 20 73 65 74 20 74 69 74 6c 65 20 22 . set title "
37d0: 52 65 6e 61 6d 65 20 67 72 6f 75 70 22 0a 09 20 Rename group"..
37e0: 20 20 20 73 65 74 20 6c 61 62 65 6c 20 22 45 6e set label "En
37f0: 74 65 72 20 6e 65 77 20 6e 61 6d 65 20 66 6f 72 ter new name for
3800: 20 67 72 6f 75 70 20 27 24 67 72 6f 75 70 27 22 group '$group'"
3810: 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 73 ..}. }.. s
3820: 65 74 20 66 20 5b 44 69 61 6c 6f 67 57 69 6e 43 et f [DialogWinC
3830: 52 3a 3a 49 6e 69 74 20 24 77 20 24 74 69 74 6c R::Init $w $titl
3840: 65 20 73 65 70 61 72 61 74 6f 72 20 22 22 5d 0a e separator ""].
3850: 20 20 20 20 73 65 74 20 77 20 5b 77 69 6e 66 6f set w [winfo
3860: 20 74 6f 70 6c 65 76 65 6c 20 24 66 5d 0a 0a 20 toplevel $f]..
3870: 20 20 20 6c 61 62 65 6c 20 24 66 2e 6c 20 2d 74 label $f.l -t
3880: 65 78 74 20 24 6c 61 62 65 6c 20 2d 67 72 69 64 ext $label -grid
3890: 20 22 30 20 70 78 33 20 70 79 33 22 0a 20 20 20 "0 px3 py3".
38a0: 20 65 6e 74 72 79 20 24 66 2e 65 20 2d 74 65 78 entry $f.e -tex
38b0: 74 76 61 72 69 61 62 6c 65 20 44 69 61 6c 6f 67 tvariable Dialog
38c0: 57 69 6e 43 52 3a 3a 75 73 65 72 28 6e 61 6d 65 WinCR::user(name
38d0: 29 20 2d 67 72 69 64 20 22 30 20 70 78 31 30 20 ) -grid "0 px10
38e0: 70 79 33 22 20 2d 77 69 64 74 68 20 33 30 0a 0a py3" -width 30..
38f0: 20 20 20 20 73 65 74 20 44 69 61 6c 6f 67 57 69 set DialogWi
3900: 6e 43 52 3a 3a 75 73 65 72 28 6e 61 6d 65 29 20 nCR::user(name)
3910: 24 67 72 6f 75 70 0a 20 20 20 20 74 6b 54 61 62 $group. tkTab
3920: 54 6f 57 69 6e 64 6f 77 20 24 66 2e 65 0a 0a 20 ToWindow $f.e..
3930: 20 20 20 73 75 70 65 72 67 72 69 64 3a 3a 67 6f supergrid::go
3940: 20 24 66 0a 0a 20 20 20 20 62 69 6e 64 20 24 77 $f.. bind $w
3950: 20 3c 52 65 74 75 72 6e 3e 20 22 44 69 61 6c 6f <Return> "Dialo
3960: 67 57 69 6e 43 52 3a 3a 49 6e 76 6f 6b 65 4f 4b gWinCR::InvokeOK
3970: 22 0a 0a 20 20 20 20 73 65 74 20 61 63 74 69 6f ".. set actio
3980: 6e 20 5b 44 69 61 6c 6f 67 57 69 6e 43 52 3a 3a n [DialogWinCR::
3990: 43 72 65 61 74 65 57 69 6e 64 6f 77 5d 0a 20 20 CreateWindow].
39a0: 20 20 77 68 69 6c 65 20 31 20 7b 0a 09 73 77 69 while 1 {..swi
39b0: 74 63 68 20 24 61 63 74 69 6f 6e 20 7b 0a 09 20 tch $action {..
39c0: 20 20 20 30 20 7b 0a 09 09 44 69 61 6c 6f 67 57 0 {...DialogW
39d0: 69 6e 43 52 3a 3a 44 65 73 74 72 6f 79 57 69 6e inCR::DestroyWin
39e0: 64 6f 77 0a 09 09 6e 61 6d 65 73 70 61 63 65 20 dow...namespace
39f0: 64 65 6c 65 74 65 20 3a 3a 44 69 61 6c 6f 67 57 delete ::DialogW
3a00: 69 6e 43 52 0a 09 09 72 65 74 75 72 6e 0a 09 20 inCR...return..
3a10: 20 20 20 7d 0a 09 20 20 20 20 31 20 7b 0a 09 09 }.. 1 {...
3a20: 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 74 72 69 if { [string tri
3a30: 6d 20 24 44 69 61 6c 6f 67 57 69 6e 43 52 3a 3a m $DialogWinCR::
3a40: 75 73 65 72 28 6e 61 6d 65 29 5d 20 3d 3d 20 22 user(name)] == "
3a50: 22 20 7d 20 7b 0a 09 09 20 20 20 20 57 61 72 6e " } {... Warn
3a60: 57 69 6e 20 22 47 72 6f 75 70 20 6e 61 6d 65 20 Win "Group name
3a70: 63 61 6e 6e 6f 74 20 62 65 20 76 6f 69 64 22 20 cannot be void"
3a80: 24 77 0a 09 09 7d 20 65 6c 73 65 69 66 20 7b 20 $w...} elseif {
3a90: 5b 6c 73 65 61 72 63 68 20 24 67 72 6f 75 70 73 [lsearch $groups
3aa0: 20 24 44 69 61 6c 6f 67 57 69 6e 43 52 3a 3a 75 $DialogWinCR::u
3ab0: 73 65 72 28 6e 61 6d 65 29 5d 20 21 3d 20 2d 31 ser(name)] != -1
3ac0: 20 7d 20 7b 0a 09 09 20 20 20 20 57 61 72 6e 57 } {... WarnW
3ad0: 69 6e 20 22 47 72 6f 75 70 20 6e 61 6d 65 20 61 in "Group name a
3ae0: 6c 72 65 61 64 79 20 65 78 69 73 74 73 22 20 24 lready exists" $
3af0: 77 0a 09 09 7d 20 65 6c 73 65 69 66 20 7b 20 21 w...} elseif { !
3b00: 5b 73 74 72 69 6e 67 20 69 73 20 77 6f 72 64 63 [string is wordc
3b10: 68 61 72 20 24 44 69 61 6c 6f 67 57 69 6e 43 52 har $DialogWinCR
3b20: 3a 3a 75 73 65 72 28 6e 61 6d 65 29 5d 20 7d 20 ::user(name)] }
3b30: 7b 0a 09 09 20 20 20 20 57 61 72 6e 57 69 6e 20 {... WarnWin
3b40: 22 47 72 6f 75 70 20 6e 61 6d 65 20 69 73 20 6e "Group name is n
3b50: 6f 74 20 4f 4b 22 20 24 77 0a 09 09 7d 20 65 6c ot OK" $w...} el
3b60: 73 65 20 7b 0a 09 09 20 20 20 20 73 65 74 20 6e se {... set n
3b70: 65 77 6e 61 6d 65 20 24 44 69 61 6c 6f 67 57 69 ewname $DialogWi
3b80: 6e 43 52 3a 3a 75 73 65 72 28 6e 61 6d 65 29 0a nCR::user(name).
3b90: 09 09 20 20 20 20 44 69 61 6c 6f 67 57 69 6e 43 .. DialogWinC
3ba0: 52 3a 3a 44 65 73 74 72 6f 79 57 69 6e 64 6f 77 R::DestroyWindow
3bb0: 0a 09 09 20 20 20 20 6e 61 6d 65 73 70 61 63 65 ... namespace
3bc0: 20 64 65 6c 65 74 65 20 3a 3a 44 69 61 6c 6f 67 delete ::Dialog
3bd0: 57 69 6e 43 52 0a 09 09 20 20 20 20 62 72 65 61 WinCR... brea
3be0: 6b 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a k...}.. }..}.
3bf0: 09 73 65 74 20 61 63 74 69 6f 6e 20 5b 44 69 61 .set action [Dia
3c00: 6c 6f 67 57 69 6e 43 52 3a 3a 57 61 69 74 46 6f logWinCR::WaitFo
3c10: 72 57 69 6e 64 6f 77 5d 0a 20 20 20 20 7d 0a 0a rWindow]. }..
3c20: 20 20 20 20 69 66 20 7b 20 24 77 68 61 74 20 3d if { $what =
3c30: 3d 20 22 72 65 6e 61 6d 65 22 20 7d 20 7b 0a 09 = "rename" } {..
3c40: 66 6f 72 20 7b 20 73 65 74 20 69 20 30 20 7d 20 for { set i 0 }
3c50: 7b 20 24 69 20 3c 20 5b 6c 6c 65 6e 67 74 68 20 { $i < [llength
3c60: 24 66 69 6c 65 73 5d 20 7d 20 7b 20 69 6e 63 72 $files] } { incr
3c70: 20 69 20 7d 20 7b 0a 09 20 20 20 20 66 6f 72 65 i } {.. fore
3c80: 61 63 68 20 22 66 69 6c 65 20 74 79 70 65 20 67 ach "file type g
3c90: 72 6f 75 70 5f 69 6e 20 70 61 74 68 22 20 5b 6c roup_in path" [l
3ca0: 69 6e 64 65 78 20 24 66 69 6c 65 73 20 24 69 5d index $files $i]
3cb0: 20 62 72 65 61 6b 0a 09 20 20 20 20 69 66 20 7b break.. if {
3cc0: 20 24 67 72 6f 75 70 20 3d 3d 20 24 67 72 6f 75 $group == $grou
3cd0: 70 5f 69 6e 20 7d 20 7b 0a 09 09 73 65 74 20 66 p_in } {...set f
3ce0: 69 6c 65 73 20 5b 6c 72 65 70 6c 61 63 65 20 24 iles [lreplace $
3cf0: 66 69 6c 65 73 20 24 69 20 24 69 20 5b 6c 69 73 files $i $i [lis
3d00: 74 20 24 66 69 6c 65 20 24 74 79 70 65 20 24 6e t $file $type $n
3d10: 65 77 6e 61 6d 65 20 24 70 61 74 68 5d 5d 0a 09 ewname $path]]..
3d20: 20 20 20 20 7d 0a 09 7d 0a 09 73 65 74 20 69 70 }..}..set ip
3d30: 6f 73 20 5b 6c 73 65 61 72 63 68 20 24 67 72 6f os [lsearch $gro
3d40: 75 70 73 20 24 67 72 6f 75 70 5d 0a 09 73 65 74 ups $group]..set
3d50: 20 67 72 6f 75 70 73 20 5b 6c 72 65 70 6c 61 63 groups [lreplac
3d60: 65 20 24 67 72 6f 75 70 73 20 24 69 70 6f 73 20 e $groups $ipos
3d70: 24 69 70 6f 73 20 24 6e 65 77 6e 61 6d 65 5d 0a $ipos $newname].
3d80: 09 66 6f 72 65 61 63 68 20 69 20 5b 61 72 72 61 .foreach i [arra
3d90: 79 20 6e 61 6d 65 73 20 64 61 74 61 43 20 24 67 y names dataC $g
3da0: 72 6f 75 70 2c 2a 5d 20 7b 0a 09 20 20 20 20 72 roup,*] {.. r
3db0: 65 67 65 78 70 20 7b 2c 28 2e 2a 29 7d 20 24 69 egexp {,(.*)} $i
3dc0: 20 7b 7d 20 72 65 73 74 0a 09 20 20 20 20 73 65 {} rest.. se
3dd0: 74 20 64 61 74 61 43 28 24 6e 65 77 6e 61 6d 65 t dataC($newname
3de0: 2c 24 72 65 73 74 29 20 24 64 61 74 61 43 28 24 ,$rest) $dataC($
3df0: 69 29 0a 09 20 20 20 20 75 6e 73 65 74 20 64 61 i).. unset da
3e00: 74 61 43 28 24 69 29 0a 09 7d 0a 20 20 20 20 7d taC($i)..}. }
3e10: 20 65 6c 73 65 20 7b 0a 09 6c 61 70 70 65 6e 64 else {..lappend
3e20: 20 67 72 6f 75 70 73 20 24 6e 65 77 6e 61 6d 65 groups $newname
3e30: 0a 09 66 6f 72 65 61 63 68 20 69 20 5b 61 72 72 ..foreach i [arr
3e40: 61 79 20 6e 61 6d 65 73 20 64 61 74 61 43 20 41 ay names dataC A
3e50: 6c 6c 2c 2a 5d 20 7b 0a 09 20 20 20 20 72 65 67 ll,*] {.. reg
3e60: 65 78 70 20 7b 2c 28 2e 2a 29 7d 20 24 69 20 7b exp {,(.*)} $i {
3e70: 7d 20 72 65 73 74 0a 09 20 20 20 20 73 65 74 20 } rest.. set
3e80: 64 61 74 61 43 28 24 6e 65 77 6e 61 6d 65 2c 24 dataC($newname,$
3e90: 72 65 73 74 29 20 24 64 61 74 61 43 28 24 69 29 rest) $dataC($i)
3ea0: 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 ..}. }. se
3eb0: 74 20 67 72 6f 75 70 62 65 66 6f 72 65 20 22 22 t groupbefore ""
3ec0: 0a 20 20 20 20 73 65 74 20 67 72 6f 75 70 20 24 . set group $
3ed0: 6e 65 77 6e 61 6d 65 0a 0a 7d 0a 0a 70 72 6f 63 newname..}..proc
3ee0: 20 63 70 72 6f 6a 65 63 74 3a 3a 43 72 65 61 74 cproject::Creat
3ef0: 65 44 6f 20 7b 20 77 68 61 74 20 66 20 7d 20 7b eDo { what f } {
3f00: 0a 0a 20 20 20 20 73 65 74 20 77 20 5b 77 69 6e .. set w [win
3f10: 66 6f 20 74 6f 70 6c 65 76 65 6c 20 24 66 5d 0a fo toplevel $f].
3f20: 20 20 20 20 73 77 69 74 63 68 20 24 77 68 61 74 switch $what
3f30: 20 7b 0a 09 4f 6b 20 7b 0a 09 20 20 20 20 53 61 {..Ok {.. Sa
3f40: 76 65 50 72 6f 6a 65 63 74 43 20 24 77 0a 09 20 veProjectC $w..
3f50: 20 20 20 64 65 73 74 72 6f 79 20 24 77 0a 09 7d destroy $w..}
3f60: 0a 09 41 70 70 6c 79 20 7b 0a 09 20 20 20 20 53 ..Apply {.. S
3f70: 61 76 65 50 72 6f 6a 65 63 74 43 20 24 77 0a 09 aveProjectC $w..
3f80: 7d 0a 09 43 61 6e 63 65 6c 20 7b 20 64 65 73 74 }..Cancel { dest
3f90: 72 6f 79 20 24 77 20 7d 0a 20 20 20 20 7d 0a 7d roy $w }. }.}
3fa0: 0a 0a 70 72 6f 63 20 63 70 72 6f 6a 65 63 74 3a ..proc cproject:
3fb0: 3a 43 72 65 61 74 65 20 7b 20 70 61 72 20 7d 20 :Create { par }
3fc0: 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6e {. variable n
3fd0: 6f 74 65 62 6f 6f 6b 0a 0a 20 20 20 20 69 66 20 otebook.. if
3fe0: 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 { ![info exists
3ff0: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 RamDebugger::opt
4000: 69 6f 6e 73 28 72 65 63 65 6e 74 70 72 6f 6a 65 ions(recentproje
4010: 63 74 73 29 5d 20 7d 20 7b 0a 09 73 65 74 20 52 cts)] } {..set R
4020: 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 amDebugger::opti
4030: 6f 6e 73 28 72 65 63 65 6e 74 70 72 6f 6a 65 63 ons(recentprojec
4040: 74 73 29 20 22 22 0a 20 20 20 20 7d 0a 0a 20 20 ts) "". }..
4050: 20 20 73 65 74 20 63 6f 6d 6d 61 6e 64 73 20 5b set commands [
4060: 6c 69 73 74 20 22 63 70 72 6f 6a 65 63 74 3a 3a list "cproject::
4070: 43 72 65 61 74 65 44 6f 20 4f 6b 22 20 22 63 70 CreateDo Ok" "cp
4080: 72 6f 6a 65 63 74 3a 3a 43 72 65 61 74 65 44 6f roject::CreateDo
4090: 20 41 70 70 6c 79 22 20 5c 0a 09 09 20 20 20 20 Apply" \...
40a0: 20 20 22 63 70 72 6f 6a 65 63 74 3a 3a 43 72 65 "cproject::Cre
40b0: 61 74 65 44 6f 20 43 61 6e 63 65 6c 22 5d 0a 0a ateDo Cancel"]..
40c0: 20 20 20 20 73 65 74 20 66 20 5b 44 69 61 6c 6f set f [Dialo
40d0: 67 57 69 6e 54 6f 70 3a 3a 49 6e 69 74 20 24 70 gWinTop::Init $p
40e0: 61 72 20 22 43 2b 2b 20 63 6f 6d 70 69 6c 61 74 ar "C++ compilat
40f0: 69 6f 6e 20 70 72 6f 6a 65 63 74 22 20 73 65 70 ion project" sep
4100: 61 72 61 74 6f 72 20 24 63 6f 6d 6d 61 6e 64 73 arator $commands
4110: 20 5b 6c 69 73 74 20 41 70 70 6c 79 5d 5d 0a 20 [list Apply]].
4120: 20 20 20 73 65 74 20 77 20 5b 77 69 6e 66 6f 20 set w [winfo
4130: 74 6f 70 6c 65 76 65 6c 20 24 66 5d 0a 0a 20 20 toplevel $f]..
4140: 20 20 73 65 74 20 66 31 20 5b 66 72 61 6d 65 20 set f1 [frame
4150: 24 66 2e 66 31 20 2d 67 72 69 64 20 22 30 20 6e $f.f1 -grid "0 n
4160: 22 5d 0a 20 20 20 20 4c 61 62 65 6c 20 24 66 31 "]. Label $f1
4170: 2e 6c 31 20 2d 74 65 78 74 20 22 50 72 6f 6a 65 .l1 -text "Proje
4180: 63 74 3a 22 20 2d 67 72 69 64 20 30 20 2d 68 65 ct:" -grid 0 -he
4190: 6c 70 74 65 78 74 20 5c 0a 20 20 20 20 20 20 20 lptext \.
41a0: 22 41 20 70 72 6f 6a 65 63 74 20 69 6e 63 6c 75 "A project inclu
41b0: 64 65 73 20 61 6c 6c 20 74 68 65 20 63 6f 6d 70 des all the comp
41c0: 69 6c 61 74 69 6f 6e 20 69 6e 66 6f 72 6d 61 74 ilation informat
41d0: 69 6f 6e 2e 20 43 72 65 61 74 65 20 61 20 70 72 ion. Create a pr
41e0: 6f 6a 65 63 74 20 62 65 66 6f 72 65 20 65 6e 74 oject before ent
41f0: 65 72 69 6e 67 20 64 61 74 61 22 0a 20 20 20 20 ering data".
4200: 43 6f 6d 62 6f 42 6f 78 20 24 66 31 2e 63 62 31 ComboBox $f1.cb1
4210: 20 2d 74 65 78 74 76 61 72 69 61 62 6c 65 20 63 -textvariable c
4220: 70 72 6f 6a 65 63 74 3a 3a 70 72 6f 6a 65 63 74 project::project
4230: 20 2d 67 72 69 64 20 22 31 20 33 22 20 2d 77 69 -grid "1 3" -wi
4240: 64 74 68 20 31 30 30 20 2d 65 64 69 74 61 62 6c dth 100 -editabl
4250: 65 20 30 20 5c 0a 09 20 2d 76 61 6c 75 65 73 20 e 0 \.. -values
4260: 24 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 $RamDebugger::op
4270: 74 69 6f 6e 73 28 72 65 63 65 6e 74 70 72 6f 6a tions(recentproj
4280: 65 63 74 73 29 20 2d 6d 6f 64 69 66 79 63 6d 64 ects) -modifycmd
4290: 20 22 63 70 72 6f 6a 65 63 74 3a 3a 4f 70 65 6e "cproject::Open
42a0: 50 72 6f 6a 65 63 74 20 24 77 20 30 22 0a 0a 20 Project $w 0"..
42b0: 20 20 20 66 6f 63 75 73 20 24 66 31 2e 63 62 31 focus $f1.cb1
42c0: 0a 0a 20 20 20 20 73 65 74 20 62 62 6f 78 20 5b .. set bbox [
42d0: 42 75 74 74 6f 6e 42 6f 78 20 24 66 31 2e 62 62 ButtonBox $f1.bb
42e0: 6f 78 31 20 2d 73 70 61 63 69 6e 67 20 30 20 2d ox1 -spacing 0 -
42f0: 70 61 64 78 20 31 20 2d 70 61 64 79 20 31 20 2d padx 1 -pady 1 -
4300: 68 6f 6d 6f 67 65 6e 65 6f 75 73 20 31 20 2d 67 homogeneous 1 -g
4310: 72 69 64 20 22 34 20 6e 77 22 5d 0a 20 20 20 20 rid "4 nw"].
4320: 24 62 62 6f 78 20 61 64 64 20 2d 69 6d 61 67 65 $bbox add -image
4330: 20 66 69 6c 65 6e 65 77 31 36 20 5c 0a 09 20 2d filenew16 \.. -
4340: 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b 6e 65 highlightthickne
4350: 73 73 20 30 20 2d 74 61 6b 65 66 6f 63 75 73 20 ss 0 -takefocus
4360: 30 20 2d 72 65 6c 69 65 66 20 6c 69 6e 6b 20 2d 0 -relief link -
4370: 62 6f 72 64 65 72 77 69 64 74 68 20 31 20 2d 70 borderwidth 1 -p
4380: 61 64 78 20 31 20 2d 70 61 64 79 20 31 20 5c 0a adx 1 -pady 1 \.
4390: 09 20 2d 68 65 6c 70 74 65 78 74 20 5b 5f 20 22 . -helptext [_ "
43a0: 43 72 65 61 74 65 20 6e 65 77 20 70 72 6f 6a 65 Create new proje
43b0: 63 74 22 5d 20 5c 0a 09 20 2d 63 6f 6d 6d 61 6e ct"] \.. -comman
43c0: 64 20 22 63 70 72 6f 6a 65 63 74 3a 3a 4e 65 77 d "cproject::New
43d0: 50 72 6f 6a 65 63 74 20 24 77 22 0a 20 20 20 20 Project $w".
43e0: 24 62 62 6f 78 20 61 64 64 20 2d 69 6d 61 67 65 $bbox add -image
43f0: 20 66 69 6c 65 6f 70 65 6e 31 36 20 5c 0a 09 20 fileopen16 \..
4400: 2d 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b 6e -highlightthickn
4410: 65 73 73 20 30 20 2d 74 61 6b 65 66 6f 63 75 73 ess 0 -takefocus
4420: 20 30 20 2d 72 65 6c 69 65 66 20 6c 69 6e 6b 20 0 -relief link
4430: 2d 62 6f 72 64 65 72 77 69 64 74 68 20 31 20 2d -borderwidth 1 -
4440: 70 61 64 78 20 31 20 2d 70 61 64 79 20 31 20 5c padx 1 -pady 1 \
4450: 0a 09 20 2d 68 65 6c 70 74 65 78 74 20 5b 5f 20 .. -helptext [_
4460: 22 4f 70 65 6e 20 65 78 69 73 74 69 6e 67 20 70 "Open existing p
4470: 72 6f 6a 65 63 74 22 5d 20 5c 0a 09 20 2d 63 6f roject"] \.. -co
4480: 6d 6d 61 6e 64 20 22 63 70 72 6f 6a 65 63 74 3a mmand "cproject:
4490: 3a 4f 70 65 6e 50 72 6f 6a 65 63 74 20 24 77 22 :OpenProject $w"
44a0: 0a 20 20 20 20 24 62 62 6f 78 20 61 64 64 20 2d . $bbox add -
44b0: 69 6d 61 67 65 20 66 69 6c 65 73 61 76 65 31 36 image filesave16
44c0: 20 5c 0a 09 20 2d 68 69 67 68 6c 69 67 68 74 74 \.. -highlightt
44d0: 68 69 63 6b 6e 65 73 73 20 30 20 2d 74 61 6b 65 hickness 0 -take
44e0: 66 6f 63 75 73 20 30 20 2d 72 65 6c 69 65 66 20 focus 0 -relief
44f0: 6c 69 6e 6b 20 2d 62 6f 72 64 65 72 77 69 64 74 link -borderwidt
4500: 68 20 31 20 2d 70 61 64 78 20 31 20 2d 70 61 64 h 1 -padx 1 -pad
4510: 79 20 31 20 5c 0a 09 20 2d 68 65 6c 70 74 65 78 y 1 \.. -helptex
4520: 74 20 5b 5f 20 22 53 61 76 65 20 61 73 20 70 72 t [_ "Save as pr
4530: 6f 6a 65 63 74 22 5d 20 5c 0a 09 20 2d 63 6f 6d oject"] \.. -com
4540: 6d 61 6e 64 20 22 63 70 72 6f 6a 65 63 74 3a 3a mand "cproject::
4550: 53 61 76 65 50 72 6f 6a 65 63 74 20 24 77 22 0a SaveProject $w".
4560: 20 0a 20 20 20 20 4c 61 62 65 6c 20 24 66 31 2e . Label $f1.
4570: 6c 32 20 2d 74 65 78 74 20 22 47 72 6f 75 70 3a l2 -text "Group:
4580: 22 20 2d 67 72 69 64 20 22 30 20 70 79 33 22 20 " -grid "0 py3"
4590: 2d 68 65 6c 70 74 65 78 74 20 5c 0a 20 20 20 20 -helptext \.
45a0: 20 20 20 22 41 20 67 72 6f 75 70 20 69 73 20 61 "A group is a
45b0: 20 73 65 74 20 6f 66 20 66 69 6c 65 73 20 77 69 set of files wi
45c0: 74 68 20 63 6f 6d 6d 6f 6e 20 63 6f 6d 70 69 6c th common compil
45d0: 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 2e 20 54 ation options. T
45e0: 68 65 20 73 70 65 63 69 61 6c 20 67 72 6f 75 70 he special group
45f0: 20 27 61 6c 6c 27 5c 0a 09 61 6c 77 61 79 73 20 'all'\..always
4600: 65 78 69 73 74 73 20 61 6e 64 20 61 66 66 65 63 exists and affec
4610: 74 73 20 61 6c 6c 20 66 69 6c 65 73 22 0a 20 20 ts all files".
4620: 20 20 43 6f 6d 62 6f 42 6f 78 20 24 66 31 2e 63 ComboBox $f1.c
4630: 62 32 20 2d 74 65 78 74 76 61 72 69 61 62 6c 65 b2 -textvariable
4640: 20 63 70 72 6f 6a 65 63 74 3a 3a 67 72 6f 75 70 cproject::group
4650: 20 2d 67 72 69 64 20 31 20 2d 76 61 6c 75 65 73 -grid 1 -values
4660: 20 24 63 70 72 6f 6a 65 63 74 3a 3a 67 72 6f 75 $cproject::grou
4670: 70 73 20 5c 0a 20 20 20 20 20 20 20 2d 65 64 69 ps \. -edi
4680: 74 61 62 6c 65 20 30 0a 0a 20 20 20 20 74 72 61 table 0.. tra
4690: 63 65 20 76 61 72 20 63 70 72 6f 6a 65 63 74 3a ce var cproject:
46a0: 3a 67 72 6f 75 70 73 20 77 20 22 63 70 72 6f 6a :groups w "cproj
46b0: 65 63 74 3a 3a 55 70 64 61 74 65 43 6f 6d 62 6f ect::UpdateCombo
46c0: 56 61 6c 75 65 73 20 24 66 31 2e 63 62 32 20 63 Values $f1.cb2 c
46d0: 70 72 6f 6a 65 63 74 3a 3a 67 72 6f 75 70 73 20 project::groups
46e0: 3b 23 22 0a 0a 20 20 20 20 73 65 74 20 62 62 6f ;#".. set bbo
46f0: 78 20 5b 42 75 74 74 6f 6e 42 6f 78 20 24 66 31 x [ButtonBox $f1
4700: 2e 62 62 6f 78 32 20 2d 73 70 61 63 69 6e 67 20 .bbox2 -spacing
4710: 30 20 2d 70 61 64 78 20 31 20 2d 70 61 64 79 20 0 -padx 1 -pady
4720: 31 20 2d 68 6f 6d 6f 67 65 6e 65 6f 75 73 20 31 1 -homogeneous 1
4730: 20 2d 67 72 69 64 20 22 32 20 77 22 5d 0a 20 20 -grid "2 w"].
4740: 20 20 24 62 62 6f 78 20 61 64 64 20 2d 69 6d 61 $bbox add -ima
4750: 67 65 20 61 63 74 74 69 63 6b 31 36 20 5c 0a 09 ge acttick16 \..
4760: 20 2d 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b -highlightthick
4770: 6e 65 73 73 20 30 20 2d 74 61 6b 65 66 6f 63 75 ness 0 -takefocu
4780: 73 20 30 20 2d 72 65 6c 69 65 66 20 6c 69 6e 6b s 0 -relief link
4790: 20 2d 62 6f 72 64 65 72 77 69 64 74 68 20 31 20 -borderwidth 1
47a0: 2d 70 61 64 78 20 31 20 2d 70 61 64 79 20 31 20 -padx 1 -pady 1
47b0: 5c 0a 09 20 2d 68 65 6c 70 74 65 78 74 20 5b 5f \.. -helptext [_
47c0: 20 22 43 72 65 61 74 65 20 6e 65 77 20 67 72 6f "Create new gro
47d0: 75 70 22 5d 20 5c 0a 09 20 2d 63 6f 6d 6d 61 6e up"] \.. -comman
47e0: 64 20 22 63 70 72 6f 6a 65 63 74 3a 3a 43 72 65 d "cproject::Cre
47f0: 61 74 65 4d 6f 64 69 66 79 47 72 6f 75 70 20 24 ateModifyGroup $
4800: 77 20 63 72 65 61 74 65 22 0a 20 20 20 20 24 62 w create". $b
4810: 62 6f 78 20 61 64 64 20 2d 69 6d 61 67 65 20 65 box add -image e
4820: 64 69 74 31 36 20 5c 0a 09 20 2d 68 69 67 68 6c dit16 \.. -highl
4830: 69 67 68 74 74 68 69 63 6b 6e 65 73 73 20 30 20 ightthickness 0
4840: 2d 74 61 6b 65 66 6f 63 75 73 20 30 20 2d 72 65 -takefocus 0 -re
4850: 6c 69 65 66 20 6c 69 6e 6b 20 2d 62 6f 72 64 65 lief link -borde
4860: 72 77 69 64 74 68 20 31 20 2d 70 61 64 78 20 31 rwidth 1 -padx 1
4870: 20 2d 70 61 64 79 20 31 20 5c 0a 09 20 2d 68 65 -pady 1 \.. -he
4880: 6c 70 74 65 78 74 20 5b 5f 20 22 52 65 6e 61 6d lptext [_ "Renam
4890: 65 20 67 72 6f 75 70 22 5d 20 5c 0a 09 20 2d 63 e group"] \.. -c
48a0: 6f 6d 6d 61 6e 64 20 22 63 70 72 6f 6a 65 63 74 ommand "cproject
48b0: 3a 3a 43 72 65 61 74 65 4d 6f 64 69 66 79 47 72 ::CreateModifyGr
48c0: 6f 75 70 20 24 77 20 72 65 6e 61 6d 65 22 0a 20 oup $w rename".
48d0: 20 20 20 24 62 62 6f 78 20 61 64 64 20 2d 69 6d $bbox add -im
48e0: 61 67 65 20 61 63 74 63 72 6f 73 73 31 36 20 5c age actcross16 \
48f0: 0a 09 20 2d 68 69 67 68 6c 69 67 68 74 74 68 69 .. -highlightthi
4900: 63 6b 6e 65 73 73 20 30 20 2d 74 61 6b 65 66 6f ckness 0 -takefo
4910: 63 75 73 20 30 20 2d 72 65 6c 69 65 66 20 6c 69 cus 0 -relief li
4920: 6e 6b 20 2d 62 6f 72 64 65 72 77 69 64 74 68 20 nk -borderwidth
4930: 31 20 2d 70 61 64 78 20 31 20 2d 70 61 64 79 20 1 -padx 1 -pady
4940: 31 20 5c 0a 09 20 2d 68 65 6c 70 74 65 78 74 20 1 \.. -helptext
4950: 5b 5f 20 22 44 65 6c 65 74 65 20 67 72 6f 75 70 [_ "Delete group
4960: 22 5d 20 5c 0a 09 20 2d 63 6f 6d 6d 61 6e 64 20 "] \.. -command
4970: 22 63 70 72 6f 6a 65 63 74 3a 3a 43 72 65 61 74 "cproject::Creat
4980: 65 4d 6f 64 69 66 79 47 72 6f 75 70 20 24 77 20 eModifyGroup $w
4990: 64 65 6c 65 74 65 22 0a 0a 20 20 20 20 66 72 61 delete".. fra
49a0: 6d 65 20 24 66 31 2e 66 31 20 2d 67 72 69 64 20 me $f1.f1 -grid
49b0: 22 33 20 32 20 70 78 33 20 70 79 33 20 65 77 22 "3 2 px3 py3 ew"
49c0: 20 2d 62 64 20 32 20 2d 72 65 6c 69 65 66 20 72 -bd 2 -relief r
49d0: 61 69 73 65 64 0a 20 20 20 20 72 61 64 69 6f 62 aised. radiob
49e0: 75 74 74 6f 6e 20 24 66 31 2e 66 31 2e 72 31 20 utton $f1.f1.r1
49f0: 2d 74 65 78 74 20 44 65 62 75 67 20 2d 76 61 72 -text Debug -var
4a00: 69 61 62 6c 65 20 63 70 72 6f 6a 65 63 74 3a 3a iable cproject::
4a10: 64 65 62 75 67 72 65 6c 65 61 73 65 20 2d 76 61 debugrelease -va
4a20: 6c 75 65 20 64 65 62 75 67 20 5c 0a 09 20 20 20 lue debug \..
4a30: 20 2d 67 72 69 64 20 30 0a 20 20 20 20 72 61 64 -grid 0. rad
4a40: 69 6f 62 75 74 74 6f 6e 20 24 66 31 2e 66 31 2e iobutton $f1.f1.
4a50: 72 32 20 2d 74 65 78 74 20 52 65 6c 65 61 73 65 r2 -text Release
4a60: 20 2d 76 61 72 69 61 62 6c 65 20 63 70 72 6f 6a -variable cproj
4a70: 65 63 74 3a 3a 64 65 62 75 67 72 65 6c 65 61 73 ect::debugreleas
4a80: 65 20 2d 76 61 6c 75 65 20 72 65 6c 65 61 73 65 e -value release
4a90: 20 5c 0a 09 20 20 20 20 2d 67 72 69 64 20 22 31 \.. -grid "1
4aa0: 22 0a 20 20 20 20 72 61 64 69 6f 62 75 74 74 6f ". radiobutto
4ab0: 6e 20 24 66 31 2e 66 31 2e 72 33 20 2d 74 65 78 n $f1.f1.r3 -tex
4ac0: 74 20 42 6f 74 68 20 2d 76 61 72 69 61 62 6c 65 t Both -variable
4ad0: 20 63 70 72 6f 6a 65 63 74 3a 3a 64 65 62 75 67 cproject::debug
4ae0: 72 65 6c 65 61 73 65 20 2d 76 61 6c 75 65 20 62 release -value b
4af0: 6f 74 68 20 5c 0a 09 20 20 20 20 2d 67 72 69 64 oth \.. -grid
4b00: 20 22 32 22 0a 0a 20 20 20 20 73 65 74 20 70 77 "2".. set pw
4b10: 20 5b 70 61 6e 65 64 77 69 6e 64 6f 77 20 24 66 [panedwindow $f
4b20: 2e 70 77 20 2d 6f 72 69 65 6e 74 20 68 6f 72 69 .pw -orient hori
4b30: 7a 6f 6e 74 61 6c 20 2d 67 72 69 64 20 30 5d 0a zontal -grid 0].
4b40: 0a 20 20 20 20 66 6f 72 65 61 63 68 20 22 77 65 . foreach "we
4b50: 69 67 68 74 31 20 77 65 69 67 68 74 32 22 20 5b ight1 weight2" [
4b60: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 4d 61 6e RamDebugger::Man
4b70: 61 67 65 50 61 6e 65 73 20 24 70 77 20 68 20 22 agePanes $pw h "
4b80: 32 20 33 22 5d 20 62 72 65 61 6b 0a 0a 23 20 20 2 3"] break..#
4b90: 20 20 20 73 65 74 20 70 61 6e 65 31 20 5b 24 70 set pane1 [$p
4ba0: 77 20 61 64 64 20 2d 77 65 69 67 68 74 20 24 77 w add -weight $w
4bb0: 65 69 67 68 74 31 5d 0a 20 20 20 20 73 65 74 20 eight1]. set
4bc0: 70 61 6e 65 31 20 5b 66 72 61 6d 65 20 24 70 77 pane1 [frame $pw
4bd0: 2e 70 61 6e 65 31 5d 0a 20 20 20 20 24 70 77 20 .pane1]. $pw
4be0: 61 64 64 20 24 70 61 6e 65 31 20 2d 73 74 69 63 add $pane1 -stic
4bf0: 6b 79 20 6e 73 65 77 20 2d 77 69 64 74 68 20 24 ky nsew -width $
4c00: 77 65 69 67 68 74 31 0a 0a 20 20 20 20 73 65 74 weight1.. set
4c10: 20 73 77 20 5b 53 63 72 6f 6c 6c 65 64 57 69 6e sw [ScrolledWin
4c20: 64 6f 77 20 24 70 61 6e 65 31 2e 6c 66 20 2d 72 dow $pane1.lf -r
4c30: 65 6c 69 65 66 20 73 75 6e 6b 65 6e 20 2d 62 6f elief sunken -bo
4c40: 72 64 65 72 77 69 64 74 68 20 30 5d 0a 20 20 20 rderwidth 0].
4c50: 20 73 65 74 20 44 69 61 6c 6f 67 57 69 6e 54 6f set DialogWinTo
4c60: 70 3a 3a 75 73 65 72 28 24 77 2c 6c 69 73 74 29 p::user($w,list)
4c70: 20 5b 74 61 62 6c 65 6c 69 73 74 3a 3a 74 61 62 [tablelist::tab
4c80: 6c 65 6c 69 73 74 20 24 73 77 2e 6c 62 20 2d 77 lelist $sw.lb -w
4c90: 69 64 74 68 20 35 35 20 2d 68 65 69 67 68 74 20 idth 55 -height
4ca0: 32 30 5c 0a 09 20 20 20 20 2d 65 78 70 6f 72 74 20\.. -export
4cb0: 73 65 6c 65 63 74 69 6f 6e 20 30 20 5c 0a 09 20 selection 0 \..
4cc0: 20 20 20 2d 63 6f 6c 75 6d 6e 73 20 5b 6c 69 73 -columns [lis
4cd0: 74 20 5c 0a 09 20 20 20 20 31 34 20 46 69 6c 65 t \.. 14 File
4ce0: 20 20 20 6c 65 66 74 20 5c 0a 09 20 20 20 20 35 left \.. 5
4cf0: 20 20 54 79 70 65 20 63 65 6e 74 65 72 20 5c 0a Type center \.
4d00: 09 20 20 20 20 31 31 20 47 72 6f 75 70 20 72 69 . 11 Group ri
4d10: 67 68 74 20 5c 0a 09 20 20 20 20 31 35 20 50 61 ght \.. 15 Pa
4d20: 74 68 20 6c 65 66 74 20 5c 0a 09 20 20 20 20 5d th left \.. ]
4d30: 20 5c 0a 09 20 20 20 20 2d 6c 61 62 65 6c 63 6f \.. -labelco
4d40: 6d 6d 61 6e 64 20 74 61 62 6c 65 6c 69 73 74 3a mmand tablelist:
4d50: 3a 73 6f 72 74 42 79 43 6f 6c 75 6d 6e 20 5c 0a :sortByColumn \.
4d60: 09 20 20 20 20 2d 62 61 63 6b 67 72 6f 75 6e 64 . -background
4d70: 20 77 68 69 74 65 20 5c 0a 09 20 20 20 20 2d 73 white \.. -s
4d80: 65 6c 65 63 74 62 61 63 6b 67 72 6f 75 6e 64 20 electbackground
4d90: 6e 61 76 79 20 2d 73 65 6c 65 63 74 66 6f 72 65 navy -selectfore
4da0: 67 72 6f 75 6e 64 20 77 68 69 74 65 20 5c 0a 09 ground white \..
4db0: 20 20 20 20 2d 73 74 72 65 74 63 68 20 31 20 2d -stretch 1 -
4dc0: 73 65 6c 65 63 74 6d 6f 64 65 20 65 78 74 65 6e selectmode exten
4dd0: 64 65 64 20 5c 0a 09 20 20 20 20 2d 68 69 67 68 ded \.. -high
4de0: 6c 69 67 68 74 74 68 69 63 6b 6e 65 73 73 20 30 lightthickness 0
4df0: 20 5c 0a 09 20 20 20 20 2d 6c 69 73 74 76 61 72 \.. -listvar
4e00: 69 61 62 6c 65 20 63 70 72 6f 6a 65 63 74 3a 3a iable cproject::
4e10: 66 69 6c 65 73 5d 0a 20 20 20 20 0a 20 20 20 20 files]. .
4e20: 24 73 77 20 73 65 74 77 69 64 67 65 74 20 24 44 $sw setwidget $D
4e30: 69 61 6c 6f 67 57 69 6e 54 6f 70 3a 3a 75 73 65 ialogWinTop::use
4e40: 72 28 24 77 2c 6c 69 73 74 29 0a 0a 20 20 20 20 r($w,list)..
4e50: 62 69 6e 64 20 5b 24 73 77 2e 6c 62 20 62 6f 64 bind [$sw.lb bod
4e60: 79 70 61 74 68 5d 20 3c 31 3e 20 22 66 6f 63 75 ypath] <1> "focu
4e70: 73 20 24 73 77 2e 6c 62 22 0a 0a 20 20 20 20 73 s $sw.lb".. s
4e80: 65 74 20 62 62 6f 78 20 5b 42 75 74 74 6f 6e 42 et bbox [ButtonB
4e90: 6f 78 20 24 70 61 6e 65 31 2e 62 62 6f 78 31 20 ox $pane1.bbox1
4ea0: 2d 73 70 61 63 69 6e 67 20 30 20 2d 70 61 64 78 -spacing 0 -padx
4eb0: 20 31 20 2d 70 61 64 79 20 31 20 2d 68 6f 6d 6f 1 -pady 1 -homo
4ec0: 67 65 6e 65 6f 75 73 20 31 5d 0a 20 20 20 20 24 geneous 1]. $
4ed0: 62 62 6f 78 20 61 64 64 20 2d 69 6d 61 67 65 20 bbox add -image
4ee0: 66 69 6c 65 6f 70 65 6e 31 36 20 5c 0a 09 20 2d fileopen16 \.. -
4ef0: 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b 6e 65 highlightthickne
4f00: 73 73 20 30 20 2d 74 61 6b 65 66 6f 63 75 73 20 ss 0 -takefocus
4f10: 30 20 2d 72 65 6c 69 65 66 20 6c 69 6e 6b 20 2d 0 -relief link -
4f20: 62 6f 72 64 65 72 77 69 64 74 68 20 31 20 2d 70 borderwidth 1 -p
4f30: 61 64 78 20 31 20 2d 70 61 64 79 20 31 20 5c 0a adx 1 -pady 1 \.
4f40: 09 20 2d 68 65 6c 70 74 65 78 74 20 5b 5f 20 22 . -helptext [_ "
4f50: 41 64 64 20 66 69 6c 65 20 74 6f 20 70 72 6f 6a Add file to proj
4f60: 65 63 74 22 5d 20 5c 0a 09 20 2d 63 6f 6d 6d 61 ect"] \.. -comma
4f70: 6e 64 20 22 63 70 72 6f 6a 65 63 74 3a 3a 41 64 nd "cproject::Ad
4f80: 64 4d 6f 64 46 69 6c 65 73 20 24 73 77 2e 6c 62 dModFiles $sw.lb
4f90: 20 66 69 6c 65 22 0a 20 20 20 20 24 62 62 6f 78 file". $bbox
4fa0: 20 61 64 64 20 2d 69 6d 61 67 65 20 66 6f 6c 64 add -image fold
4fb0: 65 72 6f 70 65 6e 31 36 20 5c 0a 09 20 2d 68 69 eropen16 \.. -hi
4fc0: 67 68 6c 69 67 68 74 74 68 69 63 6b 6e 65 73 73 ghlightthickness
4fd0: 20 30 20 2d 74 61 6b 65 66 6f 63 75 73 20 30 20 0 -takefocus 0
4fe0: 2d 72 65 6c 69 65 66 20 6c 69 6e 6b 20 2d 62 6f -relief link -bo
4ff0: 72 64 65 72 77 69 64 74 68 20 31 20 2d 70 61 64 rderwidth 1 -pad
5000: 78 20 31 20 2d 70 61 64 79 20 31 20 5c 0a 09 20 x 1 -pady 1 \..
5010: 2d 68 65 6c 70 74 65 78 74 20 5b 5f 20 22 41 64 -helptext [_ "Ad
5020: 64 20 66 69 6c 65 73 20 66 72 6f 6d 20 64 69 72 d files from dir
5030: 65 63 74 6f 72 79 20 74 6f 20 70 72 6f 6a 65 63 ectory to projec
5040: 74 22 5d 20 5c 0a 09 20 2d 63 6f 6d 6d 61 6e 64 t"] \.. -command
5050: 20 22 63 70 72 6f 6a 65 63 74 3a 3a 41 64 64 4d "cproject::AddM
5060: 6f 64 46 69 6c 65 73 20 24 73 77 2e 6c 62 20 64 odFiles $sw.lb d
5070: 69 72 22 0a 20 20 20 20 24 62 62 6f 78 20 61 64 ir". $bbox ad
5080: 64 20 2d 69 6d 61 67 65 20 65 64 69 74 31 36 20 d -image edit16
5090: 5c 0a 09 20 2d 68 69 67 68 6c 69 67 68 74 74 68 \.. -highlightth
50a0: 69 63 6b 6e 65 73 73 20 30 20 2d 74 61 6b 65 66 ickness 0 -takef
50b0: 6f 63 75 73 20 30 20 2d 72 65 6c 69 65 66 20 6c ocus 0 -relief l
50c0: 69 6e 6b 20 2d 62 6f 72 64 65 72 77 69 64 74 68 ink -borderwidth
50d0: 20 31 20 2d 70 61 64 78 20 31 20 2d 70 61 64 79 1 -padx 1 -pady
50e0: 20 31 20 5c 0a 09 20 2d 68 65 6c 70 74 65 78 74 1 \.. -helptext
50f0: 20 5b 5f 20 22 41 73 73 69 67 6e 20 73 65 6c 65 [_ "Assign sele
5100: 63 74 65 64 20 66 69 6c 65 73 20 74 6f 20 61 63 cted files to ac
5110: 74 69 76 65 20 67 72 6f 75 70 22 5d 20 5c 0a 09 tive group"] \..
5120: 20 2d 63 6f 6d 6d 61 6e 64 20 22 63 70 72 6f 6a -command "cproj
5130: 65 63 74 3a 3a 41 64 64 4d 6f 64 46 69 6c 65 73 ect::AddModFiles
5140: 20 24 73 77 2e 6c 62 20 65 64 69 74 22 0a 20 20 $sw.lb edit".
5150: 20 20 24 62 62 6f 78 20 61 64 64 20 2d 69 6d 61 $bbox add -ima
5160: 67 65 20 61 63 74 63 72 6f 73 73 31 36 20 5c 0a ge actcross16 \.
5170: 09 20 2d 68 69 67 68 6c 69 67 68 74 74 68 69 63 . -highlightthic
5180: 6b 6e 65 73 73 20 30 20 2d 74 61 6b 65 66 6f 63 kness 0 -takefoc
5190: 75 73 20 30 20 2d 72 65 6c 69 65 66 20 6c 69 6e us 0 -relief lin
51a0: 6b 20 2d 62 6f 72 64 65 72 77 69 64 74 68 20 31 k -borderwidth 1
51b0: 20 2d 70 61 64 78 20 31 20 2d 70 61 64 79 20 31 -padx 1 -pady 1
51c0: 20 5c 0a 09 20 2d 68 65 6c 70 74 65 78 74 20 5b \.. -helptext [
51d0: 5f 20 22 44 65 6c 65 74 65 20 66 69 6c 65 73 20 _ "Delete files
51e0: 66 72 6f 6d 20 70 72 6f 6a 65 63 74 22 5d 20 5c from project"] \
51f0: 0a 09 20 2d 63 6f 6d 6d 61 6e 64 20 22 63 70 72 .. -command "cpr
5200: 6f 6a 65 63 74 3a 3a 41 64 64 4d 6f 64 46 69 6c oject::AddModFil
5210: 65 73 20 24 73 77 2e 6c 62 20 64 65 6c 65 74 65 es $sw.lb delete
5220: 22 0a 20 20 20 20 24 62 62 6f 78 20 61 64 64 20 ". $bbox add
5230: 2d 69 6d 61 67 65 20 61 63 74 74 69 63 6b 31 36 -image acttick16
5240: 20 5c 0a 09 20 2d 68 69 67 68 6c 69 67 68 74 74 \.. -highlightt
5250: 68 69 63 6b 6e 65 73 73 20 30 20 2d 74 61 6b 65 hickness 0 -take
5260: 66 6f 63 75 73 20 30 20 2d 72 65 6c 69 65 66 20 focus 0 -relief
5270: 6c 69 6e 6b 20 2d 62 6f 72 64 65 72 77 69 64 74 link -borderwidt
5280: 68 20 31 20 2d 70 61 64 78 20 31 20 2d 70 61 64 h 1 -padx 1 -pad
5290: 79 20 31 20 5c 0a 09 20 2d 68 65 6c 70 74 65 78 y 1 \.. -helptex
52a0: 74 20 5b 5f 20 22 56 69 65 77 20 66 69 6c 65 22 t [_ "View file"
52b0: 5d 20 5c 0a 09 20 2d 63 6f 6d 6d 61 6e 64 20 22 ] \.. -command "
52c0: 63 70 72 6f 6a 65 63 74 3a 3a 41 64 64 4d 6f 64 cproject::AddMod
52d0: 46 69 6c 65 73 20 24 73 77 2e 6c 62 20 76 69 65 Files $sw.lb vie
52e0: 77 22 0a 0a 20 20 20 20 67 72 69 64 20 24 73 77 w".. grid $sw
52f0: 20 2d 73 74 69 63 6b 79 20 6e 73 65 77 0a 20 20 -sticky nsew.
5300: 20 20 67 72 69 64 20 24 62 62 6f 78 20 2d 73 74 grid $bbox -st
5310: 69 63 6b 79 20 6e 77 20 2d 70 61 64 79 20 33 0a icky nw -pady 3.
5320: 20 20 20 20 67 72 69 64 20 63 6f 6c 75 6d 6e 63 grid columnc
5330: 6f 6e 66 69 67 75 72 65 20 24 70 61 6e 65 31 20 onfigure $pane1
5340: 30 20 2d 77 65 69 67 68 74 20 31 0a 20 20 20 20 0 -weight 1.
5350: 67 72 69 64 20 72 6f 77 63 6f 6e 66 69 67 75 72 grid rowconfigur
5360: 65 20 24 70 61 6e 65 31 20 30 20 2d 77 65 69 67 e $pane1 0 -weig
5370: 68 74 20 31 0a 0a 20 20 20 20 62 69 6e 64 20 5b ht 1.. bind [
5380: 24 44 69 61 6c 6f 67 57 69 6e 54 6f 70 3a 3a 75 $DialogWinTop::u
5390: 73 65 72 28 24 77 2c 6c 69 73 74 29 20 62 6f 64 ser($w,list) bod
53a0: 79 70 61 74 68 5d 20 3c 42 75 74 74 6f 6e 50 72 ypath] <ButtonPr
53b0: 65 73 73 2d 33 3e 20 5c 0a 09 5b 62 69 6e 64 20 ess-3> \..[bind
53c0: 54 61 62 6c 65 6c 69 73 74 42 6f 64 79 20 3c 42 TablelistBody <B
53d0: 75 74 74 6f 6e 50 72 65 73 73 2d 31 3e 5d 0a 0a uttonPress-1>]..
53e0: 20 20 20 20 62 69 6e 64 20 5b 24 44 69 61 6c 6f bind [$Dialo
53f0: 67 57 69 6e 54 6f 70 3a 3a 75 73 65 72 28 24 77 gWinTop::user($w
5400: 2c 6c 69 73 74 29 20 62 6f 64 79 70 61 74 68 5d ,list) bodypath]
5410: 20 3c 42 75 74 74 6f 6e 52 65 6c 65 61 73 65 2d <ButtonRelease-
5420: 33 3e 20 7b 0a 09 63 61 74 63 68 20 7b 20 64 65 3> {..catch { de
5430: 73 74 72 6f 79 20 25 57 2e 6d 65 6e 75 20 7d 0a stroy %W.menu }.
5440: 09 73 65 74 20 6d 65 6e 75 20 5b 6d 65 6e 75 20 .set menu [menu
5450: 25 57 2e 6d 65 6e 75 5d 0a 09 73 65 74 20 6c 62 %W.menu]..set lb
5460: 20 5b 77 69 6e 66 6f 20 70 61 72 65 6e 74 20 25 [winfo parent %
5470: 57 5d 0a 09 0a 09 24 6d 65 6e 75 20 61 64 64 20 W]....$menu add
5480: 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c 20 22 command -label "
5490: 41 73 73 69 67 6e 20 67 72 6f 75 70 22 20 2d 63 Assign group" -c
54a0: 6f 6d 6d 61 6e 64 20 22 63 70 72 6f 6a 65 63 74 ommand "cproject
54b0: 3a 3a 41 64 64 4d 6f 64 46 69 6c 65 73 20 24 6c ::AddModFiles $l
54c0: 62 20 65 64 69 74 22 0a 09 24 6d 65 6e 75 20 61 b edit"..$menu a
54d0: 64 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 dd command -labe
54e0: 6c 20 22 56 69 65 77 20 66 69 6c 65 22 20 2d 63 l "View file" -c
54f0: 6f 6d 6d 61 6e 64 20 22 63 70 72 6f 6a 65 63 74 ommand "cproject
5500: 3a 3a 41 64 64 4d 6f 64 46 69 6c 65 73 20 24 6c ::AddModFiles $l
5510: 62 20 76 69 65 77 22 0a 09 24 6d 65 6e 75 20 61 b view"..$menu a
5520: 64 64 20 73 65 70 61 72 61 74 6f 72 0a 09 24 6d dd separator..$m
5530: 65 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 enu add command
5540: 2d 6c 61 62 65 6c 20 22 44 65 6c 65 74 65 20 66 -label "Delete f
5550: 72 6f 6d 20 70 72 6f 6a 65 63 74 22 20 2d 63 6f rom project" -co
5560: 6d 6d 61 6e 64 20 22 63 70 72 6f 6a 65 63 74 3a mmand "cproject:
5570: 3a 41 64 64 4d 6f 64 46 69 6c 65 73 20 24 6c 62 :AddModFiles $lb
5580: 20 64 65 6c 65 74 65 22 0a 09 74 6b 5f 70 6f 70 delete"..tk_pop
5590: 75 70 20 24 6d 65 6e 75 20 25 58 20 25 59 0a 20 up $menu %X %Y.
55a0: 20 20 20 7d 0a 0a 20 20 20 20 23 73 65 74 20 70 }.. #set p
55b0: 61 6e 65 32 20 5b 24 70 77 20 61 64 64 20 2d 77 ane2 [$pw add -w
55c0: 65 69 67 68 74 20 24 77 65 69 67 68 74 32 5d 0a eight $weight2].
55d0: 20 20 20 20 73 65 74 20 70 61 6e 65 32 20 5b 66 set pane2 [f
55e0: 72 61 6d 65 20 24 70 77 2e 70 61 6e 65 32 5d 0a rame $pw.pane2].
55f0: 20 20 20 20 24 70 77 20 61 64 64 20 24 70 61 6e $pw add $pan
5600: 65 32 20 2d 73 74 69 63 6b 79 20 6e 73 65 77 20 e2 -sticky nsew
5610: 2d 77 69 64 74 68 20 24 77 65 69 67 68 74 32 0a -width $weight2.
5620: 0a 0a 20 20 20 20 73 65 74 20 6e 6f 74 65 62 6f .. set notebo
5630: 6f 6b 20 5b 4e 6f 74 65 42 6f 6f 6b 20 24 70 61 ok [NoteBook $pa
5640: 6e 65 32 2e 6e 62 20 2d 68 6f 6d 6f 67 65 6e 65 ne2.nb -homogene
5650: 6f 75 73 20 31 20 2d 62 64 20 31 20 2d 69 6e 74 ous 1 -bd 1 -int
5660: 65 72 6e 61 6c 62 6f 72 64 65 72 77 69 64 74 68 ernalborderwidth
5670: 20 33 20 20 5c 0a 09 2d 67 72 69 64 20 22 30 20 3 \..-grid "0
5680: 70 78 33 20 70 79 33 22 5d 0a 0a 20 20 20 20 73 px3 py3"].. s
5690: 65 74 20 66 32 31 20 5b 24 70 61 6e 65 32 2e 6e et f21 [$pane2.n
56a0: 62 20 69 6e 73 65 72 74 20 65 6e 64 20 63 6f 6d b insert end com
56b0: 70 69 6c 61 74 69 6f 6e 20 2d 74 65 78 74 20 22 pilation -text "
56c0: 43 6f 6d 70 69 6c 61 74 69 6f 6e 22 5d 0a 0a 20 Compilation"]..
56d0: 20 20 20 54 69 74 6c 65 46 72 61 6d 65 20 24 66 TitleFrame $f
56e0: 32 31 2e 66 31 20 2d 74 65 78 74 20 22 69 6e 63 21.f1 -text "inc
56f0: 6c 75 64 65 20 64 69 72 65 63 74 6f 72 69 65 73 lude directories
5700: 22 20 2d 67 72 69 64 20 30 0a 20 20 20 20 73 65 " -grid 0. se
5710: 74 20 66 31 32 31 20 5b 24 66 32 31 2e 66 31 20 t f121 [$f21.f1
5720: 67 65 74 66 72 61 6d 65 5d 0a 0a 20 20 20 20 73 getframe].. s
5730: 65 74 20 73 77 20 5b 53 63 72 6f 6c 6c 65 64 57 et sw [ScrolledW
5740: 69 6e 64 6f 77 20 24 66 31 32 31 2e 6c 66 20 2d indow $f121.lf -
5750: 72 65 6c 69 65 66 20 73 75 6e 6b 65 6e 20 2d 62 relief sunken -b
5760: 6f 72 64 65 72 77 69 64 74 68 20 30 5d 0a 20 20 orderwidth 0].
5770: 20 20 6c 69 73 74 62 6f 78 20 24 73 77 2e 6c 62 listbox $sw.lb
5780: 20 2d 6c 69 73 74 76 61 72 69 61 62 6c 65 20 63 -listvariable c
5790: 70 72 6f 6a 65 63 74 3a 3a 74 68 69 73 64 61 74 project::thisdat
57a0: 61 43 28 69 6e 63 6c 75 64 65 64 69 72 73 29 0a aC(includedirs).
57b0: 20 20 20 20 24 73 77 20 73 65 74 77 69 64 67 65 $sw setwidge
57c0: 74 20 24 73 77 2e 6c 62 0a 0a 20 20 20 20 73 65 t $sw.lb.. se
57d0: 74 20 62 62 6f 78 20 5b 42 75 74 74 6f 6e 42 6f t bbox [ButtonBo
57e0: 78 20 24 66 31 32 31 2e 62 62 6f 78 31 20 2d 73 x $f121.bbox1 -s
57f0: 70 61 63 69 6e 67 20 30 20 2d 70 61 64 78 20 31 pacing 0 -padx 1
5800: 20 2d 70 61 64 79 20 31 20 2d 68 6f 6d 6f 67 65 -pady 1 -homoge
5810: 6e 65 6f 75 73 20 31 5d 0a 20 20 20 20 24 62 62 neous 1]. $bb
5820: 6f 78 20 61 64 64 20 2d 69 6d 61 67 65 20 66 6f ox add -image fo
5830: 6c 64 65 72 6f 70 65 6e 31 36 20 5c 0a 09 20 2d lderopen16 \.. -
5840: 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b 6e 65 highlightthickne
5850: 73 73 20 30 20 2d 74 61 6b 65 66 6f 63 75 73 20 ss 0 -takefocus
5860: 30 20 2d 72 65 6c 69 65 66 20 6c 69 6e 6b 20 2d 0 -relief link -
5870: 62 6f 72 64 65 72 77 69 64 74 68 20 31 20 2d 70 borderwidth 1 -p
5880: 61 64 78 20 31 20 2d 70 61 64 79 20 31 20 5c 0a adx 1 -pady 1 \.
5890: 09 20 2d 68 65 6c 70 74 65 78 74 20 5b 5f 20 22 . -helptext [_ "
58a0: 41 64 64 20 69 6e 63 6c 75 64 65 20 64 69 72 65 Add include dire
58b0: 63 74 6f 72 79 22 5d 20 5c 0a 09 20 2d 63 6f 6d ctory"] \.. -com
58c0: 6d 61 6e 64 20 22 63 70 72 6f 6a 65 63 74 3a 3a mand "cproject::
58d0: 41 64 64 44 65 6c 44 69 72 65 63 74 6f 72 69 65 AddDelDirectorie
58e0: 73 20 24 73 77 2e 6c 62 20 61 64 64 22 0a 20 20 s $sw.lb add".
58f0: 20 20 24 62 62 6f 78 20 61 64 64 20 2d 69 6d 61 $bbox add -ima
5900: 67 65 20 61 63 74 63 72 6f 73 73 31 36 20 5c 0a ge actcross16 \.
5910: 09 20 2d 68 69 67 68 6c 69 67 68 74 74 68 69 63 . -highlightthic
5920: 6b 6e 65 73 73 20 30 20 2d 74 61 6b 65 66 6f 63 kness 0 -takefoc
5930: 75 73 20 30 20 2d 72 65 6c 69 65 66 20 6c 69 6e us 0 -relief lin
5940: 6b 20 2d 62 6f 72 64 65 72 77 69 64 74 68 20 31 k -borderwidth 1
5950: 20 2d 70 61 64 78 20 31 20 2d 70 61 64 79 20 31 -padx 1 -pady 1
5960: 20 5c 0a 09 20 2d 68 65 6c 70 74 65 78 74 20 5b \.. -helptext [
5970: 5f 20 22 44 65 6c 65 74 65 20 69 6e 63 6c 75 64 _ "Delete includ
5980: 65 20 64 69 72 65 63 74 6f 72 79 22 5d 20 5c 0a e directory"] \.
5990: 09 20 2d 63 6f 6d 6d 61 6e 64 20 22 63 70 72 6f . -command "cpro
59a0: 6a 65 63 74 3a 3a 41 64 64 44 65 6c 44 69 72 65 ject::AddDelDire
59b0: 63 74 6f 72 69 65 73 20 24 73 77 2e 6c 62 20 64 ctories $sw.lb d
59c0: 65 6c 65 74 65 22 0a 0a 20 20 20 20 67 72 69 64 elete".. grid
59d0: 20 24 66 31 32 31 2e 6c 66 20 2d 73 74 69 63 6b $f121.lf -stick
59e0: 79 20 6e 73 65 77 0a 20 20 20 20 67 72 69 64 20 y nsew. grid
59f0: 24 62 62 6f 78 20 2d 73 74 69 63 6b 79 20 6e 77 $bbox -sticky nw
5a00: 0a 20 20 20 20 67 72 69 64 20 72 6f 77 63 6f 6e . grid rowcon
5a10: 66 69 67 75 72 65 20 24 66 31 32 31 20 30 20 2d figure $f121 0 -
5a20: 77 65 69 67 68 74 20 31 0a 20 20 20 20 67 72 69 weight 1. gri
5a30: 64 20 63 6f 6c 75 6d 6e 63 6f 6e 66 69 67 75 72 d columnconfigur
5a40: 65 20 24 66 31 32 31 20 30 20 2d 77 65 69 67 68 e $f121 0 -weigh
5a50: 74 20 31 0a 20 20 20 20 0a 20 20 20 20 54 69 74 t 1. . Tit
5a60: 6c 65 46 72 61 6d 65 20 24 66 32 31 2e 66 31 35 leFrame $f21.f15
5a70: 20 2d 74 65 78 74 20 22 63 6f 6d 70 69 6c 65 72 -text "compiler
5a80: 22 20 2d 67 72 69 64 20 22 30 20 6e 22 0a 20 20 " -grid "0 n".
5a90: 20 20 73 65 74 20 66 31 32 31 35 20 5b 24 66 32 set f1215 [$f2
5aa0: 31 2e 66 31 35 20 67 65 74 66 72 61 6d 65 5d 0a 1.f15 getframe].
5ab0: 0a 20 20 20 20 73 65 74 20 76 61 6c 75 65 73 20 . set values
5ac0: 5b 6c 69 73 74 20 22 22 20 67 63 63 20 67 2b 2b [list "" gcc g++
5ad0: 5d 0a 20 20 20 20 43 6f 6d 62 6f 42 6f 78 20 24 ]. ComboBox $
5ae0: 66 31 32 31 35 2e 63 62 20 2d 74 65 78 74 76 61 f1215.cb -textva
5af0: 72 69 61 62 6c 65 20 63 70 72 6f 6a 65 63 74 3a riable cproject:
5b00: 3a 74 68 69 73 64 61 74 61 43 28 63 6f 6d 70 69 :thisdataC(compi
5b10: 6c 65 72 29 20 2d 76 61 6c 75 65 73 20 24 76 61 ler) -values $va
5b20: 6c 75 65 73 20 5c 0a 09 2d 67 72 69 64 20 22 30 lues \..-grid "0
5b30: 20 77 22 20 2d 77 69 64 74 68 20 31 30 0a 0a 20 w" -width 10..
5b40: 20 20 20 54 69 74 6c 65 46 72 61 6d 65 20 24 66 TitleFrame $f
5b50: 32 31 2e 66 32 20 2d 74 65 78 74 20 22 64 65 66 21.f2 -text "def
5b60: 69 6e 65 73 22 20 2d 67 72 69 64 20 22 30 20 6e ines" -grid "0 n
5b70: 22 0a 20 20 20 20 73 65 74 20 66 31 32 32 20 5b ". set f122 [
5b80: 24 66 32 31 2e 66 32 20 67 65 74 66 72 61 6d 65 $f21.f2 getframe
5b90: 5d 0a 0a 20 20 20 20 65 6e 74 72 79 20 24 66 31 ].. entry $f1
5ba0: 32 32 2e 65 20 2d 67 72 69 64 20 30 20 2d 74 65 22.e -grid 0 -te
5bb0: 78 74 76 61 72 69 61 62 6c 65 20 63 70 72 6f 6a xtvariable cproj
5bc0: 65 63 74 3a 3a 74 68 69 73 64 61 74 61 43 28 64 ect::thisdataC(d
5bd0: 65 66 69 6e 65 73 29 0a 0a 20 20 20 20 54 69 74 efines).. Tit
5be0: 6c 65 46 72 61 6d 65 20 24 66 32 31 2e 66 33 20 leFrame $f21.f3
5bf0: 2d 74 65 78 74 20 22 61 64 64 69 74 69 6f 6e 61 -text "additiona
5c00: 6c 20 63 6f 6d 70 69 6c 65 20 66 6c 61 67 73 22 l compile flags"
5c10: 20 2d 67 72 69 64 20 22 30 20 6e 22 0a 20 20 20 -grid "0 n".
5c20: 20 73 65 74 20 66 31 32 33 20 5b 24 66 32 31 2e set f123 [$f21.
5c30: 66 33 20 67 65 74 66 72 61 6d 65 5d 0a 0a 20 20 f3 getframe]..
5c40: 20 20 65 6e 74 72 79 20 24 66 31 32 33 2e 65 20 entry $f123.e
5c50: 2d 67 72 69 64 20 30 20 2d 74 65 78 74 76 61 72 -grid 0 -textvar
5c60: 69 61 62 6c 65 20 63 70 72 6f 6a 65 63 74 3a 3a iable cproject::
5c70: 74 68 69 73 64 61 74 61 43 28 66 6c 61 67 73 29 thisdataC(flags)
5c80: 0a 0a 20 20 20 20 73 65 74 20 66 32 33 20 5b 24 .. set f23 [$
5c90: 70 61 6e 65 32 2e 6e 62 20 69 6e 73 65 72 74 20 pane2.nb insert
5ca0: 65 6e 64 20 65 78 65 63 75 74 65 20 2d 74 65 78 end execute -tex
5cb0: 74 20 22 45 78 65 63 75 74 65 22 5d 0a 0a 20 20 t "Execute"]..
5cc0: 20 20 54 69 74 6c 65 46 72 61 6d 65 20 24 66 32 TitleFrame $f2
5cd0: 33 2e 66 31 20 2d 74 65 78 74 20 22 65 78 65 63 3.f1 -text "exec
5ce0: 75 74 61 62 6c 65 20 66 69 6c 65 22 20 2d 67 72 utable file" -gr
5cf0: 69 64 20 22 30 20 6e 22 0a 20 20 20 20 73 65 74 id "0 n". set
5d00: 20 66 33 32 31 20 5b 24 66 32 33 2e 66 31 20 67 f321 [$f23.f1 g
5d10: 65 74 66 72 61 6d 65 5d 0a 0a 20 20 20 20 65 6e etframe].. en
5d20: 74 72 79 20 24 66 33 32 31 2e 65 20 2d 67 72 69 try $f321.e -gri
5d30: 64 20 30 20 2d 74 65 78 74 76 61 72 69 61 62 6c d 0 -textvariabl
5d40: 65 20 63 70 72 6f 6a 65 63 74 3a 3a 74 68 69 73 e cproject::this
5d50: 64 61 74 61 45 28 65 78 65 29 0a 20 20 20 20 42 dataE(exe). B
5d60: 75 74 74 6f 6e 20 24 66 33 32 31 2e 62 31 20 2d utton $f321.b1 -
5d70: 69 6d 61 67 65 20 5b 42 69 74 6d 61 70 3a 3a 67 image [Bitmap::g
5d80: 65 74 20 66 69 6c 65 5d 20 2d 77 69 64 74 68 20 et file] -width
5d90: 31 36 20 2d 67 72 69 64 20 31 20 2d 72 65 6c 69 16 -grid 1 -reli
5da0: 65 66 20 6c 69 6e 6b 0a 0a 20 20 20 20 54 69 74 ef link.. Tit
5db0: 6c 65 46 72 61 6d 65 20 24 66 32 33 2e 66 32 20 leFrame $f23.f2
5dc0: 2d 74 65 78 74 20 22 77 6f 72 6b 69 6e 67 20 64 -text "working d
5dd0: 69 72 65 63 74 6f 72 79 22 20 2d 67 72 69 64 20 irectory" -grid
5de0: 22 30 20 6e 22 0a 20 20 20 20 73 65 74 20 66 33 "0 n". set f3
5df0: 32 32 20 5b 24 66 32 33 2e 66 32 20 67 65 74 66 22 [$f23.f2 getf
5e00: 72 61 6d 65 5d 0a 0a 20 20 20 20 65 6e 74 72 79 rame].. entry
5e10: 20 24 66 33 32 32 2e 65 20 2d 67 72 69 64 20 30 $f322.e -grid 0
5e20: 20 2d 74 65 78 74 76 61 72 69 61 62 6c 65 20 63 -textvariable c
5e30: 70 72 6f 6a 65 63 74 3a 3a 74 68 69 73 64 61 74 project::thisdat
5e40: 61 45 28 65 78 65 63 64 69 72 29 0a 20 20 20 20 aE(execdir).
5e50: 42 75 74 74 6f 6e 20 24 66 33 32 32 2e 62 31 20 Button $f322.b1
5e60: 2d 69 6d 61 67 65 20 5b 42 69 74 6d 61 70 3a 3a -image [Bitmap::
5e70: 67 65 74 20 66 6f 6c 64 65 72 5d 20 2d 77 69 64 get folder] -wid
5e80: 74 68 20 31 36 20 2d 67 72 69 64 20 31 20 2d 72 th 16 -grid 1 -r
5e90: 65 6c 69 65 66 20 6c 69 6e 6b 0a 0a 20 20 20 20 elief link..
5ea0: 54 69 74 6c 65 46 72 61 6d 65 20 24 66 32 33 2e TitleFrame $f23.
5eb0: 66 33 20 2d 74 65 78 74 20 22 61 72 67 75 6d 65 f3 -text "argume
5ec0: 6e 74 73 22 20 2d 67 72 69 64 20 22 30 20 6e 22 nts" -grid "0 n"
5ed0: 0a 20 20 20 20 73 65 74 20 66 33 32 33 20 5b 24 . set f323 [$
5ee0: 66 32 33 2e 66 33 20 67 65 74 66 72 61 6d 65 5d f23.f3 getframe]
5ef0: 0a 0a 20 20 20 20 65 6e 74 72 79 20 24 66 33 32 .. entry $f32
5f00: 33 2e 65 20 2d 67 72 69 64 20 30 20 2d 74 65 78 3.e -grid 0 -tex
5f10: 74 76 61 72 69 61 62 6c 65 20 63 70 72 6f 6a 65 tvariable cproje
5f20: 63 74 3a 3a 74 68 69 73 64 61 74 61 45 28 65 78 ct::thisdataE(ex
5f30: 65 61 72 67 73 29 0a 0a 20 20 20 20 73 65 74 20 eargs).. set
5f40: 63 6f 6d 6d 20 7b 0a 09 73 65 74 20 63 70 72 6f comm {..set cpro
5f50: 6a 65 63 74 3a 3a 74 68 69 73 64 61 74 61 45 28 ject::thisdataE(
5f60: 65 78 65 29 20 5b 74 6b 5f 67 65 74 4f 70 65 6e exe) [tk_getOpen
5f70: 46 69 6c 65 20 2d 66 69 6c 65 74 79 70 65 73 20 File -filetypes
5f80: 7b 7b 7b 41 6c 6c 20 46 69 6c 65 73 7d 20 2a 7d {{{All Files} *}
5f90: 7d 20 5c 0a 09 09 2d 69 6e 69 74 69 61 6c 64 69 } \...-initialdi
5fa0: 72 20 24 52 61 6d 44 65 62 75 67 67 65 72 3a 3a r $RamDebugger::
5fb0: 6f 70 74 69 6f 6e 73 28 64 65 66 61 75 6c 74 64 options(defaultd
5fc0: 69 72 29 20 2d 69 6e 69 74 69 61 6c 66 69 6c 65 ir) -initialfile
5fd0: 20 5c 0a 09 09 5b 66 69 6c 65 20 74 61 69 6c 20 \...[file tail
5fe0: 24 63 70 72 6f 6a 65 63 74 3a 3a 74 68 69 73 64 $cproject::thisd
5ff0: 61 74 61 45 28 65 78 65 29 5d 20 2d 70 61 72 65 ataE(exe)] -pare
6000: 6e 74 20 50 41 52 45 4e 54 20 2d 74 69 74 6c 65 nt PARENT -title
6010: 20 22 45 78 65 63 75 74 61 62 6c 65 20 66 69 6c "Executable fil
6020: 65 22 5d 0a 20 20 20 20 7d 0a 20 20 20 20 73 65 e"]. }. se
6030: 74 20 63 6f 6d 6d 20 5b 73 74 72 69 6e 67 20 6d t comm [string m
6040: 61 70 20 5b 6c 69 73 74 20 50 41 52 45 4e 54 20 ap [list PARENT
6050: 24 77 5d 20 24 63 6f 6d 6d 5d 0a 20 20 20 20 24 $w] $comm]. $
6060: 66 33 32 31 2e 62 31 20 63 6f 6e 66 69 67 75 72 f321.b1 configur
6070: 65 20 2d 63 6f 6d 6d 61 6e 64 20 24 63 6f 6d 6d e -command $comm
6080: 0a 0a 20 20 20 20 73 65 74 20 63 6f 6d 6d 20 7b .. set comm {
6090: 0a 09 73 65 74 20 69 6e 69 74 69 61 6c 20 24 52 ..set initial $R
60a0: 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 amDebugger::opti
60b0: 6f 6e 73 28 64 65 66 61 75 6c 74 64 69 72 29 0a ons(defaultdir).
60c0: 09 63 61 74 63 68 20 7b 20 73 65 74 20 69 6e 69 .catch { set ini
60d0: 74 69 61 6c 20 5b 66 69 6c 65 20 64 69 72 6e 61 tial [file dirna
60e0: 6d 65 20 24 63 70 72 6f 6a 65 63 74 3a 3a 74 68 me $cproject::th
60f0: 69 73 64 61 74 61 45 28 65 78 65 29 5d 20 7d 0a isdataE(exe)] }.
6100: 09 73 65 74 20 63 70 72 6f 6a 65 63 74 3a 3a 74 .set cproject::t
6110: 68 69 73 64 61 74 61 45 28 65 78 65 63 64 69 72 hisdataE(execdir
6120: 29 20 5b 52 61 6d 44 65 62 75 67 67 65 72 3a 3a ) [RamDebugger::
6130: 66 69 6c 65 6e 6f 72 6d 61 6c 69 7a 65 20 5b 74 filenormalize [t
6140: 6b 5f 63 68 6f 6f 73 65 44 69 72 65 63 74 6f 72 k_chooseDirector
6150: 79 20 20 20 5c 0a 09 20 20 20 20 2d 69 6e 69 74 y \.. -init
6160: 69 61 6c 64 69 72 20 24 69 6e 69 74 69 61 6c 20 ialdir $initial
6170: 2d 70 61 72 65 6e 74 20 50 41 52 45 4e 54 20 5c -parent PARENT \
6180: 0a 09 20 20 20 20 2d 74 69 74 6c 65 20 22 57 6f .. -title "Wo
6190: 72 6b 69 6e 67 20 64 69 72 65 63 74 6f 72 79 22 rking directory"
61a0: 20 2d 6d 75 73 74 65 78 69 73 74 20 31 5d 5d 0a -mustexist 1]].
61b0: 20 20 20 20 7d 0a 20 20 20 20 73 65 74 20 63 6f }. set co
61c0: 6d 6d 20 5b 73 74 72 69 6e 67 20 6d 61 70 20 5b mm [string map [
61d0: 6c 69 73 74 20 50 41 52 45 4e 54 20 24 77 5d 20 list PARENT $w]
61e0: 24 63 6f 6d 6d 5d 0a 20 20 20 20 24 66 33 32 32 $comm]. $f322
61f0: 2e 62 31 20 63 6f 6e 66 69 67 75 72 65 20 2d 63 .b1 configure -c
6200: 6f 6d 6d 61 6e 64 20 24 63 6f 6d 6d 0a 0a 0a 20 ommand $comm...
6210: 20 20 20 24 70 61 6e 65 32 2e 6e 62 20 63 6f 6d $pane2.nb com
6220: 70 75 74 65 5f 73 69 7a 65 0a 20 20 20 20 24 70 pute_size. $p
6230: 61 6e 65 32 2e 6e 62 20 72 61 69 73 65 20 63 6f ane2.nb raise co
6240: 6d 70 69 6c 61 74 69 6f 6e 0a 20 0a 20 20 20 20 mpilation. .
6250: 73 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 24 66 supergrid::go $f
6260: 31 32 31 35 0a 20 20 20 20 73 75 70 65 72 67 72 1215. supergr
6270: 69 64 3a 3a 67 6f 20 24 66 31 32 32 0a 20 20 20 id::go $f122.
6280: 20 73 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 24 supergrid::go $
6290: 66 31 32 33 0a 20 20 20 20 73 75 70 65 72 67 72 f123. supergr
62a0: 69 64 3a 3a 67 6f 20 24 66 32 31 0a 20 20 20 20 id::go $f21.
62b0: 73 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 24 66 supergrid::go $f
62c0: 33 32 31 0a 20 20 20 20 73 75 70 65 72 67 72 69 321. supergri
62d0: 64 3a 3a 67 6f 20 24 66 33 32 32 0a 20 20 20 20 d::go $f322.
62e0: 73 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 24 66 supergrid::go $f
62f0: 33 32 33 0a 20 20 20 20 73 75 70 65 72 67 72 69 323. supergri
6300: 64 3a 3a 67 6f 20 24 66 32 33 0a 20 20 20 20 73 d::go $f23. s
6310: 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 24 70 61 upergrid::go $pa
6320: 6e 65 32 0a 20 20 20 20 73 75 70 65 72 67 72 69 ne2. supergri
6330: 64 3a 3a 67 6f 20 24 66 0a 0a 20 20 20 20 55 70 d::go $f.. Up
6340: 64 61 74 65 4c 69 6e 6b 74 61 62 73 0a 20 20 20 dateLinktabs.
6350: 20 23 20 69 66 20 69 74 20 65 78 69 73 74 73 20 # if it exists
6360: 66 72 6f 6d 20 62 65 66 6f 72 65 2c 20 69 74 20 from before, it
6370: 77 69 6c 6c 20 62 65 20 64 65 6c 65 74 65 64 0a will be deleted.
6380: 20 20 20 20 74 72 61 63 65 20 76 64 65 6c 65 74 trace vdelet
6390: 65 20 3a 3a 63 70 72 6f 6a 65 63 74 3a 3a 6c 69 e ::cproject::li
63a0: 6e 6b 73 20 77 20 22 55 70 64 61 74 65 4c 69 6e nks w "UpdateLin
63b0: 6b 74 61 62 73 20 3b 23 22 0a 20 20 20 20 74 72 ktabs ;#". tr
63c0: 61 63 65 20 76 61 72 20 63 70 72 6f 6a 65 63 74 ace var cproject
63d0: 3a 3a 6c 69 6e 6b 73 20 77 20 22 55 70 64 61 74 ::links w "Updat
63e0: 65 4c 69 6e 6b 74 61 62 73 20 3b 23 22 0a 0a 0a eLinktabs ;#"...
63f0: 20 20 20 20 55 70 64 61 74 65 53 63 72 69 70 74 UpdateScript
6400: 74 61 62 73 0a 20 20 20 20 23 20 69 66 20 69 74 tabs. # if it
6410: 20 65 78 69 73 74 73 20 66 72 6f 6d 20 62 65 66 exists from bef
6420: 6f 72 65 2c 20 69 74 20 77 69 6c 6c 20 62 65 20 ore, it will be
6430: 64 65 6c 65 74 65 64 0a 20 20 20 20 74 72 61 63 deleted. trac
6440: 65 20 76 64 65 6c 65 74 65 20 3a 3a 63 70 72 6f e vdelete ::cpro
6450: 6a 65 63 74 3a 3a 73 63 72 69 70 74 74 61 62 73 ject::scripttabs
6460: 20 77 20 22 55 70 64 61 74 65 53 63 72 69 70 74 w "UpdateScript
6470: 74 61 62 73 20 3b 23 22 0a 20 20 20 20 74 72 61 tabs ;#". tra
6480: 63 65 20 76 61 72 20 63 70 72 6f 6a 65 63 74 3a ce var cproject:
6490: 3a 73 63 72 69 70 74 74 61 62 73 20 77 20 22 55 :scripttabs w "U
64a0: 70 64 61 74 65 53 63 72 69 70 74 74 61 62 73 20 pdateScripttabs
64b0: 3b 23 22 0a 0a 0a 20 20 20 20 62 69 6e 64 20 24 ;#"... bind $
64c0: 77 20 3c 52 65 74 75 72 6e 3e 20 22 44 69 61 6c w <Return> "Dial
64d0: 6f 67 57 69 6e 54 6f 70 3a 3a 49 6e 76 6f 6b 65 ogWinTop::Invoke
64e0: 4f 4b 20 24 66 22 0a 20 20 20 20 0a 20 20 20 20 OK $f". .
64f0: 44 69 61 6c 6f 67 57 69 6e 54 6f 70 3a 3a 43 72 DialogWinTop::Cr
6500: 65 61 74 65 57 69 6e 64 6f 77 20 24 66 20 22 22 eateWindow $f ""
6510: 20 22 22 20 35 30 30 0a 7d 0a 0a 70 72 6f 63 20 "" 500.}..proc
6520: 63 70 72 6f 6a 65 63 74 3a 3a 55 70 64 61 74 65 cproject::Update
6530: 4c 69 6e 6b 74 61 62 73 20 7b 7d 20 7b 0a 20 20 Linktabs {} {.
6540: 20 20 76 61 72 69 61 62 6c 65 20 6e 6f 74 65 62 variable noteb
6550: 6f 6f 6b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ook. variable
6560: 20 6c 69 6e 6b 73 0a 0a 20 20 20 20 69 66 20 7b links.. if {
6570: 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6e ![info exists n
6580: 6f 74 65 62 6f 6f 6b 5d 20 7c 7c 20 21 5b 77 69 otebook] || ![wi
6590: 6e 66 6f 20 65 78 69 73 74 73 20 24 6e 6f 74 65 nfo exists $note
65a0: 62 6f 6f 6b 5d 20 7d 20 7b 20 72 65 74 75 72 6e book] } { return
65b0: 20 7d 0a 20 20 20 20 69 66 20 7b 20 21 5b 69 6e }. if { ![in
65c0: 66 6f 20 65 78 69 73 74 73 20 6c 69 6e 6b 73 5d fo exists links]
65d0: 20 7d 20 7b 20 73 65 74 20 6c 69 6e 6b 73 20 4c } { set links L
65e0: 69 6e 6b 20 7d 0a 0a 20 20 20 20 73 65 74 20 70 ink }.. set p
65f0: 61 67 65 73 20 5b 24 6e 6f 74 65 62 6f 6f 6b 20 ages [$notebook
6600: 70 61 67 65 73 20 31 20 65 6e 64 2d 31 5d 0a 0a pages 1 end-1]..
6610: 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 24 70 foreach i $p
6620: 61 67 65 73 20 7b 0a 09 69 66 20 7b 20 5b 73 74 ages {..if { [st
6630: 72 69 6e 67 20 6d 61 74 63 68 20 4c 69 6e 6b 2a ring match Link*
6640: 20 24 69 5d 20 7d 20 7b 0a 09 20 20 20 20 24 6e $i] } {.. $n
6650: 6f 74 65 62 6f 6f 6b 20 64 65 6c 65 74 65 20 24 otebook delete $
6660: 69 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 66 i..}. }. f
6670: 6f 72 65 61 63 68 20 69 20 24 6c 69 6e 6b 73 20 oreach i $links
6680: 7b 0a 09 72 65 67 73 75 62 20 2d 61 6c 6c 20 7b {..regsub -all {
6690: 5c 57 7d 20 24 69 20 7b 58 7d 20 70 61 67 65 0a \W} $i {X} page.
66a0: 09 73 65 74 20 66 20 5b 24 6e 6f 74 65 62 6f 6f .set f [$noteboo
66b0: 6b 20 69 6e 73 65 72 74 20 65 6e 64 2d 31 20 24 k insert end-1 $
66c0: 70 61 67 65 20 2d 74 65 78 74 20 24 69 5d 0a 09 page -text $i]..
66d0: 41 64 64 4c 69 6e 6b 54 61 62 20 24 66 20 24 69 AddLinkTab $f $i
66e0: 0a 20 20 20 20 7d 0a 7d 0a 0a 70 72 6f 63 20 63 . }.}..proc c
66f0: 70 72 6f 6a 65 63 74 3a 3a 41 64 64 47 72 6f 75 project::AddGrou
6700: 70 49 6e 4c 69 6e 6b 47 72 6f 75 70 73 20 7b 20 pInLinkGroups {
6710: 62 75 74 20 65 6e 74 72 79 20 7d 20 7b 0a 20 20 but entry } {.
6720: 20 20 76 61 72 69 61 62 6c 65 20 67 72 6f 75 70 variable group
6730: 73 0a 0a 20 20 20 20 73 65 74 20 6d 65 6e 75 20 s.. set menu
6740: 24 62 75 74 2e 6d 65 6e 75 0a 20 20 20 20 63 61 $but.menu. ca
6750: 74 63 68 20 7b 20 64 65 73 74 72 6f 79 20 24 6d tch { destroy $m
6760: 65 6e 75 20 7d 0a 0a 20 20 20 20 6d 65 6e 75 20 enu }.. menu
6770: 24 6d 65 6e 75 0a 20 20 20 20 66 6f 72 65 61 63 $menu. foreac
6780: 68 20 69 20 24 67 72 6f 75 70 73 20 7b 0a 09 73 h i $groups {..s
6790: 65 74 20 63 6f 6d 6d 20 7b 0a 09 20 20 20 20 73 et comm {.. s
67a0: 65 74 20 73 74 72 20 5b 45 4e 54 52 59 20 67 65 et str [ENTRY ge
67b0: 74 5d 0a 09 20 20 20 20 61 70 70 65 6e 64 20 73 t].. append s
67c0: 74 72 20 22 20 47 52 4f 55 50 22 0a 09 20 20 20 tr " GROUP"..
67d0: 20 45 4e 54 52 59 20 64 65 6c 20 30 20 65 6e 64 ENTRY del 0 end
67e0: 0a 09 20 20 20 20 45 4e 54 52 59 20 69 6e 73 65 .. ENTRY inse
67f0: 72 74 20 65 6e 64 20 5b 73 74 72 69 6e 67 20 74 rt end [string t
6800: 72 69 6d 20 24 73 74 72 5d 0a 09 7d 0a 09 73 65 rim $str]..}..se
6810: 74 20 63 6f 6d 6d 20 5b 73 74 72 69 6e 67 20 6d t comm [string m
6820: 61 70 20 5b 6c 69 73 74 20 45 4e 54 52 59 20 24 ap [list ENTRY $
6830: 65 6e 74 72 79 20 47 52 4f 55 50 20 24 69 5d 20 entry GROUP $i]
6840: 24 63 6f 6d 6d 5d 0a 09 24 6d 65 6e 75 20 61 64 $comm]..$menu ad
6850: 64 20 63 6f 6d 6d 61 6e 64 20 2d 6c 61 62 65 6c d command -label
6860: 20 24 69 20 2d 63 6f 6d 6d 61 6e 64 20 24 63 6f $i -command $co
6870: 6d 6d 0a 20 20 20 20 7d 0a 20 20 20 20 74 6b 5f mm. }. tk_
6880: 70 6f 70 75 70 20 24 6d 65 6e 75 20 5b 77 69 6e popup $menu [win
6890: 66 6f 20 72 6f 6f 74 78 20 24 62 75 74 5d 20 5b fo rootx $but] [
68a0: 77 69 6e 66 6f 20 72 6f 6f 74 79 20 24 62 75 74 winfo rooty $but
68b0: 5d 0a 7d 0a 0a 70 72 6f 63 20 63 70 72 6f 6a 65 ].}..proc cproje
68c0: 63 74 3a 3a 41 64 64 4c 69 6e 6b 54 61 62 20 7b ct::AddLinkTab {
68d0: 20 66 20 6c 69 6e 6b 20 7d 20 7b 0a 0a 20 20 20 f link } {..
68e0: 20 54 69 74 6c 65 46 72 61 6d 65 20 24 66 2e 66 TitleFrame $f.f
68f0: 30 20 2d 74 65 78 74 20 22 6c 69 6e 6b 20 67 72 0 -text "link gr
6900: 6f 75 70 73 22 0a 20 20 20 20 73 65 74 20 66 30 oups". set f0
6910: 20 5b 24 66 2e 66 30 20 67 65 74 66 72 61 6d 65 [$f.f0 getframe
6920: 5d 0a 20 20 20 20 65 6e 74 72 79 20 24 66 30 2e ]. entry $f0.
6930: 65 20 2d 67 72 69 64 20 30 20 2d 74 65 78 74 76 e -grid 0 -textv
6940: 61 72 69 61 62 6c 65 20 63 70 72 6f 6a 65 63 74 ariable cproject
6950: 3a 3a 74 68 69 73 64 61 74 61 4c 28 24 6c 69 6e ::thisdataL($lin
6960: 6b 2c 6c 69 6e 6b 67 72 6f 75 70 73 29 0a 0a 20 k,linkgroups)..
6970: 20 20 20 4c 61 62 65 6c 20 24 66 30 2e 62 31 20 Label $f0.b1
6980: 2d 69 6d 61 67 65 20 61 63 74 74 69 63 6b 31 36 -image acttick16
6990: 20 5c 0a 09 20 2d 68 69 67 68 6c 69 67 68 74 74 \.. -highlightt
69a0: 68 69 63 6b 6e 65 73 73 20 30 20 2d 74 61 6b 65 hickness 0 -take
69b0: 66 6f 63 75 73 20 30 20 2d 72 65 6c 69 65 66 20 focus 0 -relief
69c0: 66 6c 61 74 20 2d 62 6f 72 64 65 72 77 69 64 74 flat -borderwidt
69d0: 68 20 31 20 2d 70 61 64 78 20 31 20 2d 70 61 64 h 1 -padx 1 -pad
69e0: 79 20 31 20 5c 0a 09 20 2d 68 65 6c 70 74 65 78 y 1 \.. -helptex
69f0: 74 20 5b 5f 20 22 41 64 64 20 67 72 6f 75 70 22 t [_ "Add group"
6a00: 5d 20 2d 67 72 69 64 20 31 0a 20 20 20 20 62 69 ] -grid 1. bi
6a10: 6e 64 20 24 66 30 2e 62 31 20 3c 42 75 74 74 6f nd $f0.b1 <Butto
6a20: 6e 50 72 65 73 73 2d 31 3e 20 22 63 70 72 6f 6a nPress-1> "cproj
6a30: 65 63 74 3a 3a 41 64 64 47 72 6f 75 70 49 6e 4c ect::AddGroupInL
6a40: 69 6e 6b 47 72 6f 75 70 73 20 24 66 30 2e 62 31 inkGroups $f0.b1
6a50: 20 24 66 30 2e 65 22 20 0a 0a 20 20 20 20 54 69 $f0.e" .. Ti
6a60: 74 6c 65 46 72 61 6d 65 20 24 66 2e 66 31 20 2d tleFrame $f.f1 -
6a70: 74 65 78 74 20 22 6c 69 62 72 61 72 69 65 73 20 text "libraries
6a80: 64 69 72 65 63 74 6f 72 69 65 73 22 0a 20 20 20 directories".
6a90: 20 73 65 74 20 66 31 20 5b 24 66 2e 66 31 20 67 set f1 [$f.f1 g
6aa0: 65 74 66 72 61 6d 65 5d 0a 0a 20 20 20 20 73 65 etframe].. se
6ab0: 74 20 73 77 20 5b 53 63 72 6f 6c 6c 65 64 57 69 t sw [ScrolledWi
6ac0: 6e 64 6f 77 20 24 66 31 2e 6c 66 20 2d 72 65 6c ndow $f1.lf -rel
6ad0: 69 65 66 20 73 75 6e 6b 65 6e 20 2d 62 6f 72 64 ief sunken -bord
6ae0: 65 72 77 69 64 74 68 20 30 5d 0a 20 20 20 20 6c erwidth 0]. l
6af0: 69 73 74 62 6f 78 20 24 73 77 2e 6c 62 20 2d 6c istbox $sw.lb -l
6b00: 69 73 74 76 61 72 69 61 62 6c 65 20 63 70 72 6f istvariable cpro
6b10: 6a 65 63 74 3a 3a 74 68 69 73 64 61 74 61 4c 28 ject::thisdataL(
6b20: 24 6c 69 6e 6b 2c 6c 69 62 72 61 72 69 65 73 64 $link,librariesd
6b30: 69 72 73 29 0a 20 20 20 20 24 73 77 20 73 65 74 irs). $sw set
6b40: 77 69 64 67 65 74 20 24 73 77 2e 6c 62 0a 0a 20 widget $sw.lb..
6b50: 20 20 20 73 65 74 20 62 62 6f 78 20 5b 42 75 74 set bbox [But
6b60: 74 6f 6e 42 6f 78 20 24 66 31 2e 62 62 6f 78 31 tonBox $f1.bbox1
6b70: 20 2d 73 70 61 63 69 6e 67 20 30 20 2d 70 61 64 -spacing 0 -pad
6b80: 78 20 31 20 2d 70 61 64 79 20 31 20 2d 68 6f 6d x 1 -pady 1 -hom
6b90: 6f 67 65 6e 65 6f 75 73 20 31 5d 0a 20 20 20 20 ogeneous 1].
6ba0: 24 62 62 6f 78 20 61 64 64 20 2d 69 6d 61 67 65 $bbox add -image
6bb0: 20 66 6f 6c 64 65 72 6f 70 65 6e 31 36 20 5c 0a folderopen16 \.
6bc0: 09 20 2d 68 69 67 68 6c 69 67 68 74 74 68 69 63 . -highlightthic
6bd0: 6b 6e 65 73 73 20 30 20 2d 74 61 6b 65 66 6f 63 kness 0 -takefoc
6be0: 75 73 20 30 20 2d 72 65 6c 69 65 66 20 6c 69 6e us 0 -relief lin
6bf0: 6b 20 2d 62 6f 72 64 65 72 77 69 64 74 68 20 31 k -borderwidth 1
6c00: 20 2d 70 61 64 78 20 31 20 2d 70 61 64 79 20 31 -padx 1 -pady 1
6c10: 20 5c 0a 09 20 2d 68 65 6c 70 74 65 78 74 20 5b \.. -helptext [
6c20: 5f 20 22 41 64 64 20 6c 69 6e 6b 20 64 69 72 65 _ "Add link dire
6c30: 63 74 6f 72 69 65 73 22 5d 20 5c 0a 09 20 2d 63 ctories"] \.. -c
6c40: 6f 6d 6d 61 6e 64 20 22 63 70 72 6f 6a 65 63 74 ommand "cproject
6c50: 3a 3a 41 64 64 44 65 6c 44 69 72 65 63 74 6f 72 ::AddDelDirector
6c60: 69 65 73 20 24 73 77 2e 6c 62 20 61 64 64 22 0a ies $sw.lb add".
6c70: 20 20 20 20 24 62 62 6f 78 20 61 64 64 20 2d 69 $bbox add -i
6c80: 6d 61 67 65 20 61 63 74 63 72 6f 73 73 31 36 20 mage actcross16
6c90: 5c 0a 09 20 2d 68 69 67 68 6c 69 67 68 74 74 68 \.. -highlightth
6ca0: 69 63 6b 6e 65 73 73 20 30 20 2d 74 61 6b 65 66 ickness 0 -takef
6cb0: 6f 63 75 73 20 30 20 2d 72 65 6c 69 65 66 20 6c ocus 0 -relief l
6cc0: 69 6e 6b 20 2d 62 6f 72 64 65 72 77 69 64 74 68 ink -borderwidth
6cd0: 20 31 20 2d 70 61 64 78 20 31 20 2d 70 61 64 79 1 -padx 1 -pady
6ce0: 20 31 20 5c 0a 09 20 2d 68 65 6c 70 74 65 78 74 1 \.. -helptext
6cf0: 20 5b 5f 20 22 44 65 6c 65 74 65 20 6c 69 6e 6b [_ "Delete link
6d00: 20 64 69 72 65 63 74 6f 72 69 65 73 22 5d 20 5c directories"] \
6d10: 0a 09 20 2d 63 6f 6d 6d 61 6e 64 20 22 63 70 72 .. -command "cpr
6d20: 6f 6a 65 63 74 3a 3a 41 64 64 44 65 6c 44 69 72 oject::AddDelDir
6d30: 65 63 74 6f 72 69 65 73 20 24 73 77 2e 6c 62 20 ectories $sw.lb
6d40: 64 65 6c 65 74 65 22 0a 0a 20 20 20 20 67 72 69 delete".. gri
6d50: 64 20 24 66 31 2e 6c 66 20 2d 73 74 69 63 6b 79 d $f1.lf -sticky
6d60: 20 6e 73 65 77 0a 20 20 20 20 67 72 69 64 20 24 nsew. grid $
6d70: 62 62 6f 78 20 2d 73 74 69 63 6b 79 20 6e 77 0a bbox -sticky nw.
6d80: 20 20 20 20 67 72 69 64 20 72 6f 77 63 6f 6e 66 grid rowconf
6d90: 69 67 75 72 65 20 24 66 31 20 30 20 2d 77 65 69 igure $f1 0 -wei
6da0: 67 68 74 20 31 0a 20 20 20 20 67 72 69 64 20 63 ght 1. grid c
6db0: 6f 6c 75 6d 6e 63 6f 6e 66 69 67 75 72 65 20 24 olumnconfigure $
6dc0: 66 31 20 30 20 2d 77 65 69 67 68 74 20 31 0a 0a f1 0 -weight 1..
6dd0: 20 20 20 20 54 69 74 6c 65 46 72 61 6d 65 20 24 TitleFrame $
6de0: 66 2e 66 32 20 2d 74 65 78 74 20 22 6c 69 62 72 f.f2 -text "libr
6df0: 61 72 69 65 73 22 0a 20 20 20 20 73 65 74 20 66 aries". set f
6e00: 32 20 5b 24 66 2e 66 32 20 67 65 74 66 72 61 6d 2 [$f.f2 getfram
6e10: 65 5d 0a 0a 20 20 20 20 73 65 74 20 76 61 6c 75 e].. set valu
6e20: 65 73 20 5b 6c 69 73 74 20 67 63 63 20 67 2b 2b es [list gcc g++
6e30: 20 61 72 5d 0a 20 20 20 20 69 66 20 7b 20 24 3a ar]. if { $:
6e40: 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c :tcl_platform(pl
6e50: 61 74 66 6f 72 6d 29 20 3d 3d 20 22 77 69 6e 64 atform) == "wind
6e60: 6f 77 73 22 20 7d 20 7b 0a 09 6c 61 70 70 65 6e ows" } {..lappen
6e70: 64 20 76 61 6c 75 65 73 20 77 69 6e 64 72 65 73 d values windres
6e80: 0a 20 20 20 20 7d 0a 20 20 20 20 43 6f 6d 62 6f . }. Combo
6e90: 42 6f 78 20 24 66 32 2e 63 62 20 2d 74 65 78 74 Box $f2.cb -text
6ea0: 76 61 72 69 61 62 6c 65 20 63 70 72 6f 6a 65 63 variable cprojec
6eb0: 74 3a 3a 74 68 69 73 64 61 74 61 4c 28 24 6c 69 t::thisdataL($li
6ec0: 6e 6b 2c 6c 69 6e 6b 65 72 29 20 2d 76 61 6c 75 nk,linker) -valu
6ed0: 65 73 20 24 76 61 6c 75 65 73 20 5c 0a 09 2d 67 es $values \..-g
6ee0: 72 69 64 20 22 30 20 77 22 20 2d 77 69 64 74 68 rid "0 w" -width
6ef0: 20 37 0a 0a 20 20 20 20 65 6e 74 72 79 20 24 66 7.. entry $f
6f00: 32 2e 65 20 2d 67 72 69 64 20 31 20 2d 74 65 78 2.e -grid 1 -tex
6f10: 74 76 61 72 69 61 62 6c 65 20 63 70 72 6f 6a 65 tvariable cproje
6f20: 63 74 3a 3a 74 68 69 73 64 61 74 61 4c 28 24 6c ct::thisdataL($l
6f30: 69 6e 6b 2c 6c 69 62 72 61 72 69 65 73 29 0a 0a ink,libraries)..
6f40: 20 20 20 20 54 69 74 6c 65 46 72 61 6d 65 20 24 TitleFrame $
6f50: 66 2e 66 33 20 2d 74 65 78 74 20 22 61 64 64 69 f.f3 -text "addi
6f60: 74 69 6f 6e 61 6c 20 6c 69 6e 6b 20 66 6c 61 67 tional link flag
6f70: 73 22 0a 20 20 20 20 73 65 74 20 66 33 20 5b 24 s". set f3 [$
6f80: 66 2e 66 33 20 67 65 74 66 72 61 6d 65 5d 0a 20 f.f3 getframe].
6f90: 20 20 20 65 6e 74 72 79 20 24 66 33 2e 65 20 2d entry $f3.e -
6fa0: 67 72 69 64 20 30 20 2d 74 65 78 74 76 61 72 69 grid 0 -textvari
6fb0: 61 62 6c 65 20 63 70 72 6f 6a 65 63 74 3a 3a 74 able cproject::t
6fc0: 68 69 73 64 61 74 61 4c 28 24 6c 69 6e 6b 2c 6c hisdataL($link,l
6fd0: 69 6e 6b 66 6c 61 67 73 29 0a 0a 20 20 20 20 54 inkflags).. T
6fe0: 69 74 6c 65 46 72 61 6d 65 20 24 66 2e 66 34 20 itleFrame $f.f4
6ff0: 2d 74 65 78 74 20 22 6f 75 74 70 75 74 20 6e 61 -text "output na
7000: 6d 65 22 0a 20 20 20 20 73 65 74 20 66 34 20 5b me". set f4 [
7010: 24 66 2e 66 34 20 67 65 74 66 72 61 6d 65 5d 0a $f.f4 getframe].
7020: 20 20 20 20 65 6e 74 72 79 20 24 66 34 2e 65 20 entry $f4.e
7030: 2d 67 72 69 64 20 30 20 2d 74 65 78 74 76 61 72 -grid 0 -textvar
7040: 69 61 62 6c 65 20 63 70 72 6f 6a 65 63 74 3a 3a iable cproject::
7050: 74 68 69 73 64 61 74 61 4c 28 24 6c 69 6e 6b 2c thisdataL($link,
7060: 6c 69 6e 6b 65 78 65 29 0a 0a 20 20 20 20 73 65 linkexe).. se
7070: 74 20 62 62 6f 78 20 5b 42 75 74 74 6f 6e 42 6f t bbox [ButtonBo
7080: 78 20 24 66 2e 62 62 6f 78 20 2d 73 70 61 63 69 x $f.bbox -spaci
7090: 6e 67 20 30 20 2d 70 61 64 78 20 31 20 2d 70 61 ng 0 -padx 1 -pa
70a0: 64 79 20 31 20 2d 68 6f 6d 6f 67 65 6e 65 6f 75 dy 1 -homogeneou
70b0: 73 20 31 20 2d 67 72 69 64 20 22 30 20 6e 77 22 s 1 -grid "0 nw"
70c0: 5d 0a 20 20 20 20 24 62 62 6f 78 20 61 64 64 20 ]. $bbox add
70d0: 2d 69 6d 61 67 65 20 61 63 74 74 69 63 6b 31 36 -image acttick16
70e0: 20 5c 0a 09 20 2d 68 69 67 68 6c 69 67 68 74 74 \.. -highlightt
70f0: 68 69 63 6b 6e 65 73 73 20 30 20 2d 74 61 6b 65 hickness 0 -take
7100: 66 6f 63 75 73 20 30 20 2d 72 65 6c 69 65 66 20 focus 0 -relief
7110: 6c 69 6e 6b 20 2d 62 6f 72 64 65 72 77 69 64 74 link -borderwidt
7120: 68 20 31 20 2d 70 61 64 78 20 31 20 2d 70 61 64 h 1 -padx 1 -pad
7130: 79 20 31 20 5c 0a 09 20 2d 68 65 6c 70 74 65 78 y 1 \.. -helptex
7140: 74 20 5b 5f 20 22 43 72 65 61 74 65 20 6e 65 77 t [_ "Create new
7150: 20 6c 69 6e 6b 20 74 61 62 22 5d 20 5c 0a 09 20 link tab"] \..
7160: 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 63 -command [list c
7170: 70 72 6f 6a 65 63 74 3a 3a 43 72 65 61 74 65 44 project::CreateD
7180: 65 6c 65 74 65 4c 69 6e 6b 54 61 62 20 24 6c 69 eleteLinkTab $li
7190: 6e 6b 20 63 72 65 61 74 65 5d 0a 20 20 20 20 24 nk create]. $
71a0: 62 62 6f 78 20 61 64 64 20 2d 69 6d 61 67 65 20 bbox add -image
71b0: 61 63 74 63 72 6f 73 73 31 36 20 5c 0a 09 20 2d actcross16 \.. -
71c0: 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b 6e 65 highlightthickne
71d0: 73 73 20 30 20 2d 74 61 6b 65 66 6f 63 75 73 20 ss 0 -takefocus
71e0: 30 20 2d 72 65 6c 69 65 66 20 6c 69 6e 6b 20 2d 0 -relief link -
71f0: 62 6f 72 64 65 72 77 69 64 74 68 20 31 20 2d 70 borderwidth 1 -p
7200: 61 64 78 20 31 20 2d 70 61 64 79 20 31 20 5c 0a adx 1 -pady 1 \.
7210: 09 20 2d 68 65 6c 70 74 65 78 74 20 5b 5f 20 22 . -helptext [_ "
7220: 44 65 6c 65 74 65 20 6c 69 6e 6b 20 74 61 62 22 Delete link tab"
7230: 5d 20 5c 0a 09 20 2d 63 6f 6d 6d 61 6e 64 20 5b ] \.. -command [
7240: 6c 69 73 74 20 63 70 72 6f 6a 65 63 74 3a 3a 43 list cproject::C
7250: 72 65 61 74 65 44 65 6c 65 74 65 4c 69 6e 6b 54 reateDeleteLinkT
7260: 61 62 20 24 6c 69 6e 6b 20 64 65 6c 65 74 65 5d ab $link delete]
7270: 0a 20 20 20 20 24 62 62 6f 78 20 61 64 64 20 2d . $bbox add -
7280: 69 6d 61 67 65 20 65 64 69 74 31 36 20 5c 0a 09 image edit16 \..
7290: 20 2d 68 69 67 68 6c 69 67 68 74 74 68 69 63 6b -highlightthick
72a0: 6e 65 73 73 20 30 20 2d 74 61 6b 65 66 6f 63 75 ness 0 -takefocu
72b0: 73 20 30 20 2d 72 65 6c 69 65 66 20 6c 69 6e 6b s 0 -relief link
72c0: 20 2d 62 6f 72 64 65 72 77 69 64 74 68 20 31 20 -borderwidth 1
72d0: 2d 70 61 64 78 20 31 20 2d 70 61 64 79 20 31 20 -padx 1 -pady 1
72e0: 5c 0a 09 20 2d 68 65 6c 70 74 65 78 74 20 5b 5f \.. -helptext [_
72f0: 20 22 52 65 6e 61 6d 65 20 6c 69 6e 6b 20 74 61 "Rename link ta
7300: 62 22 5d 20 5c 0a 09 20 2d 63 6f 6d 6d 61 6e 64 b"] \.. -command
7310: 20 5b 6c 69 73 74 20 63 70 72 6f 6a 65 63 74 3a [list cproject:
7320: 3a 43 72 65 61 74 65 44 65 6c 65 74 65 4c 69 6e :CreateDeleteLin
7330: 6b 54 61 62 20 24 6c 69 6e 6b 20 72 65 6e 61 6d kTab $link renam
7340: 65 5d 0a 0a 20 20 20 20 67 72 69 64 20 24 66 2e e].. grid $f.
7350: 66 30 20 2d 73 74 69 63 6b 79 20 6e 65 77 0a 20 f0 -sticky new.
7360: 20 20 20 67 72 69 64 20 24 66 2e 66 31 20 2d 73 grid $f.f1 -s
7370: 74 69 63 6b 79 20 6e 73 65 77 0a 20 20 20 20 67 ticky nsew. g
7380: 72 69 64 20 24 66 2e 66 32 20 2d 73 74 69 63 6b rid $f.f2 -stick
7390: 79 20 6e 65 77 0a 20 20 20 20 67 72 69 64 20 24 y new. grid $
73a0: 66 2e 66 33 20 2d 73 74 69 63 6b 79 20 6e 65 77 f.f3 -sticky new
73b0: 0a 20 20 20 20 67 72 69 64 20 24 66 2e 66 34 20 . grid $f.f4
73c0: 2d 73 74 69 63 6b 79 20 6e 65 77 0a 20 20 20 20 -sticky new.
73d0: 67 72 69 64 20 24 66 2e 62 62 6f 78 20 2d 73 74 grid $f.bbox -st
73e0: 69 63 6b 79 20 6e 77 0a 0a 20 20 20 20 67 72 69 icky nw.. gri
73f0: 64 20 72 6f 77 63 6f 6e 66 69 67 75 72 65 20 24 d rowconfigure $
7400: 66 20 31 20 2d 77 65 69 67 68 74 20 31 0a 20 20 f 1 -weight 1.
7410: 20 20 67 72 69 64 20 63 6f 6c 75 6d 6e 63 6f 6e grid columncon
7420: 66 69 67 75 72 65 20 24 66 20 30 20 2d 77 65 69 figure $f 0 -wei
7430: 67 68 74 20 31 0a 0a 0a 20 20 20 20 73 75 70 65 ght 1... supe
7440: 72 67 72 69 64 3a 3a 67 6f 20 24 66 30 0a 20 20 rgrid::go $f0.
7450: 20 20 73 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 supergrid::go
7460: 24 66 32 0a 20 20 20 20 73 75 70 65 72 67 72 69 $f2. supergri
7470: 64 3a 3a 67 6f 20 24 66 33 0a 20 20 20 20 73 75 d::go $f3. su
7480: 70 65 72 67 72 69 64 3a 3a 67 6f 20 24 66 34 0a pergrid::go $f4.
7490: 7d 0a 0a 70 72 6f 63 20 63 70 72 6f 6a 65 63 74 }..proc cproject
74a0: 3a 3a 43 72 65 61 74 65 44 65 6c 65 74 65 4c 69 ::CreateDeleteLi
74b0: 6e 6b 54 61 62 20 7b 20 63 75 72 72 65 6e 74 6c nkTab { currentl
74c0: 69 6e 6b 20 77 68 61 74 20 7d 20 7b 0a 20 20 20 ink what } {.
74d0: 20 76 61 72 69 61 62 6c 65 20 6c 69 6e 6b 73 0a variable links.
74e0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 61 74 variable dat
74f0: 61 4c 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 aL. variable
7500: 6e 6f 74 65 62 6f 6f 6b 0a 0a 20 20 20 20 73 79 notebook.. sy
7510: 6e 63 66 72 6f 6d 55 49 0a 0a 20 20 20 20 73 77 ncfromUI.. sw
7520: 69 74 63 68 20 24 77 68 61 74 20 7b 0a 09 63 72 itch $what {..cr
7530: 65 61 74 65 20 7b 0a 09 20 20 20 20 73 65 74 20 eate {.. set
7540: 6e 75 6d 20 5b 65 78 70 72 20 5b 6c 6c 65 6e 67 num [expr [lleng
7550: 74 68 20 24 6c 69 6e 6b 73 5d 2b 31 5d 0a 09 20 th $links]+1]..
7560: 20 20 20 73 65 74 20 6e 65 77 6c 69 6e 6b 20 4c set newlink L
7570: 69 6e 6b 24 6e 75 6d 0a 09 20 20 20 20 66 6f 72 ink$num.. for
7580: 65 61 63 68 20 69 20 5b 61 72 72 61 79 20 6e 61 each i [array na
7590: 6d 65 73 20 64 61 74 61 4c 20 2a 2c 24 63 75 72 mes dataL *,$cur
75a0: 72 65 6e 74 6c 69 6e 6b 2c 2a 5d 20 7b 0a 09 09 rentlink,*] {...
75b0: 72 65 67 65 78 70 20 7b 28 5b 5e 2c 5d 2b 29 2c regexp {([^,]+),
75c0: 5b 5e 2c 5d 2b 2c 28 5b 5e 2c 5d 2b 29 7d 20 24 [^,]+,([^,]+)} $
75d0: 69 20 7b 7d 20 64 72 20 76 0a 09 09 73 65 74 20 i {} dr v...set
75e0: 64 61 74 61 4c 28 24 64 72 2c 24 6e 65 77 6c 69 dataL($dr,$newli
75f0: 6e 6b 2c 24 76 29 20 24 64 61 74 61 4c 28 24 69 nk,$v) $dataL($i
7600: 29 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 6c 61 ).. }.. la
7610: 70 70 65 6e 64 20 6c 69 6e 6b 73 20 24 6e 65 77 ppend links $new
7620: 6c 69 6e 6b 0a 09 20 20 20 20 24 6e 6f 74 65 62 link.. $noteb
7630: 6f 6f 6b 20 72 61 69 73 65 20 24 6e 65 77 6c 69 ook raise $newli
7640: 6e 6b 0a 09 7d 0a 09 64 65 6c 65 74 65 20 7b 0a nk..}..delete {.
7650: 09 20 20 20 20 69 66 20 7b 20 5b 6c 6c 65 6e 67 . if { [lleng
7660: 74 68 20 24 6c 69 6e 6b 73 5d 20 3d 3d 20 31 20 th $links] == 1
7670: 7d 20 7b 0a 09 09 57 61 72 6e 57 69 6e 20 22 45 } {...WarnWin "E
7680: 72 72 6f 72 3a 20 54 68 65 72 65 20 6d 75 73 74 rror: There must
7690: 20 62 65 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 be at least one
76a0: 20 6c 69 6e 6b 20 74 61 62 22 20 24 6e 6f 74 65 link tab" $note
76b0: 62 6f 6f 6b 0a 09 09 72 65 74 75 72 6e 0a 09 20 book...return..
76c0: 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 72 65 }.. set re
76d0: 74 20 5b 44 69 61 6c 6f 67 57 69 6e 3a 3a 6d 65 t [DialogWin::me
76e0: 73 73 61 67 65 42 6f 78 20 2d 64 65 66 61 75 6c ssageBox -defaul
76f0: 74 20 6f 6b 20 2d 69 63 6f 6e 20 77 61 72 6e 69 t ok -icon warni
7700: 6e 67 20 2d 6d 65 73 73 61 67 65 20 5c 0a 09 09 ng -message \...
7710: 22 41 72 65 20 79 6f 75 20 73 75 72 65 20 74 6f "Are you sure to
7720: 20 64 65 6c 65 74 65 20 6c 69 6e 6b 20 74 61 62 delete link tab
7730: 20 27 24 63 75 72 72 65 6e 74 6c 69 6e 6b 27 3f '$currentlink'?
7740: 22 20 2d 70 61 72 65 6e 74 20 24 6e 6f 74 65 62 " -parent $noteb
7750: 6f 6f 6b 20 5c 0a 09 09 2d 74 69 74 6c 65 20 22 ook \...-title "
7760: 64 65 6c 65 74 65 20 6c 69 6e 6b 20 74 61 62 22 delete link tab"
7770: 20 2d 74 79 70 65 20 6f 6b 63 61 6e 63 65 6c 5d -type okcancel]
7780: 0a 09 20 20 20 20 69 66 20 7b 20 24 72 65 74 20 .. if { $ret
7790: 3d 3d 20 22 63 61 6e 63 65 6c 22 20 7d 20 7b 20 == "cancel" } {
77a0: 72 65 74 75 72 6e 20 7d 0a 09 20 20 20 20 0a 09 return }.. ..
77b0: 20 20 20 20 73 65 74 20 64 65 6c 70 6f 73 20 5b set delpos [
77c0: 6c 73 65 61 72 63 68 20 24 6c 69 6e 6b 73 20 24 lsearch $links $
77d0: 63 75 72 72 65 6e 74 6c 69 6e 6b 5d 0a 0a 09 20 currentlink]...
77e0: 20 20 20 66 6f 72 65 61 63 68 20 69 20 5b 61 72 foreach i [ar
77f0: 72 61 79 20 6e 61 6d 65 73 20 64 61 74 61 4c 20 ray names dataL
7800: 2a 2c 24 63 75 72 72 65 6e 74 6c 69 6e 6b 2c 2a *,$currentlink,*
7810: 5d 20 7b 0a 09 09 75 6e 73 65 74 20 64 61 74 61 ] {...unset data
7820: 4c 28 24 69 29 0a 09 20 20 20 20 7d 0a 09 20 20 L($i).. }..
7830: 20 20 73 65 74 20 6c 69 6e 6b 73 20 5b 6c 72 65 set links [lre
7840: 70 6c 61 63 65 20 24 6c 69 6e 6b 73 20 24 64 65 place $links $de
7850: 6c 70 6f 73 20 24 64 65 6c 70 6f 73 5d 0a 09 20 lpos $delpos]..
7860: 20 20 20 69 66 20 7b 20 24 64 65 6c 70 6f 73 20 if { $delpos
7870: 3e 3d 20 5b 6c 6c 65 6e 67 74 68 20 24 6c 69 6e >= [llength $lin
7880: 6b 73 5d 20 7d 20 7b 20 73 65 74 20 64 65 6c 70 ks] } { set delp
7890: 6f 73 20 30 20 7d 0a 09 20 20 20 20 24 6e 6f 74 os 0 }.. $not
78a0: 65 62 6f 6f 6b 20 72 61 69 73 65 20 5b 6c 69 6e ebook raise [lin
78b0: 64 65 78 20 24 6c 69 6e 6b 73 20 24 64 65 6c 70 dex $links $delp
78c0: 6f 73 5d 0a 09 7d 0a 09 72 65 6e 61 6d 65 20 7b os]..}..rename {
78d0: 0a 09 20 20 20 20 43 6f 70 79 4e 61 6d 65 73 70 .. CopyNamesp
78e0: 61 63 65 20 3a 3a 44 69 61 6c 6f 67 57 69 6e 20 ace ::DialogWin
78f0: 3a 3a 44 69 61 6c 6f 67 57 69 6e 43 52 0a 09 20 ::DialogWinCR..
7900: 20 20 20 73 65 74 20 66 20 5b 44 69 61 6c 6f 67 set f [Dialog
7910: 57 69 6e 43 52 3a 3a 49 6e 69 74 20 24 6e 6f 74 WinCR::Init $not
7920: 65 62 6f 6f 6b 20 22 45 6e 74 65 72 20 6c 69 6e ebook "Enter lin
7930: 6b 20 6e 61 6d 65 22 20 73 65 70 61 72 61 74 6f k name" separato
7940: 72 20 22 22 5d 0a 09 20 20 20 20 73 65 74 20 77 r ""].. set w
7950: 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 6c [winfo toplevel
7960: 20 24 66 5d 0a 09 20 20 20 20 0a 09 20 20 20 20 $f].. ..
7970: 6c 61 62 65 6c 20 24 66 2e 6c 20 2d 74 65 78 74 label $f.l -text
7980: 20 22 45 6e 74 65 72 20 6e 65 77 20 6e 61 6d 65 "Enter new name
7990: 20 66 6f 72 20 6c 69 6e 6b 20 74 61 62 20 27 24 for link tab '$
79a0: 63 75 72 72 65 6e 74 6c 69 6e 6b 27 22 20 2d 67 currentlink'" -g
79b0: 72 69 64 20 22 30 20 70 78 33 20 70 79 33 22 0a rid "0 px3 py3".
79c0: 09 20 20 20 20 65 6e 74 72 79 20 24 66 2e 65 20 . entry $f.e
79d0: 2d 74 65 78 74 76 61 72 69 61 62 6c 65 20 44 69 -textvariable Di
79e0: 61 6c 6f 67 57 69 6e 43 52 3a 3a 75 73 65 72 28 alogWinCR::user(
79f0: 6e 61 6d 65 29 20 2d 67 72 69 64 20 22 30 20 70 name) -grid "0 p
7a00: 78 31 30 20 70 79 33 22 20 2d 77 69 64 74 68 20 x10 py3" -width
7a10: 33 30 0a 09 20 20 20 20 0a 09 20 20 20 20 73 65 30.. .. se
7a20: 74 20 44 69 61 6c 6f 67 57 69 6e 43 52 3a 3a 75 t DialogWinCR::u
7a30: 73 65 72 28 6e 61 6d 65 29 20 24 63 75 72 72 65 ser(name) $curre
7a40: 6e 74 6c 69 6e 6b 0a 09 20 20 20 20 74 6b 54 61 ntlink.. tkTa
7a50: 62 54 6f 57 69 6e 64 6f 77 20 24 66 2e 65 0a 09 bToWindow $f.e..
7a60: 20 20 20 20 73 75 70 65 72 67 72 69 64 3a 3a 67 supergrid::g
7a70: 6f 20 24 66 0a 09 20 20 20 20 62 69 6e 64 20 24 o $f.. bind $
7a80: 77 20 3c 52 65 74 75 72 6e 3e 20 22 44 69 61 6c w <Return> "Dial
7a90: 6f 67 57 69 6e 43 52 3a 3a 49 6e 76 6f 6b 65 4f ogWinCR::InvokeO
7aa0: 4b 22 0a 0a 09 20 20 20 20 73 65 74 20 61 63 74 K"... set act
7ab0: 69 6f 6e 20 5b 44 69 61 6c 6f 67 57 69 6e 43 52 ion [DialogWinCR
7ac0: 3a 3a 43 72 65 61 74 65 57 69 6e 64 6f 77 5d 0a ::CreateWindow].
7ad0: 09 20 20 20 20 77 68 69 6c 65 20 31 20 7b 0a 09 . while 1 {..
7ae0: 09 73 77 69 74 63 68 20 24 61 63 74 69 6f 6e 20 .switch $action
7af0: 7b 0a 09 09 20 20 20 20 30 20 7b 0a 09 09 20 20 {... 0 {...
7b00: 20 20 20 20 20 20 44 69 61 6c 6f 67 57 69 6e 43 DialogWinC
7b10: 52 3a 3a 44 65 73 74 72 6f 79 57 69 6e 64 6f 77 R::DestroyWindow
7b20: 0a 09 09 20 20 20 20 20 20 20 20 6e 61 6d 65 73 ... names
7b30: 70 61 63 65 20 64 65 6c 65 74 65 20 3a 3a 44 69 pace delete ::Di
7b40: 61 6c 6f 67 57 69 6e 43 52 0a 09 09 20 20 20 20 alogWinCR...
7b50: 20 20 20 20 72 65 74 75 72 6e 0a 09 09 20 20 20 return...
7b60: 20 7d 0a 09 09 20 20 20 20 31 20 7b 0a 09 09 20 }... 1 {...
7b70: 20 20 20 20 20 20 20 73 65 74 20 6e 65 77 6c 69 set newli
7b80: 6e 6b 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 nk [string trim
7b90: 24 44 69 61 6c 6f 67 57 69 6e 43 52 3a 3a 75 73 $DialogWinCR::us
7ba0: 65 72 28 6e 61 6d 65 29 5d 0a 09 09 20 20 20 20 er(name)]...
7bb0: 20 20 20 20 69 66 20 7b 20 24 6e 65 77 6c 69 6e if { $newlin
7bc0: 6b 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 09 20 20 k == "" } {...
7bd0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 6e 65 set ne
7be0: 77 6c 69 6e 6b 20 22 4c 69 6e 6b 22 0a 09 09 20 wlink "Link"...
7bf0: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 69 66 20 } elseif
7c00: 7b 20 21 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 { ![string match
7c10: 20 22 4c 69 6e 6b 20 2a 22 20 24 6e 65 77 6c 69 "Link *" $newli
7c20: 6e 6b 5d 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 nk] } {...
7c30: 20 20 20 20 20 20 73 65 74 20 6e 65 77 6c 69 6e set newlin
7c40: 6b 20 22 4c 69 6e 6b 20 24 6e 65 77 6c 69 6e 6b k "Link $newlink
7c50: 22 0a 09 09 20 20 20 20 20 20 20 20 7d 0a 09 09 "... }...
7c60: 20 20 20 20 20 20 20 20 69 66 20 7b 20 24 6e 65 if { $ne
7c70: 77 6c 69 6e 6b 20 3d 3d 20 22 22 20 7d 20 7b 0a wlink == "" } {.
7c80: 09 09 20 20 20 20 20 20 20 20 20 20 20 20 57 61 .. Wa
7c90: 72 6e 57 69 6e 20 22 4c 69 6e 6b 20 74 61 62 20 rnWin "Link tab
7ca0: 6e 61 6d 65 20 63 61 6e 6e 6f 74 20 62 65 20 76 name cannot be v
7cb0: 6f 69 64 22 20 24 77 0a 09 09 20 20 20 20 20 20 oid" $w...
7cc0: 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 5b 6c 73 } elseif { [ls
7cd0: 65 61 72 63 68 20 24 6c 69 6e 6b 73 20 24 6e 65 earch $links $ne
7ce0: 77 6c 69 6e 6b 5d 20 21 3d 20 2d 31 20 7d 20 7b wlink] != -1 } {
7cf0: 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 57 ... W
7d00: 61 72 6e 57 69 6e 20 22 4c 69 6e 6b 20 74 61 62 arnWin "Link tab
7d10: 20 6e 61 6d 65 20 27 24 6e 65 77 6c 69 6e 6b 27 name '$newlink'
7d20: 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 73 22 already exists"
7d30: 20 24 77 0a 09 09 20 20 20 20 20 20 20 20 7d 20 $w... }
7d40: 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 20 20 20 else {...
7d50: 20 20 20 20 20 44 69 61 6c 6f 67 57 69 6e 43 52 DialogWinCR
7d60: 3a 3a 44 65 73 74 72 6f 79 57 69 6e 64 6f 77 0a ::DestroyWindow.
7d70: 09 09 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 .. na
7d80: 6d 65 73 70 61 63 65 20 64 65 6c 65 74 65 20 3a mespace delete :
7d90: 3a 44 69 61 6c 6f 67 57 69 6e 43 52 0a 09 09 20 :DialogWinCR...
7da0: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break
7db0: 0a 09 09 20 20 20 20 20 20 20 20 7d 0a 09 09 20 ... }...
7dc0: 20 20 20 7d 0a 09 09 7d 0a 09 09 73 65 74 20 61 }...}...set a
7dd0: 63 74 69 6f 6e 20 5b 44 69 61 6c 6f 67 57 69 6e ction [DialogWin
7de0: 43 52 3a 3a 57 61 69 74 46 6f 72 57 69 6e 64 6f CR::WaitForWindo
7df0: 77 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 w].. }.. s
7e00: 65 74 20 70 6f 73 20 5b 6c 73 65 61 72 63 68 20 et pos [lsearch
7e10: 24 6c 69 6e 6b 73 20 24 63 75 72 72 65 6e 74 6c $links $currentl
7e20: 69 6e 6b 5d 0a 09 20 20 20 20 66 6f 72 65 61 63 ink].. foreac
7e30: 68 20 69 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 h i [array names
7e40: 20 64 61 74 61 4c 20 2a 2c 24 63 75 72 72 65 6e dataL *,$curren
7e50: 74 6c 69 6e 6b 2c 2a 5d 20 7b 0a 09 09 72 65 67 tlink,*] {...reg
7e60: 65 78 70 20 7b 28 5b 5e 2c 5d 2b 29 2c 5b 5e 2c exp {([^,]+),[^,
7e70: 5d 2b 2c 28 5b 5e 2c 5d 2b 29 7d 20 24 69 20 7b ]+,([^,]+)} $i {
7e80: 7d 20 64 72 20 76 0a 09 09 73 65 74 20 64 61 74 } dr v...set dat
7e90: 61 4c 28 24 64 72 2c 24 6e 65 77 6c 69 6e 6b 2c aL($dr,$newlink,
7ea0: 24 76 29 20 24 64 61 74 61 4c 28 24 69 29 0a 09 $v) $dataL($i)..
7eb0: 09 75 6e 73 65 74 20 64 61 74 61 4c 28 24 69 29 .unset dataL($i)
7ec0: 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 .. }.. set
7ed0: 20 6c 69 6e 6b 73 20 5b 6c 72 65 70 6c 61 63 65 links [lreplace
7ee0: 20 24 6c 69 6e 6b 73 20 24 70 6f 73 20 24 70 6f $links $pos $po
7ef0: 73 20 24 6e 65 77 6c 69 6e 6b 5d 0a 09 7d 0a 20 s $newlink]..}.
7f00: 20 20 20 7d 0a 20 20 20 20 73 79 6e 63 74 6f 55 }. synctoU
7f10: 49 0a 7d 0a 0a 0a 70 72 6f 63 20 63 70 72 6f 6a I.}...proc cproj
7f20: 65 63 74 3a 3a 55 70 64 61 74 65 53 63 72 69 70 ect::UpdateScrip
7f30: 74 74 61 62 73 20 7b 7d 20 7b 0a 20 20 20 20 76 ttabs {} {. v
7f40: 61 72 69 61 62 6c 65 20 6e 6f 74 65 62 6f 6f 6b ariable notebook
7f50: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 73 63 . variable sc
7f60: 72 69 70 74 74 61 62 73 0a 0a 20 20 20 20 69 66 ripttabs.. if
7f70: 20 7b 20 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 { ![info exists
7f80: 20 6e 6f 74 65 62 6f 6f 6b 5d 20 7c 7c 20 21 5b notebook] || ![
7f90: 77 69 6e 66 6f 20 65 78 69 73 74 73 20 24 6e 6f winfo exists $no
7fa0: 74 65 62 6f 6f 6b 5d 20 7d 20 7b 20 72 65 74 75 tebook] } { retu
7fb0: 72 6e 20 7d 0a 20 20 20 20 69 66 20 7b 20 21 5b rn }. if { ![
7fc0: 69 6e 66 6f 20 65 78 69 73 74 73 20 73 63 72 69 info exists scri
7fd0: 70 74 74 61 62 73 5d 20 7d 20 7b 20 73 65 74 20 pttabs] } { set
7fe0: 73 63 72 69 70 74 74 61 62 73 20 53 63 72 69 70 scripttabs Scrip
7ff0: 74 20 7d 0a 0a 20 20 20 20 73 65 74 20 70 61 67 t }.. set pag
8000: 65 73 20 5b 24 6e 6f 74 65 62 6f 6f 6b 20 70 61 es [$notebook pa
8010: 67 65 73 20 31 20 65 6e 64 2d 31 5d 0a 0a 20 20 ges 1 end-1]..
8020: 20 20 66 6f 72 65 61 63 68 20 69 20 24 70 61 67 foreach i $pag
8030: 65 73 20 7b 0a 09 69 66 20 7b 20 5b 73 74 72 69 es {..if { [stri
8040: 6e 67 20 6d 61 74 63 68 20 53 63 72 69 70 74 2a ng match Script*
8050: 20 24 69 5d 20 7d 20 7b 0a 09 20 20 20 20 24 6e $i] } {.. $n
8060: 6f 74 65 62 6f 6f 6b 20 64 65 6c 65 74 65 20 24 otebook delete $
8070: 69 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 66 i..}. }. f
8080: 6f 72 65 61 63 68 20 69 20 24 73 63 72 69 70 74 oreach i $script
8090: 74 61 62 73 20 7b 0a 09 72 65 67 73 75 62 20 2d tabs {..regsub -
80a0: 61 6c 6c 20 7b 5c 57 7d 20 24 69 20 7b 58 7d 20 all {\W} $i {X}
80b0: 70 61 67 65 0a 09 73 65 74 20 66 20 5b 24 6e 6f page..set f [$no
80c0: 74 65 62 6f 6f 6b 20 69 6e 73 65 72 74 20 65 6e tebook insert en
80d0: 64 2d 31 20 24 70 61 67 65 20 2d 74 65 78 74 20 d-1 $page -text
80e0: 24 69 5d 0a 09 41 64 64 53 63 72 69 70 74 74 61 $i]..AddScriptta
80f0: 62 20 24 66 20 24 69 0a 20 20 20 20 7d 0a 7d 0a b $f $i. }.}.
8100: 0a 70 72 6f 63 20 63 70 72 6f 6a 65 63 74 3a 3a .proc cproject::
8110: 53 63 72 69 70 74 54 61 62 43 6f 6c 6f 72 69 7a ScriptTabColoriz
8120: 65 20 7b 20 74 78 74 20 63 6f 6d 6d 61 6e 64 20 e { txt command
8130: 61 72 67 73 20 7d 20 7b 0a 20 20 20 20 0a 20 20 args } {. .
8140: 20 20 69 66 20 7b 20 5b 72 65 67 65 78 70 20 7b if { [regexp {
8150: 5e 28 69 6e 73 7c 64 65 6c 29 7d 20 24 63 6f 6d ^(ins|del)} $com
8160: 6d 61 6e 64 5d 20 7d 20 7b 0a 09 52 61 6d 44 65 mand] } {..RamDe
8170: 62 75 67 67 65 72 3a 3a 43 6f 6c 6f 72 69 7a 65 bugger::Colorize
8180: 53 6c 6f 77 20 24 74 78 74 0a 20 20 20 20 7d 0a Slow $txt. }.
8190: 7d 0a 0a 70 72 6f 63 20 63 70 72 6f 6a 65 63 74 }..proc cproject
81a0: 3a 3a 41 64 64 53 63 72 69 70 74 74 61 62 20 7b ::AddScripttab {
81b0: 20 66 20 73 63 72 69 70 74 74 61 62 20 7d 20 7b f scripttab } {
81c0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6c 69 . variable li
81d0: 6e 6b 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 nks. variable
81e0: 20 64 65 62 75 67 72 65 6c 65 61 73 65 0a 0a 20 debugrelease..
81f0: 20 20 20 54 69 74 6c 65 46 72 61 6d 65 20 24 66 TitleFrame $f
8200: 2e 66 30 20 2d 74 65 78 74 20 22 63 6f 6e 74 65 .f0 -text "conte
8210: 6e 74 73 22 20 2d 67 72 69 64 20 22 30 20 6e 65 nts" -grid "0 ne
8220: 77 73 22 0a 20 20 20 20 73 65 74 20 66 30 20 5b ws". set f0 [
8230: 24 66 2e 66 30 20 67 65 74 66 72 61 6d 65 5d 0a $f.f0 getframe].
8240: 0a 20 20 20 20 73 65 74 20 68 65 6c 70 74 65 78 . set helptex
8250: 74 20 22 22 0a 20 20 20 20 61 70 70 65 6e 64 20 t "". append
8260: 68 65 6c 70 74 65 78 74 20 22 23 20 49 74 20 69 helptext "# It i
8270: 73 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 69 6e s possible to in
8280: 63 6c 75 64 65 20 61 20 54 43 4c 20 73 63 72 69 clude a TCL scri
8290: 70 74 20 68 65 72 65 5c 6e 22 0a 20 20 20 20 61 pt here\n". a
82a0: 70 70 65 6e 64 20 68 65 6c 70 74 65 78 74 20 22 ppend helptext "
82b0: 23 20 69 74 20 77 69 6c 6c 20 62 65 20 65 78 65 # it will be exe
82c0: 63 75 74 65 64 20 65 69 74 68 65 72 20 61 75 74 cuted either aut
82d0: 6f 6d 61 74 69 63 61 6c 6c 79 20 6f 72 5c 6e 22 omatically or\n"
82e0: 0a 20 20 20 20 61 70 70 65 6e 64 20 68 65 6c 70 . append help
82f0: 74 65 78 74 20 22 23 20 6d 61 6e 75 61 6c 6c 79 text "# manually
8300: 2c 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 63 , depending on c
8310: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 20 49 6e onfiguration. In
8320: 20 74 68 69 73 5c 6e 22 0a 20 20 20 20 61 70 70 this\n". app
8330: 65 6e 64 20 68 65 6c 70 74 65 78 74 20 22 23 20 end helptext "#
8340: 6c 61 74 74 65 72 20 63 61 73 65 2c 20 69 74 20 latter case, it
8350: 69 73 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 75 is possible to u
8360: 73 65 20 69 74 20 61 73 20 61 20 4e 4f 54 45 53 se it as a NOTES
8370: 5c 6e 22 0a 20 20 20 20 61 70 70 65 6e 64 20 68 \n". append h
8380: 65 6c 70 74 65 78 74 20 22 23 20 73 74 6f 72 61 elptext "# stora
8390: 67 65 20 70 6c 61 63 65 5c 6e 5c 6e 22 0a 20 20 ge place\n\n".
83a0: 20 20 61 70 70 65 6e 64 20 68 65 6c 70 74 65 78 append helptex
83b0: 74 20 22 23 20 41 56 41 49 4c 41 42 4c 45 20 56 t "# AVAILABLE V
83c0: 41 52 49 41 42 4c 45 53 5c 6e 22 0a 20 20 20 20 ARIABLES\n".
83d0: 61 70 70 65 6e 64 20 68 65 6c 70 74 65 78 74 20 append helptext
83e0: 22 23 20 5c 24 50 72 6f 6a 65 63 74 44 69 72 3a "# \$ProjectDir:
83f0: 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 77 the directory w
8400: 68 65 72 65 20 74 68 65 20 70 72 6f 6a 65 63 74 here the project
8410: 20 69 73 5c 6e 22 0a 20 20 20 20 61 70 70 65 6e is\n". appen
8420: 64 20 68 65 6c 70 74 65 78 74 20 22 23 20 5c 24 d helptext "# \$
8430: 4f 62 6a 65 63 74 73 44 69 72 3a 20 74 68 65 20 ObjectsDir: the
8440: 64 69 72 65 63 74 6f 72 79 20 77 68 65 72 65 20 directory where
8450: 74 68 65 20 6f 62 6a 65 63 74 20 66 69 6c 65 73 the object files
8460: 20 61 72 65 5c 6e 22 0a 0a 20 20 20 20 73 65 74 are\n".. set
8470: 20 73 77 20 5b 53 63 72 6f 6c 6c 65 64 57 69 6e sw [ScrolledWin
8480: 64 6f 77 20 24 66 30 2e 6c 66 20 2d 72 65 6c 69 dow $f0.lf -reli
8490: 65 66 20 73 75 6e 6b 65 6e 20 2d 62 6f 72 64 65 ef sunken -borde
84a0: 72 77 69 64 74 68 20 30 20 2d 67 72 69 64 20 22 rwidth 0 -grid "
84b0: 30 20 6e 73 65 77 22 5d 0a 20 20 20 20 73 75 70 0 nsew"]. sup
84c0: 65 72 74 65 78 74 3a 3a 74 65 78 74 20 24 73 77 ertext::text $sw
84d0: 2e 74 65 78 74 20 2d 77 72 61 70 20 6e 6f 6e 65 .text -wrap none
84e0: 20 2d 73 79 6e 63 76 61 72 20 63 70 72 6f 6a 65 -syncvar cproje
84f0: 63 74 3a 3a 74 68 69 73 64 61 74 61 53 28 24 73 ct::thisdataS($s
8500: 63 72 69 70 74 74 61 62 2c 73 63 72 69 70 74 29 cripttab,script)
8510: 20 5c 0a 09 20 20 20 20 2d 68 65 69 67 68 74 20 \.. -height
8520: 34 20 2d 62 67 20 77 68 69 74 65 20 2d 70 6f 73 4 -bg white -pos
8530: 74 70 72 6f 63 20 22 63 70 72 6f 6a 65 63 74 3a tproc "cproject:
8540: 3a 53 63 72 69 70 74 54 61 62 43 6f 6c 6f 72 69 :ScriptTabColori
8550: 7a 65 20 24 73 77 2e 74 65 78 74 22 0a 20 20 20 ze $sw.text".
8560: 20 24 73 77 20 73 65 74 77 69 64 67 65 74 20 24 $sw setwidget $
8570: 73 77 2e 74 65 78 74 0a 0a 20 20 20 20 62 69 6e sw.text.. bin
8580: 64 20 24 73 77 2e 74 65 78 74 20 3c 52 65 74 75 d $sw.text <Retu
8590: 72 6e 3e 20 22 5b 62 69 6e 64 20 54 65 78 74 20 rn> "[bind Text
85a0: 3c 52 65 74 75 72 6e 3e 5d 20 3b 62 72 65 61 6b <Return>] ;break
85b0: 22 0a 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 ".. foreach i
85c0: 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 20 63 70 [array names cp
85d0: 72 6f 6a 65 63 74 3a 3a 64 61 74 61 53 20 2a 2c roject::dataS *,
85e0: 73 63 72 69 70 74 5d 20 7b 0a 09 69 66 20 7b 20 script] {..if {
85f0: 24 63 70 72 6f 6a 65 63 74 3a 3a 64 61 74 61 53 $cproject::dataS
8600: 28 24 69 29 20 3d 3d 20 22 68 65 6c 70 22 20 7d ($i) == "help" }
8610: 20 7b 0a 09 20 20 20 20 73 65 74 20 63 70 72 6f {.. set cpro
8620: 6a 65 63 74 3a 3a 64 61 74 61 53 28 24 69 29 20 ject::dataS($i)
8630: 24 68 65 6c 70 74 65 78 74 0a 09 7d 0a 20 20 20 $helptext..}.
8640: 20 7d 0a 20 20 20 20 66 6f 72 65 61 63 68 20 69 }. foreach i
8650: 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 20 63 70 [array names cp
8660: 72 6f 6a 65 63 74 3a 3a 64 61 74 61 53 20 24 64 roject::dataS $d
8670: 65 62 75 67 72 65 6c 65 61 73 65 2c 2a 2c 73 63 ebugrelease,*,sc
8680: 72 69 70 74 5d 20 7b 0a 09 72 65 67 65 78 70 20 ript] {..regexp
8690: 7b 5e 5b 5e 2c 5d 2b 2c 28 2e 2a 29 7d 20 24 69 {^[^,]+,(.*)} $i
86a0: 20 7b 7d 20 70 72 6f 70 0a 09 73 65 74 20 63 70 {} prop..set cp
86b0: 72 6f 6a 65 63 74 3a 3a 74 68 69 73 64 61 74 61 roject::thisdata
86c0: 53 28 24 70 72 6f 70 29 20 24 63 70 72 6f 6a 65 S($prop) $cproje
86d0: 63 74 3a 3a 64 61 74 61 53 28 24 69 29 0a 20 20 ct::dataS($i).
86e0: 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 63 70 }. if { $cp
86f0: 72 6f 6a 65 63 74 3a 3a 74 68 69 73 64 61 74 61 roject::thisdata
8700: 53 28 24 73 63 72 69 70 74 74 61 62 2c 73 63 72 S($scripttab,scr
8710: 69 70 74 29 20 3d 3d 20 22 68 65 6c 70 22 20 7d ipt) == "help" }
8720: 20 7b 0a 09 73 65 74 20 63 70 72 6f 6a 65 63 74 {..set cproject
8730: 3a 3a 74 68 69 73 64 61 74 61 53 28 24 73 63 72 ::thisdataS($scr
8740: 69 70 74 74 61 62 2c 73 63 72 69 70 74 29 20 24 ipttab,script) $
8750: 68 65 6c 70 74 65 78 74 0a 20 20 20 20 7d 0a 0a helptext. }..
8760: 20 20 20 20 73 65 74 20 62 62 6f 78 20 5b 42 75 set bbox [Bu
8770: 74 74 6f 6e 42 6f 78 20 24 66 30 2e 62 62 6f 78 ttonBox $f0.bbox
8780: 31 20 2d 73 70 61 63 69 6e 67 20 30 20 2d 70 61 1 -spacing 0 -pa
8790: 64 78 20 31 20 2d 70 61 64 79 20 31 20 2d 68 6f dx 1 -pady 1 -ho
87a0: 6d 6f 67 65 6e 65 6f 75 73 20 31 20 2d 67 72 69 mogeneous 1 -gri
87b0: 64 20 22 30 20 77 6e 22 5d 0a 20 20 20 20 24 62 d "0 wn"]. $b
87c0: 62 6f 78 20 61 64 64 20 2d 69 6d 61 67 65 20 61 box add -image a
87d0: 63 74 74 69 63 6b 31 36 20 5c 0a 09 20 2d 68 69 cttick16 \.. -hi
87e0: 67 68 6c 69 67 68 74 74 68 69 63 6b 6e 65 73 73 ghlightthickness
87f0: 20 30 20 2d 74 61 6b 65 66 6f 63 75 73 20 30 20 0 -takefocus 0
8800: 2d 72 65 6c 69 65 66 20 6c 69 6e 6b 20 2d 62 6f -relief link -bo
8810: 72 64 65 72 77 69 64 74 68 20 31 20 2d 70 61 64 rderwidth 1 -pad
8820: 78 20 31 20 2d 70 61 64 79 20 31 20 5c 0a 09 20 x 1 -pady 1 \..
8830: 2d 68 65 6c 70 74 65 78 74 20 5b 5f 20 22 43 6c -helptext [_ "Cl
8840: 65 61 72 20 74 65 78 74 20 61 6e 64 20 61 64 64 ear text and add
8850: 20 68 65 6c 70 22 5d 20 5c 0a 09 20 2d 63 6f 6d help"] \.. -com
8860: 6d 61 6e 64 20 22 5b 6c 69 73 74 20 24 73 77 2e mand "[list $sw.
8870: 74 65 78 74 20 64 65 6c 20 31 2e 30 20 65 6e 64 text del 1.0 end
8880: 5d 20 3b 20 5b 6c 69 73 74 20 24 73 77 2e 74 65 ] ; [list $sw.te
8890: 78 74 20 69 6e 73 20 65 6e 64 20 24 68 65 6c 70 xt ins end $help
88a0: 74 65 78 74 5d 22 0a 20 20 20 20 24 62 62 6f 78 text]". $bbox
88b0: 20 61 64 64 20 2d 69 6d 61 67 65 20 61 63 74 63 add -image actc
88c0: 72 6f 73 73 31 36 20 5c 0a 09 20 2d 68 69 67 68 ross16 \.. -high
88d0: 6c 69 67 68 74 74 68 69 63 6b 6e 65 73 73 20 30 lightthickness 0
88e0: 20 2d 74 61 6b 65 66 6f 63 75 73 20 30 20 2d 72 -takefocus 0 -r
88f0: 65 6c 69 65 66 20 6c 69 6e 6b 20 2d 62 6f 72 64 elief link -bord
8900: 65 72 77 69 64 74 68 20 31 20 2d 70 61 64 78 20 erwidth 1 -padx
8910: 31 20 2d 70 61 64 79 20 31 20 5c 0a 09 20 2d 68 1 -pady 1 \.. -h
8920: 65 6c 70 74 65 78 74 20 5b 5f 20 22 43 6c 65 61 elptext [_ "Clea
8930: 72 20 74 65 78 74 22 5d 20 5c 0a 09 20 2d 63 6f r text"] \.. -co
8940: 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 24 73 77 2e mmand [list $sw.
8950: 74 65 78 74 20 64 65 6c 20 31 2e 30 20 65 6e 64 text del 1.0 end
8960: 5d 0a 0a 20 20 20 20 54 69 74 6c 65 46 72 61 6d ].. TitleFram
8970: 65 20 24 66 2e 66 31 20 2d 74 65 78 74 20 22 65 e $f.f1 -text "e
8980: 78 65 63 75 74 65 20 77 68 65 6e 22 20 2d 67 72 xecute when" -gr
8990: 69 64 20 22 30 20 6e 22 0a 20 20 20 20 73 65 74 id "0 n". set
89a0: 20 66 31 20 5b 24 66 2e 66 31 20 67 65 74 66 72 f1 [$f.f1 getfr
89b0: 61 6d 65 5d 0a 0a 20 20 20 20 73 65 74 20 76 61 ame].. set va
89c0: 6c 75 65 73 20 5b 6c 69 73 74 20 22 42 65 66 6f lues [list "Befo
89d0: 72 65 20 63 6f 6d 70 69 6c 65 22 20 22 41 66 74 re compile" "Aft
89e0: 65 72 20 63 6f 6d 70 69 6c 65 22 5d 0a 20 20 20 er compile"].
89f0: 20 66 6f 72 65 61 63 68 20 69 20 24 6c 69 6e 6b foreach i $link
8a00: 73 20 7b 0a 09 6c 61 70 70 65 6e 64 20 76 61 6c s {..lappend val
8a10: 75 65 73 20 22 41 66 74 65 72 20 24 69 22 0a 20 ues "After $i".
8a20: 20 20 20 7d 0a 20 20 20 20 6c 61 70 70 65 6e 64 }. lappend
8a30: 20 76 61 6c 75 65 73 20 2d 2d 2d 20 22 4e 6f 20 values --- "No
8a40: 61 75 74 6f 6d 61 74 69 63 22 0a 0a 20 20 20 20 automatic"..
8a50: 6c 61 62 65 6c 20 24 66 31 2e 6c 20 2d 74 65 78 label $f1.l -tex
8a60: 74 20 22 45 78 65 63 75 74 65 20 73 63 72 69 70 t "Execute scrip
8a70: 74 3a 22 20 2d 67 72 69 64 20 30 0a 20 20 20 20 t:" -grid 0.
8a80: 43 6f 6d 62 6f 42 6f 78 20 24 66 31 2e 63 62 20 ComboBox $f1.cb
8a90: 2d 65 64 69 74 61 62 6c 65 20 30 20 2d 74 65 78 -editable 0 -tex
8aa0: 74 76 61 72 69 61 62 6c 65 20 63 70 72 6f 6a 65 tvariable cproje
8ab0: 63 74 3a 3a 74 68 69 73 64 61 74 61 53 28 24 73 ct::thisdataS($s
8ac0: 63 72 69 70 74 74 61 62 2c 65 78 65 63 75 74 65 cripttab,execute
8ad0: 74 69 6d 65 29 20 5c 0a 09 20 20 20 20 2d 76 61 time) \.. -va
8ae0: 6c 75 65 73 20 24 76 61 6c 75 65 73 20 2d 67 72 lues $values -gr
8af0: 69 64 20 31 0a 0a 20 20 20 20 62 75 74 74 6f 6e id 1.. button
8b00: 20 24 66 31 2e 62 20 2d 74 65 78 74 20 22 45 78 $f1.b -text "Ex
8b10: 65 63 75 74 65 20 6e 6f 77 22 20 2d 77 69 64 74 ecute now" -widt
8b20: 68 20 31 35 20 2d 67 72 69 64 20 22 30 20 32 20 h 15 -grid "0 2
8b30: 70 79 33 22 20 2d 63 6f 6d 6d 61 6e 64 20 5c 0a py3" -command \.
8b40: 09 20 20 20 20 22 63 70 72 6f 6a 65 63 74 3a 3a . "cproject::
8b50: 73 79 6e 63 66 72 6f 6d 55 49 3b 20 63 70 72 6f syncfromUI; cpro
8b60: 6a 65 63 74 3a 3a 45 76 61 6c 53 63 72 69 70 74 ject::EvalScript
8b70: 20 24 66 20 5c 24 63 70 72 6f 6a 65 63 74 3a 3a $f \$cproject::
8b80: 64 65 62 75 67 72 65 6c 65 61 73 65 20 5c 0a 09 debugrelease \..
8b90: 20 20 20 20 5b 6c 69 73 74 20 24 73 63 72 69 70 [list $scrip
8ba0: 74 74 61 62 5d 20 31 22 0a 20 20 20 20 0a 20 20 ttab] 1". .
8bb0: 20 20 73 65 74 20 62 62 6f 78 20 5b 42 75 74 74 set bbox [Butt
8bc0: 6f 6e 42 6f 78 20 24 66 2e 62 62 6f 78 20 2d 73 onBox $f.bbox -s
8bd0: 70 61 63 69 6e 67 20 30 20 2d 70 61 64 78 20 31 pacing 0 -padx 1
8be0: 20 2d 70 61 64 79 20 31 20 2d 68 6f 6d 6f 67 65 -pady 1 -homoge
8bf0: 6e 65 6f 75 73 20 31 20 2d 67 72 69 64 20 22 30 neous 1 -grid "0
8c00: 20 6e 77 22 5d 0a 20 20 20 20 24 62 62 6f 78 20 nw"]. $bbox
8c10: 61 64 64 20 2d 69 6d 61 67 65 20 61 63 74 74 69 add -image actti
8c20: 63 6b 31 36 20 5c 0a 09 20 2d 68 69 67 68 6c 69 ck16 \.. -highli
8c30: 67 68 74 74 68 69 63 6b 6e 65 73 73 20 30 20 2d ghtthickness 0 -
8c40: 74 61 6b 65 66 6f 63 75 73 20 30 20 2d 72 65 6c takefocus 0 -rel
8c50: 69 65 66 20 6c 69 6e 6b 20 2d 62 6f 72 64 65 72 ief link -border
8c60: 77 69 64 74 68 20 31 20 2d 70 61 64 78 20 31 20 width 1 -padx 1
8c70: 2d 70 61 64 79 20 31 20 5c 0a 09 20 2d 68 65 6c -pady 1 \.. -hel
8c80: 70 74 65 78 74 20 5b 5f 20 22 43 72 65 61 74 65 ptext [_ "Create
8c90: 20 6e 65 77 20 73 63 72 69 70 74 20 74 61 62 22 new script tab"
8ca0: 5d 20 5c 0a 09 20 2d 63 6f 6d 6d 61 6e 64 20 5b ] \.. -command [
8cb0: 6c 69 73 74 20 63 70 72 6f 6a 65 63 74 3a 3a 43 list cproject::C
8cc0: 72 65 61 74 65 44 65 6c 65 74 65 53 63 72 69 70 reateDeleteScrip
8cd0: 74 54 61 62 20 24 73 63 72 69 70 74 74 61 62 20 tTab $scripttab
8ce0: 63 72 65 61 74 65 5d 0a 20 20 20 20 24 62 62 6f create]. $bbo
8cf0: 78 20 61 64 64 20 2d 69 6d 61 67 65 20 61 63 74 x add -image act
8d00: 63 72 6f 73 73 31 36 20 5c 0a 09 20 2d 68 69 67 cross16 \.. -hig
8d10: 68 6c 69 67 68 74 74 68 69 63 6b 6e 65 73 73 20 hlightthickness
8d20: 30 20 2d 74 61 6b 65 66 6f 63 75 73 20 30 20 2d 0 -takefocus 0 -
8d30: 72 65 6c 69 65 66 20 6c 69 6e 6b 20 2d 62 6f 72 relief link -bor
8d40: 64 65 72 77 69 64 74 68 20 31 20 2d 70 61 64 78 derwidth 1 -padx
8d50: 20 31 20 2d 70 61 64 79 20 31 20 5c 0a 09 20 2d 1 -pady 1 \.. -
8d60: 68 65 6c 70 74 65 78 74 20 5b 5f 20 22 44 65 6c helptext [_ "Del
8d70: 65 74 65 20 73 63 72 69 70 74 20 74 61 62 22 5d ete script tab"]
8d80: 20 5c 0a 09 20 2d 63 6f 6d 6d 61 6e 64 20 5b 6c \.. -command [l
8d90: 69 73 74 20 63 70 72 6f 6a 65 63 74 3a 3a 43 72 ist cproject::Cr
8da0: 65 61 74 65 44 65 6c 65 74 65 53 63 72 69 70 74 eateDeleteScript
8db0: 54 61 62 20 24 73 63 72 69 70 74 74 61 62 20 64 Tab $scripttab d
8dc0: 65 6c 65 74 65 5d 0a 20 20 20 20 24 62 62 6f 78 elete]. $bbox
8dd0: 20 61 64 64 20 2d 69 6d 61 67 65 20 65 64 69 74 add -image edit
8de0: 31 36 20 5c 0a 09 20 2d 68 69 67 68 6c 69 67 68 16 \.. -highligh
8df0: 74 74 68 69 63 6b 6e 65 73 73 20 30 20 2d 74 61 tthickness 0 -ta
8e00: 6b 65 66 6f 63 75 73 20 30 20 2d 72 65 6c 69 65 kefocus 0 -relie
8e10: 66 20 6c 69 6e 6b 20 2d 62 6f 72 64 65 72 77 69 f link -borderwi
8e20: 64 74 68 20 31 20 2d 70 61 64 78 20 31 20 2d 70 dth 1 -padx 1 -p
8e30: 61 64 79 20 31 20 5c 0a 09 20 2d 68 65 6c 70 74 ady 1 \.. -helpt
8e40: 65 78 74 20 5b 5f 20 22 52 65 6e 61 6d 65 20 73 ext [_ "Rename s
8e50: 63 72 69 70 74 20 74 61 62 22 5d 20 5c 0a 09 20 cript tab"] \..
8e60: 2d 63 6f 6d 6d 61 6e 64 20 5b 6c 69 73 74 20 63 -command [list c
8e70: 70 72 6f 6a 65 63 74 3a 3a 43 72 65 61 74 65 44 project::CreateD
8e80: 65 6c 65 74 65 53 63 72 69 70 74 54 61 62 20 24 eleteScriptTab $
8e90: 73 63 72 69 70 74 74 61 62 20 72 65 6e 61 6d 65 scripttab rename
8ea0: 5d 0a 0a 0a 20 20 20 20 73 75 70 65 72 67 72 69 ]... supergri
8eb0: 64 3a 3a 67 6f 20 24 66 30 0a 20 20 20 20 73 75 d::go $f0. su
8ec0: 70 65 72 67 72 69 64 3a 3a 67 6f 20 24 66 31 0a pergrid::go $f1.
8ed0: 20 20 20 20 73 75 70 65 72 67 72 69 64 3a 3a 67 supergrid::g
8ee0: 6f 20 24 66 0a 7d 0a 0a 70 72 6f 63 20 63 70 72 o $f.}..proc cpr
8ef0: 6f 6a 65 63 74 3a 3a 43 72 65 61 74 65 44 65 6c oject::CreateDel
8f00: 65 74 65 53 63 72 69 70 74 54 61 62 20 7b 20 63 eteScriptTab { c
8f10: 75 72 72 65 6e 74 73 63 72 69 70 74 74 61 62 20 urrentscripttab
8f20: 77 68 61 74 20 7d 20 7b 0a 20 20 20 20 76 61 72 what } {. var
8f30: 69 61 62 6c 65 20 73 63 72 69 70 74 74 61 62 73 iable scripttabs
8f40: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 61 . variable da
8f50: 74 61 53 0a 20 20 20 20 76 61 72 69 61 62 6c 65 taS. variable
8f60: 20 6e 6f 74 65 62 6f 6f 6b 0a 0a 20 20 20 20 73 notebook.. s
8f70: 79 6e 63 66 72 6f 6d 55 49 0a 0a 20 20 20 20 73 yncfromUI.. s
8f80: 77 69 74 63 68 20 24 77 68 61 74 20 7b 0a 09 63 witch $what {..c
8f90: 72 65 61 74 65 20 7b 0a 09 20 20 20 20 73 65 74 reate {.. set
8fa0: 20 6e 75 6d 20 5b 65 78 70 72 20 5b 6c 6c 65 6e num [expr [llen
8fb0: 67 74 68 20 24 73 63 72 69 70 74 74 61 62 73 5d gth $scripttabs]
8fc0: 2b 31 5d 0a 09 20 20 20 20 73 65 74 20 6e 65 77 +1].. set new
8fd0: 73 63 72 69 70 74 74 61 62 20 53 63 72 69 70 74 scripttab Script
8fe0: 24 6e 75 6d 0a 09 20 20 20 20 66 6f 72 65 61 63 $num.. foreac
8ff0: 68 20 69 20 5b 61 72 72 61 79 20 6e 61 6d 65 73 h i [array names
9000: 20 64 61 74 61 53 20 2a 2c 24 63 75 72 72 65 6e dataS *,$curren
9010: 74 73 63 72 69 70 74 74 61 62 2c 2a 5d 20 7b 0a tscripttab,*] {.
9020: 09 09 72 65 67 65 78 70 20 7b 28 5b 5e 2c 5d 2b ..regexp {([^,]+
9030: 29 2c 5b 5e 2c 5d 2b 2c 28 5b 5e 2c 5d 2b 29 7d ),[^,]+,([^,]+)}
9040: 20 24 69 20 7b 7d 20 64 72 20 76 0a 09 09 73 65 $i {} dr v...se
9050: 74 20 64 61 74 61 53 28 24 64 72 2c 24 6e 65 77 t dataS($dr,$new
9060: 73 63 72 69 70 74 74 61 62 2c 24 76 29 20 24 64 scripttab,$v) $d
9070: 61 74 61 53 28 24 69 29 0a 09 20 20 20 20 7d 0a ataS($i).. }.
9080: 09 20 20 20 20 6c 61 70 70 65 6e 64 20 73 63 72 . lappend scr
9090: 69 70 74 74 61 62 73 20 24 6e 65 77 73 63 72 69 ipttabs $newscri
90a0: 70 74 74 61 62 0a 09 20 20 20 20 24 6e 6f 74 65 pttab.. $note
90b0: 62 6f 6f 6b 20 72 61 69 73 65 20 24 6e 65 77 73 book raise $news
90c0: 63 72 69 70 74 74 61 62 0a 09 7d 0a 09 64 65 6c cripttab..}..del
90d0: 65 74 65 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 ete {.. if {
90e0: 5b 6c 6c 65 6e 67 74 68 20 24 73 63 72 69 70 74 [llength $script
90f0: 74 61 62 73 5d 20 3d 3d 20 31 20 7d 20 7b 0a 09 tabs] == 1 } {..
9100: 09 57 61 72 6e 57 69 6e 20 22 45 72 72 6f 72 3a .WarnWin "Error:
9110: 20 54 68 65 72 65 20 6d 75 73 74 20 62 65 20 61 There must be a
9120: 74 20 6c 65 61 73 74 20 6f 6e 65 20 53 63 72 69 t least one Scri
9130: 70 74 20 74 61 62 22 20 24 6e 6f 74 65 62 6f 6f pt tab" $noteboo
9140: 6b 0a 09 09 72 65 74 75 72 6e 0a 09 20 20 20 20 k...return..
9150: 7d 0a 09 20 20 20 20 73 65 74 20 72 65 74 20 5b }.. set ret [
9160: 44 69 61 6c 6f 67 57 69 6e 3a 3a 6d 65 73 73 61 DialogWin::messa
9170: 67 65 42 6f 78 20 2d 64 65 66 61 75 6c 74 20 6f geBox -default o
9180: 6b 20 2d 69 63 6f 6e 20 77 61 72 6e 69 6e 67 20 k -icon warning
9190: 2d 6d 65 73 73 61 67 65 20 5c 0a 09 09 22 41 72 -message \..."Ar
91a0: 65 20 79 6f 75 20 73 75 72 65 20 74 6f 20 64 65 e you sure to de
91b0: 6c 65 74 65 20 73 63 72 69 70 74 20 74 61 62 20 lete script tab
91c0: 27 24 63 75 72 72 65 6e 74 73 63 72 69 70 74 74 '$currentscriptt
91d0: 61 62 27 3f 22 20 2d 70 61 72 65 6e 74 20 24 6e ab'?" -parent $n
91e0: 6f 74 65 62 6f 6f 6b 20 5c 0a 09 09 2d 74 69 74 otebook \...-tit
91f0: 6c 65 20 22 64 65 6c 65 74 65 20 73 63 72 69 70 le "delete scrip
9200: 74 20 74 61 62 22 20 2d 74 79 70 65 20 6f 6b 63 t tab" -type okc
9210: 61 6e 63 65 6c 5d 0a 09 20 20 20 20 69 66 20 7b ancel].. if {
9220: 20 24 72 65 74 20 3d 3d 20 22 63 61 6e 63 65 6c $ret == "cancel
9230: 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d 0a 09 " } { return }..
9240: 20 20 20 20 0a 09 20 20 20 20 73 65 74 20 64 65 .. set de
9250: 6c 70 6f 73 20 5b 6c 73 65 61 72 63 68 20 24 73 lpos [lsearch $s
9260: 63 72 69 70 74 74 61 62 73 20 24 63 75 72 72 65 cripttabs $curre
9270: 6e 74 73 63 72 69 70 74 74 61 62 5d 0a 0a 09 20 ntscripttab]...
9280: 20 20 20 66 6f 72 65 61 63 68 20 69 20 5b 61 72 foreach i [ar
9290: 72 61 79 20 6e 61 6d 65 73 20 64 61 74 61 53 20 ray names dataS
92a0: 2a 2c 24 63 75 72 72 65 6e 74 73 63 72 69 70 74 *,$currentscript
92b0: 74 61 62 2c 2a 5d 20 7b 0a 09 09 75 6e 73 65 74 tab,*] {...unset
92c0: 20 64 61 74 61 53 28 24 69 29 0a 09 20 20 20 20 dataS($i)..
92d0: 7d 0a 09 20 20 20 20 73 65 74 20 73 63 72 69 70 }.. set scrip
92e0: 74 74 61 62 73 20 5b 6c 72 65 70 6c 61 63 65 20 ttabs [lreplace
92f0: 24 73 63 72 69 70 74 74 61 62 73 20 24 64 65 6c $scripttabs $del
9300: 70 6f 73 20 24 64 65 6c 70 6f 73 5d 0a 09 20 20 pos $delpos]..
9310: 20 20 69 66 20 7b 20 24 64 65 6c 70 6f 73 20 3e if { $delpos >
9320: 3d 20 5b 6c 6c 65 6e 67 74 68 20 24 73 63 72 69 = [llength $scri
9330: 70 74 74 61 62 73 5d 20 7d 20 7b 20 73 65 74 20 pttabs] } { set
9340: 64 65 6c 70 6f 73 20 30 20 7d 0a 09 20 20 20 20 delpos 0 }..
9350: 24 6e 6f 74 65 62 6f 6f 6b 20 72 61 69 73 65 20 $notebook raise
9360: 5b 6c 69 6e 64 65 78 20 24 24 73 63 72 69 70 74 [lindex $$script
9370: 74 61 62 73 64 20 24 64 65 6c 70 6f 73 5d 0a 09 tabsd $delpos]..
9380: 7d 0a 09 72 65 6e 61 6d 65 20 7b 0a 09 20 20 20 }..rename {..
9390: 20 43 6f 70 79 4e 61 6d 65 73 70 61 63 65 20 3a CopyNamespace :
93a0: 3a 44 69 61 6c 6f 67 57 69 6e 20 3a 3a 44 69 61 :DialogWin ::Dia
93b0: 6c 6f 67 57 69 6e 43 52 0a 09 20 20 20 20 73 65 logWinCR.. se
93c0: 74 20 66 20 5b 44 69 61 6c 6f 67 57 69 6e 43 52 t f [DialogWinCR
93d0: 3a 3a 49 6e 69 74 20 24 6e 6f 74 65 62 6f 6f 6b ::Init $notebook
93e0: 20 22 45 6e 74 65 72 20 73 63 72 69 70 74 20 74 "Enter script t
93f0: 61 62 20 6e 61 6d 65 22 20 73 65 70 61 72 61 74 ab name" separat
9400: 6f 72 20 22 22 5d 0a 09 20 20 20 20 73 65 74 20 or ""].. set
9410: 77 20 5b 77 69 6e 66 6f 20 74 6f 70 6c 65 76 65 w [winfo topleve
9420: 6c 20 24 66 5d 0a 09 20 20 20 20 0a 09 20 20 20 l $f].. ..
9430: 20 6c 61 62 65 6c 20 24 66 2e 6c 20 2d 74 65 78 label $f.l -tex
9440: 74 20 22 45 6e 74 65 72 20 6e 65 77 20 6e 61 6d t "Enter new nam
9450: 65 20 66 6f 72 20 73 63 72 69 70 74 20 74 61 62 e for script tab
9460: 20 27 24 63 75 72 72 65 6e 74 73 63 72 69 70 74 '$currentscript
9470: 74 61 62 27 22 20 2d 67 72 69 64 20 22 30 20 70 tab'" -grid "0 p
9480: 78 33 20 70 79 33 22 0a 09 20 20 20 20 65 6e 74 x3 py3".. ent
9490: 72 79 20 24 66 2e 65 20 2d 74 65 78 74 76 61 72 ry $f.e -textvar
94a0: 69 61 62 6c 65 20 44 69 61 6c 6f 67 57 69 6e 43 iable DialogWinC
94b0: 52 3a 3a 75 73 65 72 28 6e 61 6d 65 29 20 2d 67 R::user(name) -g
94c0: 72 69 64 20 22 30 20 70 78 31 30 20 70 79 33 22 rid "0 px10 py3"
94d0: 20 2d 77 69 64 74 68 20 33 30 0a 09 20 20 20 20 -width 30..
94e0: 0a 09 20 20 20 20 73 65 74 20 44 69 61 6c 6f 67 .. set Dialog
94f0: 57 69 6e 43 52 3a 3a 75 73 65 72 28 6e 61 6d 65 WinCR::user(name
9500: 29 20 24 63 75 72 72 65 6e 74 73 63 72 69 70 74 ) $currentscript
9510: 74 61 62 0a 09 20 20 20 20 74 6b 54 61 62 54 6f tab.. tkTabTo
9520: 57 69 6e 64 6f 77 20 24 66 2e 65 0a 09 20 20 20 Window $f.e..
9530: 20 73 75 70 65 72 67 72 69 64 3a 3a 67 6f 20 24 supergrid::go $
9540: 66 0a 09 20 20 20 20 62 69 6e 64 20 24 77 20 3c f.. bind $w <
9550: 52 65 74 75 72 6e 3e 20 22 44 69 61 6c 6f 67 57 Return> "DialogW
9560: 69 6e 43 52 3a 3a 49 6e 76 6f 6b 65 4f 4b 22 0a inCR::InvokeOK".
9570: 0a 09 20 20 20 20 73 65 74 20 61 63 74 69 6f 6e .. set action
9580: 20 5b 44 69 61 6c 6f 67 57 69 6e 43 52 3a 3a 43 [DialogWinCR::C
9590: 72 65 61 74 65 57 69 6e 64 6f 77 5d 0a 09 20 20 reateWindow]..
95a0: 20 20 77 68 69 6c 65 20 31 20 7b 0a 09 09 73 77 while 1 {...sw
95b0: 69 74 63 68 20 24 61 63 74 69 6f 6e 20 7b 0a 09 itch $action {..
95c0: 09 20 20 20 20 30 20 7b 0a 09 09 20 20 20 20 20 . 0 {...
95d0: 20 20 20 44 69 61 6c 6f 67 57 69 6e 43 52 3a 3a DialogWinCR::
95e0: 44 65 73 74 72 6f 79 57 69 6e 64 6f 77 0a 09 09 DestroyWindow...
95f0: 20 20 20 20 20 20 20 20 6e 61 6d 65 73 70 61 63 namespac
9600: 65 20 64 65 6c 65 74 65 20 3a 3a 44 69 61 6c 6f e delete ::Dialo
9610: 67 57 69 6e 43 52 0a 09 09 20 20 20 20 20 20 20 gWinCR...
9620: 20 72 65 74 75 72 6e 0a 09 09 20 20 20 20 7d 0a return... }.
9630: 09 09 20 20 20 20 31 20 7b 0a 09 09 20 20 20 20 .. 1 {...
9640: 20 20 20 20 73 65 74 20 6e 65 77 73 63 72 69 70 set newscrip
9650: 74 74 61 62 20 5b 73 74 72 69 6e 67 20 74 72 69 ttab [string tri
9660: 6d 20 24 44 69 61 6c 6f 67 57 69 6e 43 52 3a 3a m $DialogWinCR::
9670: 75 73 65 72 28 6e 61 6d 65 29 5d 0a 09 09 20 20 user(name)]...
9680: 20 20 20 20 20 20 69 66 20 7b 20 24 6e 65 77 73 if { $news
9690: 63 72 69 70 74 74 61 62 20 3d 3d 20 22 22 20 7d cripttab == "" }
96a0: 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 {...
96b0: 20 73 65 74 20 6e 65 77 73 63 72 69 70 74 74 61 set newscriptta
96c0: 62 20 22 53 63 72 69 70 74 22 0a 09 09 20 20 20 b "Script"...
96d0: 20 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b 20 } elseif {
96e0: 21 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 20 22 ![string match "
96f0: 53 63 72 69 70 74 20 2a 22 20 24 6e 65 77 73 63 Script *" $newsc
9700: 72 69 70 74 74 61 62 5d 20 7d 20 7b 0a 09 09 20 ripttab] } {...
9710: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 6e set n
9720: 65 77 73 63 72 69 70 74 74 61 62 20 22 53 63 72 ewscripttab "Scr
9730: 69 70 74 20 24 6e 65 77 73 63 72 69 70 74 74 61 ipt $newscriptta
9740: 62 22 0a 09 09 20 20 20 20 20 20 20 20 7d 0a 09 b"... }..
9750: 09 20 20 20 20 20 20 20 20 69 66 20 7b 20 24 6e . if { $n
9760: 65 77 73 63 72 69 70 74 74 61 62 20 3d 3d 20 22 ewscripttab == "
9770: 22 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 " } {...
9780: 20 20 20 20 57 61 72 6e 57 69 6e 20 22 53 63 72 WarnWin "Scr
9790: 69 70 74 20 74 61 62 20 6e 61 6d 65 20 63 61 6e ipt tab name can
97a0: 6e 6f 74 20 62 65 20 76 6f 69 64 22 20 24 77 0a not be void" $w.
97b0: 09 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
97c0: 69 66 20 7b 20 5b 6c 73 65 61 72 63 68 20 24 73 if { [lsearch $s
97d0: 63 72 69 70 74 74 61 62 73 20 24 6e 65 77 73 63 cripttabs $newsc
97e0: 72 69 70 74 74 61 62 5d 20 21 3d 20 2d 31 20 7d ripttab] != -1 }
97f0: 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 {...
9800: 20 57 61 72 6e 57 69 6e 20 22 53 63 72 69 70 74 WarnWin "Script
9810: 20 74 61 62 20 6e 61 6d 65 20 27 24 6e 65 77 73 tab name '$news
9820: 63 72 69 70 74 74 61 62 27 20 61 6c 72 65 61 64 cripttab' alread
9830: 79 20 65 78 69 73 74 73 22 20 24 77 0a 09 09 20 y exists" $w...
9840: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a } else {.
9850: 09 09 20 20 20 20 20 20 20 20 20 20 20 20 44 69 .. Di
9860: 61 6c 6f 67 57 69 6e 43 52 3a 3a 44 65 73 74 72 alogWinCR::Destr
9870: 6f 79 57 69 6e 64 6f 77 0a 09 09 20 20 20 20 20 oyWindow...
9880: 20 20 20 20 20 20 20 6e 61 6d 65 73 70 61 63 65 namespace
9890: 20 64 65 6c 65 74 65 20 3a 3a 44 69 61 6c 6f 67 delete ::Dialog
98a0: 57 69 6e 43 52 0a 09 09 20 20 20 20 20 20 20 20 WinCR...
98b0: 20 20 20 20 62 72 65 61 6b 0a 09 09 20 20 20 20 break...
98c0: 20 20 20 20 7d 0a 09 09 20 20 20 20 7d 0a 09 09 }... }...
98d0: 7d 0a 09 09 73 65 74 20 61 63 74 69 6f 6e 20 5b }...set action [
98e0: 44 69 61 6c 6f 67 57 69 6e 43 52 3a 3a 57 61 69 DialogWinCR::Wai
98f0: 74 46 6f 72 57 69 6e 64 6f 77 5d 0a 09 20 20 20 tForWindow]..
9900: 20 7d 0a 09 20 20 20 20 73 65 74 20 70 6f 73 20 }.. set pos
9910: 5b 6c 73 65 61 72 63 68 20 24 73 63 72 69 70 74 [lsearch $script
9920: 74 61 62 73 20 24 63 75 72 72 65 6e 74 73 63 72 tabs $currentscr
9930: 69 70 74 74 61 62 5d 0a 09 20 20 20 20 66 6f 72 ipttab].. for
9940: 65 61 63 68 20 69 20 5b 61 72 72 61 79 20 6e 61 each i [array na
9950: 6d 65 73 20 64 61 74 61 53 20 2a 2c 24 63 75 72 mes dataS *,$cur
9960: 72 65 6e 74 73 63 72 69 70 74 74 61 62 2c 2a 5d rentscripttab,*]
9970: 20 7b 0a 09 09 72 65 67 65 78 70 20 7b 28 5b 5e {...regexp {([^
9980: 2c 5d 2b 29 2c 5b 5e 2c 5d 2b 2c 28 5b 5e 2c 5d ,]+),[^,]+,([^,]
9990: 2b 29 7d 20 24 69 20 7b 7d 20 64 72 20 76 0a 09 +)} $i {} dr v..
99a0: 09 73 65 74 20 64 61 74 61 53 28 24 64 72 2c 24 .set dataS($dr,$
99b0: 6e 65 77 73 63 72 69 70 74 74 61 62 2c 24 76 29 newscripttab,$v)
99c0: 20 24 64 61 74 61 53 28 24 69 29 0a 09 09 75 6e $dataS($i)...un
99d0: 73 65 74 20 64 61 74 61 53 28 24 69 29 0a 09 20 set dataS($i)..
99e0: 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 73 63 }.. set sc
99f0: 72 69 70 74 74 61 62 73 20 5b 6c 72 65 70 6c 61 ripttabs [lrepla
9a00: 63 65 20 24 73 63 72 69 70 74 74 61 62 73 20 24 ce $scripttabs $
9a10: 70 6f 73 20 24 70 6f 73 20 24 6e 65 77 73 63 72 pos $pos $newscr
9a20: 69 70 74 74 61 62 5d 0a 09 7d 0a 20 20 20 20 7d ipttab]..}. }
9a30: 0a 20 20 20 20 73 79 6e 63 74 6f 55 49 0a 7d 0a . synctoUI.}.
9a40: 0a 70 72 6f 63 20 63 70 72 6f 6a 65 63 74 3a 3a .proc cproject::
9a50: 41 72 65 46 69 6c 65 73 45 71 75 61 6c 20 7b 20 AreFilesEqual {
9a60: 66 69 6c 65 31 20 66 69 6c 65 32 20 7d 20 7b 0a file1 file2 } {.
9a70: 20 20 20 20 0a 20 20 20 20 69 66 20 7b 20 24 3a . if { $:
9a80: 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 70 6c :tcl_platform(pl
9a90: 61 74 66 6f 72 6d 29 20 3d 3d 20 22 77 69 6e 64 atform) == "wind
9aa0: 6f 77 73 22 20 7d 20 7b 0a 09 72 65 74 75 72 6e ows" } {..return
9ab0: 20 5b 73 74 72 69 6e 67 20 65 71 75 61 6c 20 2d [string equal -
9ac0: 6e 6f 63 61 73 65 20 24 66 69 6c 65 31 20 24 66 nocase $file1 $f
9ad0: 69 6c 65 32 5d 0a 20 20 20 20 7d 20 65 6c 73 65 ile2]. } else
9ae0: 20 7b 0a 09 72 65 74 75 72 6e 20 5b 73 74 72 69 {..return [stri
9af0: 6e 67 20 65 71 75 61 6c 20 24 66 69 6c 65 31 20 ng equal $file1
9b00: 24 66 69 6c 65 32 5d 0a 20 20 20 20 7d 0a 7d 0a $file2]. }.}.
9b10: 0a 70 72 6f 63 20 63 70 72 6f 6a 65 63 74 3a 3a .proc cproject::
9b20: 43 6f 6e 76 65 72 74 54 6f 52 65 6c 61 74 69 76 ConvertToRelativ
9b30: 65 20 7b 20 64 69 72 20 66 69 6c 65 20 7d 20 7b e { dir file } {
9b40: 0a 0a 20 20 20 20 73 65 74 20 6c 69 73 74 31 20 .. set list1
9b50: 5b 66 69 6c 65 20 73 70 6c 69 74 20 24 64 69 72 [file split $dir
9b60: 5d 0a 20 20 20 20 73 65 74 20 6c 69 73 74 32 20 ]. set list2
9b70: 5b 66 69 6c 65 20 73 70 6c 69 74 20 24 66 69 6c [file split $fil
9b80: 65 5d 0a 0a 20 20 20 20 66 6f 72 20 7b 20 73 65 e].. for { se
9b90: 74 20 69 20 30 20 7d 20 7b 20 24 69 20 3c 20 5b t i 0 } { $i < [
9ba0: 6c 6c 65 6e 67 74 68 20 24 6c 69 73 74 32 5d 20 llength $list2]
9bb0: 7d 20 7b 20 69 6e 63 72 20 69 20 7d 20 7b 0a 09 } { incr i } {..
9bc0: 69 66 20 7b 20 21 5b 41 72 65 46 69 6c 65 73 45 if { ![AreFilesE
9bd0: 71 75 61 6c 20 5b 6c 69 6e 64 65 78 20 24 6c 69 qual [lindex $li
9be0: 73 74 31 20 24 69 5d 20 5b 6c 69 6e 64 65 78 20 st1 $i] [lindex
9bf0: 24 6c 69 73 74 32 20 24 69 5d 5d 20 7d 20 7b 0a $list2 $i]] } {.
9c00: 09 20 20 20 20 62 72 65 61 6b 0a 09 7d 0a 20 20 . break..}.
9c10: 20 20 7d 0a 20 20 20 20 73 65 74 20 6c 69 73 74 }. set list
9c20: 72 65 73 20 22 22 0a 20 20 20 20 66 6f 72 20 7b res "". for {
9c30: 20 73 65 74 20 6a 20 24 69 20 7d 20 7b 20 24 6a set j $i } { $j
9c40: 20 3c 20 5b 6c 6c 65 6e 67 74 68 20 24 6c 69 73 < [llength $lis
9c50: 74 31 5d 20 7d 20 7b 20 69 6e 63 72 20 6a 20 7d t1] } { incr j }
9c60: 20 7b 0a 09 6c 61 70 70 65 6e 64 20 6c 69 73 74 {..lappend list
9c70: 72 65 73 20 2e 2e 0a 20 20 20 20 7d 0a 20 20 20 res ... }.
9c80: 20 66 6f 72 20 7b 20 73 65 74 20 6a 20 24 69 20 for { set j $i
9c90: 7d 20 7b 20 24 6a 20 3c 20 5b 6c 6c 65 6e 67 74 } { $j < [llengt
9ca0: 68 20 24 6c 69 73 74 32 5d 20 7d 20 7b 20 69 6e h $list2] } { in
9cb0: 63 72 20 6a 20 7d 20 7b 0a 09 6c 61 70 70 65 6e cr j } {..lappen
9cc0: 64 20 6c 69 73 74 72 65 73 20 5b 6c 69 6e 64 65 d listres [linde
9cd0: 78 20 24 6c 69 73 74 32 20 24 6a 5d 0a 20 20 20 x $list2 $j].
9ce0: 20 7d 0a 20 20 20 20 69 66 20 7b 20 24 6c 69 73 }. if { $lis
9cf0: 74 72 65 73 20 3d 3d 20 22 22 20 7d 20 7b 20 72 tres == "" } { r
9d00: 65 74 75 72 6e 20 2e 20 7d 0a 20 20 20 20 72 65 eturn . }. re
9d10: 74 75 72 6e 20 5b 65 76 61 6c 20 66 69 6c 65 20 turn [eval file
9d20: 6a 6f 69 6e 20 24 6c 69 73 74 72 65 73 5d 0a 7d join $listres].}
9d30: 0a 0a 70 72 6f 63 20 63 70 72 6f 6a 65 63 74 3a ..proc cproject:
9d40: 3a 49 73 50 72 6f 6a 65 63 74 4e 61 6d 65 4f 6b :IsProjectNameOk
9d50: 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 {} {. variab
9d60: 6c 65 20 70 72 6f 6a 65 63 74 0a 20 20 20 20 76 le project. v
9d70: 61 72 69 61 62 6c 65 20 6e 6f 74 65 62 6f 6f 6b ariable notebook
9d80: 0a 0a 20 20 20 20 69 66 20 7b 20 5b 69 6e 66 6f .. if { [info
9d90: 20 65 78 69 73 74 73 20 6e 6f 74 65 62 6f 6f 6b exists notebook
9da0: 5d 20 26 26 20 5b 77 69 6e 66 6f 20 65 78 69 73 ] && [winfo exis
9db0: 74 73 20 6e 6f 74 65 62 6f 6f 6b 5d 20 7d 20 7b ts notebook] } {
9dc0: 0a 09 73 65 74 20 77 20 5b 77 69 6e 66 6f 20 74 ..set w [winfo t
9dd0: 6f 70 6c 65 76 65 6c 20 24 6e 6f 74 65 62 6f 6f oplevel $noteboo
9de0: 6b 5d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 20 k]. } else {
9df0: 73 65 74 20 77 20 2e 20 7d 0a 0a 20 20 20 20 69 set w . }.. i
9e00: 66 20 7b 20 5b 73 74 72 69 6e 67 20 74 72 69 6d f { [string trim
9e10: 20 24 70 72 6f 6a 65 63 74 5d 20 3d 3d 20 22 22 $project] == ""
9e20: 20 7d 20 7b 0a 09 57 61 72 6e 57 69 6e 20 22 44 } {..WarnWin "D
9e30: 65 66 69 6e 65 20 61 20 70 72 6f 6a 65 63 74 20 efine a project
9e40: 6e 61 6d 65 20 62 65 66 6f 72 65 20 65 6e 74 65 name before ente
9e50: 72 69 6e 67 20 64 61 74 61 22 20 24 77 0a 09 72 ring data" $w..r
9e60: 65 74 75 72 6e 20 2d 63 6f 64 65 20 72 65 74 75 eturn -code retu
9e70: 72 6e 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 rn. }. if
9e80: 7b 20 5b 66 69 6c 65 20 70 61 74 68 74 79 70 65 { [file pathtype
9e90: 20 24 70 72 6f 6a 65 63 74 5d 20 21 3d 20 22 61 $project] != "a
9ea0: 62 73 6f 6c 75 74 65 22 20 7d 20 7b 0a 09 73 65 bsolute" } {..se
9eb0: 74 20 70 72 6f 6a 65 63 74 20 5b 66 69 6c 65 20 t project [file
9ec0: 6a 6f 69 6e 20 5b 70 77 64 5d 20 24 70 72 6f 6a join [pwd] $proj
9ed0: 65 63 74 5d 0a 09 69 66 20 7b 20 21 5b 66 69 6c ect]..if { ![fil
9ee0: 65 20 69 73 64 69 72 20 5b 66 69 6c 65 20 64 69 e isdir [file di
9ef0: 72 6e 61 6d 65 20 24 70 72 6f 6a 65 63 74 5d 5d rname $project]]
9f00: 20 7d 20 7b 0a 09 20 20 20 20 57 61 72 6e 57 69 } {.. WarnWi
9f10: 6e 20 22 50 72 6f 6a 65 63 74 20 70 61 74 68 6e n "Project pathn
9f20: 61 6d 65 20 69 73 20 6e 6f 74 20 63 6f 72 72 65 ame is not corre
9f30: 63 74 22 20 24 77 0a 09 20 20 20 20 72 65 74 75 ct" $w.. retu
9f40: 72 6e 20 2d 63 6f 64 65 20 72 65 74 75 72 6e 0a rn -code return.
9f50: 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 .}. }. ret
9f60: 75 72 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d urn [file dirnam
9f70: 65 20 24 70 72 6f 6a 65 63 74 5d 0a 7d 0a 0a 70 e $project].}..p
9f80: 72 6f 63 20 63 70 72 6f 6a 65 63 74 3a 3a 41 64 roc cproject::Ad
9f90: 64 4d 6f 64 46 69 6c 65 73 20 7b 20 6c 69 73 74 dModFiles { list
9fa0: 62 6f 78 20 77 68 61 74 20 7d 20 7b 0a 20 20 20 box what } {.
9fb0: 20 76 61 72 69 61 62 6c 65 20 70 72 6f 6a 65 63 variable projec
9fc0: 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 66 t. variable f
9fd0: 69 6c 65 73 0a 20 20 20 20 76 61 72 69 61 62 6c iles. variabl
9fe0: 65 20 67 72 6f 75 70 0a 0a 20 20 20 20 73 65 74 e group.. set
9ff0: 20 70 72 6f 6a 65 63 74 64 69 72 20 5b 49 73 50 projectdir [IsP
a000: 72 6f 6a 65 63 74 4e 61 6d 65 4f 6b 5d 0a 0a 20 rojectNameOk]..
a010: 20 20 20 73 77 69 74 63 68 20 24 77 68 61 74 20 switch $what
a020: 7b 0a 09 22 76 69 65 77 22 20 7b 0a 09 20 20 20 {.."view" {..
a030: 20 69 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 5b if { [llength [
a040: 24 6c 69 73 74 62 6f 78 20 63 75 72 73 65 6c 65 $listbox cursele
a050: 63 74 69 6f 6e 5d 5d 20 21 3d 20 31 20 7d 20 7b ction]] != 1 } {
a060: 0a 09 09 57 61 72 6e 57 69 6e 20 22 45 72 72 6f ...WarnWin "Erro
a070: 72 3a 20 53 65 6c 65 63 74 20 6a 75 73 74 20 6f r: Select just o
a080: 6e 65 20 66 69 6c 65 20 74 6f 20 73 65 65 20 69 ne file to see i
a090: 74 22 20 24 6c 69 73 74 62 6f 78 0a 09 09 72 65 t" $listbox...re
a0a0: 74 75 72 6e 0a 09 20 20 20 20 7d 0a 09 20 20 20 turn.. }..
a0b0: 20 66 6f 72 65 61 63 68 20 22 66 69 6c 65 5f 69 foreach "file_i
a0c0: 6e 20 74 79 70 65 20 67 72 6f 75 70 5f 69 6e 20 n type group_in
a0d0: 70 61 74 68 22 20 5b 6c 69 6e 64 65 78 20 24 66 path" [lindex $f
a0e0: 69 6c 65 73 20 5b 24 6c 69 73 74 62 6f 78 20 63 iles [$listbox c
a0f0: 75 72 73 65 6c 65 63 74 69 6f 6e 5d 5d 20 62 72 urselection]] br
a100: 65 61 6b 0a 09 20 20 20 20 73 65 74 20 66 69 6c eak.. set fil
a110: 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 66 69 e [file join [fi
a120: 6c 65 20 64 69 72 6e 61 6d 65 20 24 70 72 6f 6a le dirname $proj
a130: 65 63 74 5d 20 24 70 61 74 68 20 24 66 69 6c 65 ect] $path $file
a140: 5f 69 6e 5d 0a 09 20 20 20 20 52 61 6d 44 65 62 _in].. RamDeb
a150: 75 67 67 65 72 3a 3a 4f 70 65 6e 46 69 6c 65 46 ugger::OpenFileF
a160: 20 5b 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 66 [RamDebugger::f
a170: 69 6c 65 6e 6f 72 6d 61 6c 69 7a 65 20 24 66 69 ilenormalize $fi
a180: 6c 65 5d 0a 09 7d 0a 09 22 66 69 6c 65 22 20 7b le]..}.."file" {
a190: 0a 09 20 20 20 20 73 65 74 20 74 79 70 65 73 20 .. set types
a1a0: 7b 0a 09 09 7b 7b 43 20 53 6f 75 72 63 65 20 46 {...{{C Source F
a1b0: 69 6c 65 73 7d 20 7b 2e 63 20 2e 63 63 20 2e 68 iles} {.c .cc .h
a1c0: 7d 20 7d 0a 09 09 7b 7b 41 6c 6c 20 46 69 6c 65 } }...{{All File
a1d0: 73 7d 20 2a 20 7d 0a 09 20 20 20 20 7d 0a 09 20 s} * }.. }..
a1e0: 20 20 20 73 65 74 20 66 69 6c 65 20 5b 74 6b 5f set file [tk_
a1f0: 67 65 74 4f 70 65 6e 46 69 6c 65 20 2d 66 69 6c getOpenFile -fil
a200: 65 74 79 70 65 73 20 24 74 79 70 65 73 20 2d 69 etypes $types -i
a210: 6e 69 74 69 61 6c 64 69 72 20 24 70 72 6f 6a 65 nitialdir $proje
a220: 63 74 64 69 72 20 2d 70 61 72 65 6e 74 20 24 6c ctdir -parent $l
a230: 69 73 74 62 6f 78 20 5c 0a 09 09 2d 74 69 74 6c istbox \...-titl
a240: 65 20 22 49 6e 73 65 72 74 20 66 69 6c 65 20 69 e "Insert file i
a250: 6e 74 6f 20 70 72 6f 6a 65 63 74 22 5d 0a 09 20 nto project"]..
a260: 20 20 20 69 66 20 7b 20 24 66 69 6c 65 20 3d 3d if { $file ==
a270: 20 22 22 20 7d 20 7b 20 72 65 74 75 72 6e 20 7d "" } { return }
a280: 0a 09 20 20 20 20 73 65 74 20 66 69 6c 65 20 5b .. set file [
a290: 43 6f 6e 76 65 72 74 54 6f 52 65 6c 61 74 69 76 ConvertToRelativ
a2a0: 65 20 24 70 72 6f 6a 65 63 74 64 69 72 20 24 66 e $projectdir $f
a2b0: 69 6c 65 5d 0a 0a 09 20 20 20 20 66 6f 72 65 61 ile]... forea
a2c0: 63 68 20 69 20 24 66 69 6c 65 73 20 7b 0a 09 09 ch i $files {...
a2d0: 66 6f 72 65 61 63 68 20 22 66 69 6c 65 5f 69 6e foreach "file_in
a2e0: 20 74 79 70 65 20 67 72 6f 75 70 5f 69 6e 20 70 type group_in p
a2f0: 61 74 68 22 20 24 69 20 62 72 65 61 6b 0a 09 09 ath" $i break...
a300: 69 66 20 7b 20 5b 41 72 65 46 69 6c 65 73 45 71 if { [AreFilesEq
a310: 75 61 6c 20 24 66 69 6c 65 20 24 66 69 6c 65 5f ual $file $file_
a320: 69 6e 5d 20 7d 20 7b 0a 09 09 20 20 20 20 57 61 in] } {... Wa
a330: 72 6e 57 69 6e 20 22 45 72 72 6f 72 3a 20 66 69 rnWin "Error: fi
a340: 6c 65 20 27 24 66 69 6c 65 27 20 69 73 20 61 6c le '$file' is al
a350: 72 65 61 64 79 20 69 6e 20 74 68 65 20 70 72 6f ready in the pro
a360: 6a 65 63 74 22 20 24 6c 69 73 74 62 6f 78 0a 09 ject" $listbox..
a370: 09 20 20 20 20 72 65 74 75 72 6e 0a 09 09 7d 0a . return...}.
a380: 09 20 20 20 20 7d 0a 09 20 20 20 20 6c 61 70 70 . }.. lapp
a390: 65 6e 64 20 66 69 6c 65 73 20 5b 6c 69 73 74 20 end files [list
a3a0: 5b 66 69 6c 65 20 74 61 69 6c 20 24 66 69 6c 65 [file tail $file
a3b0: 5d 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 6c 65 ] [string trimle
a3c0: 66 74 20 5b 66 69 6c 65 20 65 78 74 20 24 66 69 ft [file ext $fi
a3d0: 6c 65 5d 20 2e 5d 20 24 67 72 6f 75 70 20 5c 0a le] .] $group \.
a3e0: 09 09 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 ..[file dirname
a3f0: 24 66 69 6c 65 5d 5d 0a 09 7d 0a 09 22 64 69 72 $file]]..}.."dir
a400: 22 20 7b 0a 09 20 20 20 20 73 65 74 20 64 69 72 " {.. set dir
a410: 20 5b 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 66 [RamDebugger::f
a420: 69 6c 65 6e 6f 72 6d 61 6c 69 7a 65 20 5b 74 6b ilenormalize [tk
a430: 5f 63 68 6f 6f 73 65 44 69 72 65 63 74 6f 72 79 _chooseDirectory
a440: 20 2d 69 6e 69 74 69 61 6c 64 69 72 20 24 70 72 -initialdir $pr
a450: 6f 6a 65 63 74 64 69 72 20 5c 0a 09 09 2d 70 61 ojectdir \...-pa
a460: 72 65 6e 74 20 24 6c 69 73 74 62 6f 78 20 5c 0a rent $listbox \.
a470: 09 09 2d 74 69 74 6c 65 20 22 49 6e 73 65 72 74 ..-title "Insert
a480: 20 66 69 6c 65 73 20 66 72 6f 6d 20 64 69 72 65 files from dire
a490: 63 74 6f 72 79 20 69 6e 74 6f 20 70 72 6f 6a 65 ctory into proje
a4a0: 63 74 22 20 2d 6d 75 73 74 65 78 69 73 74 20 31 ct" -mustexist 1
a4b0: 5d 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 64 69 ]].. if { $di
a4c0: 72 20 3d 3d 20 22 22 20 7d 20 7b 20 72 65 74 75 r == "" } { retu
a4d0: 72 6e 20 7d 0a 09 20 20 20 20 0a 09 20 20 20 20 rn }.. ..
a4e0: 73 65 74 20 66 69 6c 65 73 6c 69 73 74 20 22 22 set fileslist ""
a4f0: 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 .. foreach i
a500: 24 66 69 6c 65 73 20 7b 0a 09 09 66 6f 72 65 61 $files {...forea
a510: 63 68 20 22 66 69 6c 65 5f 69 6e 20 74 79 70 65 ch "file_in type
a520: 20 67 72 6f 75 70 5f 69 6e 20 70 61 74 68 22 20 group_in path"
a530: 24 69 20 62 72 65 61 6b 0a 09 09 6c 61 70 70 65 $i break...lappe
a540: 6e 64 20 66 69 6c 65 73 6c 69 73 74 20 24 66 69 nd fileslist $fi
a550: 6c 65 5f 69 6e 0a 09 20 20 20 20 7d 0a 09 20 20 le_in.. }..
a560: 20 20 73 65 74 20 6e 75 6d 20 30 0a 09 20 20 20 set num 0..
a570: 20 66 6f 72 65 61 63 68 20 69 20 5b 67 6c 6f 62 foreach i [glob
a580: 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 2d 64 69 -nocomplain -di
a590: 72 20 24 64 69 72 20 2a 2e 63 20 2a 2e 63 63 5d r $dir *.c *.cc]
a5a0: 20 7b 0a 09 09 73 65 74 20 66 69 6c 65 20 5b 43 {...set file [C
a5b0: 6f 6e 76 65 72 74 54 6f 52 65 6c 61 74 69 76 65 onvertToRelative
a5c0: 20 24 70 72 6f 6a 65 63 74 64 69 72 20 24 69 5d $projectdir $i]
a5d0: 0a 09 09 69 66 20 7b 20 5b 52 61 6d 44 65 62 75 ...if { [RamDebu
a5e0: 67 67 65 72 3a 3a 6c 73 65 61 72 63 68 66 69 6c gger::lsearchfil
a5f0: 65 20 24 66 69 6c 65 73 6c 69 73 74 20 24 66 69 e $fileslist $fi
a600: 6c 65 5d 20 21 3d 20 2d 31 20 7d 20 7b 20 63 6f le] != -1 } { co
a610: 6e 74 69 6e 75 65 20 7d 0a 09 09 6c 61 70 70 65 ntinue }...lappe
a620: 6e 64 20 66 69 6c 65 73 20 5b 6c 69 73 74 20 5b nd files [list [
a630: 66 69 6c 65 20 74 61 69 6c 20 24 66 69 6c 65 5d file tail $file]
a640: 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 6c 65 66 [string trimlef
a650: 74 20 5b 66 69 6c 65 20 65 78 74 20 24 66 69 6c t [file ext $fil
a660: 65 5d 20 2e 5d 20 24 67 72 6f 75 70 20 5c 0a 09 e] .] $group \..
a670: 09 20 20 20 20 20 5b 66 69 6c 65 20 64 69 72 6e . [file dirn
a680: 61 6d 65 20 24 66 69 6c 65 5d 5d 0a 09 09 69 6e ame $file]]...in
a690: 63 72 20 6e 75 6d 0a 09 20 20 20 20 7d 0a 09 20 cr num.. }..
a6a0: 20 20 20 57 61 72 6e 57 69 6e 20 22 49 6e 73 65 WarnWin "Inse
a6b0: 72 74 65 64 20 24 6e 75 6d 20 6e 65 77 20 66 69 rted $num new fi
a6c0: 6c 65 73 22 20 24 6c 69 73 74 62 6f 78 0a 09 7d les" $listbox..}
a6d0: 0a 09 65 64 69 74 20 7b 0a 09 20 20 20 20 73 65 ..edit {.. se
a6e0: 74 20 6e 75 6d 20 30 0a 09 20 20 20 20 73 65 74 t num 0.. set
a6f0: 20 6e 75 6d 64 69 66 66 20 30 0a 09 20 20 20 20 numdiff 0..
a700: 66 6f 72 65 61 63 68 20 69 20 5b 24 6c 69 73 74 foreach i [$list
a710: 62 6f 78 20 63 75 72 73 65 6c 65 63 74 69 6f 6e box curselection
a720: 5d 20 7b 0a 09 09 66 6f 72 65 61 63 68 20 22 66 ] {...foreach "f
a730: 69 6c 65 5f 69 6e 20 74 79 70 65 20 67 72 6f 75 ile_in type grou
a740: 70 5f 69 6e 20 70 61 74 68 22 20 5b 6c 69 6e 64 p_in path" [lind
a750: 65 78 20 24 66 69 6c 65 73 20 24 69 5d 20 62 72 ex $files $i] br
a760: 65 61 6b 0a 09 09 69 66 20 7b 20 24 67 72 6f 75 eak...if { $grou
a770: 70 20 21 3d 20 24 67 72 6f 75 70 5f 69 6e 20 7d p != $group_in }
a780: 20 7b 20 69 6e 63 72 20 6e 75 6d 64 69 66 66 20 { incr numdiff
a790: 7d 0a 09 09 73 65 74 20 66 69 6c 65 73 20 5b 6c }...set files [l
a7a0: 72 65 70 6c 61 63 65 20 24 66 69 6c 65 73 20 24 replace $files $
a7b0: 69 20 24 69 20 5b 6c 69 73 74 20 24 66 69 6c 65 i $i [list $file
a7c0: 5f 69 6e 20 24 74 79 70 65 20 24 67 72 6f 75 70 _in $type $group
a7d0: 20 24 70 61 74 68 5d 5d 0a 09 09 69 6e 63 72 20 $path]]...incr
a7e0: 6e 75 6d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 num.. }..
a7f0: 57 61 72 6e 57 69 6e 20 22 52 65 70 6c 61 63 65 WarnWin "Replace
a800: 64 20 67 72 6f 75 70 20 74 6f 20 24 6e 75 6d 20 d group to $num
a810: 66 69 6c 65 73 20 28 24 6e 75 6d 64 69 66 66 20 files ($numdiff
a820: 6e 65 77 29 22 0a 09 7d 0a 09 64 65 6c 65 74 65 new)"..}..delete
a830: 20 7b 0a 09 20 20 20 20 73 65 74 20 6e 75 6d 20 {.. set num
a840: 30 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 69 0.. foreach i
a850: 20 5b 24 6c 69 73 74 62 6f 78 20 63 75 72 73 65 [$listbox curse
a860: 6c 65 63 74 69 6f 6e 5d 20 7b 0a 09 09 73 65 74 lection] {...set
a870: 20 69 70 6f 73 20 5b 65 78 70 72 20 24 69 2d 24 ipos [expr $i-$
a880: 6e 75 6d 5d 0a 09 09 73 65 74 20 66 69 6c 65 73 num]...set files
a890: 20 5b 6c 72 65 70 6c 61 63 65 20 24 66 69 6c 65 [lreplace $file
a8a0: 73 20 24 69 70 6f 73 20 24 69 70 6f 73 5d 0a 09 s $ipos $ipos]..
a8b0: 09 69 6e 63 72 20 6e 75 6d 0a 09 20 20 20 20 7d .incr num.. }
a8c0: 0a 09 20 20 20 20 24 6c 69 73 74 62 6f 78 20 73 .. $listbox s
a8d0: 65 6c 65 63 74 69 6f 6e 20 63 6c 65 61 72 20 30 election clear 0
a8e0: 20 65 6e 64 0a 09 20 20 20 20 57 61 72 6e 57 69 end.. WarnWi
a8f0: 6e 20 22 44 65 6c 65 74 65 64 20 66 72 6f 6d 20 n "Deleted from
a900: 70 72 6f 6a 65 63 74 20 24 6e 75 6d 20 66 69 6c project $num fil
a910: 65 73 22 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a es"..}. }.}..
a920: 70 72 6f 63 20 63 70 72 6f 6a 65 63 74 3a 3a 41 proc cproject::A
a930: 64 64 44 65 6c 44 69 72 65 63 74 6f 72 69 65 73 ddDelDirectories
a940: 20 7b 20 6c 69 73 74 62 6f 78 20 77 68 61 74 20 { listbox what
a950: 7d 20 7b 0a 0a 20 20 20 20 73 65 74 20 70 72 6f } {.. set pro
a960: 6a 65 63 74 64 69 72 20 5b 49 73 50 72 6f 6a 65 jectdir [IsProje
a970: 63 74 4e 61 6d 65 4f 6b 5d 0a 0a 20 20 20 20 73 ctNameOk].. s
a980: 65 74 20 64 69 72 20 5b 49 73 50 72 6f 6a 65 63 et dir [IsProjec
a990: 74 4e 61 6d 65 4f 6b 5d 0a 20 20 20 20 73 77 69 tNameOk]. swi
a9a0: 74 63 68 20 24 77 68 61 74 20 7b 0a 09 61 64 64 tch $what {..add
a9b0: 20 7b 0a 09 20 20 20 20 73 65 74 20 64 69 72 20 {.. set dir
a9c0: 5b 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 66 69 [RamDebugger::fi
a9d0: 6c 65 6e 6f 72 6d 61 6c 69 7a 65 20 5b 74 6b 5f lenormalize [tk_
a9e0: 63 68 6f 6f 73 65 44 69 72 65 63 74 6f 72 79 20 chooseDirectory
a9f0: 2d 69 6e 69 74 69 61 6c 64 69 72 20 24 64 69 72 -initialdir $dir
aa00: 20 5c 0a 09 09 20 20 20 20 2d 70 61 72 65 6e 74 \... -parent
aa10: 20 24 6c 69 73 74 62 6f 78 20 2d 74 69 74 6c 65 $listbox -title
aa20: 20 22 41 64 64 20 64 69 72 65 63 74 6f 72 69 65 "Add directorie
aa30: 73 22 20 2d 6d 75 73 74 65 78 69 73 74 20 31 5d s" -mustexist 1]
aa40: 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 64 69 72 ].. if { $dir
aa50: 20 3d 3d 20 22 22 20 7d 20 7b 20 72 65 74 75 72 == "" } { retur
aa60: 6e 20 7d 0a 09 20 20 20 20 24 6c 69 73 74 62 6f n }.. $listbo
aa70: 78 20 69 6e 73 65 72 74 20 65 6e 64 20 5b 43 6f x insert end [Co
aa80: 6e 76 65 72 74 54 6f 52 65 6c 61 74 69 76 65 20 nvertToRelative
aa90: 24 70 72 6f 6a 65 63 74 64 69 72 20 24 64 69 72 $projectdir $dir
aaa0: 5d 0a 09 7d 0a 09 64 65 6c 65 74 65 20 7b 0a 09 ]..}..delete {..
aab0: 20 20 20 20 73 65 74 20 6e 75 6d 20 30 0a 09 20 set num 0..
aac0: 20 20 20 66 6f 72 65 61 63 68 20 69 20 5b 24 6c foreach i [$l
aad0: 69 73 74 62 6f 78 20 63 75 72 73 65 6c 65 63 74 istbox curselect
aae0: 69 6f 6e 5d 20 7b 0a 09 09 73 65 74 20 69 70 6f ion] {...set ipo
aaf0: 73 20 5b 65 78 70 72 20 24 69 2d 24 6e 75 6d 5d s [expr $i-$num]
ab00: 0a 09 09 24 6c 69 73 74 62 6f 78 20 64 65 6c 65 ...$listbox dele
ab10: 74 65 20 24 69 70 6f 73 0a 09 09 69 6e 63 72 20 te $ipos...incr
ab20: 6e 75 6d 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 num.. }..
ab30: 24 6c 69 73 74 62 6f 78 20 73 65 6c 65 63 74 69 $listbox selecti
ab40: 6f 6e 20 63 6c 65 61 72 20 30 20 65 6e 64 0a 09 on clear 0 end..
ab50: 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 0a 23 23 23 23 }. }.}...####
ab60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
ab70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
ab80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
ab90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
aba0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 20 ############.#
abb0: 20 65 78 65 63 75 74 69 6f 6e 0a 23 23 23 23 23 execution.#####
abc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
abd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
abe0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
abf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
ac00: 23 23 23 23 23 23 23 23 23 23 23 0a 0a 0a 70 72 ###########...pr
ac10: 6f 63 20 63 70 72 6f 6a 65 63 74 3a 3a 47 69 76 oc cproject::Giv
ac20: 65 44 65 62 75 67 44 61 74 61 20 7b 7d 20 7b 0a eDebugData {} {.
ac30: 20 20 20 20 76 61 72 69 61 62 6c 65 20 70 72 6f variable pro
ac40: 6a 65 63 74 0a 20 20 20 20 76 61 72 69 61 62 6c ject. variabl
ac50: 65 20 64 61 74 61 45 0a 0a 20 20 20 20 73 65 74 e dataE.. set
ac60: 20 64 72 20 24 52 61 6d 44 65 62 75 67 67 65 72 dr $RamDebugger
ac70: 3a 3a 6f 70 74 69 6f 6e 73 28 64 65 62 75 67 72 ::options(debugr
ac80: 65 6c 65 61 73 65 29 0a 0a 20 20 20 20 69 66 20 elease).. if
ac90: 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 64 { [info exists d
aca0: 61 74 61 45 28 24 64 72 2c 65 78 65 29 5d 20 7d ataE($dr,exe)] }
acb0: 20 7b 0a 09 73 65 74 20 6f 62 6a 64 69 72 20 5b {..set objdir [
acc0: 66 69 6c 65 20 72 6f 6f 74 20 24 70 72 6f 6a 65 file root $proje
acd0: 63 74 5d 5f 24 64 72 0a 09 73 65 74 20 65 78 65 ct]_$dr..set exe
ace0: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 6f 62 6a [file join $obj
acf0: 64 69 72 20 24 64 61 74 61 45 28 24 64 72 2c 65 dir $dataE($dr,e
ad00: 78 65 29 5d 0a 09 72 65 74 75 72 6e 20 5b 6c 69 xe)]..return [li
ad10: 73 74 20 24 65 78 65 20 24 64 61 74 61 45 28 24 st $exe $dataE($
ad20: 64 72 2c 65 78 65 63 64 69 72 29 20 5c 0a 09 09 dr,execdir) \...
ad30: 24 64 61 74 61 45 28 24 64 72 2c 65 78 65 61 72 $dataE($dr,exear
ad40: 67 73 29 5d 0a 20 20 20 20 7d 0a 20 20 20 20 72 gs)]. }. r
ad50: 65 74 75 72 6e 20 22 22 0a 7d 0a 0a 0a 70 72 6f eturn "".}...pro
ad60: 63 20 63 70 72 6f 6a 65 63 74 3a 3a 54 72 79 54 c cproject::TryT
ad70: 6f 46 69 6e 64 50 61 74 68 20 7b 20 66 69 6c 65 oFindPath { file
ad80: 20 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c } {. variabl
ad90: 65 20 70 72 6f 6a 65 63 74 0a 20 20 20 20 76 61 e project. va
ada0: 72 69 61 62 6c 65 20 66 69 6c 65 73 0a 0a 20 20 riable files..
adb0: 20 20 73 65 74 20 6c 61 73 74 5f 70 61 74 68 20 set last_path
adc0: 22 22 0a 0a 20 20 20 20 73 65 74 20 62 61 73 65 "".. set base
add0: 5f 64 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 _dir [file dirna
ade0: 6d 65 20 24 70 72 6f 6a 65 63 74 5d 0a 0a 20 20 me $project]..
adf0: 20 20 69 66 20 7b 20 5b 66 69 6c 65 20 65 78 69 if { [file exi
ae00: 73 74 73 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 sts [file join $
ae10: 62 61 73 65 5f 64 69 72 20 24 66 69 6c 65 5d 5d base_dir $file]]
ae20: 20 7d 20 7b 0a 09 72 65 74 75 72 6e 20 5b 66 69 } {..return [fi
ae30: 6c 65 20 6a 6f 69 6e 20 24 62 61 73 65 5f 64 69 le join $base_di
ae40: 72 20 24 66 69 6c 65 5d 0a 20 20 20 20 7d 0a 0a r $file]. }..
ae50: 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 24 66 foreach i $f
ae60: 69 6c 65 73 20 7b 0a 09 66 6f 72 65 61 63 68 20 iles {..foreach
ae70: 22 66 69 6c 65 5f 69 6e 20 74 79 70 65 20 67 72 "file_in type gr
ae80: 6f 75 70 5f 69 6e 20 70 61 74 68 22 20 24 69 20 oup_in path" $i
ae90: 62 72 65 61 6b 0a 09 69 66 20 7b 20 24 70 61 74 break..if { $pat
aea0: 68 20 3d 3d 20 24 6c 61 73 74 5f 70 61 74 68 20 h == $last_path
aeb0: 7d 20 7b 20 63 6f 6e 74 69 6e 75 65 20 7d 0a 0a } { continue }..
aec0: 09 69 66 20 7b 20 5b 66 69 6c 65 20 65 78 69 73 .if { [file exis
aed0: 74 73 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 62 ts [file join $b
aee0: 61 73 65 5f 64 69 72 20 24 70 61 74 68 20 24 66 ase_dir $path $f
aef0: 69 6c 65 5d 5d 20 7d 20 7b 0a 09 20 20 20 20 72 ile]] } {.. r
af00: 65 74 75 72 6e 20 5b 66 69 6c 65 20 6a 6f 69 6e eturn [file join
af10: 20 24 62 61 73 65 5f 64 69 72 20 24 70 61 74 68 $base_dir $path
af20: 20 24 66 69 6c 65 5d 0a 09 7d 0a 09 73 65 74 20 $file]..}..set
af30: 6c 61 73 74 5f 70 61 74 68 20 24 70 61 74 68 0a last_path $path.
af40: 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e }. return
af50: 20 22 22 0a 7d 0a 0a 70 72 6f 63 20 63 70 72 6f "".}..proc cpro
af60: 6a 65 63 74 3a 3a 53 63 61 6e 48 65 61 64 65 72 ject::ScanHeader
af70: 73 20 7b 20 66 69 6c 65 20 7d 20 7b 0a 0a 20 20 s { file } {..
af80: 20 20 73 65 74 20 66 69 6e 20 5b 6f 70 65 6e 20 set fin [open
af90: 24 66 69 6c 65 20 72 5d 0a 20 20 20 20 73 65 74 $file r]. set
afa0: 20 61 61 20 5b 72 65 61 64 20 24 66 69 6e 5d 0a aa [read $fin].
afb0: 20 20 20 20 63 6c 6f 73 65 20 24 66 69 6e 0a 0a close $fin..
afc0: 20 20 20 20 73 65 74 20 68 65 61 64 65 72 73 20 set headers
afd0: 22 22 0a 20 20 20 20 66 6f 72 65 61 63 68 20 22 "". foreach "
afe0: 2d 20 68 65 61 64 65 72 22 20 5b 72 65 67 65 78 - header" [regex
aff0: 70 20 2d 69 6e 6c 69 6e 65 20 2d 61 6c 6c 20 7b p -inline -all {
b000: 5c 23 69 6e 63 6c 75 64 65 5c 73 2b 5c 22 28 5b \#include\s+\"([
b010: 5e 5c 22 5d 2b 29 5c 22 7d 20 24 61 61 5d 20 7b ^\"]+)\"} $aa] {
b020: 0a 09 73 65 74 20 66 69 6c 65 20 5b 66 69 6c 65 ..set file [file
b030: 20 6a 6f 69 6e 20 5b 66 69 6c 65 20 64 69 72 6e join [file dirn
b040: 61 6d 65 20 24 66 69 6c 65 5d 20 24 68 65 61 64 ame $file] $head
b050: 65 72 5d 0a 09 69 66 20 7b 20 5b 66 69 6c 65 20 er]..if { [file
b060: 65 78 69 73 74 20 24 66 69 6c 65 5d 20 7d 20 7b exist $file] } {
b070: 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 68 65 .. lappend he
b080: 61 64 65 72 73 20 5b 66 69 6c 65 20 6a 6f 69 6e aders [file join
b090: 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 [file dirname $
b0a0: 66 69 6c 65 5d 20 24 68 65 61 64 65 72 5d 0a 09 file] $header]..
b0b0: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 }. }. retu
b0c0: 72 6e 20 24 68 65 61 64 65 72 73 0a 7d 0a 0a 70 rn $headers.}..p
b0d0: 72 6f 63 20 63 70 72 6f 6a 65 63 74 3a 3a 43 6c roc cproject::Cl
b0e0: 65 61 6e 43 6f 6d 70 69 6c 65 64 46 69 6c 65 73 eanCompiledFiles
b0f0: 20 7b 20 77 20 7d 20 7b 0a 20 20 20 20 76 61 72 { w } {. var
b100: 69 61 62 6c 65 20 70 72 6f 6a 65 63 74 0a 20 20 iable project.
b110: 20 20 76 61 72 69 61 62 6c 65 20 66 69 6c 65 73 variable files
b120: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 61 . variable da
b130: 74 61 43 0a 20 20 20 20 76 61 72 69 61 62 6c 65 taC. variable
b140: 20 64 61 74 61 4c 0a 20 20 20 20 76 61 72 69 61 dataL. varia
b150: 62 6c 65 20 64 61 74 61 45 0a 0a 20 20 20 20 52 ble dataE.. R
b160: 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 74 4d amDebugger::SetM
b170: 65 73 73 61 67 65 20 22 43 6c 65 61 6e 69 6e 67 essage "Cleaning
b180: 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 66 69 6c compilation fil
b190: 65 73 2e 2e 2e 22 0a 20 20 20 20 52 61 6d 44 65 es...". RamDe
b1a0: 62 75 67 67 65 72 3a 3a 57 61 69 74 53 74 61 74 bugger::WaitStat
b1b0: 65 20 31 0a 0a 20 20 20 20 69 66 20 7b 20 24 70 e 1.. if { $p
b1c0: 72 6f 6a 65 63 74 20 3d 3d 20 22 22 20 7d 20 7b roject == "" } {
b1d0: 0a 09 69 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 ..if { [info exi
b1e0: 73 74 73 20 52 61 6d 44 65 62 75 67 67 65 72 3a sts RamDebugger:
b1f0: 3a 6f 70 74 69 6f 6e 73 28 72 65 63 65 6e 74 70 :options(recentp
b200: 72 6f 6a 65 63 74 73 29 5d 20 26 26 20 5c 0a 09 rojects)] && \..
b210: 09 5b 6c 6c 65 6e 67 74 68 20 24 52 61 6d 44 65 .[llength $RamDe
b220: 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 bugger::options(
b230: 72 65 63 65 6e 74 70 72 6f 6a 65 63 74 73 29 5d recentprojects)]
b240: 20 3e 20 30 20 7d 20 7b 0a 09 20 20 20 20 73 65 > 0 } {.. se
b250: 74 20 70 72 6f 6a 65 63 74 20 5b 6c 69 6e 64 65 t project [linde
b260: 78 20 24 52 61 6d 44 65 62 75 67 67 65 72 3a 3a x $RamDebugger::
b270: 6f 70 74 69 6f 6e 73 28 72 65 63 65 6e 74 70 72 options(recentpr
b280: 6f 6a 65 63 74 73 29 20 30 5d 0a 09 20 20 20 20 ojects) 0]..
b290: 73 65 74 20 65 72 72 20 5b 63 61 74 63 68 20 7b set err [catch {
b2a0: 20 63 70 72 6f 6a 65 63 74 3a 3a 4f 70 65 6e 50 cproject::OpenP
b2b0: 72 6f 6a 65 63 74 20 24 77 20 30 20 7d 5d 0a 09 roject $w 0 }]..
b2c0: 20 20 20 20 69 66 20 7b 20 24 65 72 72 20 7d 20 if { $err }
b2d0: 7b 20 73 65 74 20 70 72 6f 6a 65 63 74 20 22 22 { set project ""
b2e0: 20 7d 0a 09 7d 0a 09 69 66 20 7b 20 24 70 72 6f }..}..if { $pro
b2f0: 6a 65 63 74 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 ject == "" } {..
b300: 20 20 20 20 63 70 72 6f 6a 65 63 74 3a 3a 43 72 cproject::Cr
b310: 65 61 74 65 20 24 77 0a 09 20 20 20 20 72 65 74 eate $w.. ret
b320: 75 72 6e 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 urn..}. }..
b330: 20 20 73 65 74 20 64 72 20 24 52 61 6d 44 65 62 set dr $RamDeb
b340: 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 64 ugger::options(d
b350: 65 62 75 67 72 65 6c 65 61 73 65 29 0a 0a 20 20 ebugrelease)..
b360: 20 20 69 66 20 7b 20 24 64 72 20 3d 3d 20 22 62 if { $dr == "b
b370: 6f 74 68 22 20 7d 20 7b 0a 09 57 61 72 6e 57 69 oth" } {..WarnWi
b380: 6e 20 22 65 72 72 6f 72 3a 20 70 72 6f 67 72 61 n "error: progra
b390: 6d 20 6d 75 73 74 20 62 65 20 69 6e 20 64 65 62 m must be in deb
b3a0: 75 67 20 6f 72 20 69 6e 20 72 65 6c 65 61 73 65 ug or in release
b3b0: 20 6d 6f 64 65 22 0a 09 52 61 6d 44 65 62 75 67 mode"..RamDebug
b3c0: 67 65 72 3a 3a 57 61 69 74 53 74 61 74 65 20 30 ger::WaitState 0
b3d0: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 20 ..return. }.
b3e0: 20 20 20 73 65 74 20 6f 62 6a 64 69 72 20 5b 66 set objdir [f
b3f0: 69 6c 65 20 6a 6f 69 6e 20 5b 66 69 6c 65 20 64 ile join [file d
b400: 69 72 6e 61 6d 65 20 24 70 72 6f 6a 65 63 74 5d irname $project]
b410: 20 5b 66 69 6c 65 20 72 6f 6f 74 20 24 70 72 6f [file root $pro
b420: 6a 65 63 74 5d 5f 24 64 72 5d 0a 0a 20 20 20 20 ject]_$dr]..
b430: 66 6f 72 65 61 63 68 20 69 20 5b 67 6c 6f 62 20 foreach i [glob
b440: 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 2d 64 69 72 -nocomplain -dir
b450: 20 24 6f 62 6a 64 69 72 20 2a 5d 20 7b 0a 09 66 $objdir *] {..f
b460: 69 6c 65 20 64 65 6c 65 74 65 20 24 69 0a 20 20 ile delete $i.
b470: 20 20 7d 0a 20 20 20 20 52 61 6d 44 65 62 75 67 }. RamDebug
b480: 67 65 72 3a 3a 54 65 78 74 43 6f 6d 70 43 6c 65 ger::TextCompCle
b490: 61 72 0a 20 20 20 20 52 61 6d 44 65 62 75 67 67 ar. RamDebugg
b4a0: 65 72 3a 3a 54 65 78 74 43 6f 6d 70 52 61 69 73 er::TextCompRais
b4b0: 65 0a 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 e. RamDebugge
b4c0: 72 3a 3a 54 65 78 74 43 6f 6d 70 49 6e 73 65 72 r::TextCompInser
b4d0: 74 20 22 43 6f 6d 70 69 6c 61 74 69 6f 6e 20 66 t "Compilation f
b4e0: 69 6c 65 73 20 64 65 6c 65 74 65 64 22 0a 0a 20 iles deleted"..
b4f0: 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a RamDebugger::
b500: 57 61 69 74 53 74 61 74 65 20 30 0a 20 20 20 20 WaitState 0.
b510: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 53 65 74 RamDebugger::Set
b520: 4d 65 73 73 61 67 65 20 22 43 6c 65 61 6e 69 6e Message "Cleanin
b530: 67 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 66 69 g compilation fi
b540: 6c 65 73 2e 2e 2e 64 6f 6e 65 22 0a 7d 0a 0a 70 les...done".}..p
b550: 72 6f 63 20 63 70 72 6f 6a 65 63 74 3a 3a 70 72 roc cproject::pr
b560: 69 6e 74 66 69 6c 65 6e 61 6d 65 20 7b 20 66 69 intfilename { fi
b570: 6c 65 6e 61 6d 65 20 7d 20 7b 0a 20 20 20 20 72 lename } {. r
b580: 65 67 73 75 62 20 2d 61 6c 6c 20 22 20 22 20 24 egsub -all " " $
b590: 66 69 6c 65 6e 61 6d 65 20 7b 5c 5c 20 7d 20 66 filename {\\ } f
b5a0: 69 6c 65 6e 61 6d 65 0a 20 20 20 20 72 65 74 75 ilename. retu
b5b0: 72 6e 20 24 66 69 6c 65 6e 61 6d 65 0a 7d 0a 0a rn $filename.}..
b5c0: 70 72 6f 63 20 63 70 72 6f 6a 65 63 74 3a 3a 54 proc cproject::T
b5d0: 6f 75 63 68 46 69 6c 65 73 20 7b 20 77 20 7d 20 ouchFiles { w }
b5e0: 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 70 {. variable p
b5f0: 72 6f 6a 65 63 74 0a 20 20 20 20 76 61 72 69 61 roject. varia
b600: 62 6c 65 20 66 69 6c 65 73 0a 20 20 20 20 76 61 ble files. va
b610: 72 69 61 62 6c 65 20 64 61 74 61 43 0a 20 20 20 riable dataC.
b620: 20 76 61 72 69 61 62 6c 65 20 64 61 74 61 4c 0a variable dataL.
b630: 20 20 20 20 76 61 72 69 61 62 6c 65 20 64 61 74 variable dat
b640: 61 45 0a 0a 20 20 20 20 73 65 74 20 64 72 20 24 aE.. set dr $
b650: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 RamDebugger::opt
b660: 69 6f 6e 73 28 64 65 62 75 67 72 65 6c 65 61 73 ions(debugreleas
b670: 65 29 0a 0a 20 20 20 20 52 61 6d 44 65 62 75 67 e).. RamDebug
b680: 67 65 72 3a 3a 53 65 74 4d 65 73 73 61 67 65 20 ger::SetMessage
b690: 22 41 63 74 75 61 6c 69 7a 69 6e 67 20 64 61 74 "Actualizing dat
b6a0: 65 20 66 6f 72 20 63 6f 6d 70 69 6c 61 74 69 6f e for compilatio
b6b0: 6e 20 66 69 6c 65 73 2e 2e 2e 22 0a 20 20 20 20 n files...".
b6c0: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 57 61 69 RamDebugger::Wai
b6d0: 74 53 74 61 74 65 20 31 0a 0a 20 20 20 20 69 66 tState 1.. if
b6e0: 20 7b 20 24 70 72 6f 6a 65 63 74 20 3d 3d 20 22 { $project == "
b6f0: 22 20 7d 20 7b 0a 09 69 66 20 7b 20 5b 69 6e 66 " } {..if { [inf
b700: 6f 20 65 78 69 73 74 73 20 52 61 6d 44 65 62 75 o exists RamDebu
b710: 67 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 72 65 gger::options(re
b720: 63 65 6e 74 70 72 6f 6a 65 63 74 73 29 5d 20 26 centprojects)] &
b730: 26 20 5c 0a 09 09 5b 6c 6c 65 6e 67 74 68 20 24 & \...[llength $
b740: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 RamDebugger::opt
b750: 69 6f 6e 73 28 72 65 63 65 6e 74 70 72 6f 6a 65 ions(recentproje
b760: 63 74 73 29 5d 20 3e 20 30 20 7d 20 7b 0a 09 20 cts)] > 0 } {..
b770: 20 20 20 73 65 74 20 70 72 6f 6a 65 63 74 20 5b set project [
b780: 6c 69 6e 64 65 78 20 24 52 61 6d 44 65 62 75 67 lindex $RamDebug
b790: 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 72 65 63 ger::options(rec
b7a0: 65 6e 74 70 72 6f 6a 65 63 74 73 29 20 30 5d 0a entprojects) 0].
b7b0: 09 20 20 20 20 73 65 74 20 65 72 72 20 5b 63 61 . set err [ca
b7c0: 74 63 68 20 7b 20 63 70 72 6f 6a 65 63 74 3a 3a tch { cproject::
b7d0: 4f 70 65 6e 50 72 6f 6a 65 63 74 20 24 77 20 30 OpenProject $w 0
b7e0: 20 7d 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 65 }].. if { $e
b7f0: 72 72 20 7d 20 7b 20 73 65 74 20 70 72 6f 6a 65 rr } { set proje
b800: 63 74 20 22 22 20 7d 0a 09 7d 0a 09 69 66 20 7b ct "" }..}..if {
b810: 20 24 70 72 6f 6a 65 63 74 20 3d 3d 20 22 22 20 $project == ""
b820: 7d 20 7b 0a 09 20 20 20 20 63 70 72 6f 6a 65 63 } {.. cprojec
b830: 74 3a 3a 43 72 65 61 74 65 20 24 77 0a 09 20 20 t::Create $w..
b840: 20 20 72 65 74 75 72 6e 0a 09 7d 0a 20 20 20 20 return..}.
b850: 7d 0a 20 20 20 20 69 66 20 7b 20 24 64 72 20 3d }. if { $dr =
b860: 3d 20 22 62 6f 74 68 22 20 7d 20 7b 0a 09 57 61 = "both" } {..Wa
b870: 72 6e 57 69 6e 20 22 65 72 72 6f 72 3a 20 70 72 rnWin "error: pr
b880: 6f 67 72 61 6d 20 6d 75 73 74 20 62 65 20 69 6e ogram must be in
b890: 20 64 65 62 75 67 20 6f 72 20 69 6e 20 72 65 6c debug or in rel
b8a0: 65 61 73 65 20 6d 6f 64 65 22 0a 09 52 61 6d 44 ease mode"..RamD
b8b0: 65 62 75 67 67 65 72 3a 3a 57 61 69 74 53 74 61 ebugger::WaitSta
b8c0: 74 65 20 30 0a 09 72 65 74 75 72 6e 0a 20 20 20 te 0..return.
b8d0: 20 7d 0a 20 20 20 20 73 65 74 20 6f 62 6a 64 69 }. set objdi
b8e0: 72 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 66 69 r [file join [fi
b8f0: 6c 65 20 64 69 72 6e 61 6d 65 20 24 70 72 6f 6a le dirname $proj
b900: 65 63 74 5d 20 5b 66 69 6c 65 20 72 6f 6f 74 20 ect] [file root
b910: 24 70 72 6f 6a 65 63 74 5d 5f 24 64 72 5d 0a 0a $project]_$dr]..
b920: 20 20 20 20 73 65 74 20 74 69 6d 65 20 5b 63 6c set time [cl
b930: 6f 63 6b 20 73 65 63 6f 6e 64 73 5d 0a 20 20 20 ock seconds].
b940: 20 66 6f 72 65 61 63 68 20 69 20 5b 67 6c 6f 62 foreach i [glob
b950: 20 2d 6e 6f 63 6f 6d 70 6c 61 69 6e 20 2d 64 69 -nocomplain -di
b960: 72 20 24 6f 62 6a 64 69 72 20 2a 5d 20 7b 0a 09 r $objdir *] {..
b970: 66 69 6c 65 20 6d 74 69 6d 65 20 24 69 20 24 74 file mtime $i $t
b980: 69 6d 65 0a 20 20 20 20 7d 0a 0a 20 20 20 20 52 ime. }.. R
b990: 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 74 amDebugger::Text
b9a0: 43 6f 6d 70 43 6c 65 61 72 0a 20 20 20 20 52 61 CompClear. Ra
b9b0: 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 74 43 mDebugger::TextC
b9c0: 6f 6d 70 52 61 69 73 65 0a 20 20 20 20 52 61 6d ompRaise. Ram
b9d0: 44 65 62 75 67 67 65 72 3a 3a 54 65 78 74 43 6f Debugger::TextCo
b9e0: 6d 70 49 6e 73 65 72 74 20 22 41 63 74 75 61 6c mpInsert "Actual
b9f0: 69 7a 65 64 20 64 61 74 65 20 66 6f 72 20 63 6f ized date for co
ba00: 6d 70 69 6c 61 74 69 6f 6e 20 66 69 6c 65 73 22 mpilation files"
ba10: 0a 0a 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 .. RamDebugge
ba20: 72 3a 3a 57 61 69 74 53 74 61 74 65 20 30 0a 20 r::WaitState 0.
ba30: 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a RamDebugger::
ba40: 53 65 74 4d 65 73 73 61 67 65 20 22 41 63 74 75 SetMessage "Actu
ba50: 61 6c 69 7a 69 6e 67 20 64 61 74 65 20 66 6f 72 alizing date for
ba60: 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 66 69 6c compilation fil
ba70: 65 73 2e 2e 2e 64 6f 6e 65 22 0a 7d 0a 0a 70 72 es...done".}..pr
ba80: 6f 63 20 63 70 72 6f 6a 65 63 74 3a 3a 43 6f 6d oc cproject::Com
ba90: 70 69 6c 65 41 6c 6c 20 7b 20 77 20 7d 20 7b 0a pileAll { w } {.
baa0: 0a 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 . RamDebugger
bab0: 3a 3a 54 65 78 74 43 6f 6d 70 43 6c 65 61 72 0a ::TextCompClear.
bac0: 20 20 20 20 66 6f 72 65 61 63 68 20 69 20 5b 6c foreach i [l
bad0: 69 73 74 20 64 65 62 75 67 20 72 65 6c 65 61 73 ist debug releas
bae0: 65 5d 20 7b 0a 09 73 65 74 20 72 65 74 76 61 6c e] {..set retval
baf0: 20 5b 43 6f 6d 70 69 6c 65 44 6f 20 24 77 20 24 [CompileDo $w $
bb00: 69 20 31 20 22 22 5d 0a 09 69 66 20 7b 20 24 72 i 1 ""]..if { $r
bb10: 65 74 76 61 6c 20 3d 3d 20 2d 31 20 7d 20 7b 20 etval == -1 } {
bb20: 62 72 65 61 6b 20 7d 0a 20 20 20 20 7d 0a 7d 0a break }. }.}.
bb30: 0a 70 72 6f 63 20 63 70 72 6f 6a 65 63 74 3a 3a .proc cproject::
bb40: 43 6f 6d 70 69 6c 65 20 7b 20 77 20 7b 20 75 6e Compile { w { un
bb50: 69 71 75 65 5f 66 69 6c 65 20 22 22 20 7d 20 7d ique_file "" } }
bb60: 20 7b 0a 0a 20 20 20 20 73 65 74 20 64 72 20 24 {.. set dr $
bb70: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 RamDebugger::opt
bb80: 69 6f 6e 73 28 64 65 62 75 67 72 65 6c 65 61 73 ions(debugreleas
bb90: 65 29 0a 0a 20 20 20 20 52 61 6d 44 65 62 75 67 e).. RamDebug
bba0: 67 65 72 3a 3a 54 65 78 74 43 6f 6d 70 43 6c 65 ger::TextCompCle
bbb0: 61 72 0a 20 20 20 20 43 6f 6d 70 69 6c 65 44 6f ar. CompileDo
bbc0: 20 24 77 20 24 64 72 20 30 20 24 75 6e 69 71 75 $w $dr 0 $uniqu
bbd0: 65 5f 66 69 6c 65 0a 7d 0a 0a 70 72 6f 63 20 63 e_file.}..proc c
bbe0: 70 72 6f 6a 65 63 74 3a 3a 43 6f 6d 70 69 6c 65 project::Compile
bbf0: 4e 6f 53 74 6f 70 20 7b 20 77 20 7d 20 7b 0a 0a NoStop { w } {..
bc00: 20 20 20 20 73 65 74 20 64 72 20 24 52 61 6d 44 set dr $RamD
bc10: 65 62 75 67 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 ebugger::options
bc20: 28 64 65 62 75 67 72 65 6c 65 61 73 65 29 0a 0a (debugrelease)..
bc30: 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a RamDebugger:
bc40: 3a 54 65 78 74 43 6f 6d 70 43 6c 65 61 72 0a 20 :TextCompClear.
bc50: 20 20 20 43 6f 6d 70 69 6c 65 44 6f 20 24 77 20 CompileDo $w
bc60: 24 64 72 20 31 20 22 22 0a 7d 0a 0a 70 72 6f 63 $dr 1 "".}..proc
bc70: 20 63 70 72 6f 6a 65 63 74 3a 3a 43 6f 6d 70 69 cproject::Compi
bc80: 6c 65 44 6f 20 7b 20 77 20 64 65 62 72 65 6c 20 leDo { w debrel
bc90: 6e 6f 73 74 6f 70 20 7b 20 75 6e 69 71 75 65 5f nostop { unique_
bca0: 66 69 6c 65 20 22 22 20 7d 20 7d 20 7b 0a 20 20 file "" } } {.
bcb0: 20 20 76 61 72 69 61 62 6c 65 20 70 72 6f 6a 65 variable proje
bcc0: 63 74 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ct. variable
bcd0: 66 69 6c 65 73 0a 20 20 20 20 76 61 72 69 61 62 files. variab
bce0: 6c 65 20 64 61 74 61 43 0a 20 20 20 20 76 61 72 le dataC. var
bcf0: 69 61 62 6c 65 20 64 61 74 61 4c 0a 20 20 20 20 iable dataL.
bd00: 76 61 72 69 61 62 6c 65 20 64 61 74 61 45 0a 20 variable dataE.
bd10: 20 20 20 76 61 72 69 61 62 6c 65 20 6c 69 6e 6b variable link
bd20: 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 s. variable c
bd30: 6f 6d 70 69 6c 61 74 69 6f 6e 73 74 61 74 75 73 ompilationstatus
bd40: 0a 0a 20 20 20 20 69 66 20 7b 20 24 70 72 6f 6a .. if { $proj
bd50: 65 63 74 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 69 ect == "" } {..i
bd60: 66 20 7b 20 5b 69 6e 66 6f 20 65 78 69 73 74 73 f { [info exists
bd70: 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 RamDebugger::op
bd80: 74 69 6f 6e 73 28 72 65 63 65 6e 74 70 72 6f 6a tions(recentproj
bd90: 65 63 74 73 29 5d 20 26 26 20 5c 0a 09 09 5b 6c ects)] && \...[l
bda0: 6c 65 6e 67 74 68 20 24 52 61 6d 44 65 62 75 67 length $RamDebug
bdb0: 67 65 72 3a 3a 6f 70 74 69 6f 6e 73 28 72 65 63 ger::options(rec
bdc0: 65 6e 74 70 72 6f 6a 65 63 74 73 29 5d 20 3e 20 entprojects)] >
bdd0: 30 20 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 70 0 } {.. set p
bde0: 72 6f 6a 65 63 74 20 5b 6c 69 6e 64 65 78 20 24 roject [lindex $
bdf0: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6f 70 74 RamDebugger::opt
be00: 69 6f 6e 73 28 72 65 63 65 6e 74 70 72 6f 6a 65 ions(recentproje
be10: 63 74 73 29 20 30 5d 0a 09 20 20 20 20 73 65 74 cts) 0].. set
be20: 20 65 72 72 20 5b 63 61 74 63 68 20 7b 20 63 70 err [catch { cp
be30: 72 6f 6a 65 63 74 3a 3a 4f 70 65 6e 50 72 6f 6a roject::OpenProj
be40: 65 63 74 20 24 77 20 30 20 7d 5d 0a 09 20 20 20 ect $w 0 }]..
be50: 20 69 66 20 7b 20 24 65 72 72 20 7d 20 7b 20 73 if { $err } { s
be60: 65 74 20 70 72 6f 6a 65 63 74 20 22 22 20 7d 0a et project "" }.
be70: 09 7d 0a 09 69 66 20 7b 20 24 70 72 6f 6a 65 63 .}..if { $projec
be80: 74 20 3d 3d 20 22 22 20 7d 20 7b 0a 09 20 20 20 t == "" } {..
be90: 20 63 70 72 6f 6a 65 63 74 3a 3a 43 72 65 61 74 cproject::Creat
bea0: 65 20 24 77 0a 09 20 20 20 20 72 65 74 75 72 6e e $w.. return
beb0: 20 2d 31 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 -1..}. }..
bec0: 20 20 69 66 20 7b 20 24 64 65 62 72 65 6c 20 21 if { $debrel !
bed0: 3d 20 22 64 65 62 75 67 22 20 26 26 20 24 64 65 = "debug" && $de
bee0: 62 72 65 6c 20 21 3d 20 22 72 65 6c 65 61 73 65 brel != "release
bef0: 22 20 7d 20 7b 0a 09 57 61 72 6e 57 69 6e 20 22 " } {..WarnWin "
bf00: 65 72 72 6f 72 3a 20 70 72 6f 67 72 61 6d 20 6d error: program m
bf10: 75 73 74 20 62 65 20 69 6e 20 64 65 62 75 67 20 ust be in debug
bf20: 6f 72 20 69 6e 20 72 65 6c 65 61 73 65 20 6d 6f or in release mo
bf30: 64 65 22 0a 09 72 65 74 75 72 6e 20 2d 31 0a 20 de"..return -1.
bf40: 20 20 20 7d 0a 20 20 20 20 69 66 20 7b 20 5b 61 }. if { [a
bf50: 75 74 6f 5f 65 78 65 63 6f 6b 20 67 63 63 5d 20 uto_execok gcc]
bf60: 3d 3d 20 22 22 20 7d 20 7b 0a 09 73 65 74 20 72 == "" } {..set r
bf70: 65 74 20 5b 44 69 61 6c 6f 67 57 69 6e 3a 3a 6d et [DialogWin::m
bf80: 65 73 73 61 67 65 42 6f 78 20 2d 64 65 66 61 75 essageBox -defau
bf90: 6c 74 20 79 65 73 20 2d 69 63 6f 6e 20 71 75 65 lt yes -icon que
bfa0: 73 74 69 6f 6e 20 2d 6d 65 73 73 61 67 65 20 5c stion -message \
bfb0: 0a 09 20 20 20 20 22 43 6f 75 6c 64 20 6e 6f 74 .. "Could not
bfc0: 20 66 69 6e 64 20 63 6f 6d 6d 61 6e 64 20 27 67 find command 'g
bfd0: 63 63 27 2e 20 44 6f 20 79 6f 75 20 77 61 6e 74 cc'. Do you want
bfe0: 20 74 6f 20 73 65 65 20 74 68 65 20 68 65 6c 70 to see the help
bff0: 3f 22 20 2d 70 61 72 65 6e 74 20 24 77 20 5c 0a ?" -parent $w \.
c000: 09 20 20 20 20 2d 74 69 74 6c 65 20 22 43 6f 6d . -title "Com
c010: 6d 61 6e 64 20 6e 6f 74 20 66 6f 75 6e 64 22 20 mand not found"
c020: 2d 74 79 70 65 20 79 65 73 6e 6f 5d 0a 09 69 66 -type yesno]..if
c030: 20 7b 20 24 72 65 74 20 3d 3d 20 22 79 65 73 22 { $ret == "yes"
c040: 20 7d 20 7b 0a 09 20 20 20 20 52 61 6d 44 65 62 } {.. RamDeb
c050: 75 67 67 65 72 3a 3a 56 69 65 77 48 65 6c 70 46 ugger::ViewHelpF
c060: 6f 72 57 6f 72 64 20 22 44 65 62 75 67 67 69 6e orWord "Debuggin
c070: 67 20 63 2b 2b 22 0a 09 20 20 20 20 23 52 61 6d g c++".. #Ram
c080: 44 65 62 75 67 67 65 72 3a 3a 56 69 65 77 48 65 Debugger::ViewHe
c090: 6c 70 46 69 6c 65 20 22 30 31 52 61 6d 44 65 62 lpFile "01RamDeb
c0a0: 75 67 67 65 72 2f 52 61 6d 44 65 62 75 67 67 65 ugger/RamDebugge
c0b0: 72 5f 31 32 2e 68 74 6d 6c 22 0a 09 7d 0a 09 72 r_12.html"..}..r
c0c0: 65 74 75 72 6e 20 2d 31 0a 20 20 20 20 7d 0a 20 eturn -1. }.
c0d0: 20 20 20 24 52 61 6d 44 65 62 75 67 67 65 72 3a $RamDebugger:
c0e0: 3a 6d 61 69 6e 66 72 61 6d 65 20 73 65 74 6d 65 :mainframe setme
c0f0: 6e 75 73 74 61 74 65 20 64 65 62 75 67 65 6e 74 nustate debugent
c100: 72 79 20 64 69 73 61 62 6c 65 64 0a 20 20 20 20 ry disabled.
c110: 24 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 6d 61 $RamDebugger::ma
c120: 69 6e 66 72 61 6d 65 20 73 65 74 6d 65 6e 75 73 inframe setmenus
c130: 74 61 74 65 20 63 2b 2b 65 6e 74 72 79 20 64 69 tate c++entry di
c140: 73 61 62 6c 65 64 0a 20 20 20 20 24 52 61 6d 44 sabled. $RamD
c150: 65 62 75 67 67 65 72 3a 3a 6d 61 69 6e 66 72 61 ebugger::mainfra
c160: 6d 65 20 73 65 74 6d 65 6e 75 73 74 61 74 65 20 me setmenustate
c170: 61 63 74 69 76 65 63 6f 6e 66 69 67 75 72 61 74 activeconfigurat
c180: 69 6f 6e 20 64 69 73 61 62 6c 65 64 0a 0a 20 20 ion disabled..
c190: 20 20 73 65 74 20 6d 65 6e 75 20 5b 24 52 61 6d set menu [$Ram
c1a0: 44 65 62 75 67 67 65 72 3a 3a 6d 61 69 6e 66 72 Debugger::mainfr
c1b0: 61 6d 65 20 67 65 74 6d 65 6e 75 20 63 2b 2b 5d ame getmenu c++]
c1c0: 0a 20 20 20 20 24 6d 65 6e 75 20 61 64 64 20 73 . $menu add s
c1d0: 65 70 61 72 61 74 6f 72 0a 20 20 20 20 24 6d 65 eparator. $me
c1e0: 6e 75 20 61 64 64 20 63 6f 6d 6d 61 6e 64 20 2d nu add command -
c1f0: 6c 61 62 65 6c 20 22 53 74 6f 70 20 63 6f 6d 70 label "Stop comp
c200: 69 6c 69 6e 67 22 20 2d 63 6f 6d 6d 61 6e 64 20 iling" -command
c210: 5c 0a 20 20 20 20 20 20 20 22 73 65 74 20 3a 3a \. "set ::
c220: 63 70 72 6f 6a 65 63 74 3a 3a 63 6f 6d 70 69 6c cproject::compil
c230: 61 74 69 6f 6e 73 74 61 74 75 73 20 32 22 0a 0a ationstatus 2"..
c240: 20 20 20 20 73 65 74 20 70 77 64 20 5b 70 77 64 set pwd [pwd
c250: 5d 0a 20 20 20 20 63 64 20 5b 66 69 6c 65 20 64 ]. cd [file d
c260: 69 72 6e 61 6d 65 20 24 70 72 6f 6a 65 63 74 5d irname $project]
c270: 0a 0a 20 20 20 20 73 65 74 20 6f 62 6a 64 69 72 .. set objdir
c280: 20 5b 66 69 6c 65 20 74 61 69 6c 20 5b 66 69 6c [file tail [fil
c290: 65 20 72 6f 6f 74 20 24 70 72 6f 6a 65 63 74 5d e root $project]
c2a0: 5d 5f 24 64 65 62 72 65 6c 0a 20 20 20 20 69 66 ]_$debrel. if
c2b0: 20 7b 20 21 5b 66 69 6c 65 20 65 78 69 73 74 73 { ![file exists
c2c0: 20 24 6f 62 6a 64 69 72 5d 20 7d 20 7b 20 66 69 $objdir] } { fi
c2d0: 6c 65 20 6d 6b 64 69 72 20 24 6f 62 6a 64 69 72 le mkdir $objdir
c2e0: 20 7d 0a 0a 20 20 20 20 73 65 74 20 63 70 72 6f }.. set cpro
c2f0: 6a 65 63 74 3a 3a 63 6f 6d 70 69 6c 61 74 69 6f ject::compilatio
c300: 6e 73 74 61 74 75 73 20 2d 31 0a 0a 20 20 20 20 nstatus -1..
c310: 73 65 74 20 63 61 74 63 68 5f 65 72 72 20 5b 63 set catch_err [c
c320: 61 74 63 68 20 7b 0a 09 69 66 20 7b 20 24 75 6e atch {..if { $un
c330: 69 71 75 65 5f 66 69 6c 65 20 21 3d 20 22 22 20 ique_file != ""
c340: 7d 20 7b 0a 09 20 20 20 20 73 65 74 20 66 6f 75 } {.. set fou
c350: 6e 64 20 30 0a 09 20 20 20 20 73 65 74 20 75 6e nd 0.. set un
c360: 69 71 75 65 5f 66 69 6c 65 20 5b 52 61 6d 44 65 ique_file [RamDe
c370: 62 75 67 67 65 72 3a 3a 66 69 6c 65 6e 6f 72 6d bugger::filenorm
c380: 61 6c 69 7a 65 20 24 75 6e 69 71 75 65 5f 66 69 alize $unique_fi
c390: 6c 65 5d 0a 09 20 20 20 20 66 6f 72 65 61 63 68 le].. foreach
c3a0: 20 69 20 24 66 69 6c 65 73 20 7b 0a 09 09 66 6f i $files {...fo
c3b0: 72 65 61 63 68 20 22 66 69 6c 65 5f 69 6e 20 74 reach "file_in t
c3c0: 79 70 65 20 67 72 6f 75 70 5f 69 6e 20 70 61 74 ype group_in pat
c3d0: 68 22 20 24 69 20 62 72 65 61 6b 0a 09 09 73 65 h" $i break...se
c3e0: 74 20 66 69 6c 65 5f 69 6e 32 20 5b 52 61 6d 44 t file_in2 [RamD
c3f0: 65 62 75 67 67 65 72 3a 3a 66 69 6c 65 6e 6f 72 ebugger::filenor
c400: 6d 61 6c 69 7a 65 20 5b 66 69 6c 65 20 6a 6f 69 malize [file joi
c410: 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 n [file dirname
c420: 24 70 72 6f 6a 65 63 74 5d 20 5c 0a 09 09 20 20 $project] \...
c430: 20 20 20 20 20 20 24 70 61 74 68 20 24 66 69 6c $path $fil
c440: 65 5f 69 6e 5d 5d 0a 09 09 69 66 20 7b 20 5b 73 e_in]]...if { [s
c450: 74 72 69 6e 67 20 65 71 75 61 6c 20 24 66 69 6c tring equal $fil
c460: 65 5f 69 6e 32 20 24 75 6e 69 71 75 65 5f 66 69 e_in2 $unique_fi
c470: 6c 65 5d 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 le] } {... se
c480: 74 20 63 6f 6d 70 66 69 6c 65 73 20 5b 6c 69 73 t compfiles [lis
c490: 74 20 24 69 5d 0a 09 09 20 20 20 20 73 65 74 20 t $i]... set
c4a0: 66 6f 75 6e 64 20 31 0a 09 09 20 20 20 20 62 72 found 1... br
c4b0: 65 61 6b 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 eak...}.. }..
c4c0: 20 20 20 20 69 66 20 7b 20 21 24 66 6f 75 6e 64 if { !$found
c4d0: 20 7d 20 7b 0a 09 09 57 61 72 6e 57 69 6e 20 22 } {...WarnWin "
c4e0: 65 72 72 6f 72 3a 20 66 69 6c 65 20 27 24 75 6e error: file '$un
c4f0: 69 71 75 65 5f 66 69 6c 65 27 20 69 73 20 6e 6f ique_file' is no
c500: 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 t included in th
c510: 65 20 63 6f 6d 70 69 6c 65 20 70 72 6f 6a 65 63 e compile projec
c520: 74 22 0a 09 09 73 65 74 20 63 70 72 6f 6a 65 63 t"...set cprojec
c530: 74 3a 3a 63 6f 6d 70 69 6c 61 74 69 6f 6e 73 74 t::compilationst
c540: 61 74 75 73 20 31 0a 09 09 73 65 74 20 63 6f 6d atus 1...set com
c550: 70 66 69 6c 65 73 20 22 22 0a 09 20 20 20 20 7d pfiles "".. }
c560: 0a 09 20 20 20 20 73 65 74 20 66 6f 72 63 65 63 .. set forcec
c570: 6f 6d 70 69 6c 65 20 31 0a 09 20 20 20 20 73 65 ompile 1.. se
c580: 74 20 70 72 6f 6a 65 63 74 5f 73 68 6f 72 74 20 t project_short
c590: 22 24 66 69 6c 65 5f 69 6e 20 24 64 65 62 72 65 "$file_in $debre
c5a0: 6c 22 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 l"..} else {..
c5b0: 20 20 73 65 74 20 63 6f 6d 70 66 69 6c 65 73 20 set compfiles
c5c0: 24 66 69 6c 65 73 0a 09 20 20 20 20 73 65 74 20 $files.. set
c5d0: 66 6f 72 63 65 63 6f 6d 70 69 6c 65 20 30 0a 09 forcecompile 0..
c5e0: 20 20 20 20 73 65 74 20 70 72 6f 6a 65 63 74 5f set project_
c5f0: 73 68 6f 72 74 20 22 5b 66 69 6c 65 20 72 6f 6f short "[file roo
c600: 74 20 5b 66 69 6c 65 20 74 61 69 6c 20 24 70 72 t [file tail $pr
c610: 6f 6a 65 63 74 5d 5d 20 24 64 65 62 72 65 6c 22 oject]] $debrel"
c620: 0a 09 7d 0a 09 0a 09 52 61 6d 44 65 62 75 67 67 ..}....RamDebugg
c630: 65 72 3a 3a 54 65 78 74 43 6f 6d 70 52 61 69 73 er::TextCompRais
c640: 65 0a 09 52 61 6d 44 65 62 75 67 67 65 72 3a 3a e..RamDebugger::
c650: 54 65 78 74 43 6f 6d 70 49 6e 73 65 72 74 20 22 TextCompInsert "
c660: 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 2d [string repeat -
c670: 20 32 30 5d 43 6f 6d 70 69 6c 69 6e 67 20 24 70 20]Compiling $p
c680: 72 6f 6a 65 63 74 5f 73 68 6f 72 74 22 0a 09 52 roject_short"..R
c690: 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 74 amDebugger::Text
c6a0: 43 6f 6d 70 49 6e 73 65 72 74 20 22 5b 73 74 72 CompInsert "[str
c6b0: 69 6e 67 20 72 65 70 65 61 74 20 2d 20 32 30 5d ing repeat - 20]
c6c0: 5c 6e 22 0a 09 75 70 64 61 74 65 0a 0a 09 73 65 \n"..update...se
c6d0: 74 20 6d 61 6b 65 20 5b 66 69 6c 65 20 6a 6f 69 t make [file joi
c6e0: 6e 20 24 6f 62 6a 64 69 72 20 4d 61 6b 65 66 69 n $objdir Makefi
c6f0: 6c 65 2e 72 61 6d 64 65 62 75 67 67 65 72 5d 0a le.ramdebugger].
c700: 09 69 66 20 7b 20 24 75 6e 69 71 75 65 5f 66 69 .if { $unique_fi
c710: 6c 65 20 21 3d 20 22 22 20 7d 20 7b 20 61 70 70 le != "" } { app
c720: 65 6e 64 20 6d 61 6b 65 20 31 20 7d 0a 0a 09 73 end make 1 }...s
c730: 65 74 20 66 6f 75 74 20 5b 6f 70 65 6e 20 24 6d et fout [open $m
c740: 61 6b 65 20 77 5d 0a 09 0a 09 70 75 74 73 20 2d ake w]....puts -
c750: 6e 6f 6e 65 77 6c 69 6e 65 20 20 24 66 6f 75 74 nonewline $fout
c760: 20 22 5c 6e 23 20 4d 61 6b 65 66 69 6c 65 20 20 "\n# Makefile
c770: 2d 2a 2d 20 6d 61 6b 65 66 69 6c 65 20 2d 2a 2d -*- makefile -*-
c780: 20 22 0a 09 70 75 74 73 20 24 66 6f 75 74 20 22 "..puts $fout "
c790: 43 72 65 61 74 65 64 3a 20 5b 63 6c 6f 63 6b 20 Created: [clock
c7a0: 66 6f 72 6d 61 74 20 5b 63 6c 6f 63 6b 20 73 65 format [clock se
c7b0: 63 6f 6e 64 73 5d 20 2d 66 6f 72 6d 61 74 20 7b conds] -format {
c7c0: 25 59 2d 25 6d 2d 25 64 20 25 48 3a 25 4d 3a 25 %Y-%m-%d %H:%M:%
c7d0: 53 7d 5d 22 0a 09 70 75 74 73 20 24 66 6f 75 74 S}]"..puts $fout
c7e0: 20 22 5c 6e 5b 73 74 72 69 6e 67 20 72 65 70 65 "\n[string repe
c7f0: 61 74 20 23 20 38 30 5d 22 0a 09 70 75 74 73 20 at # 80]"..puts
c800: 24 66 6f 75 74 20 22 23 20 4d 61 6b 65 66 69 6c $fout "# Makefil
c810: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 e automatically
c820: 6d 61 64 65 20 62 79 20 52 61 6d 44 65 62 75 67 made by RamDebug
c830: 67 65 72 22 0a 09 70 75 74 73 20 24 66 6f 75 74 ger"..puts $fout
c840: 20 22 23 20 20 20 20 20 65 78 65 63 75 74 65 20 "# execute
c850: 69 74 20 66 72 6f 6d 20 74 68 65 20 75 70 70 65 it from the uppe
c860: 72 20 64 69 72 65 63 74 6f 72 79 22 0a 09 70 75 r directory"..pu
c870: 74 73 20 24 66 6f 75 74 20 22 5b 73 74 72 69 6e ts $fout "[strin
c880: 67 20 72 65 70 65 61 74 20 23 20 38 30 5d 5c 6e g repeat # 80]\n
c890: 22 0a 0a 09 69 66 20 7b 20 24 75 6e 69 71 75 65 "...if { $unique
c8a0: 5f 66 69 6c 65 20 3d 3d 20 22 22 20 7d 20 7b 0a _file == "" } {.
c8b0: 09 20 20 20 20 70 75 74 73 20 2d 6e 6f 6e 65 77 . puts -nonew
c8c0: 6c 69 6e 65 20 24 66 6f 75 74 20 22 61 6c 6c 3a line $fout "all:
c8d0: 20 22 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 ".. foreach
c8e0: 6c 69 6e 6b 20 24 6c 69 6e 6b 73 20 7b 0a 09 09 link $links {...
c8f0: 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 puts -nonewline
c900: 24 66 6f 75 74 20 22 5b 66 69 6c 65 20 6a 6f 69 $fout "[file joi
c910: 6e 20 24 6f 62 6a 64 69 72 20 24 64 61 74 61 4c n $objdir $dataL
c920: 28 24 64 65 62 72 65 6c 2c 24 6c 69 6e 6b 2c 6c ($debrel,$link,l
c930: 69 6e 6b 65 78 65 29 5d 20 22 0a 09 20 20 20 20 inkexe)] "..
c940: 7d 0a 09 20 20 20 20 70 75 74 73 20 24 66 6f 75 }.. puts $fou
c950: 74 20 22 5c 6e 22 0a 09 7d 0a 0a 09 66 6f 72 65 t "\n"..}...fore
c960: 61 63 68 20 69 20 24 63 6f 6d 70 66 69 6c 65 73 ach i $compfiles
c970: 20 7b 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 {.. foreach
c980: 22 66 69 6c 65 5f 69 6e 20 74 79 70 65 20 67 72 "file_in type gr
c990: 6f 75 70 5f 69 6e 20 70 61 74 68 22 20 24 69 20 oup_in path" $i
c9a0: 62 72 65 61 6b 0a 0a 09 20 20 20 20 69 66 20 7b break... if {
c9b0: 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 64 [string trim $d
c9c0: 61 74 61 43 28 24 67 72 6f 75 70 5f 69 6e 2c 24 ataC($group_in,$
c9d0: 64 65 62 72 65 6c 2c 63 6f 6d 70 69 6c 65 72 29 debrel,compiler)
c9e0: 5d 20 3d 3d 20 22 22 20 7d 20 7b 20 63 6f 6e 74 ] == "" } { cont
c9f0: 69 6e 75 65 20 7d 0a 0a 09 20 20 20 20 73 65 74 inue }... set
ca00: 20 66 69 6c 65 20 5b 66 69 6c 65 20 6a 6f 69 6e file [file join
ca10: 20 24 70 61 74 68 20 24 66 69 6c 65 5f 69 6e 5d $path $file_in]
ca20: 0a 09 20 20 20 20 73 65 74 20 6f 62 6a 66 69 6c .. set objfil
ca30: 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 6f 62 e [file join $ob
ca40: 6a 64 69 72 20 5b 66 69 6c 65 20 72 6f 6f 74 20 jdir [file root
ca50: 24 66 69 6c 65 5f 69 6e 5d 2e 6f 5d 0a 09 20 20 $file_in].o]..
ca60: 20 20 0a 09 20 20 20 20 69 66 20 7b 20 24 66 6f .. if { $fo
ca70: 72 63 65 63 6f 6d 70 69 6c 65 20 26 26 20 5b 66 rcecompile && [f
ca80: 69 6c 65 20 65 78 69 73 74 73 20 24 6f 62 6a 66 ile exists $objf
ca90: 69 6c 65 5d 20 7d 20 7b 0a 09 09 66 69 6c 65 20 ile] } {...file
caa0: 64 65 6c 65 74 65 20 24 6f 62 6a 66 69 6c 65 0a delete $objfile.
cab0: 09 20 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 . }.. set
cac0: 64 65 70 65 6e 64 65 6e 63 69 65 73 20 5b 53 63 dependencies [Sc
cad0: 61 6e 48 65 61 64 65 72 73 20 24 66 69 6c 65 5d anHeaders $file]
cae0: 0a 09 20 20 20 20 70 75 74 73 20 2d 6e 6f 6e 65 .. puts -none
caf0: 77 6c 69 6e 65 20 24 66 6f 75 74 20 22 5b 70 72 wline $fout "[pr
cb00: 69 6e 74 66 69 6c 65 6e 61 6d 65 20 24 6f 62 6a intfilename $obj
cb10: 66 69 6c 65 5d 3a 20 5b 70 72 69 6e 74 66 69 6c file]: [printfil
cb20: 65 6e 61 6d 65 20 24 66 69 6c 65 5d 22 0a 09 20 ename $file]"..
cb30: 20 20 20 66 6f 72 65 61 63 68 20 69 20 24 64 65 foreach i $de
cb40: 70 65 6e 64 65 6e 63 69 65 73 20 7b 0a 09 09 70 pendencies {...p
cb50: 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 uts -nonewline $
cb60: 66 6f 75 74 20 22 20 5b 70 72 69 6e 74 66 69 6c fout " [printfil
cb70: 65 6e 61 6d 65 20 24 69 5d 22 0a 09 20 20 20 20 ename $i]"..
cb80: 7d 0a 09 20 20 20 20 70 75 74 73 20 2d 6e 6f 6e }.. puts -non
cb90: 65 77 6c 69 6e 65 20 24 66 6f 75 74 20 22 5c 6e ewline $fout "\n
cba0: 5c 74 24 64 61 74 61 43 28 24 67 72 6f 75 70 5f \t$dataC($group_
cbb0: 69 6e 2c 24 64 65 62 72 65 6c 2c 63 6f 6d 70 69 in,$debrel,compi
cbc0: 6c 65 72 29 20 22 0a 09 20 20 20 20 66 6f 72 65 ler) ".. fore
cbd0: 61 63 68 20 6a 20 24 64 61 74 61 43 28 24 67 72 ach j $dataC($gr
cbe0: 6f 75 70 5f 69 6e 2c 24 64 65 62 72 65 6c 2c 66 oup_in,$debrel,f
cbf0: 6c 61 67 73 29 20 7b 0a 09 09 70 75 74 73 20 2d lags) {...puts -
cc00: 6e 6f 6e 65 77 6c 69 6e 65 20 24 66 6f 75 74 20 nonewline $fout
cc10: 22 24 6a 20 22 0a 09 20 20 20 20 7d 0a 09 20 20 "$j ".. }..
cc20: 20 20 66 6f 72 65 61 63 68 20 6a 20 24 64 61 74 foreach j $dat
cc30: 61 43 28 24 67 72 6f 75 70 5f 69 6e 2c 24 64 65 aC($group_in,$de
cc40: 62 72 65 6c 2c 69 6e 63 6c 75 64 65 64 69 72 73 brel,includedirs
cc50: 29 20 7b 0a 09 09 69 66 20 7b 20 5b 73 74 72 69 ) {...if { [stri
cc60: 6e 67 20 66 69 72 73 74 20 22 20 22 20 24 6a 5d ng first " " $j]
cc70: 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 09 20 20 20 == -1 } {...
cc80: 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 puts -nonewline
cc90: 20 24 66 6f 75 74 20 22 2d 49 24 6a 20 22 0a 09 $fout "-I$j "..
cca0: 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 .} else {...
ccb0: 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 puts -nonewline
ccc0: 24 66 6f 75 74 20 22 2d 49 5c 22 24 6a 5c 22 20 $fout "-I\"$j\"
ccd0: 22 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 20 20 "...}.. }..
cce0: 20 20 66 6f 72 65 61 63 68 20 6a 20 24 64 61 74 foreach j $dat
ccf0: 61 43 28 24 67 72 6f 75 70 5f 69 6e 2c 24 64 65 aC($group_in,$de
cd00: 62 72 65 6c 2c 64 65 66 69 6e 65 73 29 20 7b 0a brel,defines) {.
cd10: 09 09 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e ..puts -nonewlin
cd20: 65 20 24 66 6f 75 74 20 22 2d 44 24 6a 20 22 0a e $fout "-D$j ".
cd30: 09 20 20 20 20 7d 0a 09 20 20 20 20 70 75 74 73 . }.. puts
cd40: 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 66 6f 75 -nonewline $fou
cd50: 74 20 22 5c 5c 5c 6e 5c 74 5c 74 2d 6f 20 5b 70 t "\\\n\t\t-o [p
cd60: 72 69 6e 74 66 69 6c 65 6e 61 6d 65 20 24 6f 62 rintfilename $ob
cd70: 6a 66 69 6c 65 5d 20 22 0a 09 20 20 20 20 70 75 jfile] ".. pu
cd80: 74 73 20 24 66 6f 75 74 20 22 5b 70 72 69 6e 74 ts $fout "[print
cd90: 66 69 6c 65 6e 61 6d 65 20 24 66 69 6c 65 5d 5c filename $file]\
cda0: 6e 22 0a 09 7d 0a 09 69 66 20 7b 20 24 75 6e 69 n"..}..if { $uni
cdb0: 71 75 65 5f 66 69 6c 65 20 3d 3d 20 22 22 20 7d que_file == "" }
cdc0: 20 7b 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 {.. foreach
cdd0: 6c 69 6e 6b 20 24 6c 69 6e 6b 73 20 7b 0a 09 09 link $links {...
cde0: 73 65 74 20 6f 62 6a 66 69 6c 65 73 20 22 22 0a set objfiles "".
cdf0: 09 09 66 6f 72 65 61 63 68 20 69 20 24 66 69 6c ..foreach i $fil
ce00: 65 73 20 7b 0a 09 09 20 20 20 20 66 6f 72 65 61 es {... forea
ce10: 63 68 20 22 66 69 6c 65 5f 69 6e 20 74 79 70 65 ch "file_in type
ce20: 20 67 72 6f 75 70 5f 69 6e 20 70 61 74 68 22 20 group_in path"
ce30: 24 69 20 62 72 65 61 6b 0a 09 09 20 20 20 20 69 $i break... i
ce40: 66 20 7b 20 5b 6c 73 65 61 72 63 68 20 24 64 61 f { [lsearch $da
ce50: 74 61 4c 28 24 64 65 62 72 65 6c 2c 24 6c 69 6e taL($debrel,$lin
ce60: 6b 2c 6c 69 6e 6b 67 72 6f 75 70 73 29 20 24 67 k,linkgroups) $g
ce70: 72 6f 75 70 5f 69 6e 5d 20 21 3d 20 2d 31 20 7c roup_in] != -1 |
ce80: 7c 20 5c 0a 09 09 20 20 20 20 20 20 20 20 20 20 | \...
ce90: 20 20 5b 6c 73 65 61 72 63 68 20 24 64 61 74 61 [lsearch $data
cea0: 4c 28 24 64 65 62 72 65 6c 2c 24 6c 69 6e 6b 2c L($debrel,$link,
ceb0: 6c 69 6e 6b 67 72 6f 75 70 73 29 20 41 6c 6c 5d linkgroups) All]
cec0: 20 21 3d 20 2d 31 20 7d 20 7b 0a 09 09 20 20 20 != -1 } {...
ced0: 20 20 20 20 20 69 66 20 7b 20 5b 66 69 6c 65 20 if { [file
cee0: 65 78 74 20 24 66 69 6c 65 5f 69 6e 5d 20 3d 3d ext $file_in] ==
cef0: 20 22 2e 72 63 22 20 7d 20 7b 0a 09 09 20 20 20 ".rc" } {...
cf00: 20 20 20 20 20 20 20 20 20 6c 61 70 70 65 6e 64 lappend
cf10: 20 6f 62 6a 66 69 6c 65 73 20 5b 66 69 6c 65 20 objfiles [file
cf20: 6a 6f 69 6e 20 24 70 61 74 68 20 24 66 69 6c 65 join $path $file
cf30: 5f 69 6e 5d 0a 09 09 20 20 20 20 20 20 20 20 7d _in]... }
cf40: 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 20 20 else {...
cf50: 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20 6f 62 lappend ob
cf60: 6a 66 69 6c 65 73 20 5b 66 69 6c 65 20 6a 6f 69 jfiles [file joi
cf70: 6e 20 24 6f 62 6a 64 69 72 20 5b 66 69 6c 65 20 n $objdir [file
cf80: 72 6f 6f 74 20 24 66 69 6c 65 5f 69 6e 5d 2e 6f root $file_in].o
cf90: 5d 0a 09 09 20 20 20 20 20 20 20 20 7d 0a 09 09 ]... }...
cfa0: 20 20 20 20 7d 0a 09 09 7d 0a 09 09 69 66 20 7b }...}...if {
cfb0: 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 64 [string trim $d
cfc0: 61 74 61 4c 28 24 64 65 62 72 65 6c 2c 24 6c 69 ataL($debrel,$li
cfd0: 6e 6b 2c 6c 69 6e 6b 65 78 65 29 5d 20 3d 3d 20 nk,linkexe)] ==
cfe0: 22 22 20 7d 20 7b 0a 09 09 20 20 20 20 73 65 74 "" } {... set
cff0: 20 74 74 20 22 57 41 52 4e 49 4e 47 3a 20 6e 6f tt "WARNING: no
d000: 20 6f 75 74 70 75 74 20 6e 61 6d 65 20 66 6f 72 output name for
d010: 20 6c 69 6e 6b 69 6e 67 20 74 61 72 67 65 74 20 linking target
d020: 27 24 6c 69 6e 6b 27 2e 20 22 0a 09 09 20 20 20 '$link'. "...
d030: 20 61 70 70 65 6e 64 20 74 74 20 22 61 73 73 75 append tt "assu
d040: 6d 69 6e 67 20 27 70 72 6f 67 72 61 6d 5f 24 6c ming 'program_$l
d050: 69 6e 6b 2e 65 78 65 27 5c 6e 22 0a 09 09 20 20 ink.exe'\n"...
d060: 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 RamDebugger::T
d070: 65 78 74 43 6f 6d 70 49 6e 73 65 72 74 52 65 64 extCompInsertRed
d080: 20 24 74 74 0a 09 09 20 20 20 20 73 65 74 20 6f $tt... set o
d090: 75 74 70 75 74 6e 61 6d 65 20 5b 66 69 6c 65 20 utputname [file
d0a0: 6a 6f 69 6e 20 24 6f 62 6a 64 69 72 20 70 72 6f join $objdir pro
d0b0: 67 72 61 6d 5f 24 6c 69 6e 6b 2e 65 78 65 5d 0a gram_$link.exe].
d0c0: 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 ..} else {...
d0d0: 20 73 65 74 20 6f 75 74 70 75 74 6e 61 6d 65 20 set outputname
d0e0: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 6f 62 6a 64 [file join $objd
d0f0: 69 72 20 24 64 61 74 61 4c 28 24 64 65 62 72 65 ir $dataL($debre
d100: 6c 2c 24 6c 69 6e 6b 2c 6c 69 6e 6b 65 78 65 29 l,$link,linkexe)
d110: 5d 0a 09 09 7d 0a 0a 09 09 73 65 74 20 74 61 72 ]...}....set tar
d120: 67 65 74 20 5b 73 74 72 69 6e 67 20 74 6f 75 70 get [string toup
d130: 70 65 72 20 4f 42 4a 46 49 4c 45 53 5f 24 6c 69 per OBJFILES_$li
d140: 6e 6b 5d 0a 09 09 73 65 74 20 73 74 72 69 6e 67 nk]...set string
d150: 20 22 24 74 61 72 67 65 74 20 3d 20 22 0a 09 09 "$target = "...
d160: 66 6f 72 65 61 63 68 20 69 20 24 6f 62 6a 66 69 foreach i $objfi
d170: 6c 65 73 20 7b 0a 09 09 20 20 20 20 61 70 70 65 les {... appe
d180: 6e 64 20 73 74 72 69 6e 67 20 22 24 69 20 22 0a nd string "$i ".
d190: 09 09 20 20 20 20 69 66 20 7b 20 5b 73 74 72 69 .. if { [stri
d1a0: 6e 67 20 6c 65 6e 67 74 68 20 24 73 74 72 69 6e ng length $strin
d1b0: 67 5d 20 3e 20 37 30 20 7d 20 7b 0a 09 09 20 20 g] > 70 } {...
d1c0: 20 20 20 20 20 20 70 75 74 73 20 24 66 6f 75 74 puts $fout
d1d0: 20 22 24 73 74 72 69 6e 67 20 5c 5c 22 0a 09 09 "$string \\"...
d1e0: 20 20 20 20 20 20 20 20 73 65 74 20 73 74 72 69 set stri
d1f0: 6e 67 20 22 22 0a 09 09 20 20 20 20 7d 0a 09 09 ng ""... }...
d200: 7d 0a 09 09 70 75 74 73 20 24 66 6f 75 74 20 22 }...puts $fout "
d210: 24 73 74 72 69 6e 67 5c 6e 22 0a 0a 09 09 70 75 $string\n"....pu
d220: 74 73 20 24 66 6f 75 74 20 22 24 6f 75 74 70 75 ts $fout "$outpu
d230: 74 6e 61 6d 65 3a 20 5c 24 28 24 74 61 72 67 65 tname: \$($targe
d240: 74 29 22 0a 09 09 70 75 74 73 20 2d 6e 6f 6e 65 t)"...puts -none
d250: 77 6c 69 6e 65 20 24 66 6f 75 74 20 22 5c 74 24 wline $fout "\t$
d260: 64 61 74 61 4c 28 24 64 65 62 72 65 6c 2c 24 6c dataL($debrel,$l
d270: 69 6e 6b 2c 6c 69 6e 6b 65 72 29 20 22 0a 09 09 ink,linker) "...
d280: 66 6f 72 65 61 63 68 20 6a 20 24 64 61 74 61 4c foreach j $dataL
d290: 28 24 64 65 62 72 65 6c 2c 24 6c 69 6e 6b 2c 6c ($debrel,$link,l
d2a0: 69 6e 6b 66 6c 61 67 73 29 20 7b 0a 09 09 20 20 inkflags) {...
d2b0: 20 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e puts -nonewlin
d2c0: 65 20 24 66 6f 75 74 20 20 22 24 6a 20 22 0a 09 e $fout "$j "..
d2d0: 09 7d 0a 09 09 70 75 74 73 20 2d 6e 6f 6e 65 77 .}...puts -nonew
d2e0: 6c 69 6e 65 20 24 66 6f 75 74 20 22 2d 6f 20 24 line $fout "-o $
d2f0: 6f 75 74 70 75 74 6e 61 6d 65 20 5c 24 28 24 74 outputname \$($t
d300: 61 72 67 65 74 29 20 22 0a 09 09 66 6f 72 65 61 arget) "...forea
d310: 63 68 20 6a 20 24 64 61 74 61 4c 28 24 64 65 62 ch j $dataL($deb
d320: 72 65 6c 2c 24 6c 69 6e 6b 2c 6c 69 62 72 61 72 rel,$link,librar
d330: 69 65 73 64 69 72 73 29 20 7b 0a 09 09 20 20 20 iesdirs) {...
d340: 20 69 66 20 7b 20 24 64 61 74 61 4c 28 24 64 65 if { $dataL($de
d350: 62 72 65 6c 2c 24 6c 69 6e 6b 2c 6c 69 6e 6b 65 brel,$link,linke
d360: 72 29 20 21 3d 20 22 77 69 6e 64 72 65 73 22 20 r) != "windres"
d370: 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 20 69 66 } {... if
d380: 20 7b 20 5b 73 74 72 69 6e 67 20 66 69 72 73 74 { [string first
d390: 20 22 20 22 20 24 6a 5d 20 3d 3d 20 2d 31 20 7d " " $j] == -1 }
d3a0: 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 {...
d3b0: 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 puts -nonewline
d3c0: 20 24 66 6f 75 74 20 22 2d 4c 24 6a 20 22 0a 09 $fout "-L$j "..
d3d0: 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 . } else
d3e0: 7b 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 20 {...
d3f0: 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 puts -nonewline
d400: 24 66 6f 75 74 20 22 2d 4c 5c 22 24 6a 5c 22 20 $fout "-L\"$j\"
d410: 22 0a 09 09 20 20 20 20 20 20 20 20 7d 0a 09 09 "... }...
d420: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 20 } else {...
d430: 20 20 20 20 20 20 20 69 66 20 7b 20 5b 73 74 72 if { [str
d440: 69 6e 67 20 66 69 72 73 74 20 22 20 22 20 24 6a ing first " " $j
d450: 5d 20 3d 3d 20 2d 31 20 7d 20 7b 0a 09 09 20 20 ] == -1 } {...
d460: 20 20 20 20 20 20 20 20 20 20 70 75 74 73 20 2d puts -
d470: 6e 6f 6e 65 77 6c 69 6e 65 20 24 66 6f 75 74 20 nonewline $fout
d480: 22 2d 2d 69 6e 63 6c 75 64 65 20 24 6a 20 22 0a "--include $j ".
d490: 09 09 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 .. } else
d4a0: 20 7b 0a 09 09 20 20 20 20 20 20 20 20 20 20 20 {...
d4b0: 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 puts -nonewline
d4c0: 20 24 66 6f 75 74 20 22 2d 2d 69 6e 63 6c 75 64 $fout "--includ
d4d0: 65 20 5c 22 24 6a 5c 22 20 22 0a 09 09 20 20 20 e \"$j\" "...
d4e0: 20 20 20 20 20 7d 0a 09 09 20 20 20 20 7d 0a 09 }... }..
d4f0: 09 7d 0a 09 09 69 66 20 7b 20 24 64 61 74 61 4c .}...if { $dataL
d500: 28 24 64 65 62 72 65 6c 2c 24 6c 69 6e 6b 2c 6c ($debrel,$link,l
d510: 69 6e 6b 65 72 29 20 21 3d 20 22 77 69 6e 64 72 inker) != "windr
d520: 65 73 22 20 7d 20 7b 0a 09 09 20 20 20 20 70 75 es" } {... pu
d530: 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 66 ts -nonewline $f
d540: 6f 75 74 20 22 2d 4c 24 6f 62 6a 64 69 72 20 22 out "-L$objdir "
d550: 0a 09 09 7d 0a 09 09 66 6f 72 65 61 63 68 20 6a ...}...foreach j
d560: 20 24 64 61 74 61 4c 28 24 64 65 62 72 65 6c 2c $dataL($debrel,
d570: 24 6c 69 6e 6b 2c 6c 69 62 72 61 72 69 65 73 29 $link,libraries)
d580: 20 7b 0a 09 09 20 20 20 20 69 66 20 7b 20 5b 72 {... if { [r
d590: 65 67 65 78 70 20 7b 5e 6c 69 62 28 2e 2a 29 28 egexp {^lib(.*)(
d5a0: 5c 2e 61 7c 5c 2e 6c 69 62 7c 5c 2e 73 6f 29 24 \.a|\.lib|\.so)$
d5b0: 7d 20 24 6a 20 7b 7d 20 6a 32 5d 20 7d 20 7b 0a } $j {} j2] } {.
d5c0: 09 09 20 20 20 20 20 20 20 20 70 75 74 73 20 2d .. puts -
d5d0: 6e 6f 6e 65 77 6c 69 6e 65 20 24 66 6f 75 74 20 nonewline $fout
d5e0: 22 2d 6c 24 6a 32 20 22 0a 09 09 20 20 20 20 7d "-l$j2 "... }
d5f0: 20 65 6c 73 65 69 66 20 7b 20 5b 72 65 67 65 78 elseif { [regex
d600: 70 20 7b 5e 6c 69 62 28 2e 2a 29 7d 20 24 6a 20 p {^lib(.*)} $j
d610: 7b 7d 20 6a 32 5d 20 7d 20 7b 0a 09 09 20 20 20 {} j2] } {...
d620: 20 20 20 20 20 70 75 74 73 20 2d 6e 6f 6e 65 77 puts -nonew
d630: 6c 69 6e 65 20 24 66 6f 75 74 20 22 2d 6c 24 6a line $fout "-l$j
d640: 32 20 22 0a 09 09 20 20 20 20 7d 20 65 6c 73 65 2 "... } else
d650: 69 66 20 7b 20 5b 66 69 6c 65 20 65 78 69 73 74 if { [file exist
d660: 73 20 24 6a 5d 20 7d 20 7b 0a 09 09 20 20 20 20 s $j] } {...
d670: 20 20 20 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c puts -nonewl
d680: 69 6e 65 20 24 66 6f 75 74 20 22 24 6a 20 22 0a ine $fout "$j ".
d690: 09 09 20 20 20 20 7d 20 65 6c 73 65 69 66 20 7b .. } elseif {
d6a0: 20 5b 72 65 67 65 78 70 20 7b 28 3f 69 29 28 2e [regexp {(?i)(.
d6b0: 2a 29 5c 2e 6c 69 62 7d 20 24 6a 20 7b 7d 20 6a *)\.lib} $j {} j
d6c0: 32 5d 20 7d 20 7b 0a 09 09 20 20 20 20 20 20 20 2] } {...
d6d0: 20 70 75 74 73 20 2d 6e 6f 6e 65 77 6c 69 6e 65 puts -nonewline
d6e0: 20 24 66 6f 75 74 20 22 2d 6c 24 6a 32 20 22 0a $fout "-l$j2 ".
d6f0: 09 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 .. } else {..
d700: 09 20 20 20 20 20 20 20 20 70 75 74 73 20 2d 6e . puts -n
d710: 6f 6e 65 77 6c 69 6e 65 20 24 66 6f 75 74 20 22 onewline $fout "
d720: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 6f 62 6a 64 [file join $objd
d730: 69 72 20 24 6a 5d 20 22 0a 09 09 20 20 20 20 7d ir $j] "... }
d740: 0a 09 09 7d 0a 09 09 70 75 74 73 20 24 66 6f 75 ...}...puts $fou
d750: 74 20 22 5c 6e 22 0a 09 20 20 20 20 7d 0a 09 7d t "\n".. }..}
d760: 0a 09 63 6c 6f 73 65 20 24 66 6f 75 74 0a 0a 09 ..close $fout...
d770: 69 66 20 7b 20 24 3a 3a 74 63 6c 5f 70 6c 61 74 if { $::tcl_plat
d780: 66 6f 72 6d 28 70 6c 61 74 66 6f 72 6d 29 20 3d form(platform) =
d790: 3d 20 22 77 69 6e 64 6f 77 73 22 20 7d 20 7b 0a = "windows" } {.
d7a0: 09 20 20 20 20 73 65 74 20 63 6f 6d 6d 20 22 22 . set comm ""
d7b0: 0a 09 20 20 20 20 23 73 65 74 20 63 6f 6d 6d 20 .. #set comm
d7c0: 5b 61 75 74 6f 5f 65 78 65 63 6f 6b 20 73 74 61 [auto_execok sta
d7d0: 72 74 5d 0a 09 20 20 20 20 23 6c 61 70 70 65 6e rt].. #lappen
d7e0: 64 20 63 6f 6d 6d 20 20 2f 77 20 2f 6d 0a 09 20 d comm /w /m..
d7f0: 20 20 20 23 6c 61 70 70 65 6e 64 20 63 6f 6d 6d #lappend comm
d800: 20 20 2f 57 41 49 54 20 2f 4d 49 4e 0a 09 7d 20 /WAIT /MIN..}
d810: 65 6c 73 65 20 7b 20 73 65 74 20 63 6f 6d 6d 20 else { set comm
d820: 22 22 20 7d 0a 0a 09 6c 61 70 70 65 6e 64 20 63 "" }...lappend c
d830: 6f 6d 6d 20 6d 61 6b 65 0a 09 69 66 20 7b 20 24 omm make..if { $
d840: 6e 6f 73 74 6f 70 20 7d 20 7b 20 6c 61 70 70 65 nostop } { lappe
d850: 6e 64 20 63 6f 6d 6d 20 2d 6b 20 7d 0a 09 6c 61 nd comm -k }..la
d860: 70 70 65 6e 64 20 63 6f 6d 6d 20 2d 66 20 24 6d ppend comm -f $m
d870: 61 6b 65 0a 0a 09 69 66 20 7b 20 24 6e 6f 73 74 ake...if { $nost
d880: 6f 70 20 7d 20 7b 0a 09 20 20 20 20 52 61 6d 44 op } {.. RamD
d890: 65 62 75 67 67 65 72 3a 3a 54 65 78 74 43 6f 6d ebugger::TextCom
d8a0: 70 49 6e 73 65 72 74 20 22 6d 61 6b 65 20 2d 6b pInsert "make -k
d8b0: 20 2d 66 20 24 6d 61 6b 65 5c 6e 22 0a 09 7d 20 -f $make\n"..}
d8c0: 65 6c 73 65 20 7b 0a 09 20 20 20 20 52 61 6d 44 else {.. RamD
d8d0: 65 62 75 67 67 65 72 3a 3a 54 65 78 74 43 6f 6d ebugger::TextCom
d8e0: 70 49 6e 73 65 72 74 20 22 6d 61 6b 65 20 2d 66 pInsert "make -f
d8f0: 20 24 6d 61 6b 65 5c 6e 22 0a 09 7d 0a 09 73 65 $make\n"..}..se
d900: 74 20 66 69 6e 20 5b 6f 70 65 6e 20 22 7c 24 63 t fin [open "|$c
d910: 6f 6d 6d 20 7c 26 20 63 61 74 22 20 72 5d 0a 09 omm |& cat" r]..
d920: 0a 09 66 63 6f 6e 66 69 67 75 72 65 20 24 66 69 ..fconfigure $fi
d930: 6e 20 2d 62 6c 6f 63 6b 69 6e 67 20 30 0a 09 66 n -blocking 0..f
d940: 69 6c 65 65 76 65 6e 74 20 24 66 69 6e 20 72 65 ileevent $fin re
d950: 61 64 61 62 6c 65 20 5b 6c 69 73 74 20 63 70 72 adable [list cpr
d960: 6f 6a 65 63 74 3a 3a 43 6f 6d 70 69 6c 65 46 65 oject::CompileFe
d970: 65 64 62 61 63 6b 20 24 66 69 6e 5d 0a 09 0a 09 edback $fin]....
d980: 76 77 61 69 74 20 63 70 72 6f 6a 65 63 74 3a 3a vwait cproject::
d990: 63 6f 6d 70 69 6c 61 74 69 6f 6e 73 74 61 74 75 compilationstatu
d9a0: 73 0a 09 0a 09 69 66 20 7b 20 24 63 6f 6d 70 69 s....if { $compi
d9b0: 6c 61 74 69 6f 6e 73 74 61 74 75 73 20 3d 3d 20 lationstatus ==
d9c0: 32 20 7d 20 7b 0a 09 20 20 20 20 69 66 20 7b 20 2 } {.. if {
d9d0: 24 3a 3a 74 63 6c 5f 70 6c 61 74 66 6f 72 6d 28 $::tcl_platform(
d9e0: 70 6c 61 74 66 6f 72 6d 29 20 3d 3d 20 22 77 69 platform) == "wi
d9f0: 6e 64 6f 77 73 22 20 7d 20 7b 0a 09 09 23 20 6d ndows" } {...# m
da00: 61 79 62 65 20 69 74 20 6b 69 6c 6c 73 20 61 6c aybe it kills al
da10: 73 6f 20 6f 74 68 65 72 20 63 6f 6d 70 69 6c 61 so other compila
da20: 74 69 6f 6e 73 20 66 72 6f 6d 20 6f 74 68 65 72 tions from other
da30: 20 52 61 6d 44 65 62 75 67 67 65 72 27 73 20 6f RamDebugger's o
da40: 72 20 6d 61 6e 75 61 6c 20 6d 61 6b 65 27 73 0a r manual make's.
da50: 09 09 23 20 62 75 74 20 74 68 61 74 27 73 20 6c ..# but that's l
da60: 69 76 65 20 61 6e 64 20 74 68 61 74 27 73 20 77 ive and that's w
da70: 69 6e 64 6f 77 73 0a 09 09 66 6f 72 65 61 63 68 indows...foreach
da80: 20 69 20 5b 73 70 6c 69 74 20 5b 65 78 65 63 20 i [split [exec
da90: 74 6c 69 73 74 5d 20 5c 6e 5d 20 7b 0a 09 09 20 tlist] \n] {...
daa0: 20 20 20 69 66 20 7b 20 5b 73 74 72 69 6e 67 20 if { [string
dab0: 6d 61 74 63 68 20 2d 6e 6f 63 61 73 65 20 22 2a match -nocase "*
dac0: 6d 61 6b 65 2e 65 78 65 2a 22 20 24 69 5d 20 7d make.exe*" $i] }
dad0: 20 7b 0a 09 09 20 20 20 20 20 20 20 20 63 61 74 {... cat
dae0: 63 68 20 7b 20 65 78 65 63 20 6b 69 6c 6c 20 2f ch { exec kill /
daf0: 66 20 5b 73 63 61 6e 20 24 69 20 25 64 5d 20 7d f [scan $i %d] }
db00: 0a 09 09 20 20 20 20 7d 0a 09 09 7d 0a 09 20 20 ... }...}..
db10: 20 20 7d 0a 09 20 20 20 20 63 61 74 63 68 20 7b }.. catch {
db20: 20 63 6c 6f 73 65 20 24 66 69 6e 20 7d 0a 09 7d close $fin }..}
db30: 0a 20 20 20 20 7d 20 63 61 74 63 68 5f 73 74 72 . } catch_str
db40: 69 6e 67 5d 0a 09 0a 20 20 20 20 69 66 20 7b 20 ing]... if {
db50: 24 63 61 74 63 68 5f 65 72 72 20 7d 20 7b 0a 09 $catch_err } {..
db60: 57 61 72 6e 57 69 6e 20 24 63 61 74 63 68 5f 73 WarnWin $catch_s
db70: 74 72 69 6e 67 0a 09 73 65 74 20 63 6f 6d 70 69 tring..set compi
db80: 6c 61 74 69 6f 6e 73 74 61 74 75 73 20 31 0a 20 lationstatus 1.
db90: 20 20 20 7d 0a 0a 20 20 20 20 73 77 69 74 63 68 }.. switch
dba0: 20 2d 2d 20 24 63 6f 6d 70 69 6c 61 74 69 6f 6e -- $compilation
dbb0: 73 74 61 74 75 73 20 7b 0a 09 2d 31 20 7b 0a 09 status {..-1 {..
dbc0: 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a RamDebugger:
dbd0: 3a 54 65 78 74 43 6f 6d 70 49 6e 73 65 72 74 20 :TextCompInsert
dbe0: 22 50 72 6f 6a 65 63 74 20 27 24 70 72 6f 6a 65 "Project '$proje
dbf0: 63 74 5f 73 68 6f 72 74 27 20 69 73 20 75 70 20 ct_short' is up
dc00: 74 6f 20 64 61 74 65 22 0a 09 7d 0a 09 30 20 7b to date"..}..0 {
dc10: 0a 09 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 .. RamDebugge
dc20: 72 3a 3a 54 65 78 74 43 6f 6d 70 49 6e 73 65 72 r::TextCompInser
dc30: 74 20 22 5b 73 74 72 69 6e 67 20 72 65 70 65 61 t "[string repea
dc40: 74 20 2d 20 32 30 5d 45 6e 64 69 6e 67 20 63 6f t - 20]Ending co
dc50: 6d 70 69 6c 61 74 69 6f 6e 20 6f 66 20 22 0a 09 mpilation of "..
dc60: 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a RamDebugger:
dc70: 3a 54 65 78 74 43 6f 6d 70 49 6e 73 65 72 74 20 :TextCompInsert
dc80: 22 24 70 72 6f 6a 65 63 74 5f 73 68 6f 72 74 22 "$project_short"
dc90: 0a 09 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 .. RamDebugge
dca0: 72 3a 3a 54 65 78 74 43 6f 6d 70 49 6e 73 65 72 r::TextCompInser
dcb0: 74 20 22 5b 73 74 72 69 6e 67 20 72 65 70 65 61 t "[string repea
dcc0: 74 20 2d 20 32 30 5d 5c 6e 22 0a 09 7d 0a 09 31 t - 20]\n"..}..1
dcd0: 20 7b 0a 09 20 20 20 20 52 61 6d 44 65 62 75 67 {.. RamDebug
dce0: 67 65 72 3a 3a 54 65 78 74 43 6f 6d 70 49 6e 73 ger::TextCompIns
dcf0: 65 72 74 20 22 5b 73 74 72 69 6e 67 20 72 65 70 ert "[string rep
dd00: 65 61 74 20 2d 20 32 30 5d 46 61 69 6c 69 6e 67 eat - 20]Failing
dd10: 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 66 20 compilation of
dd20: 24 70 72 6f 6a 65 63 74 5f 73 68 6f 72 74 22 0a $project_short".
dd30: 09 20 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 . RamDebugger
dd40: 3a 3a 54 65 78 74 43 6f 6d 70 49 6e 73 65 72 74 ::TextCompInsert
dd50: 20 22 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 "[string repeat
dd60: 20 2d 20 32 30 5d 5c 6e 22 0a 09 20 20 20 20 75 - 20]\n".. u
dd70: 70 64 61 74 65 0a 09 7d 0a 09 32 20 7b 0a 09 20 pdate..}..2 {..
dd80: 20 20 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a RamDebugger::
dd90: 54 65 78 74 43 6f 6d 70 49 6e 73 65 72 74 20 22 TextCompInsert "
dda0: 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 2d [string repeat -
ddb0: 20 32 30 5d 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 20]compilation
ddc0: 6f 66 20 24 70 72 6f 6a 65 63 74 5f 73 68 6f 72 of $project_shor
ddd0: 74 20 73 74 6f 70 70 65 64 20 22 0a 09 20 20 20 t stopped "..
dde0: 20 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 RamDebugger::Te
ddf0: 78 74 43 6f 6d 70 49 6e 73 65 72 74 20 22 61 74 xtCompInsert "at
de00: 20 75 73 65 72 20 64 65 6d 61 6e 64 5b 73 74 72 user demand[str
de10: 69 6e 67 20 72 65 70 65 61 74 20 2d 20 32 30 5d ing repeat - 20]
de20: 5c 6e 22 0a 09 20 20 20 20 0a 09 20 20 20 20 75 \n".. .. u
de30: 70 64 61 74 65 0a 09 7d 0a 20 20 20 20 7d 0a 20 pdate..}. }.
de40: 20 20 20 63 64 20 24 70 77 64 0a 0a 20 20 20 20 cd $pwd..
de50: 24 6d 65 6e 75 20 64 65 6c 65 74 65 20 65 6e 64 $menu delete end
de60: 0a 20 20 20 20 24 6d 65 6e 75 20 64 65 6c 65 74 . $menu delet
de70: 65 20 65 6e 64 0a 20 20 20 20 24 52 61 6d 44 65 e end. $RamDe
de80: 62 75 67 67 65 72 3a 3a 6d 61 69 6e 66 72 61 6d bugger::mainfram
de90: 65 20 73 65 74 6d 65 6e 75 73 74 61 74 65 20 63 e setmenustate c
dea0: 2b 2b 65 6e 74 72 79 20 6e 6f 72 6d 61 6c 0a 20 ++entry normal.
deb0: 20 20 20 24 52 61 6d 44 65 62 75 67 67 65 72 3a $RamDebugger:
dec0: 3a 6d 61 69 6e 66 72 61 6d 65 20 73 65 74 6d 65 :mainframe setme
ded0: 6e 75 73 74 61 74 65 20 64 65 62 75 67 65 6e 74 nustate debugent
dee0: 72 79 20 6e 6f 72 6d 61 6c 0a 20 20 20 20 24 52 ry normal. $R
def0: 61 6d 44 65 62 75 67 67 65 72 3a 3a 6d 61 69 6e amDebugger::main
df00: 66 72 61 6d 65 20 73 65 74 6d 65 6e 75 73 74 61 frame setmenusta
df10: 74 65 20 61 63 74 69 76 65 63 6f 6e 66 69 67 75 te activeconfigu
df20: 72 61 74 69 6f 6e 20 6e 6f 72 6d 61 6c 0a 0a 20 ration normal..
df30: 20 20 20 69 66 20 7b 20 24 63 6f 6d 70 69 6c 61 if { $compila
df40: 74 69 6f 6e 73 74 61 74 75 73 20 3d 3d 20 32 20 tionstatus == 2
df50: 7d 20 7b 0a 09 72 65 74 75 72 6e 20 2d 31 0a 20 } {..return -1.
df60: 20 20 20 7d 20 65 6c 73 65 20 7b 20 72 65 74 75 } else { retu
df70: 72 6e 20 30 20 7d 0a 7d 0a 0a 70 72 6f 63 20 63 rn 0 }.}..proc c
df80: 70 72 6f 6a 65 63 74 3a 3a 43 6f 6d 70 69 6c 65 project::Compile
df90: 46 65 65 64 62 61 63 6b 20 7b 20 66 69 6e 7d 20 Feedback { fin}
dfa0: 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 63 {. variable c
dfb0: 6f 6d 70 69 6c 61 74 69 6f 6e 73 74 61 74 75 73 ompilationstatus
dfc0: 0a 0a 20 20 20 20 69 66 20 7b 20 5b 65 6f 66 20 .. if { [eof
dfd0: 24 66 69 6e 5d 20 7d 20 7b 0a 09 73 65 74 20 65 $fin] } {..set e
dfe0: 72 72 20 5b 63 61 74 63 68 20 7b 20 63 6c 6f 73 rr [catch { clos
dff0: 65 20 24 66 69 6e 20 7d 20 65 72 72 73 74 72 69 e $fin } errstri
e000: 6e 67 5d 0a 09 69 66 20 7b 20 24 65 72 72 20 7d ng]..if { $err }
e010: 20 7b 0a 09 20 20 20 20 52 61 6d 44 65 62 75 67 {.. RamDebug
e020: 67 65 72 3a 3a 54 65 78 74 43 6f 6d 70 49 6e 73 ger::TextCompIns
e030: 65 72 74 20 24 65 72 72 73 74 72 69 6e 67 5c 6e ert $errstring\n
e040: 0a 09 20 20 20 20 73 65 74 20 63 6f 6d 70 69 6c .. set compil
e050: 61 74 69 6f 6e 73 74 61 74 75 73 20 31 0a 09 7d ationstatus 1..}
e060: 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 73 65 74 else {.. set
e070: 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 73 74 61 74 compilationstat
e080: 75 73 20 30 0a 09 7d 0a 09 72 65 74 75 72 6e 0a us 0..}..return.
e090: 20 20 20 20 7d 0a 20 20 20 20 67 65 74 73 20 24 }. gets $
e0a0: 66 69 6e 20 61 61 0a 0a 20 20 20 20 69 66 20 7b fin aa.. if {
e0b0: 20 24 61 61 20 21 3d 20 22 22 20 7d 20 7b 0a 09 $aa != "" } {..
e0c0: 52 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 RamDebugger::Tex
e0d0: 74 43 6f 6d 70 49 6e 73 65 72 74 20 24 61 61 5c tCompInsert $aa\
e0e0: 6e 0a 09 75 70 64 61 74 65 0a 20 20 20 20 7d 0a n..update. }.
e0f0: 7d 0a 0a 70 72 6f 63 20 63 70 72 6f 6a 65 63 74 }..proc cproject
e100: 3a 3a 45 76 61 6c 53 63 72 69 70 74 20 7b 20 77 ::EvalScript { w
e110: 20 64 65 62 72 65 6c 20 73 63 72 69 70 74 74 61 debrel scriptta
e120: 62 20 7b 20 73 68 6f 77 20 30 20 7d 20 7d 20 7b b { show 0 } } {
e130: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 70 72 . variable pr
e140: 6f 6a 65 63 74 0a 20 20 20 20 76 61 72 69 61 62 oject. variab
e150: 6c 65 20 64 61 74 61 53 0a 0a 20 20 20 20 73 65 le dataS.. se
e160: 74 20 73 63 72 69 70 74 20 24 64 61 74 61 53 28 t script $dataS(
e170: 24 64 65 62 72 65 6c 2c 24 73 63 72 69 70 74 74 $debrel,$scriptt
e180: 61 62 2c 73 63 72 69 70 74 29 0a 20 20 20 20 72 ab,script). r
e190: 65 67 73 75 62 20 2d 61 6c 6c 20 7b 28 3f 6e 29 egsub -all {(?n)
e1a0: 5e 5c 73 2a 5c 23 2e 2a 24 7d 20 24 73 63 72 69 ^\s*\#.*$} $scri
e1b0: 70 74 20 22 22 20 72 65 73 0a 20 20 20 20 69 66 pt "" res. if
e1c0: 20 7b 20 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 { [string trim
e1d0: 24 72 65 73 5d 20 3d 3d 20 22 22 20 7d 20 7b 0a $res] == "" } {.
e1e0: 09 69 66 20 7b 20 24 73 68 6f 77 20 7d 20 7b 0a .if { $show } {.
e1f0: 09 20 20 20 20 57 61 72 6e 57 69 6e 20 22 4e 6f . WarnWin "No
e200: 74 68 69 6e 67 20 74 6f 20 65 78 65 63 75 74 65 thing to execute
e210: 20 69 6e 20 53 63 72 69 70 74 20 27 24 73 63 72 in Script '$scr
e220: 69 70 74 74 61 62 27 22 20 24 77 0a 09 7d 0a 09 ipttab'" $w..}..
e230: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
e240: 20 20 73 65 74 20 70 77 64 20 5b 70 77 64 5d 0a set pwd [pwd].
e250: 20 20 20 20 63 64 20 5b 66 69 6c 65 20 64 69 72 cd [file dir
e260: 6e 61 6d 65 20 24 70 72 6f 6a 65 63 74 5d 0a 0a name $project]..
e270: 20 20 20 20 73 65 74 20 50 72 6f 6a 65 63 74 44 set ProjectD
e280: 69 72 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 ir [file dirname
e290: 20 24 70 72 6f 6a 65 63 74 5d 0a 20 20 20 20 73 $project]. s
e2a0: 65 74 20 4f 62 6a 65 63 74 73 44 69 72 20 5b 66 et ObjectsDir [f
e2b0: 69 6c 65 20 74 61 69 6c 20 5b 66 69 6c 65 20 72 ile tail [file r
e2c0: 6f 6f 74 20 24 70 72 6f 6a 65 63 74 5d 5d 5f 24 oot $project]]_$
e2d0: 64 65 62 72 65 6c 0a 0a 20 20 20 20 72 65 6e 61 debrel.. rena
e2e0: 6d 65 20 3a 3a 70 75 74 73 20 3a 3a 5f 5f 5f 70 me ::puts ::___p
e2f0: 75 74 73 0a 20 20 20 20 70 72 6f 63 20 3a 3a 70 uts. proc ::p
e300: 75 74 73 20 61 72 67 73 20 7b 0a 09 73 65 74 20 uts args {..set
e310: 61 72 67 73 4e 20 24 61 72 67 73 0a 09 73 65 74 argsN $args..set
e320: 20 68 61 73 6e 65 77 6c 69 6e 65 20 31 0a 09 69 hasnewline 1..i
e330: 66 20 7b 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 f { [lindex $arg
e340: 73 4e 20 30 5d 20 3d 3d 20 22 2d 6e 6f 6e 65 77 sN 0] == "-nonew
e350: 6c 69 6e 65 22 20 7d 20 7b 0a 09 20 20 20 20 73 line" } {.. s
e360: 65 74 20 68 61 73 6e 65 77 6c 69 6e 65 20 30 0a et hasnewline 0.
e370: 09 20 20 20 20 73 65 74 20 61 72 67 73 4e 20 5b . set argsN [
e380: 6c 72 61 6e 67 65 20 24 61 72 67 73 4e 20 31 20 lrange $argsN 1
e390: 65 6e 64 5d 0a 09 7d 0a 09 73 65 74 20 63 68 61 end]..}..set cha
e3a0: 6e 6e 65 6c 49 64 20 73 74 64 6f 75 74 0a 09 69 nnelId stdout..i
e3b0: 66 20 7b 20 5b 6c 6c 65 6e 67 74 68 20 24 61 72 f { [llength $ar
e3c0: 67 73 4e 5d 20 3d 3d 20 32 20 7d 20 7b 0a 09 20 gsN] == 2 } {..
e3d0: 20 20 20 73 65 74 20 63 68 61 6e 6e 65 6c 49 64 set channelId
e3e0: 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 4e 20 [lindex $argsN
e3f0: 30 5d 0a 09 20 20 20 20 73 65 74 20 61 72 67 73 0].. set args
e400: 4e 20 5b 6c 72 61 6e 67 65 20 24 61 72 67 73 4e N [lrange $argsN
e410: 20 31 20 65 6e 64 5d 0a 09 7d 0a 09 69 66 20 7b 1 end]..}..if {
e420: 20 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 73 4e [llength $argsN
e430: 5d 20 3d 3d 20 31 20 26 26 20 5b 72 65 67 65 78 ] == 1 && [regex
e440: 70 20 7b 73 74 64 6f 75 74 7c 73 74 64 65 72 72 p {stdout|stderr
e450: 7d 20 24 63 68 61 6e 6e 65 6c 49 64 5d 20 7d 20 } $channelId] }
e460: 7b 0a 09 20 20 20 20 52 61 6d 44 65 62 75 67 67 {.. RamDebugg
e470: 65 72 3a 3a 54 65 78 74 43 6f 6d 70 49 6e 73 65 er::TextCompInse
e480: 72 74 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 73 rt [lindex $args
e490: 4e 20 30 5d 0a 09 20 20 20 20 69 66 20 7b 20 24 N 0].. if { $
e4a0: 68 61 73 6e 65 77 6c 69 6e 65 20 7d 20 7b 20 52 hasnewline } { R
e4b0: 61 6d 44 65 62 75 67 67 65 72 3a 3a 54 65 78 74 amDebugger::Text
e4c0: 43 6f 6d 70 49 6e 73 65 72 74 20 5c 6e 20 7d 0a CompInsert \n }.
e4d0: 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 75 .} else {.. u
e4e0: 70 6c 65 76 65 6c 20 5f 5f 5f 70 75 74 73 20 24 plevel ___puts $
e4f0: 61 72 67 73 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 args..}. }..
e500: 20 20 20 73 65 74 20 65 72 72 20 5b 63 61 74 63 set err [catc
e510: 68 20 24 73 63 72 69 70 74 20 65 72 72 73 74 72 h $script errstr
e520: 69 6e 67 5d 0a 0a 20 20 20 20 72 65 6e 61 6d 65 ing].. rename
e530: 20 3a 3a 70 75 74 73 20 22 22 0a 20 20 20 20 72 ::puts "". r
e540: 65 6e 61 6d 65 20 3a 3a 5f 5f 5f 70 75 74 73 20 ename ::___puts
e550: 3a 3a 70 75 74 73 0a 0a 20 20 20 20 69 66 20 7b ::puts.. if {
e560: 20 24 65 72 72 20 7d 20 7b 0a 09 52 61 6d 44 65 $err } {..RamDe
e570: 62 75 67 67 65 72 3a 3a 54 65 78 74 43 6f 6d 70 bugger::TextComp
e580: 52 61 69 73 65 0a 09 52 61 6d 44 65 62 75 67 67 Raise..RamDebugg
e590: 65 72 3a 3a 54 65 78 74 43 6f 6d 70 49 6e 73 65 er::TextCompInse
e5a0: 72 74 52 65 64 20 22 2d 2d 2d 2d 2d 45 72 72 6f rtRed "-----Erro
e5b0: 72 20 65 78 65 63 75 74 69 6e 67 20 73 63 72 69 r executing scri
e5c0: 70 74 20 27 24 73 63 72 69 70 74 74 61 62 27 2d pt '$scripttab'-
e5d0: 2d 2d 2d 2d 5c 6e 22 0a 09 52 61 6d 44 65 62 75 ----\n"..RamDebu
e5e0: 67 67 65 72 3a 3a 54 65 78 74 43 6f 6d 70 49 6e gger::TextCompIn
e5f0: 73 65 72 74 52 65 64 20 24 3a 3a 65 72 72 6f 72 sertRed $::error
e600: 49 6e 66 6f 5c 6e 0a 09 69 66 20 7b 20 24 73 68 Info\n..if { $sh
e610: 6f 77 20 7d 20 7b 0a 09 20 20 20 20 57 61 72 6e ow } {.. Warn
e620: 57 69 6e 20 22 65 72 72 6f 72 20 65 78 65 63 75 Win "error execu
e630: 74 69 6e 67 20 73 63 72 69 70 74 20 27 24 73 63 ting script '$sc
e640: 72 69 70 74 74 61 62 27 20 28 24 65 72 72 73 74 ripttab' ($errst
e650: 72 69 6e 67 29 22 20 24 77 0a 09 7d 0a 20 20 20 ring)" $w..}.
e660: 20 7d 20 65 6c 73 65 20 7b 0a 09 52 61 6d 44 65 } else {..RamDe
e670: 62 75 67 67 65 72 3a 3a 54 65 78 74 43 6f 6d 70 bugger::TextComp
e680: 52 61 69 73 65 0a 09 52 61 6d 44 65 62 75 67 67 Raise..RamDebugg
e690: 65 72 3a 3a 54 65 78 74 43 6f 6d 70 49 6e 73 65 er::TextCompInse
e6a0: 72 74 20 22 45 78 65 63 75 74 65 64 20 73 63 72 rt "Executed scr
e6b0: 69 70 74 20 27 24 73 63 72 69 70 74 74 61 62 27 ipt '$scripttab'
e6c0: 2e 20 52 65 73 75 6c 74 3a 20 5c 6e 24 65 72 72 . Result: \n$err
e6d0: 73 74 72 69 6e 67 5c 6e 22 0a 09 69 66 20 7b 20 string\n"..if {
e6e0: 24 73 68 6f 77 20 7d 20 7b 0a 09 20 20 20 20 57 $show } {.. W
e6f0: 61 72 6e 57 69 6e 20 22 45 78 65 63 75 74 65 64 arnWin "Executed
e700: 20 73 63 72 69 70 74 20 27 24 73 63 72 69 70 74 script '$script
e710: 74 61 62 27 2e 20 52 65 73 75 6c 74 3a 20 24 65 tab'. Result: $e
e720: 72 72 73 74 72 69 6e 67 22 20 24 77 0a 09 7d 0a rrstring" $w..}.
e730: 20 20 20 20 7d 0a 20 20 20 20 63 64 20 24 70 77 }. cd $pw
e740: 64 0a 7d 0a 0a 0a d.}...