selection.n
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:8k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1990-1994 The Regents of the University of California.
  3. '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: selection.n,v 1.4.4.1 2004/10/28 12:25:22 dkf Exp $
  9. '" 
  10. .so man.macros
  11. .TH selection n 8.1 Tk "Tk Built-In Commands"
  12. .BS
  13. '" Note:  do not modify the .SH NAME line immediately below!
  14. .SH NAME
  15. selection - Manipulate the X selection
  16. .SH SYNOPSIS
  17. fBselection fIoptionfR ?fIarg arg ...fR?
  18. .BE
  19. .SH DESCRIPTION
  20. .PP
  21. This command provides a Tcl interface to the X selection mechanism and
  22. implements the full selection functionality described in the
  23. X Inter-Client Communication Conventions Manual (ICCCM).
  24. .PP
  25. Note that for management of the CLIPBOARD selection (see below), the
  26. fBclipboardfR command may also be used.
  27. .PP
  28. The first argument to fBselectionfR determines the format of the
  29. rest of the arguments and the behavior of the command.  The following
  30. forms are currently supported:
  31. .PP
  32. .TP
  33. fBselection clearfR ?fB-displayoffR fIwindowfR? ?fB-selectionfR fIselectionfR?
  34. If fIselectionfR exists anywhere on fIwindowfR's display, clear it
  35. so that no window owns the selection anymore.  fISelectionfR
  36. specifies the X selection that should be cleared, and should be an
  37. atom name such as PRIMARY or CLIPBOARD; see the Inter-Client
  38. Communication Conventions Manual for complete details.
  39. fISelectionfR defaults to PRIMARY and fIwindowfR defaults to ``.''.
  40. Returns an empty string. 
  41. .TP
  42. fBselection getfR ?fB-displayoffR fIwindowfR? ?fB-selectionfR fIselectionfR? ?fB-typefR fItypefR?
  43. Retrieves the value of fIselectionfR from fIwindowfR's display and
  44. returns it as a result.  fISelectionfR defaults to PRIMARY and
  45. fIwindowfR defaults to ``.''. 
  46. fITypefR specifies the form in which the selection is to be returned
  47. (the desired ``target'' for conversion, in ICCCM terminology), and
  48. should be an atom name such as STRING or FILE_NAME; see the
  49. Inter-Client Communication Conventions Manual for complete details.
  50. fITypefR defaults to STRING.  The selection owner may choose to
  51. return the selection in any of several different representation
  52. formats, such as STRING, ATOM, INTEGER, etc. (this format is different
  53. than the selection type; see the ICCCM for all the confusing details).
  54. If the selection is returned in a non-string format, such as INTEGER
  55. or ATOM, the fBselectionfR command converts it to string format as a
  56. collection of fields separated by spaces: atoms are converted to their
  57. textual names, and anything else is converted to hexadecimal integers.
  58. .TP
  59. fBselection handlefR ?fB-selectionfR fIselectionfR? ?fB-typefR fItypefR? ?fB-formatfR fIformatfR? fIwindow commandfR
  60. Creates a handler for selection requests, such that fIcommandfR will
  61. be executed whenever fIselectionfR is owned by fIwindowfR and
  62. someone attempts to retrieve it in the form given by fItypefR
  63. (e.g. fItypefR is specified in the fBselection getfR command).
  64. fISelectionfR defaults to PRIMARY, fItypefR defaults to STRING, and
  65. fIformatfR defaults to STRING.  If fIcommandfR is an empty string
  66. then any existing handler for fIwindowfR, fItypefR, and
  67. fIselectionfR is removed.
  68. .RS
  69. .PP
  70. When fIselectionfR is requested, fIwindowfR is the selection owner,
  71. and fItypefR is the requested type, fIcommandfR will be executed
  72. as a Tcl command with two additional numbers appended to it
  73. (with space separators).  
  74. The two additional numbers
  75. .VS
  76. are fIoffsetfR and fImaxCharsfR:  fIoffsetfR specifies a starting
  77. character position in the selection and fImaxCharsfR gives the maximum
  78. number of characters to retrieve.  The command should return a value consisting
  79. of at most fImaxCharsfR of the selection, starting at position
  80. fIoffsetfR.  For very large selections (larger than fImaxCharsfR)
  81. the selection will be retrieved using several invocations of fIcommandfR
  82. with increasing fIoffsetfR values.  If fIcommandfR returns a string
  83. whose length is less than fImaxCharsfR, the return value is assumed to
  84. include all of the remainder of the selection;  if the length of
  85. fIcommandfR's result is equal to fImaxCharsfR then
  86. fIcommandfR will be invoked again, until it eventually
  87. returns a result shorter than fImaxCharsfR.  The value of fImaxCharsfR
  88. will always be relatively large (thousands of characters).
  89. .VE
  90. .PP
  91. If fIcommandfR returns an error then the selection retrieval is rejected
  92. just as if the selection didn't exist at all.
  93. .PP
  94. The fIformatfR argument specifies the representation that should be
  95. used to transmit the selection to the requester (the second column of
  96. Table 2 of the ICCCM), and defaults to STRING.  If fIformatfR is
  97. STRING, the selection is transmitted as 8-bit ASCII characters (i.e.
  98. just in the form returned by fIcommandfR).  If fIformatfR is
  99. ATOM, then the return value from fIcommandfR is divided into fields
  100. separated by white space;  each field is converted to its atom value,
  101. and the 32-bit atom value is transmitted instead of the atom name.
  102. For any other fIformatfR, the return value from fIcommandfR is
  103. divided into fields separated by white space and each field is
  104. converted to a 32-bit integer;  an array of integers is transmitted
  105. to the selection requester.
  106. .PP
  107. The fIformatfR argument is needed only for compatibility with
  108. selection requesters that don't use Tk.  If Tk is being
  109. used to retrieve the selection then the value is converted back to
  110. a string at the requesting end, so fIformatfR is
  111. irrelevant.
  112. .RE
  113. .TP
  114. fBselection ownfR ?fB-displayoffR fIwindowfR? ?fB-selectionfR fIselectionfR?
  115. .TP
  116. fBselection ownfR ?fB-commandfR fIcommandfR? ?fB-selectionfR fIselectionfR? fIwindowfR
  117. The first form of fBselection ownfR returns the path name of the
  118. window in this application that owns fIselectionfR on the display
  119. containing fIwindowfR, or an empty string if no window in this
  120. application owns the selection.  fISelectionfR defaults to PRIMARY and
  121. fIwindowfR defaults to ``.''.
  122. .PP
  123. The second form of fBselection ownfR causes fIwindowfR to become
  124. the new owner of fIselectionfR on fIwindowfR's display, returning
  125. an empty string as result. The existing owner, if any, is notified
  126. that it has lost the selection.
  127. If fIcommandfR is specified, it is a Tcl script to execute when
  128. some other window claims ownership of the selection away from
  129. fIwindowfR.  fISelectionfR defaults to PRIMARY.
  130. .SH EXAMPLES
  131. On X11 platforms, one of the standard selections available is the
  132. SECONDARY selection. Hardly anything uses it, but here is how to read
  133. it using Tk:
  134. .CS
  135. set selContents [fBselection getfR -selection SECONDARY]
  136. .CE
  137. .PP
  138. Many different types of data may be available for a selection; the
  139. special type TARGETS allows you to get a list of available types:
  140. .CS
  141. foreach type [fBselection getfR -type TARGETS] {
  142.    puts "Selection PRIMARY supports type $type"
  143. }
  144. .CE
  145. .PP
  146. To claim the selection, you must first set up a handler to supply the
  147. data for the selection.  Then you have to claim the selection...
  148. .CS
  149. # Set up the data handler ready for incoming requests
  150. set foo "This is a string with some data in it... blah blah"
  151. fBselection handlefR -selection SECONDARY . getData
  152. proc getData {offset maxChars} {
  153.    puts "Retrieving selection starting at $offset"
  154.    return [string range $::foo $offset [expr {$offset+$maxChars}]]
  155. }
  156. # Now we grab the selection itself
  157. puts "Claiming selection"
  158. fBselection ownfR -command lost -selection SECONDARY .
  159. proc lost {} {
  160.    puts "Lost selection"
  161. }
  162. .CE
  163. .SH "SEE ALSO"
  164. clipboard(n)
  165. .SH KEYWORDS
  166. clear, format, handler, ICCCM, own, selection, target, type