OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [start/] [insight/] [tk/] [generic/] [tkSelect.h] - Blame information for rev 578

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
/*
2
 * tkSelect.h --
3
 *
4
 *      Declarations of types shared among the files that implement
5
 *      selection support.
6
 *
7
 * Copyright (c) 1995 Sun Microsystems, Inc.
8
 *
9
 * See the file "license.terms" for information on usage and redistribution
10
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
11
 *
12
 * RCS: @(#) $Id: tkSelect.h,v 1.1.1.1 2002-01-16 10:25:52 markom Exp $
13
 */
14
 
15
#ifndef _TKSELECT
16
#define _TKSELECT
17
 
18
/*
19
 * When a selection is owned by a window on a given display, one of the
20
 * following structures is present on a list of current selections in the
21
 * display structure.  The structure is used to record the current owner of
22
 * a selection for use in later retrieval requests.  There is a list of
23
 * such structures because a display can have multiple different selections
24
 * active at the same time.
25
 */
26
 
27
typedef struct TkSelectionInfo {
28
    Atom selection;             /* Selection name, e.g. XA_PRIMARY. */
29
    Tk_Window owner;            /* Current owner of this selection. */
30
    int serial;                 /* Serial number of last XSelectionSetOwner
31
                                 * request made to server for this
32
                                 * selection (used to filter out redundant
33
                                 * SelectionClear events). */
34
    Time time;                  /* Timestamp used to acquire selection. */
35
    Tk_LostSelProc *clearProc;  /* Procedure to call when owner loses
36
                                 * selection. */
37
    ClientData clearData;       /* Info to pass to clearProc. */
38
    struct TkSelectionInfo *nextPtr;
39
                                /* Next in list of current selections on
40
                                 * this display.  NULL means end of list */
41
} TkSelectionInfo;
42
 
43
/*
44
 * One of the following structures exists for each selection handler
45
 * created for a window by calling Tk_CreateSelHandler.  The handlers
46
 * are linked in a list rooted in the TkWindow structure.
47
 */
48
 
49
typedef struct TkSelHandler {
50
    Atom selection;             /* Selection name, e.g. XA_PRIMARY */
51
    Atom target;                /* Target type for selection
52
                                 * conversion, such as TARGETS or
53
                                 * STRING. */
54
    Atom format;                /* Format in which selection
55
                                 * info will be returned, such
56
                                 * as STRING or ATOM. */
57
    Tk_SelectionProc *proc;     /* Procedure to generate selection
58
                                 * in this format. */
59
    ClientData clientData;      /* Argument to pass to proc. */
60
    int size;                   /* Size of units returned by proc
61
                                 * (8 for STRING, 32 for almost
62
                                 * anything else). */
63
    struct TkSelHandler *nextPtr;
64
                                /* Next selection handler associated
65
                                 * with same window (NULL for end of
66
                                 * list). */
67
} TkSelHandler;
68
 
69
/*
70
 * When the selection is being retrieved, one of the following
71
 * structures is present on a list of pending selection retrievals.
72
 * The structure is used to communicate between the background
73
 * procedure that requests the selection and the foreground
74
 * event handler that processes the events in which the selection
75
 * is returned.  There is a list of such structures so that there
76
 * can be multiple simultaneous selection retrievals (e.g. on
77
 * different displays).
78
 */
79
 
80
typedef struct TkSelRetrievalInfo {
81
    Tcl_Interp *interp;         /* Interpreter for error reporting. */
82
    TkWindow *winPtr;           /* Window used as requestor for
83
                                 * selection. */
84
    Atom selection;             /* Selection being requested. */
85
    Atom property;              /* Property where selection will appear. */
86
    Atom target;                /* Desired form for selection. */
87
    int (*proc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp *interp,
88
        char *portion));        /* Procedure to call to handle pieces
89
                                 * of selection. */
90
    ClientData clientData;      /* Argument for proc. */
91
    int result;                 /* Initially -1.  Set to a Tcl
92
                                 * return value once the selection
93
                                 * has been retrieved. */
94
    Tcl_TimerToken timeout;     /* Token for current timeout procedure. */
