︙ | | |
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
+
+
+
+
|
namespace import tcl::mathop::-
namespace import tcl::mathop::*
namespace import tcl::mathop::/
# Do initalisations for needed packages and globals.
# This is not run until needed to speed up command line error reporting.
proc Init {} {
if {[info exists ::eskil(initHasRun)]} {
return
}
set ::eskil(initHasRun) 1
package require Tk 8.4
catch {package require textSearch}
package require wcb
package require snit
package require tablelist_tile
if {[catch {package require psballoon}]} {
|
︙ | | |
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
|
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
package require pdf4tcl
if {[llength [pdf4tcl::getPaperSize $arg]] != 2} {
puts "Argument $opt must be a valid paper size"
puts "Valid paper sizes:"
puts [join [lsort -dictionary [pdf4tcl::getPaperSizeList]] \n]
exit
}
}
proc optValidatePlugin {opt arg} {
# We must start up completely to check a plugin
Init
set src [LocatePlugin $arg]
if {$src eq ""} {
puts "Bad plugin: $arg"
printPlugins
exit
}
# Look for declarations of command line options
set ch [open $src r]
while {[gets $ch line] >= 0} {
# Only look until empty line
if {[string trim $line] eq ""} break
if {[regexp {^\#\# Option\s+(\S+)} $line -> name]} {
addOpt $name
}
if {[regexp {^\#\# Flag\s+(\S+)} $line -> name]} {
addFlags $name
}
}
close $ch
}
# Option database setup
proc initOpts {} {
set ::eskil(opts) {}
set ::eskil(defoptinfo) {
flag 0
given 0
|
︙ | | |
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
|
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
|
+
+
+
+
|
proc addPrefOpt {name elem {validator ""}} {
dict set ::eskil(opts) $name ""
dict set ::eskil(opts,info) $name $::eskil(defoptinfo)
dict set ::eskil(opts,info) $name type Pref
dict set ::eskil(opts,info) $name "elem" $elem
dict set ::eskil(opts,info) $name "validator" $validator
}
# Add a vaildator command to an Opt
proc addValidator {name cmd} {
dict set ::eskil(opts,info) $name validator $cmd
}
# Add a filter command prefix to an Opt
proc addFilter {name cmd} {
dict set ::eskil(opts,info) $name filter $cmd
}
# Add a sideeffect to an Opt
##nagelfar syntax addSideEffect x c
proc addSideEffect {name script} {
|
︙ | | |
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
|
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
|
+
|
addFlags -browse -nodiff
addFlags -server -cvs -svn -debug
addFlags -foreach -close
addFlags -nonewline -nonewline+ -nocdiff
addFlags -pluginlist -pluginallow
# Options that take values
addOpt -plugin
addValidator -plugin optValidatePlugin
addOpt -plugininfo
addOpt -plugindump
# These options affect Pref
addPrefOpt -pivot pivot optValidatePositive
addPrefOpt -context context optValidateNatural
addPrefOpt -printHeaderSize printHeaderSize optValidatePositive
addPrefOpt -printCharsPerLine printCharsPerLine optValidatePositive
|
︙ | | |
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
|
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
|
+
|
if {$plugindump ne ""} {
printPlugin $plugindump
exit
}
if {$plugin ne ""} {
set pinterp [createPluginInterp $plugin $plugininfo $pluginallow pinfo]
if {$pinterp eq ""} {
# This should not happen since the validator should handle it
puts "Bad plugin: $plugin"
printPlugins
exit
}
set opts(plugin) $pinterp
set opts(pluginname) $plugin
set opts(plugininfo) $plugininfo
|
︙ | | |