Next: X11YesNoBoxPane, Previous: X11ScrollBarPane, Up: Classes [Index]
X11TextEntryPane ClassA X11TextEntryPane object displays a basic, single line text
entry box. Users can enter text when the pointer is over the entry
box, and the application can retrieve the text that the user enters as
the contents of the X11TextEntryPane : entryText method.
Editing is performed using the pointer’s left button or cursor motion keys to position the cursor. Users may insert text at that point, or delete characters using the Backspace and Delete keys. The class also supports cursor motion using Emacs-compatible editing keys.
Action Keys ------ ---- Character Left Left Arrow, Ctrl-B Character Right Right Arrow, Ctrl-F Start of Text Home, Ctrl-A End of Text End, Ctrl-E Delete Right Del, Ctrl-D Delete Left Backspace Delete Selection Backspace (If Selecting Text)
In addition, X11TextEntryPane objects support cutting
and pasting of entry text using the X primary selection. The
class uses the standard pointer buttons to select text and
to paste text selected by other X client programs.
Action Pointer Buttons
------ ---------------
Set Insertion Point Button 1 (Left Button) Press and
Release
Paste Selected Text At Cursor Button 2 (Center Button, or Both
Left and Right Buttons) Press and
Release
Select Text to Place on the Button 1 (Left Button) Press + Drag
X selection Pointer Across Text
Here is an example of an X11TextEntryPane object’s use.
/* entrypane.ca, a X11TextEntryPane demonstration. -*-c-*- */
/* Uncomment if you want the entry box to echo dots. */
/* #define DOTS */
#include <ctalk/ctalkdefs.h>
int main (int argv, char **argc) {
X11Pane new xPane;
X11PaneDispatcher new dispatcher;
X11TextEntryPane new entry;
X11LabelPane new label;
X11ButtonPane new button;
InputEvent new e;
Integer new nEvents;
Integer new verbose;
X11Cursor new cursor;
xPane ftFontVar initFontLib;
xPane resources atPut "backgroundColor", "blue";
label resources replaceAt "backgroundColor", "blue";
label resources replaceAt "foregroundColor", "blue";
label resources replaceAt "highlightForegroundColor", "blue";
label resources replaceAt "textColor", "white";
label resources replaceAt "highlightTextColor", "white";
label border = false;
#ifdef DOTS
entry dots = true;
#endif
xPane inputStream eventMask = EXPOSE|ENTERWINDOWNOTIFY|LEAVEWINDOWNOTIFY| \
KEYPRESS|KEYRELEASE|WINDELETE|BUTTONPRESS|BUTTONRELEASE|MOTIONNOTIFY| \
SELECTIONCLEAR|SELECTIONREQUEST;
xPane initialize 300, 185;
dispatcher attachTo xPane;
label attachTo dispatcher, "100x80+10+10";
button attachTo dispatcher, "70x55+c+100";
entry attachTo dispatcher, "140x32+120+32";
xPane map;
xPane raiseWindow;
xPane openEventStream;
xPane setWMTitle "X11TextEntryPane Demo";
label multiLine "Enter your\ntext:";
button label text "Done";
while (TRUE) {
xPane inputStream queueInput;
if (xPane inputStream eventPending) {
e become xPane inputStream inputQueue unshift;
xPane subPaneNotify e;
switch (e eventClass value)
{
case EXPOSE:
entry refresh;
break;
case WINDELETE:
xPane deleteAndClose;
exit (0);
break;
default:
if (button haveClick) {
button clearClick;
xPane deleteAndClose;
printf ("You entered: %s\n", entry entryText);
exit (0);
}
break;
}
}
}
}
Normally a X11TextEntryPane object displays characters
as you type them. However, you can set the dots instance
variable to ‘true’ to cause the pane to display dots instead,
like this.
entry dots = true;
For information about how to set and retrieve resources, refer
to the X11Pane section See PaneResources.
backgroundColorThe background color of the entry pane’s window. The default is ‘white’.
borderColorThe color of the entry pane’s border. The default is ‘gray’.
borderWidthThe width in pixels of the pane’s border when the pointer is not above it. The default is 1 pixels.
cursorAdvanceHintThe distance in pixels between the last character and the cursor when the point is positioned at the end of the buffer for appending text. The default is 2 pixels when built and run with MacOS, 4 pixels for Linux and other systems.
fontA String that contains the display font’s descriptor. In
order to maintain alignment between the character display and
insertion point, the display font be monospaced.
The default font for MacOS is ‘Bitstream Vera Sans Mono-14:weight=medium;slant=roman’. The default font for Linux and other systems is ‘DejaVu Sans Mono-12:weight=medium;slant=roman’.
hoverBorderWidthThe width in pixels of the pane’s border when the pointer is over it and the pane’s window has the input focus. The default is 4 pixels.
hPadvPadThe distance in pixels between the edges of the text and the edge to the window, including the width of the border. The default is 4 pixels.
spacingHintThe distance in pixels that the pane adjusts the displayed text’s horizontal spacing. The default is -1 for MacOs and 0 for Linux and other systems.
selectionColorA String that contains the background color of selected text.
The default is ‘orange’.
textColorThe color that the pane uses to display text. The default is ‘black’.
baselineYAn Integer that contains the vertical location of the text’s
baseline in the entry window, in pixels.
buttonAn Integer that records the state of the pointer buttons
when the program receives a BUTTONPRESS or BUTTONRELEASE event.
centerA Boolean that helps determine how a part of the text is
displayed if the text is too large to fit within the pane.
clipXAn Integer that contains the leftmost character that is
displayed when the text is scrolled leftward.
charsA List that contains the entry pane’s text. Each member of the
list is a CharCell, a class used exclusively by
X11TextEntryPane objects, which contains both the character and
information about its dimensions and placement within the window.
cursorA X11Cursor object that contains a text editing cursor which is
displayed when the pointer is over the pane and it has the keyboard
input focus.
cursorXAn Integer that contains the character index of the cursor
and insertion point within the text.
dotsA Boolean, which, if set by a program, causes the entry pane
to echo dots instead of the typed characters. In order to display
dots, the calling program should contain a statement like this.
entry dots = true;
hoverA Boolean object that is true when the pointer is over the
pane and the pane has the keyboard input focus.
paneWidthCharsThe width of the pane as measured in the number of characters that can
be displayed at one time using the current font. The pane uses the
paneWidth variable’s value to help determine which section of
the text to display when the entire text is too wide to fit within
the pane’s window.
pointAn Integer that determines where each character that the user
types is inserted into the buffer’s text. If point is equal
to the size of the chars list, then the pane appends the
characters to the end of the text.
selectingA Boolean that is true if the user is in the process of selecting
text; that is, when the pointer’s left button is depressed and the
pointer is dragged across the text.
sEndsStartThese are Integer, which, if non-zero contain the start and
end indexes of selected text within the entry pane’s buffer.
shiftStateAn Integer that records whether a Shift, Control,
or Caps Lock key is being pressed while typing.
spacingHintAn Integer that contains the value of the ‘spacingHint’
resource.
attachTo (X11Pane parentPane, String geometry)Attaches the entry pane to parentPane using the dimensions and
placement given by geometry. For information about how to
specify a pane’s geometry, refer to the X11PaneDispatcher class
See X11PaneDispatcher.
calclulateSpaceAppend (void)This method defers calculating the width of a space that the user appends to the text until a following character is added.
charCellAt (Integer charIndex)Returns the CharCell object for the charIndex position
in the text. (I.e., the nth element of the chars
instance variable’s list).
charIndex (Integer clickX, Integer clickY)Returns an Integer with the index of the character displayed at
clickX,clickY.
clearSelection (void)Clears the selection in response to events from the user or from another X client application requesting the selection ownership.
deleteAt (Integer charIndex)Deletes the character at charIndex and returns the element,
which is a CharCell object. CharCell objects are a
class that X11TextEntryPane class uses to store each character,
as well as its dimensions and placement within the window.
deleteForward (Integer charIndex)This deletes the character at the insertion point and is called when the user presses the Delete or Ctrl-D key.
draw (void)Draws the pane’s border, its text contents after determining how far
left to scroll the text, and calls drawCursor to draw the
insertion cursor. The drawing occurs on the pane’s paneBuffer
instance variable, which is a X11Bitmap object. To make
the the pane’s contents visible in the application’s window, use the
refresh method.
drawCursor (void)Draws the pane’s editing cursor at the text insertion point.
drawSelection (void)If any text is selected, highlight the text using the color defined by
the selectionColor resource.
entryText (void)Returns the text contents of the entry pane as a String object.
inputWidth (Integer startIdx)Returns an Integer that contains the width in pixels of the
input text starting at character startIdx. This method
determines how far leftward text should be scrolled to keep the
insertion point and its surrounding text visible in the pane’s window.
insertAt (Integer charIndex)Inserts a CharCell object at charIndex in the
entry object’s chars list.
new (String paneName)The X11TextEntryPane constructor. Initializes resources to
their default values and the event handler instance variables to the
classes’ event handlers. These instance variables are declared in
X11PaneDispatcher class See X11PaneDispatcher.
reflow (void)Recalculates the character placement in the entry object’s chars
list. This method should be used after any operation that inserts
or deletes text in the middle of the chars list.
refresh (void)Displays the contents of the pane’s drawing surfaces on the program’s visible window.
selectionToText (String textOut)Sets its argument, a String object, to the currently selected text
as a string.
subPaneButtonPress (Object subPaneObject, InputEvent event)subPaneEnter (Object subPaneObject, InputEvent event)subPaneExpose (Object subPaneObject, InputEvent event)subPaneLeave (Object subPaneObject, InputEvent event)subPaneKbd (Object subPaneObject, InputEvent event)subPanePointerMotion (Object subPaneObject, InputEvent event)subPaneSelectionClear (Object subPaneObject, InputEvent event)Handler methods for different types of X InputEvent objects. For more information about the handlers and event types, refer to the X11PaneDispatcher class. See X11PaneDispatcher.
Next: X11YesNoBoxPane, Previous: X11ScrollBarPane, Up: Classes [Index]