95
    int idleTime;               /* Number of seconds that have gone by
96
                                 * without hearing anything from the
97
                                 * selection owner. */
98
    struct TkSelRetrievalInfo *nextPtr;
99
                                /* Next in list of all pending
100
                                 * selection retrievals.  NULL means
101
                                 * end of list. */
102
} TkSelRetrievalInfo;
103
 
104
/*
105
 * The clipboard contains a list of buffers of various types and formats.
106
 * All of the buffers of a given type will be returned in sequence when the
107
 * CLIPBOARD selection is retrieved.  All buffers of a given type on the
108
 * same clipboard must have the same format.  The TkClipboardTarget structure
109
 * is used to record the information about a chain of buffers of the same
110
 * type.
111
 */
112
 
113
typedef struct TkClipboardBuffer {
114
    char *buffer;                       /* Null terminated data buffer. */
115
    long length;                        /* Length of string in buffer. */
116
    struct TkClipboardBuffer *nextPtr;  /* Next in list of buffers.  NULL
117
                                         * means end of list . */
118
} TkClipboardBuffer;
119
 
120
typedef struct TkClipboardTarget {
121
    Atom type;                          /* Type conversion supported. */
122
    Atom format;                        /* Representation used for data. */
123
    TkClipboardBuffer *firstBufferPtr;  /* First in list of data buffers. */
124
    TkClipboardBuffer *lastBufferPtr;   /* Last in list of clipboard buffers.
125
                                         * Used to speed up appends. */
126
    struct TkClipboardTarget *nextPtr;  /* Next in list of targets on
127
                                         * clipboard.  NULL means end of
128
                                         * list. */
129
} TkClipboardTarget;
130
 
131
/*
132
 * It is possible for a Tk_SelectionProc to delete the handler that it
133
 * represents.  If this happens, the code that is retrieving the selection
134
 * needs to know about it so it doesn't use the now-defunct handler
135
 * structure.  One structure of the following form is created for each
136
 * retrieval in progress, so that the retriever can find out if its
137
 * handler is deleted.  All of the pending retrievals (if there are more
138
 * than one) are linked into a list.
139
 */
140
 
141
typedef struct TkSelInProgress {
142
    TkSelHandler *selPtr;       /* Handler being executed.  If this handler
143
                                 * is deleted, the field is set to NULL. */
144
    struct TkSelInProgress *nextPtr;
145
                                /* Next higher nested search. */
146
} TkSelInProgress;
147
 
148
/*
149
 * Declarations for variables shared among the selection-related files:
150
 */
151
 
152
extern TkSelInProgress *pendingPtr;
153
                                /* Topmost search in progress, or
154
                                 * NULL if none. */
155
 
156
/*
157
 * Chunk size for retrieving selection.  It's defined both in
158
 * words and in bytes;  the word size is used to allocate
159
 * buffer space that's guaranteed to be word-aligned and that
160
 * has an extra character for the terminating NULL.
161
 */
162
 
163
#define TK_SEL_BYTES_AT_ONCE 4000
164
#define TK_SEL_WORDS_AT_ONCE 1001
165
 
166
/*
167
 * Declarations for procedures that are used by the selection-related files
168
 * but shouldn't be used anywhere else in Tk (or by Tk clients):
169
 */
170
 
171
extern void             TkSelClearSelection _ANSI_ARGS_((Tk_Window tkwin,
172
                            XEvent *eventPtr));
173
extern int              TkSelDefaultSelection _ANSI_ARGS_((
174
                            TkSelectionInfo *infoPtr, Atom target,
175
                            char *buffer, int maxBytes, Atom *typePtr));
176
extern int              TkSelGetSelection _ANSI_ARGS_((Tcl_Interp *interp,
177
                            Tk_Window tkwin, Atom selection, Atom target,
178
                            Tk_GetSelProc *proc, ClientData clientData));
179
#ifndef TkSelUpdateClipboard
180
extern void             TkSelUpdateClipboard _ANSI_ARGS_((TkWindow *winPtr,
181
                            TkClipboardTarget *targetPtr));
182
#endif
183
 
184
#endif /* _TKSELECT */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.