PortAuthority

Check-in [a0507cee51]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Update for Mojave
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:a0507cee51312722be68ee941b65bf18ff0f1496
User & Date: kevin 2018-12-31 02:32:30
Context
2018-12-31
02:50
Further tweaks check-in: 878f406884 user: kevin tags: trunk
02:32
Update for Mojave check-in: a0507cee51 user: kevin tags: trunk
2018-04-26
03:16
Fix error in softwareupdate package check-in: b50421a159 user: kevin tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to PortAuthority.icns.

cannot compute difference between binary files

Deleted libs/aquahig/README.txt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
The Aquahig package

The aquahig package implements some Mac OS X-specific configurations to selected Tk megawidgets to make them better fit in visually with Mac interface conventions, similar to iTunes and other Mac applications. Currently supported widgets are the BWidgets Tree, the BWidgets ListBox, and Tablelist. 

Using the Aquahig Package

The aquahig package is invoked by calling package require aquahig. It implements Mac styling for widgets in the form of arrays: 

* aquahig::treeopts: These options add a Mac-style "disclosure triangle" to the BWidget Tree, remove the lines for tree nodes (which is more charactertistic of Windows), and add a light blue background and a blue highlight foreground (similar to iTunes). They also specify the correct font size and spacing. 

* aquahig::listopts: These options add a light blue background and a blue highlight foreground (similar to iTunes) to the BWidget ListBox. They also specify the correct font size and spacing. 

* aquahig::tableopts: These options add a light blue stripe, a blue highlight foreground color, and vertical rules (similar to iTunes) to TableList. 

Usage of the package would look something like this: 

foreach {key value} [array get aquahig::treeopts] { 
$w configure -$key $value 
} 

Note: the aquahig package depends on the TkImg or TkPNG packages, as the Mac-style disclosure triangles are pngs. To use another image format, such as .gif, you will need to edit the source code accordingly. 

License

The aquahig package is licensed under the same license as Tcl/Tk itself. See http://www.tcl.tk/software/tcltk/license.html for the current license. 
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<


















































Deleted libs/aquahig/aquahig.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#aquahig: provides sane OS X UI configs for BWidget Tree, BWidget ListBox, and Tablelist. (c) 2007 WordTech Communications LLC. License: standard Tcl license, http://www.tcl.tk/software/tcltk/license.html

package provide aquahig 1.2

namespace eval aquahig {

    if {![info exists library]} {
	variable library [file dirname [info script]]
    }



## usage, cf for BWidget Tree: 
##        foreach {key value} [array get aquahig::treeopts] {
##               $w configure -$key $value
##          }

##create Mac-style "disclosure triangle" for tree view
    image create bitmap hig_triangleright -file [file join $aquahig::library triangleright.xbm]
    image create bitmap hig_triangledown -file [file join $aquahig::library triangledown.xbm]



##configuration options for BWidget Tree
    array set [namespace current]::treeopts {

	selectbackground   #84a6cb
	selectforeground   white
	deltay             17
	showlines	   0
	crossopenimage	   hig_triangledown
	crosscloseimage    hig_triangleright
	background         #e3e9f1
	highlightcolor     #e3e9f1 
	highlightthickness .1
	relief             flat
	selectfill         1
	borderwidth        0

    }

##configuration options for Bwidget ListBox    
    array set [namespace current]::listopts {

	selectbackground  #84a6cb
	selectforeground   white
	deltay             21
	background         #e3e9f1 
	highlightcolor     #e3e9f1 
	relief             flat
	selectfill         1

    }

 ##configuration options for Tablelist
    array set [namespace current]::tableopts {

	selectbackground   RoyalBlue1
	selectforeground   white
	stretch	           all
	stripebackground   #EDF3FE
	relief             flat
	border             0
	showseparators     yes
	takefocus          0
        setfocus           1
        activestyle        none
    }

    namespace export *
}
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<














































































































































Deleted libs/aquahig/pkgIndex.tcl.

1
2
3
4
5
6
7
8
9
10
11
# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script.  It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands.  When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.

package ifneeded aquahig 1.2 [list source [file join $dir aquahig.tcl]]
<
<
<
<
<
<
<
<
<
<
<






















Deleted libs/aquahig/triangledown.png.

cannot compute difference between binary files

Deleted libs/aquahig/triangledown.xbm.

1
2
3
4
5
6
#define triangledown_width 13
#define triangledown_height 13
static unsigned char triangledown_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03,
   0xf0, 0x01, 0xf0, 0x01, 0xe0, 0x00, 0x60, 0x00, 0x40, 0x00, 0x00, 0x00,
   0x00, 0x00 };
<
<
<
<
<
<












Deleted libs/aquahig/triangleright.png.

cannot compute difference between binary files

Deleted libs/aquahig/triangleright.xbm.

1
2
3
4
5
6
#define triangleright_width 13
#define triangleright_height 13
static unsigned char triangleright_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x7c, 0x00, 0xfc, 0x00,
   0xfc, 0x03, 0xfc, 0x00, 0x7c, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00 };
<
<
<
<
<
<












Changes to libs/machelp/help.txt.

205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220




221
222
223
224
225
226
227
...
389
390
391
392
393
394
395
396
397
398
399
400
401
402
 * The Tcl/Tk GUI toolkit. Website: [http://www.tcl.tk]. License: [http://www.tcl.tk/software/tcltk/license.html]
 * The tcllib and tklib libraries for Tcl/Tk. Website and license: [http://tcllib.sourceforge.net].
 * The BWidget GUI library for Tcl/Tk. Website and license: [http://tcllib.sourceforge.net].
 * The MacPorts software management system. Website and license: [http://www.macports.org].
 * The cocoaprint package for native printing. Website and license: [http://fossil.codebykevin.com].
 * The TclServices package. Website and license: [http://fossil.codebykevin.com].
 * The Aquahig package for OS X. Website and license: [http://fossil.codebykevin.com].
 * App icon from the Gnome project. Website: [http://www.gnome.org]. License: [http://creativecommons.org/licenses/by-sa/3.0/].
 * Icon fonts from Iconic project. Website and license: [https://github.com/somerandomdude/Iconic].
 * Help viewer by Keith Vetter: [http://wiki.tcl.tk/19649].
 * aem package for AppleScript support. Website and license: [http://fossil.codebykevin.com].

-------------------
title: PortAuthority Version History
alias: History





'''7.9 (April 20, 2018):'''
 * Migrate to new source code server. 
 * Minor bug fixes.

'''7.8 (December 1, 2017):'''
 * UI enhancements.

................................................................................
title: License
alias: License
 
'''The MIT License (MIT)'''

PortAuthority source code: [https://www.codebykevin.com/fossil.cgi/portauthority/]

Copyright (c) 2018 WordTech Communications LLC

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.







|
|







>
>
>
>







 







|






205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
...
393
394
395
396
397
398
399
400
401
402
403
404
405
406
 * The Tcl/Tk GUI toolkit. Website: [http://www.tcl.tk]. License: [http://www.tcl.tk/software/tcltk/license.html]
 * The tcllib and tklib libraries for Tcl/Tk. Website and license: [http://tcllib.sourceforge.net].
 * The BWidget GUI library for Tcl/Tk. Website and license: [http://tcllib.sourceforge.net].
 * The MacPorts software management system. Website and license: [http://www.macports.org].
 * The cocoaprint package for native printing. Website and license: [http://fossil.codebykevin.com].
 * The TclServices package. Website and license: [http://fossil.codebykevin.com].
 * The Aquahig package for OS X. Website and license: [http://fossil.codebykevin.com].
 * App icon by sixsixfive. Website: [https://openclipart.org/user-detail/sixsixfive]. License: [https://creativecommons.org/publicdomain/zero/1.0/].
 * Linea toolbar and tree icons by Dario Ferrando. Website: [http://www.linea.io] License: [http://creativecommons.org/licenses/by/4.0/]
 * Help viewer by Keith Vetter: [http://wiki.tcl.tk/19649].
 * aem package for AppleScript support. Website and license: [http://fossil.codebykevin.com].

-------------------
title: PortAuthority Version History
alias: History

'''8.0 (January 1, 2019):'''
 * Major UI refresh.  
 * Support for Mojave and dark mode.

'''7.9 (April 20, 2018):'''
 * Migrate to new source code server. 
 * Minor bug fixes.

'''7.8 (December 1, 2017):'''
 * UI enhancements.

................................................................................
title: License
alias: License
 
'''The MIT License (MIT)'''

PortAuthority source code: [https://www.codebykevin.com/fossil.cgi/portauthority/]

Copyright (c) 2019 WordTech Communications LLC

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Changes to libs/machelp/images.tcl.

more than 10,000 changes

Added libs/mojavehig/README.txt.



















































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
The Aquahig package

The aquahig package implements some Mac OS X-specific configurations to selected Tk megawidgets to make them better fit in visually with Mac interface conventions, similar to iTunes and other Mac applications. Currently supported widgets are the BWidgets Tree, the BWidgets ListBox, and Tablelist. 

Using the Aquahig Package

The aquahig package is invoked by calling package require aquahig. It implements Mac styling for widgets in the form of arrays: 

* aquahig::treeopts: These options add a Mac-style "disclosure triangle" to the BWidget Tree, remove the lines for tree nodes (which is more charactertistic of Windows), and add a light blue background and a blue highlight foreground (similar to iTunes). They also specify the correct font size and spacing. 

* aquahig::listopts: These options add a light blue background and a blue highlight foreground (similar to iTunes) to the BWidget ListBox. They also specify the correct font size and spacing. 

* aquahig::tableopts: These options add a light blue stripe, a blue highlight foreground color, and vertical rules (similar to iTunes) to TableList. 

Usage of the package would look something like this: 

foreach {key value} [array get aquahig::treeopts] { 
$w configure -$key $value 
} 

Note: the aquahig package depends on the TkImg or TkPNG packages, as the Mac-style disclosure triangles are pngs. To use another image format, such as .gif, you will need to edit the source code accordingly. 

License

The aquahig package is licensed under the same license as Tcl/Tk itself. See http://www.tcl.tk/software/tcltk/license.html for the current license. 

Added libs/mojavehig/mojavehig.tcl.





















































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#mojave: provides sane OS X UI configs for BWidget Tree and Tablelist. (c) 2007-2018 WordTech Communications LLC. License: standard Tcl license, http://www.tcl.tk/software/tcltk/license.html

package provide mojavehig 1.0

namespace eval mojavehig {

    if {![info exists library]} {
	variable library [file dirname [info script]]
    }



## usage, cf for BWidget Tree: 
##        foreach {key value} [array get aquahig::treeopts] {
##               $w configure -$key $value
##          }

##create Mac-style "disclosure triangle" for tree view
    image create bitmap hig_triangleright -file [file join $mojavehig::library triangleright.xbm]
    image create bitmap hig_triangledown -file [file join $mojavehig::library triangledown.xbm]



##configuration options for BWidget Tree
    array set [namespace current]::treeopts {

	selectbackground   #D2D2D2 
	selectforeground   black 
	deltay             17
	showlines	   0
	crossopenimage	   hig_triangledown
	crosscloseimage    hig_triangleright
	background          #F6F6F6 
	highlightcolor      #F6F6F6  
	highlightthickness .1
	relief             flat
	selectfill         1
	borderwidth        0

    }

 ##configuration options for Tablelist
    array set [namespace current]::tableopts {

	selectbackground   RoyalBlue1
	selectforeground   white
	stretch	           all
	stripebackground   white
	relief             flat
	border             0
	showseparators     no
	takefocus          0
        setfocus           1
        activestyle        none
    }

    namespace export *
}

Added libs/mojavehig/pkgIndex.tcl.























>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script.  It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands.  When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.

package ifneeded mojavehig 1.0 [list source [file join $dir mojavehig.tcl]]

Added libs/mojavehig/triangledown.png.

cannot compute difference between binary files

Added libs/mojavehig/triangledown.xbm.













>
>
>
>
>
>
1
2
3
4
5
6
#define triangledown_width 13
#define triangledown_height 13
static unsigned char triangledown_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03,
   0xf0, 0x01, 0xf0, 0x01, 0xe0, 0x00, 0x60, 0x00, 0x40, 0x00, 0x00, 0x00,
   0x00, 0x00 };

Added libs/mojavehig/triangleright.png.

cannot compute difference between binary files

Added libs/mojavehig/triangleright.xbm.













>
>
>
>
>
>
1
2
3
4
5
6
#define triangleright_width 13
#define triangleright_height 13
static unsigned char triangleright_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x7c, 0x00, 0xfc, 0x00,
   0xfc, 0x03, 0xfc, 0x00, 0x7c, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00 };

Deleted libs/portauthority/images/OSAScriptMenu.png.

cannot compute difference between binary files

Added libs/portauthority/images/accessories-dictionary.png.

cannot compute difference between binary files

Added libs/portauthority/images/aptdaemon-add.png.

cannot compute difference between binary files

Added libs/portauthority/images/binary.png.

cannot compute difference between binary files

Added libs/portauthority/images/code.png.

cannot compute difference between binary files

Added libs/portauthority/images/desktop.png.

cannot compute difference between binary files

Added libs/portauthority/images/edit-delete.png.

cannot compute difference between binary files

Added libs/portauthority/images/find.png.

cannot compute difference between binary files

Added libs/portauthority/images/help-info.png.

cannot compute difference between binary files

Added libs/portauthority/images/icon-update.png.

cannot compute difference between binary files

Added libs/portauthority/images/im.png.

cannot compute difference between binary files

Added libs/portauthority/images/installer.png.

cannot compute difference between binary files

Added libs/portauthority/images/locale.png.

cannot compute difference between binary files

Added libs/portauthority/images/lock.png.

cannot compute difference between binary files

Added libs/portauthority/images/mail.png.

cannot compute difference between binary files

Added libs/portauthority/images/music.png.

cannot compute difference between binary files

Added libs/portauthority/images/office-database.png.

cannot compute difference between binary files

Added libs/portauthority/images/pda.png.

cannot compute difference between binary files

Added libs/portauthority/images/pdf.png.

cannot compute difference between binary files

Deleted libs/portauthority/images/portauthority-running.png.

cannot compute difference between binary files

Added libs/portauthority/images/process-stop.png.

cannot compute difference between binary files

Added libs/portauthority/images/shotwell.png.

cannot compute difference between binary files

Added libs/portauthority/images/system-time.png.

cannot compute difference between binary files

Added libs/portauthority/images/wifi.png.

cannot compute difference between binary files

Changes to libs/portauthority/pkgIndex.tcl.

1
2
3

  package ifneeded portauthority 7.9 [list source [file join $dir portauthority.tcl]]


|

1
2
3

  package ifneeded portauthority 8.0 [list source [file join $dir portauthority.tcl]]

Changes to libs/portauthority/portauthority-main.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
...
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
...
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474


475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
...
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
...
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
...
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
...
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
....
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
....
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
....
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
....
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
....
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
....
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
....
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
....
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
....
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
....
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
....
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
....
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081


2082
2083


2084
2085
2086
2087
2088
2089
2090
# PortAuthority: GUI for MacPorts.  

#Copyright (C) 2018 WordTech Communications LLC

#MIT license.


#initialize package requirements

package require tablelist_tile
package require regproc
package require machelp
package require BWidget
package require softwareupdate
package require aquahig
package require appname
package require urltext
package require tclservices
package require cocoaprint
package require Tclapplescript
package require tclgrowl
package require aem

package require xplat

................................................................................
    global folder_development
    global portauthority_growl
    global showstatus
    global datadir
    global mynode

    set mynode ""

    
    #Create window title
    wm title . "PortAuthority"

    bind . <Command-W> {wm state .  withdrawn}
    bind . <Command-w> {wm state .  withdrawn}
    wm protocol . WM_DELETE_WINDOW {wm withdraw .} 


    set searchterm "" 

    ttk::style configure Toolbutton -font {Iconic 22} 

    #create menu bar
    menu .mb

    #apple menu
    menu .mb.apple
    .mb.apple add command -label "About PortAuthority" -command tkAboutDialog
................................................................................
    bind all <Command-u> {updateBase}

    bind all <Command-k> {killPorts}
    bind all <Command-K> {killPorts}


    #create ttk style for search entry
    set glass {
	iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2Fy
	ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAI9JREFUOMulkoENwCAIBBnBEToCIziC
	IziKmzhSR2EEq4lNvqmCtiSfGPEeJBDNw1XlKqkqoHZ3kBE8AFEtF7XKCKcq35Ug
	J7NOEsBsdJdHBqeWHBR5xZ3wioFfMQhfDXa+INqAmuJkiLgTUxgfha5Mz11wFqwt
	Eq/AAjMp/ZywMhkw00LEP/DIZBtGk234AlcgZp9b9UdLAAAAAElFTkSuQmCC
    }

    image create photo glass -data $glass
    
    #entry field for specific man page with image
    ttk::style layout ImgEntry {
	Entry.field -children {
	    ImgEntry.icon -side left
	    Entry.padding -children {
		Entry.textarea
	    }
	}
    }

    ttk::style element create ImgEntry.icon image glass \
	-sticky "" -padding [list 20 0 0 0]


    #create frame for toolbar
    pack [ttk::frame .tool] -side top -fill both -expand no

    #create toolbar
    pack [ttk::frame .tool.toolbar] -side top -fill both -expand no

    pack [ttk::frame .tool.toolbar.frame -padding 5] -side top -fill both -expand no
    pack [ttk::separator .tool.toolbar.sep -orient vertical] -side bottom -fill both -expand no




    ttk::button .tool.toolbar.frame.cog -text \u2699 -style Toolbutton -command installPort -takefocus 0
    pack .tool.toolbar.frame.cog -side left  -expand no
    DynamicHelp::register .tool.toolbar.frame.cog  balloon "Install a MacPorts port"

    ttk::button .tool.toolbar.frame.denied -text  \u26d4 -style Toolbutton -command removePort -takefocus 0
    pack .tool.toolbar.frame.denied -side left  -expand no
    DynamicHelp::register .tool.toolbar.frame.denied balloon "Remove a MacPorts port"

    ttk::button .tool.toolbar.frame.info -text \u2139 -style Toolbutton -command showInformation -takefocus 0
    pack .tool.toolbar.frame.info -side left  -expand no
    DynamicHelp::register .tool.toolbar.frame.info balloon "Show information about a port"

    ttk::button .tool.toolbar.frame.x -text \u2713 -style Toolbutton -command killPorts -takefocus 0
    pack .tool.toolbar.frame.x -side left  -expand no
    DynamicHelp::register .tool.toolbar.frame.x balloon "Terminate a running process"

    ttk::entry .tool.toolbar.frame.entry -textvariable searchterm -width 30 -style ImgEntry

    pack .tool.toolbar.frame.entry -side right -fill both -expand no

    #additional bindings
    bind .tool.toolbar.frame.entry <Return> {portSearch}

    tclservices::registerservicewidget .tool.toolbar.frame.entry 
    bind .tool.toolbar.frame.entry <ButtonRelease-1>  checkEntrySelection

    #list of port categories
    set portlist [list  aqua archivers audio benchmarks blinkenlights cad chat chinese comms compression cross crypto databases devel editors electronics emulators erlang fonts framework games genealogy gnome gnustep graphics irc java kde lang mail math mono multimedia net news palm parallel pdf perl php pim print python ruby russian scheme science security shells spelling squeak sysutils tex textproc unicode vnc win32 www x11 x11-wm zope]

    array set treelabel {
	aqua  \ue059
	archivers \ue06b
	audio \ue072
	benchmarks \ue078
	blinkenlights \ue079
	cad \ue059
	chat \ue05e
	chinese \ue000
	comms \ue079
	compression \ue06b 
	cross \ue078
	crypto \ue075
	databases  \ue078
	devel  \ue078
	editors \ue000
	electronics \ue06e
	emulators \ue06e
	erlang  \ue078
	fonts \ue000
	framework  \ue078
	games \ue06e
	genealogy \ue000
	gnome \ue059
	gnustep \ue059 
	graphics \ue027
	irc \ue05e
	java  \ue078
	kde \ue059
	lang  \ue078
	mail \u2709
	math \ue023
	mono \ue059
	multimedia \ue072
	net \ue079
	news \u2709
	palm \ue06e 
	parallel \ue059
	pdf \ue000
	perl  \ue078
	php  \ue078
	pim \ue06c
	print  \ue078
	python  \ue078
	ruby  \ue078
	russian \ue000
	scheme  \ue078
	science \ue023
	security  \ue075
	shells \ue059
	spelling \ue000
	squeak  \ue078
	sysutils \ue059
	tex \ue000
	textproc \ue000
	unicode \ue000
	vnc \ue059
	win32  \ue078
	www \ue079
	x11 \ue059
	x11-wm \ue059
	zope  \ue078
    }


    
    # ttk::separator .bottomsep1 -orient vertical 
    # pack .bottomsep1 -side bottom -fill both -expand no -side bottom

................................................................................
    pack .t.left -fill both -expand yes


    #tree display for categories
    Tree .t.left.tree -selectfill 1 -yscrollcommand [list .t.left.scroll set]

    #get default values for tree options
    foreach {key value} [array get aquahig::treeopts] {
	.t.left.tree configure -$key $value
    } 
    
    pack .t.left.tree -fill both -side left -expand yes

    scrollbar .t.left.scroll -command [list .t.left.tree yview]
    pack .t.left.scroll -side right -fill y -expand no

    .t.left.tree insert end root All -font {Iconic} -text "\ue059 All"
    .t.left.tree insert end root Installed -font {Iconic} -text "\ue059 Installed"
    .t.left.tree insert end root Search -font {Iconic} -text "\ue074 Search"
    .t.left.tree insert end root Ports -font {Iconic} -text "\ue059 Ports"

    
    foreach item $portlist {
	.t.left.tree insert end Ports $item -font {Iconic} -text "$treelabel($item) $item"  
    }

    bind .t.left.tree <<TreeSelect>> {selectCat}

    bind .t.left.tree.c <MouseWheel> {%W yview scroll [expr {- (%D)}] units}

    #more data display
................................................................................
    scrollbar .t.right.upper.frame.row.vsb -orient vertical -command [list .t.right.upper.frame.listbox yview]
    pack .t.right.upper.frame.row.vsb -side bottom -fill y -expand 1

    #main data display
    tablelist::tablelist .t.right.upper.frame.listbox -columns {10 "Installed" 40 "Port"  20 "Version"   30 "Category" } -width 110 -yscrollcommand [list .t.right.upper.frame.row.vsb set] 

    #get default table options
    foreach {key value} [array get aquahig::tableopts] {
	.t.right.upper.frame.listbox configure -$key $value
    }


    .t.right.upper.frame.listbox configure -labelcommand tablelist::sortByColumn
    
    pack .t.right.upper.frame.listbox -side left -fill both -expand yes
................................................................................
    .t.right add .t.right.lower

    .t add .t.left
    .t add .t.right

    wm geometry . 950x700

    wm iconphoto . -default icon-main

}


#put up busy cursor, display progress bar
proc showProgress {} {
    global log 
................................................................................

#hide progress bar, notify user action is done, reset cursor
proc endProgress {} {
    global log 
    

    . configure -cursor arrow
    wm iconphoto . -default icon-main

    .bottom.progress stop
    pack forget .bottom.progress
    bgGetAllPorts
}

#show all available ports
................................................................................
    global portpath 
    global verboselevel 
    global installicon
    

    clearData
    showProgress
    wm iconphoto . -default icon-running

    #error handling
    if {[.t.right.upper.frame.listbox curselection] == ""} {	
	tk_messageBox -title "Wrong Selection" -icon warning -message "Please make a selection from the main table." -detail "This will start the installation process." -parent . 
	set status ""
	endProgress
	selectCat
................................................................................
    global portpath 
    global verboselevel 
    global installicon
    

    clearData
    showProgress
    wm iconphoto . -default icon-running

    set new $variantport
    set status "Installing $new"
    
    set script "$portpath $verboselevel install $new +$variantname > [file join $::env(TMPDIR) portauthority.txt] 2>&1 & echo $! > [file join $::env(TMPDIR) pid.txt] &"

    set scripterr {   
................................................................................
    global deleteicon
    global portauthority_growl
    global playsound
    global showstatus

    clearData
    showProgress
    wm iconphoto . -default icon-running
    
    #error handling
    if {[.t.right.upper.frame.listbox curselection] == ""} {
	tk_messageBox -title "Wrong Selection" -icon warning -message "Please make a selection from the main table." -detail "This will start the removal process." -parent .
	set status ""
	endProgress
	selectCat
................................................................................
	tk_messageBox -title "Wrong Selection" -icon warning -message "Please make a selection from the main table." -detail "This will start the upgrade process." -parent . 
	set status "Done"
	return
    } else {
	set item [lindex [.t.right.upper.frame.listbox get [.t.right.upper.frame.listbox curselection]] 1]
	set new [lindex [split $item] 0]
	showProgress
	wm iconphoto . -default icon-running
	set status "Upgrading $new"
	
	set script "$portpath $verboselevel upgrade $new > [file join $::env(TMPDIR) portauthority.txt] 2>&1 & echo $! > [file join $::env(TMPDIR) pid.txt] &"

	set scripterr {   
	    AppleScript execute "

................................................................................
    global status 
    global portpath 
    global verboselevel 
    global installicon
    
    clearData
    showProgress
    wm iconphoto . -default icon-running
    set status "Upgrading all installed ports"

    
    set script "$portpath $verboselevel upgrade installed  > [file join $::env(TMPDIR) portauthority.txt] 2>&1 & echo $! > [file join $::env(TMPDIR) pid.txt] &"

    set scripterr {   
	AppleScript execute "
................................................................................
    global verboselevel 
    global installicon
    
    
    clearData
    set status "Getting updated ports"
    showProgress
    wm iconphoto . -default icon-running

    
    set script "$portpath $verboselevel sync > [file join $::env(TMPDIR) portauthority.txt] 2>&1 & echo $! > [file join $::env(TMPDIR) pid.txt]  &"

    set scripterr {   
	AppleScript execute "

................................................................................
    global portpath 
    global verboselevel 
    global installicon
    

    clearData
    showProgress
    wm iconphoto . -default icon-running
    after 500
    set status "Updating MacPorts"
    set script "$portpath $verboselevel selfupdate > [file join $::env(TMPDIR) portauthority.txt] 2>&1 & echo $! > [file join $::env(TMPDIR) pid.txt] &"

    set scripterr {   
	AppleScript execute "

................................................................................
    global playsound
    global showstatus
    
    #create gui
    toplevel .preferences
    wm title .preferences "PortAuthority Preferences"
    
    set n [NoteBook .preferences.n -background gray95]
    pack $n -side top -fill both -expand yes
    
    $n insert 0 pathpref -text Paths
    $n insert 1 copytext -text Copy 
    $n insert 2 fontpref -text Font  

    $n raise pathpref
................................................................................
    ttk::frame $fontpane.font
    pack $fontpane.font -fill both -expand yes
    
    
    ttk::frame $fontpane.font.title 
    pack $fontpane.font.title -side left -fill both -expand yes
    
    listbox $fontpane.font.title.list  -yscrollcommand [list $fontpane.font.title.scrollbar set] -font {-size 12} -relief flat -bd 0 -selectbackground  #84a6cb -selectforeground white -background #e3e9f1 -highlightbackground #e3e9f1
    
    pack $fontpane.font.title.list -side left -fill both -expand yes
    
    
    #get all fonts on system
    set families [font families]
    set sorted [lsort $families]
................................................................................
#"about application" command
proc tkAboutDialog {} {
    aboutWindow
}


proc aboutWindow {} {
 tk_messageBox -parent . -icon info -title "About PortAuthority" -message "PortAuthority: GUI for MacPorts" -detail "Version 7.9\n(c)2018 WordTech Communications LLC"

}


#initialization routines on startup
proc startUp {} {

................................................................................

    if {![file exists $datadir/portauthority.rc]} {
	checkPref
    }    
    
    if { [file exists  $datadir/portauthority.rc]} {
	catch [list source $datadir/portauthority.rc ] 
	appname::setAppName PortAuthority 7.9
	softwareupdate::setVersion $appname::name $appname::version
	machelp::setAppName $appname::name $appname::version
	checkMacPorts
	drawGUI
	setPref
	getAllPorts
	catch {toggleCopyText}
................................................................................
	regproc::readLic $appname::name $appname::version
}

#load images into memory
proc makeImage {} {
   
    set imagedir [file join [file dirname [info script]] images]

    source $imagedir/images.tcl
    
    set growlicon  [file join [softwareupdate::findCurrentInstallation] "Contents/Resources/PortAuthority.icns"]

    growl::growlicon $growlicon

    softwareupdate::setIcon icon-update


	
	#icon-main, icon-running


    
}


#save output to text file
proc saveLog {} {
    global log


|











|


|







 







<











|







 







<
<
<
<
<
<
|
<
<
<
|

|
|
|
|
|
|


|













>
>
|



|



|



|





|











|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|







 







|
|







|
|
|
|



|







 







|







 







<







 







<







 







<







 







<







 







<







 







<







 







<







 







<







 







<







 







|







 







|







 







|







 







|







 







<
<





|
>
>
|
<
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
...
322
323
324
325
326
327
328

329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
...
433
434
435
436
437
438
439






440



441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
...
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
...
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
...
675
676
677
678
679
680
681

682
683
684
685
686
687
688
...
699
700
701
702
703
704
705

706
707
708
709
710
711
712
....
1118
1119
1120
1121
1122
1123
1124

1125
1126
1127
1128
1129
1130
1131
....
1234
1235
1236
1237
1238
1239
1240

1241
1242
1243
1244
1245
1246
1247
....
1289
1290
1291
1292
1293
1294
1295

1296
1297
1298
1299
1300
1301
1302
....
1496
1497
1498
1499
1500
1501
1502

1503
1504
1505
1506
1507
1508
1509
....
1543
1544
1545
1546
1547
1548
1549

1550
1551
1552
1553
1554
1555
1556
....
1589
1590
1591
1592
1593
1594
1595

1596
1597
1598
1599
1600
1601
1602
....
1634
1635
1636
1637
1638
1639
1640

1641
1642
1643
1644
1645
1646
1647
....
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
....
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
....
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
....
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
....
2050
2051
2052
2053
2054
2055
2056


2057
2058
2059
2060
2061
2062
2063
2064
2065

2066
2067
2068
2069
2070
2071
2072
2073
2074
# PortAuthority: GUI for MacPorts.  

#Copyright (C) 2019 WordTech Communications LLC

#MIT license.


#initialize package requirements

package require tablelist_tile
package require regproc
package require machelp
package require BWidget
package require softwareupdate
package require mojavehig
package require appname
package require urltext
 package require tclservices
package require cocoaprint
package require Tclapplescript
package require tclgrowl
package require aem

package require xplat

................................................................................
    global folder_development
    global portauthority_growl
    global showstatus
    global datadir
    global mynode

    set mynode ""

    
    #Create window title
    wm title . "PortAuthority"

    bind . <Command-W> {wm state .  withdrawn}
    bind . <Command-w> {wm state .  withdrawn}
    wm protocol . WM_DELETE_WINDOW {wm withdraw .} 


    set searchterm "" 

 #   ttk::style configure Toolbutton -font {Iconic 22} 

    #create menu bar
    menu .mb

    #apple menu
    menu .mb.apple
    .mb.apple add command -label "About PortAuthority" -command tkAboutDialog
................................................................................
    bind all <Command-u> {updateBase}

    bind all <Command-k> {killPorts}
    bind all <Command-K> {killPorts}


    #create ttk style for search entry






    



    #entry field for specific search field with image
    ttk::style layout ImgEntry {
    	Entry.field -children {
    	    ImgEntry.icon -side left
    	    Entry.padding -children {
    		Entry.textarea
    	    }
    	}
    }

    ttk::style element create ImgEntry.icon image find \
	-sticky "" -padding [list 20 0 0 0]


    #create frame for toolbar
    pack [ttk::frame .tool] -side top -fill both -expand no

    #create toolbar
    pack [ttk::frame .tool.toolbar] -side top -fill both -expand no

    pack [ttk::frame .tool.toolbar.frame -padding 5] -side top -fill both -expand no
    pack [ttk::separator .tool.toolbar.sep -orient vertical] -side bottom -fill both -expand no


    DynamicHelp::configure -borderwidth 0 -background white
    
    ttk::button .tool.toolbar.frame.cog -image installer -style Toolbutton -command installPort -takefocus 0
    pack .tool.toolbar.frame.cog -side left  -expand no
    DynamicHelp::register .tool.toolbar.frame.cog  balloon "Install a MacPorts port"

    ttk::button .tool.toolbar.frame.denied -image edit-delete -style Toolbutton -command removePort -takefocus 0
    pack .tool.toolbar.frame.denied -side left  -expand no
    DynamicHelp::register .tool.toolbar.frame.denied balloon "Remove a MacPorts port"

    ttk::button .tool.toolbar.frame.info -image help-info -style Toolbutton -command showInformation -takefocus 0
    pack .tool.toolbar.frame.info -side left  -expand no
    DynamicHelp::register .tool.toolbar.frame.info balloon "Show information about a port"

    ttk::button .tool.toolbar.frame.x -image process-stop -style Toolbutton -command killPorts -takefocus 0
    pack .tool.toolbar.frame.x -side left  -expand no
    DynamicHelp::register .tool.toolbar.frame.x balloon "Terminate a running process"

    ttk::entry .tool.toolbar.frame.entry -textvariable searchterm -width 30 -style ImgEntry

    pack .tool.toolbar.frame.entry -side right -expand no

    #additional bindings
    bind .tool.toolbar.frame.entry <Return> {portSearch}

    tclservices::registerservicewidget .tool.toolbar.frame.entry 
    bind .tool.toolbar.frame.entry <ButtonRelease-1>  checkEntrySelection

    #list of port categories
    set portlist [list  aqua archivers audio benchmarks blinkenlights cad chat chinese comms compression cross crypto databases devel editors electronics emulators erlang fonts framework games genealogy gnome gnustep graphics irc java kde lang mail math mono multimedia net news palm parallel pdf perl php pim print python ruby russian scheme science security shells spelling squeak sysutils tex textproc unicode vnc win32 www x11 x11-wm zope]

    array set treelabel {
	aqua desktop
	archivers aptdaemon-add
	audio music
	benchmarks code
	blinkenlights system-time
	cad shotwell
	chat im
	chinese locale
	comms wifi
	compression aptdaemon-add
	cross desktop
	crypto lock
	databases  office-database
	devel  code
	editors code
	electronics pda
	emulators desktop
	erlang code
	fonts code
	framework  code
	games pda
	genealogy office-database
	gnome desktop
	gnustep desktop
	graphics shotwell
	irc im
	java  code
	kde desktop
	lang  locale
	mail  mail
	math accessories-dictionary
	mono code
	multimedia music
	net wifi
	news wifi
	palm pda
	parallel binary
	pdf pdf
	perl  code
	php  code
	pim pda
	print  desktop
	python  code
	ruby  code
	russian locale
	scheme  code
	science accessories-dictionary
	security  lock
	shells binary
	spelling accessories-dictionary
	squeak  code
	sysutils binary
	tex code
	textproc code
	unicode locale
	vnc desktop
	win32  desktop
	www desktop
	x11 desktop
	x11-wm desktop
	zope  code
    }


    
    # ttk::separator .bottomsep1 -orient vertical 
    # pack .bottomsep1 -side bottom -fill both -expand no -side bottom

................................................................................
    pack .t.left -fill both -expand yes


    #tree display for categories
    Tree .t.left.tree -selectfill 1 -yscrollcommand [list .t.left.scroll set]

    #get default values for tree options
    foreach {key value} [array get mojavehig::treeopts] {
    	.t.left.tree configure -$key $value
    } 
    
    pack .t.left.tree -fill both -side left -expand yes

    scrollbar .t.left.scroll -command [list .t.left.tree yview]
    pack .t.left.scroll -side right -fill y -expand no

    .t.left.tree insert end root All  -text "All" -image desktop
    .t.left.tree insert end root Installed  -text "Installed" -image desktop
    .t.left.tree insert end root Search -text "Search" -image find
    .t.left.tree insert end root Ports  -text "Ports" -image aptdaemon-add

    
    foreach item $portlist {
	.t.left.tree insert end Ports $item -text "$item" -image $treelabel($item) 
    }

    bind .t.left.tree <<TreeSelect>> {selectCat}

    bind .t.left.tree.c <MouseWheel> {%W yview scroll [expr {- (%D)}] units}

    #more data display
................................................................................
    scrollbar .t.right.upper.frame.row.vsb -orient vertical -command [list .t.right.upper.frame.listbox yview]
    pack .t.right.upper.frame.row.vsb -side bottom -fill y -expand 1

    #main data display
    tablelist::tablelist .t.right.upper.frame.listbox -columns {10 "Installed" 40 "Port"  20 "Version"   30 "Category" } -width 110 -yscrollcommand [list .t.right.upper.frame.row.vsb set] 

    #get default table options
    foreach {key value} [array get mojavehig::tableopts] {
	.t.right.upper.frame.listbox configure -$key $value
    }


    .t.right.upper.frame.listbox configure -labelcommand tablelist::sortByColumn
    
    pack .t.right.upper.frame.listbox -side left -fill both -expand yes
................................................................................
    .t.right add .t.right.lower

    .t add .t.left
    .t add .t.right

    wm geometry . 950x700



}


#put up busy cursor, display progress bar
proc showProgress {} {
    global log 
................................................................................

#hide progress bar, notify user action is done, reset cursor
proc endProgress {} {
    global log 
    

    . configure -cursor arrow


    .bottom.progress stop
    pack forget .bottom.progress
    bgGetAllPorts
}

#show all available ports
................................................................................
    global portpath 
    global verboselevel 
    global installicon
    

    clearData
    showProgress


    #error handling
    if {[.t.right.upper.frame.listbox curselection] == ""} {	
	tk_messageBox -title "Wrong Selection" -icon warning -message "Please make a selection from the main table." -detail "This will start the installation process." -parent . 
	set status ""
	endProgress
	selectCat
................................................................................
    global portpath 
    global verboselevel 
    global installicon
    

    clearData
    showProgress


    set new $variantport
    set status "Installing $new"
    
    set script "$portpath $verboselevel install $new +$variantname > [file join $::env(TMPDIR) portauthority.txt] 2>&1 & echo $! > [file join $::env(TMPDIR) pid.txt] &"

    set scripterr {   
................................................................................
    global deleteicon
    global portauthority_growl
    global playsound
    global showstatus

    clearData
    showProgress

    
    #error handling
    if {[.t.right.upper.frame.listbox curselection] == ""} {
	tk_messageBox -title "Wrong Selection" -icon warning -message "Please make a selection from the main table." -detail "This will start the removal process." -parent .
	set status ""
	endProgress
	selectCat
................................................................................
	tk_messageBox -title "Wrong Selection" -icon warning -message "Please make a selection from the main table." -detail "This will start the upgrade process." -parent . 
	set status "Done"
	return
    } else {
	set item [lindex [.t.right.upper.frame.listbox get [.t.right.upper.frame.listbox curselection]] 1]
	set new [lindex [split $item] 0]
	showProgress

	set status "Upgrading $new"
	
	set script "$portpath $verboselevel upgrade $new > [file join $::env(TMPDIR) portauthority.txt] 2>&1 & echo $! > [file join $::env(TMPDIR) pid.txt] &"

	set scripterr {   
	    AppleScript execute "

................................................................................
    global status 
    global portpath 
    global verboselevel 
    global installicon
    
    clearData
    showProgress

    set status "Upgrading all installed ports"

    
    set script "$portpath $verboselevel upgrade installed  > [file join $::env(TMPDIR) portauthority.txt] 2>&1 & echo $! > [file join $::env(TMPDIR) pid.txt] &"

    set scripterr {   
	AppleScript execute "
................................................................................
    global verboselevel 
    global installicon
    
    
    clearData
    set status "Getting updated ports"
    showProgress


    
    set script "$portpath $verboselevel sync > [file join $::env(TMPDIR) portauthority.txt] 2>&1 & echo $! > [file join $::env(TMPDIR) pid.txt]  &"

    set scripterr {   
	AppleScript execute "

................................................................................
    global portpath 
    global verboselevel 
    global installicon
    

    clearData
    showProgress

    after 500
    set status "Updating MacPorts"
    set script "$portpath $verboselevel selfupdate > [file join $::env(TMPDIR) portauthority.txt] 2>&1 & echo $! > [file join $::env(TMPDIR) pid.txt] &"

    set scripterr {   
	AppleScript execute "

................................................................................
    global playsound
    global showstatus
    
    #create gui
    toplevel .preferences
    wm title .preferences "PortAuthority Preferences"
    
    set n [NoteBook .preferences.n]
    pack $n -side top -fill both -expand yes
    
    $n insert 0 pathpref -text Paths
    $n insert 1 copytext -text Copy 
    $n insert 2 fontpref -text Font  

    $n raise pathpref
................................................................................
    ttk::frame $fontpane.font
    pack $fontpane.font -fill both -expand yes
    
    
    ttk::frame $fontpane.font.title 
    pack $fontpane.font.title -side left -fill both -expand yes
    
    listbox $fontpane.font.title.list  -yscrollcommand [list $fontpane.font.title.scrollbar set] -font {-size 12} -relief flat -bd 0 -selectbackground #D2D2D2  -selectforeground black -background #F6F6F6 -highlightbackground #F6F6F6
    
    pack $fontpane.font.title.list -side left -fill both -expand yes
    
    
    #get all fonts on system
    set families [font families]
    set sorted [lsort $families]
................................................................................
#"about application" command
proc tkAboutDialog {} {
    aboutWindow
}


proc aboutWindow {} {
 tk_messageBox -parent . -icon info -title "About PortAuthority" -message "PortAuthority: GUI for MacPorts" -detail "Version 8.0\n(c)2018 WordTech Communications LLC"

}


#initialization routines on startup
proc startUp {} {

................................................................................

    if {![file exists $datadir/portauthority.rc]} {
	checkPref
    }    
    
    if { [file exists  $datadir/portauthority.rc]} {
	catch [list source $datadir/portauthority.rc ] 
	appname::setAppName PortAuthority 8.0
	softwareupdate::setVersion $appname::name $appname::version
	machelp::setAppName $appname::name $appname::version
	checkMacPorts
	drawGUI
	setPref
	getAllPorts
	catch {toggleCopyText}
................................................................................
	regproc::readLic $appname::name $appname::version
}

#load images into memory
proc makeImage {} {
   
    set imagedir [file join [file dirname [info script]] images]


    
    set growlicon  [file join [softwareupdate::findCurrentInstallation] "Contents/Resources/PortAuthority.icns"]

    growl::growlicon $growlicon

    set imagelist [glob -directory $imagedir *.png]
    foreach item $imagelist {
	image create photo [file rootname [file tail $item]] -file $item
    }


    softwareupdate::setIcon icon-update
    
}


#save output to text file
proc saveLog {} {
    global log

Changes to libs/portauthority/portauthority.tcl.

1
2
3
4
package provide portauthority 7.9

source [file join [file dirname [info script]] portauthority-main.tcl]

|



1
2
3
4
package provide portauthority 8.0

source [file join [file dirname [info script]] portauthority-main.tcl]

Changes to libs/regproc/pkgIndex.tcl.

4
5
6
7
8
9
10
11
# by a "package unknown" script.  It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands.  When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.

package ifneeded regproc 1.4 [list source [file join $dir regproc.tcl]]







|
4
5
6
7
8
9
10
11
# by a "package unknown" script.  It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands.  When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.

package ifneeded regproc 1.5 [list source [file join $dir regproc.tcl]]

Changes to libs/regproc/regproc.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16



17
18
19
20
21
22
23


24
25
26
27
28
29
30
#regproc.tcl  routines to register serial numbers

#Copyright 2015 WordTech Communications LLC

#MIT license

package provide regproc 1.4
package require http
package require xplat


image create photo _unlock -data  {
    R0lGODlhGAAgAIABAAAAAP///yH+GkNyZWF0ZWQgd2l0aCBHSU1QIG9uIGEgTWFj
    ACH5BAEKAAEALAAAAAAYACAAAAJRjI+gq+jO4npQWmqsBvQenzBYVE1YQH7imWbm
    ib5xA89cPcp4uPX+DwwKh7SdbWXUGF2S5VHn6oBURWrL+lBmb6UrTpucfsE14u85
    tKZ5wkMBADs=



}

image create photo _check -data {
    R0lGODlhIAAaAIABAAQHB////yH+GkNyZWF0ZWQgd2l0aCBHSU1QIG9uIGEgTWFj
    ACH5BAEKAAEALAAAAAAgABoAAAJMjI+pCeuvgIR0yVtzuFxDDnoWGIoHWZobikUV
    2zLTA89yfLNjetY7iag1Ir4VzCFMfpI6ChOYeeJeTxVTZRBie6htEOrl2sJcsmVb
    AAA7


}


namespace eval regproc {

    if {![info exists library]} {
	variable library [file dirname [info script]]






|





|
|
|
|
>
>
>



|
|
|
|
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#regproc.tcl  routines to register serial numbers

#Copyright 2015 WordTech Communications LLC

#MIT license

package provide regproc 1.5
package require http
package require xplat


image create photo _unlock -data  {
   R0lGODlhQABAAIABAAAAAP///yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAEA
LAAAAABAAEAAAALwjI+pC+29opw0vnur3jKzx4UbSJHimZiaioZO+7YiJNPyCNyG
rXc8/OulcsKgcGdExY6IJJA5hDpv0yc0UFUSpVtm9vSddY9h17h47pU5a9wVm9a1
V3FqvXa3ct/zSr+Up8UXCEYoNoh49Tex6JO4p2ho9qiFYXmJmXmJo9np2en2xmbY
qEYqKRpWKncqOhrq6tcaKwtL60iHt6iKerBZaDtKtDSZK9ZFHIxb3NQLp1wbdWhs
hjzHW4nk/Exd7TEdXbmNBP2KV47ezThOfq5+q4ANvww4T79ubzGbLx3O77vvXztZ
nwoaTObjoEJPCwoAADs=
}

image create photo _check -data {
R0lGODlhQABAAIABAAAAAP///yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAAEA
LAAAAABAAEAAAAKhjI+py+0Po5y02ouz3rz7D4biSJbmiabqyrbuC8fyTNcqgOe4
jeh+bvMphDKdwwgDRpQt5nLXBFigK6fEeqJWtFnuBEvyUsQj8vWHTqvX0gz7Df9p
uF7zed4+1PMYO4TOZ+D3N8hgtcdRuICYoHjkqMdYFvi0SPkB1gAGOaWYydlphxRD
1DM688YTKafa6voKGys7S1tre4ubq7vL2+ubWwAAOw==

}


namespace eval regproc {

    if {![info exists library]} {
	variable library [file dirname [info script]]