f8c1ec663e
da xi_set_text(XI_OBJ* obj, char* text) a xi_set_text(XI_OBJ* obj, const char* text) git-svn-id: svn://10.65.10.50/branches/R_10_00@23125 c028cbd2-c16b-5b4b-a496-9718f37d4682
133 lines
6.1 KiB
C
Executable File
133 lines
6.1 KiB
C
Executable File
/*******************************************************************************
|
|
* Copyright 1991-1996 by ORCA Software, Inc. *
|
|
* *
|
|
* All rights reserved. May not be reproduced or distributed, in printed or *
|
|
* electronic form, without permission of ORCA Software, Inc. May not be *
|
|
* distributed as object code, separately or linked with other object modules, *
|
|
* without permission. *
|
|
*******************************************************************************/
|
|
|
|
/*
|
|
The font in the text may be just a copy of a font pointer that
|
|
is elsewhere, in which case, it will be freed when the interface
|
|
goes away. It also could be an instantiated copy of a font, in
|
|
which case, the font will have been put into the interface font list,
|
|
so that it will be freed when the interface goes away.
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
int line_break;
|
|
int ip1; /* -1 is null value */
|
|
int ip2; /* -1 is null value */
|
|
int active_ip;
|
|
} XI_TEXT_LINE_BREAK;
|
|
|
|
typedef struct
|
|
{
|
|
/* edit control info */
|
|
char *string; /* current text of edit control */
|
|
int pix_width; /* pix width as specified by user of text */
|
|
int internal_pix_width; /* pix_width - scroll bar width - sb delta */
|
|
int min_buffer_size;
|
|
int buffer_size;
|
|
int allocated_length;
|
|
BOOLEAN var_len_text;
|
|
int font_height;
|
|
int leading;
|
|
int ascent;
|
|
int descent;
|
|
XinFont *font;
|
|
XinWindow win;
|
|
XI_OBJ *parent_obj;
|
|
XinRect prect; /* physical rectangle of edit control */
|
|
XinRect clip_rect; /* clipping is intersected with this rect */
|
|
XinColor fore_color;
|
|
XinColor back_color;
|
|
XinColor fore_color_in_use;
|
|
XinColor back_color_in_use;
|
|
BOOLEAN multi_line; /* selection of multi or single line editing */
|
|
BOOLEAN right_justify; /* selection of right or left justified text */
|
|
BOOLEAN password;
|
|
BOOLEAN read_only;
|
|
BOOLEAN cr_ok;
|
|
|
|
/* multiline edit control info */
|
|
int nbr_lines;
|
|
XI_TEXT_LINE_BREAK *line_breaks;
|
|
int max_lines_to_draw;
|
|
BOOLEAN scrollbar;
|
|
XinWindow sb_win;
|
|
int sb_width;
|
|
int cid; /* used for scrollbar, same as parent's. */
|
|
BOOLEAN scrollbar_always_visible; /* true for fields, false for cells. */
|
|
XI_OBJ* itf;
|
|
BOOLEAN visible;
|
|
|
|
/* editing state */
|
|
BOOLEAN editing;
|
|
int selection_start_ip;
|
|
int ip1;
|
|
int ip2;
|
|
BOOLEAN selecting;
|
|
BOOLEAN double_selecting;
|
|
int double_selecting_start_ip;
|
|
BOOLEAN timer_set;
|
|
long timer_id;
|
|
BOOLEAN initialized;
|
|
|
|
/* multiline editing state */
|
|
int delta_y; /* number of lines scrolled vertically */
|
|
|
|
/* singleline editing state */
|
|
int delta_x; /* number of characters scrolled horizontally */
|
|
} XI_TEXT;
|
|
|
|
#define xi_text_nbr_lines_get( text ) text->nbr_lines
|
|
#define xi_text_line_break_get( text, cnt ) ( text->line_breaks[ cnt ].line_break )
|
|
#define xi_text_font_height_get( text ) text->font_height
|
|
#define xi_text_clip_set( text, rctp ) ( text->clip_rect = *(rctp))
|
|
#define xi_text_max_lines_to_draw_set( text, max_lines_to_draw_arg ) ( text->max_lines_to_draw = max_lines_to_draw_arg )
|
|
#define xi_text_color_fore_set( text, color ) ( text->fore_color = color )
|
|
#define xi_text_color_back_set( text, color ) ( text->back_color = color )
|
|
#define xi_text_get( text ) text->string
|
|
#define xi_text_parent_obj_set( text, obj ) ( text->parent_obj = obj )
|
|
#define xi_text_scrollbar_set( text, has_scroll_bar ) ( text->scrollbar = has_scroll_bar )
|
|
#define xi_text_password_set( text, is_pw ) ( text->password = is_pw )
|
|
#define xi_text_read_only_set( text, flag ) ( text->read_only = flag )
|
|
#define xi_text_editing_is( text ) text->editing
|
|
#define xi_text_buffer_set( text, buffer ) ( text->string = buffer )
|
|
#define xi_text_cr_ok_set( text, is_ok ) ( text->cr_ok = is_ok )
|
|
#define xi_text_initialized_set( text, set ) ( text->initialized = set )
|
|
#define xi_text_buffer_size_get( text ) ( text->buffer_size )
|
|
#define xi_text_min_buffer_size_set( text, set ) ( text->min_buffer_size = set )
|
|
#define xi_text_var_len_text_set( text, set ) ( text->var_len_text = set )
|
|
#define xi_text_font_get( text ) text->font
|
|
|
|
void xi_text_set( XI_TEXT * text, const char *string );
|
|
void xi_text_wrap( XI_TEXT * text );
|
|
void xi_text_pix_width_set( XI_TEXT * text, int pix_width );
|
|
void xi_text_pix_width_and_text_set( XI_TEXT * text, char *string, int pix_width, BOOLEAN set_font );
|
|
|
|
void xi_text_destruct( XI_TEXT * text );
|
|
XI_TEXT *xi_text_construct( XinWindow win, int pix_width, XinFont * font, void *parent,
|
|
BOOLEAN multi_line, int cid, BOOLEAN scrollbar_always_visible );
|
|
void xi_text_draw( XI_TEXT * text, XinColor color, XinColor back_color, BOOLEAN update );
|
|
void xi_text_selection_set( XI_TEXT * text, int ip1, int ip2 );
|
|
void xi_text_selection_get( XI_TEXT * text, int *ip1, int *ip2 );
|
|
void xi_text_selection_get_internal( XI_TEXT * text, int *ip1, int *ip2, int *start_ip );
|
|
void xi_text_selection_set_internal( XI_TEXT * text, int ip1, int ip2,
|
|
int selection_start_ip, BOOLEAN do_carets, BOOLEAN map_font );
|
|
void xi_text_editing_start( XI_TEXT * text );
|
|
void xi_text_editing_stop( XI_TEXT * text );
|
|
BOOLEAN xi_text_event( XI_TEXT * text, XinEvent * ep, BOOLEAN gaining_focus, BOOLEAN *changed );
|
|
void xi_text_prect_set( XI_TEXT * text, XinRect * rectp );
|
|
XI_TEXT *xi_text_focus_get( XinWindow win );
|
|
void xi_text_buffer_size_set( XI_TEXT* text, int size );
|
|
void xi_text_font_set( XI_TEXT* text, XinFont* font );
|
|
void xi_text_visible_set( XI_TEXT* text, BOOLEAN visible );
|
|
XinRect* xi_text_rect_get_adjusted( XI_TEXT * text, XinRect * rcta );
|
|
void xi_text_paste_internal( XI_TEXT * text, char *string );
|
|
void xi_text_right_justify_set( XI_TEXT* text, BOOLEAN flag );
|
|
void xi_text_reinitialize( XI_TEXT* text );
|