📄 reader.tcl
字号:
return } } if { $READG(OS) == "nt" } { set ACROBAT_COMMAND [tclu_path_back_to_fore $READG(ACROBAT_COMMAND)] set COMMAND "\"$ACROBAT_COMMAND\" $FPATH &" } else { set COMMAND "$READG(ACROBAT_COMMAND) $FPATH &"} puts "$COMMAND" if { [catch {eval "exec $COMMAND"} RESPONSE] } { tku_popup_message error ok $RESPONSE } else { tku_message "Launching Acrobat Reader ; Please wait ..." tku_cursor_watch after 5000 tku_message " " tku_cursor_normal } } ".txt" { set TMP_PATH [tclu_get_tmp_name "reader"] copy_file_with_tags $FPATH $TMP_PATH tku_popup_file $TMP_PATH catch {file delete $TMP_PATH} } default { tku_popup_message error ok \ "No viewing program matches the extension\ \nof this file ($EXTENSION)" } }}#................................................................#proc install_acrobat_reader { ACRO_COMMAND_P } { global READG upvar $ACRO_COMMAND_P ACRO_COMMAND set CHOICE [tku_popup_message question okcancel \ "The specified path: $ACRO_COMMAND\ \ndoes not point to a valid executable program.\ \n\ \nIf you have already installed Acrobat Reader in a different path, \ \nclick 'Cancel' and change the path (located in the\ \n'Acrobat Reader Command' field) to the correct one.\ \n\ \nIf you never installed Acrobat Reader, you may continue to \ \ninstall Acrobat Reader now.\ \n\ \nDo you wish to install Acrobat Reader now ?"] if { $CHOICE != "ok" } { return 1 } set OS $READG(OS) if { $OS == "nt" } { set STATUS [install_acrobat_reader_nt ACRO_COMMAND] } else { set STATUS [install_acrobat_reader_unix ACRO_COMMAND] } return $STATUS}#................................................................#proc install_acrobat_reader_nt { ACRO_COMMAND_P } { global READG upvar $ACRO_COMMAND_P ACRO_COMMAND set OS $READG(OS) set EXE_PATH [file join [pwd] helpers $OS acrdsrch.exe] if { ! [file exists $EXE_PATH] } { tku_popup_message error ok \ "Sorry, The file $EXE_PATH\ \ndoes not exist" return 1 } set DEST_DIR " c:/Progra~1/Adobe/Acroba~1.0/Reader" set CHOICE [tku_popup_message info okcancel \ "Please specify below the desired path for the Acrobat Reader.\ \nSubsequently, you will be transferred to the Adobe Acrobat Reader\ \nstandard installation process. You will have to accept the license\ \nagreement and re-specify the directory into which the reader is installed.\ \nPlease make sure it is the same as you specified below!" \ "" DEST_DIR] if { $CHOICE != "ok" } { return 1 } if [catch {eval "exec $EXE_PATH &"} RESPONSE] { tku_popup_message error ok $RESPONSE return 1 } set ACRO_COMMAND [file join $DEST_DIR acrord32] return 0}#................................................................#proc install_acrobat_reader_unix { ACRO_COMMAND_P } { global READG upvar $ACRO_COMMAND_P ACRO_COMMAND set IS_ROOT [tku_is_root warning] if { ! $IS_ROOT } { return 1 } set OS $READG(OS) if { $OS == "hp10" } { set OS "hp9" } set DATA_PATH [file join [pwd] helpers $OS acrdsrch.tgz] if { ! [file exists $DATA_PATH] } { tku_popup_message error ok \ "Sorry, The file $DATA_PATH\ \ndoes not exist" return 1 } set DEST_TMP_PATH [tclu_get_tmp_name acrobat] set STATUS [tclu_mkdir $DEST_TMP_PATH 1] if {$STATUS != 0} { return 1 } set CUR_DIR [pwd] if [ catch {cd $DEST_TMP_PATH} RESPONSE ] { tku_popup_message error ok $RESPONSE return 1 } set PROGRESS_PATH [tclu_get_tmp_name tmp_reader] set COMMAND [format "%s %s %s | %s | %s %s" \ [file join $READG(TOOLS_PATH) pipe_in.exe] \ "$DATA_PATH" \ $PROGRESS_PATH \ [file join $READG(TOOLS_PATH) gunzip.exe] \ $READG(TAR) "xf -"] set TITLE "Uncompressing Acrobat Reader..." set STATUS [tku_long_command $COMMAND $TITLE $READG(W_MESSAGE) \ abort $PROGRESS_PATH] catch { file delete $PROGRESS_PATH } if { $STATUS != "ok" } { catch {cd $CUR_DIR} catch {file delete -force $DEST_TMP_PATH} return 1 } set DEST_DIR "/usr/Acrobat3" set CHOICE [tku_popup_message info okcancel \ "Please specify below the desired path for the Acrobat Reader.\ \nSubsequently, you will be transferred to the Adobe Acrobat Reader\ \nstandard installation which runs in a separate terminal window.\ \nYou will have to accept the license agreement and re-specify\ \nthe directory into which the reader is installed.\ \nPlease make sure it is the same as you specified below!" \ "" DEST_DIR] if { $CHOICE != "ok" } { catch {cd $CUR_DIR} catch {file delete -force $DEST_TMP_PATH} return 1 } set SCRIPT_PATH [file join $DEST_TMP_PATH INSTALL] set SH_COMMAND "$READG(XTERM) $SCRIPT_PATH" puts $SH_COMMAND if [catch {eval "exec $SH_COMMAND"} RESPONSE] { tku_popup_message error ok $RESPONSE catch {cd $CUR_DIR} catch {file delete -force $DEST_TMP_PATH} return 1 } set ACRO_COMMAND [file join $DEST_DIR bin acroread] catch {cd $CUR_DIR} catch {file delete -force $DEST_TMP_PATH} return 0}#................................................................#proc reader.cb_b_copy {} { global READG global LI_NAME LI_TYPE LI_FILE LI_PRODUCTS LI_ABSTRACT set STATUS [check_if_selected] if { $STATUS != 0 } { return } set FPATH [get_li_file_path $READG(CUR_INDEX)] set TAIL [file tail $FPATH] tku_cursor_watch tku_restore_tk_getOpenFile set DEST_PATH \ [tk_getSaveFile -initialdir $READG(COPY_DIR) \ -initialfile $TAIL] tku_override_tk_getOpenFile tku_cursor_normal if { [string length $DEST_PATH] > 0 } { set READG(COPY_DIR) [file dirname $DEST_PATH] if [ file exists $DEST_PATH ] { if [ tclu_is_path_dir $DEST_PATH ] { set DEST_PATH [file join $DEST_PATH $TAIL] } } set MESSAGE "Copy file $TAIL to $DEST_PATH ? " set CHOICE [tku_popup_message question okcancel $MESSAGE] if { $CHOICE == "ok" } { tku_message "Copying file ; Please wait ..." tclu_log_message "copy $FPATH to $DEST_PATH" puts "copy $FPATH to $DEST_PATH" tku_cursor_watch set EXTENSION [file extension $FPATH] switch -- $EXTENSION { ".txt" { copy_file_with_tags $FPATH $DEST_PATH } default { if { [catch { file copy -force $FPATH $DEST_PATH } RESPONSE ] } { tku_popup_message error ok $RESPONSE } } } tku_cursor_normal tku_message " " } }}#................................................................#proc copy_file_with_tags { IPATH OPATH } { global READG set HOSTID [tclu_get_hostid $READG(OS)] set DATE [clock format [clock seconds] -format "%d %b %Y"] if {[catch {open $IPATH r} IFP]} { tku_popup_message error ok $IFP return 1 } if {[catch {open $OPATH w} OFP]} { close $IFP tku_popup_message error ok $OFP return 1 } while {! [eof $IFP]} { gets $IFP LINE regsub -all "@N@" $LINE $HOSTID LINE1 regsub -all "@D@" $LINE1 $DATE NEWLINE puts $OFP $NEWLINE } close $IFP close $OFP return 0}#................................................................#proc check_if_selected {} { global READG if { $READG(CUR_INDEX) < 0 || $READG(CUR_INDEX) >= $READG(NUM_TITLES) } { tku_popup_message error ok "No entry is selected" return 1 } return 0}#................................................................#proc reader.cb_b_help {} { global READG set PATH [file join $READG(INSTALL_PATH) reader.hlp] tku_popup_file $PATH start "-height 25"}#................................................................#proc reader.cb_b_showlog {} { global READG tku_popup_file $READG(LOG_PATH) end}#................................................................#proc reader.cb_b_quit {} { global READG set CHOICE yes set CHOICE [tku_popup_message warning yesno "Really Quit ?"] if { $CHOICE == "yes" } { tclu_log_message "End Session." "underline" reader.save_user_defaults $READG(DEFAULTS_PATH) destroy . exit }}##################################################################proc reader.update_display {} { global READG global LI_NAME LI_TYPE LI_FILE LI_PRODUCTS LI_ABSTRACT $READG(W_TITLES) delete 0 end set CUR_TYPE [string tolower $READG(TYPE)] set READG(TITLES_LIST) [list] for {set INDEX 0} { $INDEX < $READG(NUM_TITLES) } { incr INDEX } { set TYPE $LI_TYPE($INDEX) set PRODUCTS $LI_PRODUCTS($INDEX) if { $TYPE != $CUR_TYPE } { continue } set ADD_IT 0 foreach PRODUCT $PRODUCTS { set UC_PRODUCT [string toupper $PRODUCT] if { ! [info exists READG($UC_PRODUCT)] } { continue } if { $READG($UC_PRODUCT) != 0 } { set ADD_IT 1 break } } if { $ADD_IT } { lappend READG(TITLES_LIST) "$LI_NAME($INDEX) ##$INDEX" } } set READG(TITLES_LIST) [lsort $READG(TITLES_LIST)] set COUNT 0 foreach NAME $READG(TITLES_LIST) { set TAIL_INDEX [string last "##" $NAME] $READG(W_TITLES) insert end \ [string range $NAME 0 [expr $TAIL_INDEX-1]] incr COUNT } switch -- $COUNT { 0 { set MESSAGE "No titles available" } 1 { set MESSAGE "one title is available" } default { set MESSAGE "$COUNT titles are available" } } $READG(W_LCOUNT) configure -text $MESSAGE}##################################################################proc reader.update_abstract {} { global READG global LI_NAME LI_TYPE LI_FILE LI_PRODUCTS LI_ABSTRACT if { [string length $READG(W_ABSTRACT)] == 0 } { return } $READG(W_ABSTRACT) delete 1.0 end $READG(W_ABSTRACT) insert 1.0 "\n" set SEL_LIST [$READG(W_TITLES) curselection] if { [llength $SEL_LIST] != 1 } { return } set SEL_ITEM [lindex $SEL_LIST 0] set NAME [lindex $READG(TITLES_LIST) $SEL_ITEM] set TAIL_INDEX [string last "##" $NAME ] set INDEX [string range $NAME [expr $TAIL_INDEX+2] end] set READG(CUR_INDEX) $INDEX set ABSTRACT $LI_ABSTRACT($INDEX) set FIRST_NL [string first "\n" $ABSTRACT] $READG(W_ABSTRACT) insert 1.0 \ "[string range $ABSTRACT 0 [expr $FIRST_NL-1] ]\n" title $READG(W_ABSTRACT) insert end \ [string range $ABSTRACT [expr $FIRST_NL+1] end]} ##################################################################proc get_li_file_path { INDEX } { global READG global LI_NAME LI_TYPE LI_FILE LI_PRODUCTS LI_ABSTRACT set TYPE [string tolower $LI_TYPE($INDEX)] regsub -all { } $TYPE {_} DIR set FILE $LI_FILE($INDEX) set PATH [file join $READG(LIT_PATH) $DIR $FILE] return $PATH}#################################################################### This procedure fills the paths to useful UNIX commands in the# global variable READG according to the operating system on which# the script is running on.## The commands are:# cat# chmod# cp# dd# tar#proc reader.set_unix_commands {} {global READG set COMMANDS [list CAT CHMOD CP DD TAR WHOAMI] set XTERM_OPTIONS "-sb -sl 400 -e /bin/sh" switch -- $READG(OS) { aix { set READG(CAT) "/bin/cat" set READG(CHMOD) "/bin/chmod" set READG(CP) "/bin/cp" set READG(DD) "/bin/dd" set READG(TAR) "/bin/tar" set READG(WHOAMI) "/bin/whoami" set READG(XTERM) "/usr/bin/X11/xterm $XTERM_OPTIONS" } hp10 { set READG(CAT) "/bin/cat" set READG(CHMOD) "/bin/chmod" set READG(CP) "/bin/cp" set READG(DD) "/bin/dd" set READG(TAR) "/bin/tar" set READG(WHOAMI) "/bin/whoami" set READG(XTERM) "/usr/bin/X11/xterm $XTERM_OPTIONS" } nt { set READG(CAT) [file join $READG(TOOLS_PATH) cat.exe] set READG(CHMOD) [file join $READG(TOOLS_PATH) chmod.exe] set READG(CP) [file join $READG(TOOLS_PATH) cp.exe] set READG(DD) [file join $READG(TOOLS_PATH) dd.exe] set READG(TAR) [file join $READG(TOOLS_PATH) tar.exe] # No need on NT set READG(WHOAMI) "" set READG(XTERM) "" } solaris { set READG(CAT) "/bin/cat" set READG(CHMOD) "/bin/chmod" set READG(CP) "/bin/cp" set READG(DD) "/bin/dd" set READG(TAR) "/bin/tar" set READG(WHOAMI) "/usr/ucb/whoami" set READG(XTERM) "/usr/openwin/bin/xterm $XTERM_OPTIONS" } linux { set READG(CAT) "/bin/cat" set READG(CHMOD) "/bin/chmod" set READG(CP) "/bin/cp" set READG(DD) "/bin/dd" set READG(TAR) "/bin/tar" set READG(WHOAMI) "/usr/bin/whoami" set READG(XTERM) "/usr/bin/X11/xterm $XTERM_OPTIONS" } default { puts "Illegal operating system: $READG(OS)" exit 1 } } foreach COMMAND $COMMANDS { if { $READG($COMMAND) == "" } { continue } if { ! [file exists $READG($COMMAND)] } { puts "The command $READG($COMMAND) does not exist." puts "Please remedy and rerun." exit 1 } if { ! [file executable $READG($COMMAND)] } { puts "The command $READG($COMMAND) is not an executable file." puts "Please remedy and rerun." exit 1 } } tclu_set_commands \ $READG(CAT) $READG(CHMOD) $READG(CP) $READG(DD) $READG(TAR) $READG(WHOAMI) }################ PATH CREATION ROUTINES #######################set READG(TOOLS_PATH) [lindex $argv 0]set READG(INSTALL_PATH) [file join [pwd] install]set READG(OS) [file tail $READG(TOOLS_PATH)] if { $READG(OS) == "nt" } { set READG(ACROBAT_COMMAND) "c:/Progra~1/Adobe/Acroba~1.0/Reader/acrord32.exe" console show}puts " Literature Reader Version $READG(VERSION)"source [file join $READG(INSTALL_PATH) tclu.tcl]source [file join $READG(INSTALL_PATH) tku.tcl]reader.main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -