⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winprint.tcl

📁 This Source-Navigator, an IDE for C/C++/Fortran/Java/Tcl/PHP/Python and a host of other languages.
💻 TCL
字号:
# Copyright (c) 2000, Red Hat, Inc.# # This file is part of Source-Navigator.# # Source-Navigator is free software; you can redistribute it and/or# modify it under the terms of the GNU General Public License as published# by the Free Software Foundation; either version 2, or (at your option)# any later version.# # Source-Navigator is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU# General Public License for more details.# # You should have received a copy of the GNU General Public License along# with Source-Navigator; see the file COPYING.  If not, write to# the Free Software Foundation, 59 Temple Place - Suite 330, Boston,# MA 02111-1307, USA.# #cancel print processproc PRINT_cancel {} {	sn_log "Cancel print process..."	ide_winprint abort}#print-dialogproc PRINT_pagecounter_dialog {pageno} {	sn_log "PRINT_pagecounter_dialog: <$pageno>"	#No page numbers by printing PostScript!!	if {$pageno >= 0} {		set msg [format [get_indep String NowPrintingPage] $pageno]	} else  {		set msg [get_indep String NowPrinting]	}	#Display the page number	if {![winfo exists .error]} {		#create the dialog box so that it doesn't wait for closing		sn_error_dialog \			$msg \			[get_indep String Print] \			"" \			"PRINT_cancel"	} else {		.error.msg_bitmap.msg config -text [format [get_indep String NowPrintingPage] $pageno]	}}# The query procedure passed to ide_winprint print_text.  This should# return one of "continue", "done", or "newpage".proc PRINT_query { } {    global PRINT_state	# Fetch the next line into PRINT_state(str).	if {$PRINT_state(file) == 1} then {		set strlen [gets $PRINT_state(fp) PRINT_state(str)]	} else {		set strlen [string first "\n" $PRINT_state(text)]		if {$strlen != -1} then {			set PRINT_state(str) \			    [string range $PRINT_state(text) 0 [expr $strlen-1]]			set PRINT_state(text) \			    [string range $PRINT_state(text) [expr $strlen+1] end]		} else {			if {$PRINT_state(text) != ""} then {				set strlen 0				set PRINT_state(str) $PRINT_state(text)				set PRINT_state(text) ""			}		}	}	if {$strlen != -1} then {		# Expand tabs assuming tabstops every 8 spaces and a fixed		# pitch font.  Text written to other assumptions will have to		# be handled by the caller.		set str $PRINT_state(str)		while {[set i [string first "\t" $str]] >= 0} {			set c [expr 8 - ($i % 8)]			set spaces ""			while {$c > 0} {				append spaces " "				incr c -1			}			set str "[string range $str 0 [expr $i - 1]]$spaces[string range $str [expr $i + 1] end]"		}		set PRINT_state(str) $str		return "continue"	} else {		return "done"	}}# The text procedure passed to ide_winprint print_text.  This should# return the next line to print.proc PRINT_text {} {	global PRINT_state	#sn_log "PRINT_text <$PRINT_state(str)>"	return $PRINT_state(str)}#this procedure is invoked as first to verify what the user#has selected in the PrintDialogproc PRINT_init {cmd args} {	global PRINT_state		sn_log "Print Dialog Selection: $args"		set len [llength $args]	for {set i 0} {$i < $len} {incr i} {		set op [lindex $args $i]		if {$op == ""} {			break		}		incr i		set val [lindex $args $i]		switch -- $op {			"-pagefrom" {				set PRINT_state(frompage) $val			}			"-pageto" {				set PRINT_state(topage) $val			}			"-selection" {				set PRINT_state(selection) $val			}			"-copies" {				set PRINT_state(copies) $val			}			default {				#unknown option				return -1			}		}	}		#no init command is specified, 	if {$cmd == ""} {		return 0	}		return [eval $cmd]}# This page procedure passed to ide_winprint print_text.  This is# called at the start of each page.proc PRINT_page { pageno } {	global PRINT_state	sn_log "PRINT_page: <$pageno>"	set PRINT_state(pageno) [format [get_indep String "NowPrintingPage"] $pageno]	PRINT_pagecounter_dialog $pageno	update	return "continue"}################################### commands for PostScript printing################################### The query procedure passed to ide_winprint print_text.  This should# return one of "continue", "done", or "newpage".proc PRINT_postscript_query { } {	global PRINT_state	# Fetch the next line into PRINT_state(str).	if {$PRINT_state(file) == 1} then {		#don't print the file at once, read blockwise		set PRINT_state(str) [read $PRINT_state(fp) 10240]	} else {		set PRINT_state(str) ""	}	if {$PRINT_state(str) != ""} then {		return "continue"	} else {		return "done"	}}#Windows Printer Dialogproc sn_winprint_dialog {file {text ""} {postscript ""} {cmd ""}} {	global PRINT_state	global sn_options		sn_log "print dialog..."		#init printing options	set PRINT_state(frompage)  0	set PRINT_state(topage)    99999	set PRINT_state(selection) 0	set PRINT_state(copies)    1		if {$postscript == ""} {		set PRINT_state(postscript) 0	} else {		set PRINT_state(postscript) 1		set PRINT_state(done) 0	}	#print file or string	if {$file != ""} {		set PRINT_state(fp) [open $file "r"]		fconfigure $PRINT_state(fp) -encoding $sn_options(def,system-encoding)		set PRINT_state(file) 1		set PRINT_state(text) ""	} else {		set PRINT_state(file) 0		set PRINT_state(text) $text	}		if {$PRINT_state(postscript) == 0} {		ide_winprint \			print_text \			PRINT_query \			PRINT_text \			-pageproc PRINT_page \			-initproc "PRINT_init $cmd"	} else {		ide_winprint \			print \			PRINT_postscript_query \			PRINT_text \			-pageproc PRINT_page \			-postscript yes \			-initproc "PRINT_init $cmd"	}	if {$file != ""} {		catch {close $PRINT_state(fp)}	}	catch { destroy .error }		sn_log "printing process finished"}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -