Changes to libs/manpower/manpower-main.tcl.
︙ | | |
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
+
+
-
-
-
+
+
+
|
py+1LIsJHiBAh+BgmiEAJQITgW6DgUQIAECH4JN8IPqYuNxUAOw==}
image create photo downArrow -data {
R0lGODlhDgAOAJEAANnZ2YCAgPz8/P///yH5BAEAAAAALAAAAAAOAA4AAAInhI+
py+1I4ocQ/IgDEYIPgYJICUCE4F+YIBolEoKPEJKZmVJK6ZACADs=}
image create photo noArrow -height 14 -width 14
#aem::installeventhandler CoKv sMan showManFromScript
#aem::installeventhandler GURL GURL showManURL
#handle "get URL" event for man page
proc showManURL {man} {
global manitem
set manitem [lindex [split $man "//"] 2]
singleManPage
global manitem
set manitem [lindex [split $man "//"] 2]
singleManPage
}
proc showManFromScript {man} {
global manitem
set manitem ""
|
︙ | | |
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
-
-
+
+
|
#draw the images
proc makeImage {} {
#create the images
set imagedir [file join [file dirname [info script]] images]
set imagefiles [glob -directory $imagedir *.tcl]
set imagefiles [glob -directory $imagedir *.tcl]
foreach item $imagefiles {
source $item
}
softwareupdate::setIcon icon-update
}
|
︙ | | |
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
-
+
-
+
|
global copy_text
global font_name
global datadir
set manitem ""
set searchterm ""
set manterm ""
#set up menu
menu .mb
#apple menu
menu .mb.apple
.mb.apple add command -label "About Manpower" -command tkAboutDialog
.mb.apple add command -label "License" -command regproc::getReg
.mb.apple add command -label "Check for Updates" -command "softwareupdate::checkVersion $appname::name $appname::version"
.mb.apple add separator
.mb add cascade -label "Manpower" -menu .mb.apple
#man page menu
menu .mb.man
.mb.man add command -label "Find Man Page" -command manSearch -accelerator "Command-F"
.mb.man add command -label "Find Man Page" -command {.t.left.tree selection set Search} -accelerator "Command-F"
menu .mb.man.save
.mb.man.save add command -label "Text" -command saveMan
.mb.man.save add command -label "HTML" -command saveHTML
.mb.man.save add command -label "PDF" -command savePDF
.mb.man add cascade -label "Save As" -menu .mb.man.save
|
︙ | | |
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
-
-
|
.mb add cascade -label "Help" -menu .mb.help
. configure -menu .mb
wm title . "Manpower"
ttk::style configure Toolbutton -font {Iconic 22}
#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
|
︙ | | |
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
|
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
|
-
+
|
pack .bottomsep1 -side bottom -fill both -expand no -side bottom
bind .tool.toolbar.frame.browser <ButtonRelease-1> checkManSelection
#additional bindings
bind .tool.toolbar.frame.browser <Return> {singleManPage}
bind .tool.toolbar.frame.entry <Return> {manSearch; writeState}
bind .tool.toolbar.frame.entry <Return> {manSearch}
ttk::frame .bottom
pack .bottom -side bottom -fill both -expand no
ttk::separator .bottomsep -orient vertical
pack .bottomsep -side bottom -fill both -expand no -side bottom
|
︙ | | |
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
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
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
|
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
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
349
350
351
352
353
354
355
356
|
-
-
-
+
-
-
+
-
-
+
-
-
-
-
+
-
-
+
-
-
+
+
-
+
-
+
-
-
-
-
+
|
file-system xbm_folder_sans_16
other xbm_star_16
macro xbm_script_16
admin xbm_home_16
kernel xbm_refresh_16
}
#lay out the tree widget
ttk::treeview .middle.left.tree -yscrollcommand [list .middle.left.scroll set] -show tree
pack .middle.left.tree -fill both -side left -expand yes
#tree display for categories
#tree display for categories
ttk::treeview .t.left.tree -yscrollcommand [list .t.left.scroll set] -show tree
pack .t.left.tree -fill both -side left -expand yes
ttk::scrollbar .t.left.scroll -command [list .t.left.tree yview]
pack .t.left.scroll -side right -fill y -expand no
set entry1 [.middle.left.tree insert {} end -id All -value All -text "All" -image xbm_website_16]
set entry2 [.middle.left.tree insert {} end -id Search -value Search -text "Search" -image xbm_search_16]
set entry3 [ .middle.left.tree insert {} end -id Category -value Category -text "Category" -image xbm_category_16 ]
set categoryman [list users "1. User Commands" system "2. System Commands" library "3. Library Commands" special "4. Special" file-system "5. File Formats" other "6. Other" macro "7. Macros/Conventions" admin "8. Administrative" kernel "9. Kernel Commands" ]
foreach {key value} $categoryman {
.middle.left.tree insert $entry3 end -id $key -value $key -text $value -image $treelabel($key)
}
scrollbar .middle.left.scroll -command [list .middle.left.tree yview]
ttk::scrollbar .middle.left.scroll -command [list .middle.left.tree yview]
pack .middle.left.scroll -side right -fill y -expand no
bind .middle.left.tree.c <KeyPress-Up> [list +event generate .middle.left.tree <<TreeSelect>>]
bind .middle.left.tree.c <KeyPress-Down> [list +event generate .middle.left.tree <<TreeSelect>>]
bind .middle.left.tree <<TreeviewSelect>> {selectCat}
bind .middle.left.tree <<TreeviewSelect>> {setCat}
bind .middle.left.tree.c <MouseWheel> {%W yview scroll [expr {- (%D)}] units}
.middle.left.tree opentree Category
ttk::panedwindow .middle.right
pack .middle.right -side right -fill both -expand yes
ttk::frame .middle.right.upper
pack .middle.right.upper -side right -fill both -expand yes
ttk::frame .middle.right.upper.frame
pack .middle.right.upper.frame -side top -fill both -expand yes
ttk::frame .middle.right.upper.frame.row
pack .middle.right.upper.frame.row -side right -fill y -expand no
ttk::label .middle.right.upper.frame.row.corner -style TablelistHeader.TLabel
pack .middle.right.upper.frame.row.corner -side top -fill x -expand no
scrollbar .middle.right.upper.frame.row.vsb -orient vertical -command [list .middle.right.upper.frame.listbox yview]
ttk::scrollbar .middle.right.upper.frame.row.vsb -orient vertical -command [list .middle.right.upper.frame.listbox yview]
pack .middle.right.upper.frame.row.vsb -side bottom -fill y -expand 1
#main data display
tablelist::tablelist .middle.right.upper.frame.listbox -columns {"Man Page" "Description"} -show headings -yscrollcommand [list .middle.right.upper.frame.row.vsb set] -displaycolumns #all
ttk::treeview .middle.right.upper.frame.listbox -columns {"Man Page" "Description"} -show headings -yscrollcommand [list .middle.right.upper.frame.row.vsb set] -displaycolumns #all
pack .middle.right.upper.frame.listbox -side left -fill both -expand yes
bind .middle.right.upper.frame.listbox <<TreeviewSelect>> {getManPage}
foreach "item" $manlist {
.middle.right.upper.frame.listbox insert end $item
}
#menu for right-clicking
menu .popup
.popup add command -label "Find Man Page" -command manSearch
.popup add command -label "Find Man Page" -command {.t.left.tree selection set Search}
.popup add command -label "Print Man Page" -command printFile
bind [.middle.right.upper.frame.listbox bodypath] <Button-2> {tk_popup .popup %X %Y}
#the rest of the display
ttk::frame .middle.right.lower
pack .middle.right.lower -side bottom -fill both -expand true
ttk::frame .middle.right.lower.right -height 100
pack .middle.right.lower.right -side right -fill both -expand yes
#output display--text
text .middle.right.lower.right.log -borderwidth .1 -relief sunken -wrap word -highlightcolor SlateGray3 -yscrollcommand {.middle.right.lower.right.vsb set} -bg white -state disabled
text .middle.right.lower.right.log -borderwidth .1 -relief sunken -wrap word -highlightcolor SlateGray3 -yscrollcommand {.middle.right.lower.right.vsb set} -state disabled
tclservices::registerservicewidget .middle.right.lower.right.log
bind .middle.right.lower.right.log <<Selection>> checkTextSelection
scrollbar .middle.right.lower.right.vsb -command ".middle.right.lower.right.log yview"
ttk::scrollbar .middle.right.lower.right.vsb -command ".middle.right.lower.right.log yview"
pack .middle.right.lower.right.log -side left -fill both -expand yes
pack .middle.right.lower.right.vsb -side right -fill y
.middle.right.lower.right.log tag configure manref -foreground blue -underline on
.middle.right.lower.right.log tag bind manref <Enter> {.middle.right.lower.right.log configure -cursor pointinghand}
|
︙ | | |
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
|
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
|
-
+
-
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
-
+
+
+
|
.middle add .middle.right
toplevel .bookmarks
tk::unsupported::MacWindowStyle style .bookmarks utility
wm title .bookmarks "Bookmarks"
#draw drawer window offscreen
ttk::label .bookmarks.header -style TablelistHeader.TLabel -text "Bookmarks" -font {-size 12}
ttk::label .bookmarks.header -text "Bookmarks"
pack .bookmarks.header -side top -fill both -expand yes
ttk::frame .bookmarks.top
pack .bookmarks.top -fill both -expand yes -side top
ttk::frame .bookmarks.bottom -padding 2
pack .bookmarks.bottom -fill both -expand no -side bottom
listbox .bookmarks.top.list -yscrollcommand [list .bookmarks.top.scrollbar set] -font {-size 12} -relief flat -bd 0 -selectbackground RoyalBlue1 -selectforeground white -height 30 -activestyle none
listbox .bookmarks.top.list -yscrollcommand [list .bookmarks.top.ttk::scrollbar set] -font {-size 12} -relief flat -bd 0 -height 30 -activestyle none
pack .bookmarks.top.list -side left -fill both -expand yes
scrollbar .bookmarks.top.scrollbar -command [list .bookmarks.top.list yview]
pack .bookmarks.top.scrollbar -side right -fill y -expand no
ttk::scrollbar .bookmarks.top.ttk::scrollbar -command [list .bookmarks.top.list yview]
pack .bookmarks.top.ttk::scrollbar -side right -fill y -expand no
ttk::button .bookmarks.bottom.add -style Toolbutton -text \u2795 -takefocus 0 -command addBookMark
ttk::button .bookmarks.bottom.delete -style Toolbutton -text \u2796 -takefocus 0 -command deleteBookMark
ttk::button .bookmarks.bottom.add -style Toolbutton -text "+" -takefocus 0 -command addBookMark
ttk::button .bookmarks.bottom.delete -style Toolbutton -text "-" -takefocus 0 -command deleteBookMark
DynamicHelp::register .bookmarks.bottom.add balloon "Add bookmark"
DynamicHelp::register .bookmarks.bottom.delete balloon "Delete bookmark"
tooltip::tooltip .bookmarks.bottom.add "Add bookmark"
tooltip::tooltip .bookmarks.bottom.delete "Delete bookmark"
bind .bookmarks.top.list <<ListboxSelect>> getManPagefromBookmark
pack .bookmarks.bottom.add .bookmarks.bottom.delete -side left -fill both -expand no
wm withdraw .bookmarks
wm protocol .bookmarks WM_DELETE_WINDOW {wm withdraw .bookmarks}
#other bindings
bind all <Command-F> manSearch
bind all <Command-f> manSearch
bind all <Command-F> {.t.left.tree selection set Search}
bind all <Command-f> {.t.left.tree selection set Search}
bind all <Command-P> printFile
bind all <Command-p> printFile
bind . <Command-W> {wm state . withdrawn}
bind . <Command-w> {wm state . withdrawn}
wm protocol . WM_DELETE_WINDOW {wm withdraw .}
wm protocol . WM_DELETE_WINDOW {wm withdraw .}
.t.left.tree selection set All
}
## Code to do the sorting of the tree contents when clicked on
proc SortBy {tree col direction} {
set tree .middle.right.upper.frame.listbox
|
︙ | | |
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
|
466
467
468
469
470
471
472
473
474
475
476
477
478
479
|
-
-
|
#get list of all man pages
proc getAllMan {} {
global manlist
global cachedir
puts "home is $::env(HOME)"
set result [exec man -k \[a-zA-Z0-9\] > $cachedir/manpages 2>$cachedir/error]
set fd [open $cachedir/manpages r]
set basiclist [split [read $fd] \n]
set displaylist [lrange $basiclist 0 end-1]
#replace dash so we can split list more efficiently
|
︙ | | |
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
|
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
|
-
+
|
proc getManPage {} {
global manitem
global status
global rmanpath
global cachedir
set item [lindex [.middle.right.upper.frame.listbox get [.middle.right.upper.frame.listbox curselection]] 0]
set item [lindex [.middle.right.upper.frame.listbox item [.middle.right.upper.frame.listbox selection] -values] 0]
#parse man page name from list
set mansplit [split $item \(]
set manitem [lindex $mansplit 0]
set mansection [lindex [split [lindex $mansplit 1] \)] 0]
|
︙ | | |
573
574
575
576
577
578
579
580
581
582
583
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
615
616
617
618
|
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
|
-
+
-
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
|
.middle.right.lower.right.log configure -state disabled
set status "Open man page: $manitem"
}
#get category for browsing--bound to single-click
proc setCat {node} {
proc setCat {} {
global category
global manlist
.middle.left.tree selection set $node
set node [lindex [.middle.left.tree item [.middle.left.tree selection] -values] 0]
switch - $node {
"" {
return
if { $node == "Category"} {
return
} "Category" {
return
}
if {$node == "Search"} {
manSearch
return
} "Search" {
manSearch
return
}
if {$node == "All" } {
refreshManList
return
} else {
manCat
}
} "All" {
refreshManList
return
} default {
manCat
}
}
}
#get selected node in tree; we use this because setCat takes a node name as arg, can't simply be called
proc selectCat {} {
global manlist
global mynode
set mynode [.middle.left.tree selection get]
setCat $mynode
}
#search list of man pages for keyword
proc manSearch {} {
global manlist
global searchterm
global status
|
︙ | | |
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
|
785
786
787
788
789
790
791
792
793
794
795
796
797
798
|
-
|
set i [ .middle.right.lower.right.log index @$xpos,$ypos]
set range [ .middle.right.lower.right.log tag prevrange manref $i]
set final [eval .middle.right.lower.right.log get $range]
set new [lindex [split $final \(] 0]
set manitem $new
singleManPage
# convertMan
.middle.right.lower.right.log configure -cursor arrow
}
#print data to default printer
proc printFile {} {
|
︙ | | |
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
|
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
|
-
-
-
+
+
+
|
set datadir [xplat::appconfig Manpower]
set cachedir [file join $::env(HOME) "Library" "Application Support" "Manpower" "Cache"]
if {![file exists $cachedir]} {
file mkdir $cachedir
}
if {![file exists $datadir]} {
file mkdir $datadir
}
if {![file exists $datadir]} {
file mkdir $datadir
}
set resourcedir [file join [softwareupdate::findCurrentInstallation] "Contents" "Resources"]
getAllMan
makeImage
softwareupdate::setVersion $appname::name $appname::version
machelp::setAppName $appname::name $appname::version
|
︙ | | |
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
|
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
|
-
+
|
singleManPage
}
#custom "about" dialog
proc aboutWindow {} {
tk_messageBox -parent . -icon info -title "About Manpower" -message "Manpower: Man Page Viewer" -detail "Version 7.0\n(c)2019 WordTech Communications LLC"
tk_messageBox -parent . -icon info -title "About Manpower" -message "Manpower: Man Page Viewer" -detail "Version 7.0\n(c)2019 WordTech Communications LLC"
}
#raise window if closed--dock click
proc ::tk::mac::ReopenApplication {} {
if { [wm state .] == "withdrawn"} {
|
︙ | | |