189 lines
6.6 KiB
C
189 lines
6.6 KiB
C
/* @(#)tool_struct.h 1.1 94/10/31 SMI */
|
|
|
|
/*
|
|
* Copyright (c) 1983 by Sun Microsystems, Inc.
|
|
*/
|
|
|
|
#ifndef tool_struct_DEFINED
|
|
#define tool_struct_DEFINED
|
|
|
|
#include <sys/types.h>
|
|
|
|
/*
|
|
* Definitions of "standard" tool icon graphics/text size/proportions
|
|
*/
|
|
typedef struct toolio {
|
|
fd_set tio_inputmask, /* Additional fd to select on in tool_select */
|
|
tio_outputmask, /* (See select system call documentation) */
|
|
tio_exceptmask;
|
|
struct timeval *tio_timer; /* Timeout used in tool_select */
|
|
int (*tio_handlesigwinch)();/* call when win should repair image */
|
|
int (*tio_selected)(); /* call from tool_select */
|
|
} Toolio;
|
|
|
|
typedef struct tool {
|
|
short tl_flags; /* tool booleans */
|
|
#define TOOL_NAMESTRIPE (0x01) /* include a name stripe */
|
|
#define TOOL_BOUNDARYMGR (0x02) /* movable borders between subwindows */
|
|
#define TOOL_ICONIC (0x04) /* current state is iconic */
|
|
#define TOOL_SIGCHLD (0x08) /* info passed to tool_select */
|
|
#define TOOL_SIGWINCHPENDING (0x10) /* need to call tool_handlesigwinch*/
|
|
#define TOOL_DONE (0x20) /* need to return from tool_select */
|
|
#define TOOL_FULL (0x40) /* current state is full */
|
|
#define TOOL_EMBOLDEN_LABEL (0x80) /* embolden tool label */
|
|
#define TOOL_FIRSTPRIV (0x0100)/* start of private flags range */
|
|
#define TOOL_LASTPRIV (0x8000)/* end of private flags range */
|
|
int tl_windowfd; /* file descriptor of tool window */
|
|
u_char *tl_name; /* string in name stripe & default icon */
|
|
struct icon *tl_icon; /* icon */
|
|
struct toolio tl_io; /* Tool_select and signal handling */
|
|
struct toolsw *tl_sw; /* list of subwindows that tool is managing */
|
|
struct pixwin *tl_pixwin; /* display mechanism structure */
|
|
struct rect tl_rectcache; /* rect of tool (tool relative) */
|
|
struct rect tl_openrect; /* saved open rect of tool while full */
|
|
caddr_t tl_menu; /* Menu, Non zero if tool has a walking menu */
|
|
void (*props_proc)();/* proc to call on props */
|
|
int props_active;
|
|
} Tool;
|
|
#define TOOL_NULL ((Tool *)0)
|
|
|
|
typedef struct toolsw {
|
|
struct toolsw *ts_next;/* next subwindow */
|
|
int ts_windowfd; /* file descriptor of subwindow */
|
|
char *ts_name; /* identifies subwindow (for future use) */
|
|
short ts_width; /* width at which sw wants to be maintained */
|
|
short ts_height; /* height at which sw wants to be maintained */
|
|
#define TOOL_SWEXTENDTOEDGE -1 /* extend width|height to edge of tool */
|
|
struct toolio ts_io; /* Tool_select and signal handling */
|
|
int (*ts_destroy)();/* call when removing subwindow */
|
|
caddr_t ts_data; /* uninterpreted data passed to functions */
|
|
caddr_t ts_priv; /* tool implementation private data */
|
|
} Toolsw;
|
|
#define TOOLSW_NULL ((Toolsw *)0)
|
|
|
|
/*
|
|
* Standard (but not enforced) constant values
|
|
*/
|
|
#define TOOL_BORDERWIDTH (5)
|
|
#define TOOL_SUBWINDOWSPACING (TOOL_BORDERWIDTH)
|
|
#define TOOL_NAMESTRIPEXTR (0)
|
|
#define TOOL_ICONHEIGHT (64)
|
|
#define TOOL_ICONWIDTH (64)
|
|
#define TOOL_ICONHEIGHT (64)
|
|
#define TOOL_ICONMARGIN (0)
|
|
|
|
#define TOOL_ICONIMAGEWIDTH ((TOOL_ICONWIDTH)-2*(TOOL_ICONMARGIN))
|
|
#define TOOL_ICONIMAGEHEIGHT ((TOOL_ICONHEIGHT)-2*(TOOL_ICONMARGIN))
|
|
#define TOOL_ICONIMAGELEFT (TOOL_ICONMARGIN)
|
|
#define TOOL_ICONIMAGETOP (TOOL_ICONMARGIN)
|
|
|
|
#define TOOL_ICONTEXTWIDTH (TOOL_ICONIMAGEWIDTH)
|
|
#define TOOL_ICONTEXTHEIGHT ((TOOL_ICONHEIGHT)-(TOOL_ICONHEIGHT)/4)
|
|
#define TOOL_ICONTEXTLEFT (TOOL_ICONIMAGELEFT)
|
|
#define TOOL_ICONTEXTTOP \
|
|
((TOOL_ICONHEIGHT)-((TOOL_ICONTEXTHEIGHT)+(TOOL_ICONMARGIN)))
|
|
|
|
/*#define tool_install(tool) win_insert((tool)->tl_windowfd)*/
|
|
#define tool_getnormalrect(tool, rectp) \
|
|
wmgr_getnormalrect((tool)->tl_windowfd, (rectp))
|
|
#define tool_setnormalrect(tool, rectp) \
|
|
wmgr_setnormalrect((tool)->tl_windowfd, (rectp))
|
|
|
|
#define TOOL_SW_ICONIC_OFFSET 2048
|
|
#define tool_sw_iconic_offset(tool) \
|
|
(((tool)->tl_flags & TOOL_ICONIC) ? TOOL_SW_ICONIC_OFFSET : 0)
|
|
|
|
#define tool_is_iconic(tool) \
|
|
(!wmgr_iswindowopen((tool)->tl_windowfd))
|
|
|
|
|
|
extern struct tool *tool_begin();
|
|
extern struct toolsw *tool_createsubwindow();
|
|
extern short tool_stripeheight(), tool_borderwidth(), tool_subwindowspacing();
|
|
extern struct pixrect *tool_bkgrd;
|
|
|
|
#define tool_end(tool) tool_destroy((tool))
|
|
|
|
#ifdef cplus
|
|
/*
|
|
* C Library routines specifically related to tool functions.
|
|
*/
|
|
|
|
/*
|
|
* Create operations
|
|
*/
|
|
int tool *tool_new(int attribute_num, char *value,
|
|
...more attribute_num/value pairs..., 0);
|
|
struct toolsw *tool_createsubwindow(struct tool *tool, char *name,
|
|
short width, height);
|
|
|
|
/*
|
|
* Cleanup routines
|
|
*/
|
|
void tool_destroysubwindow(struct tool *tool, struct toolsw *toolsw);
|
|
void tool_destroy(struct tool *tool);
|
|
|
|
/*
|
|
* Subwindow layout utilities.
|
|
*/
|
|
short tool_stripeheight(struct tool *tool);
|
|
short tool_borderwidth(struct tool *tool);
|
|
short tool_subwindowspacing(struct tool *tool);
|
|
int tool_heightfromlines(struct tool *tool, int lines);
|
|
int tool_widthfromcolumns(struct tool *tool, int columns);
|
|
int tool_linesfromheight(struct tool *tool, int height);
|
|
int tool_columnsfromwidth(struct tool *tool, int width);
|
|
|
|
/*
|
|
* Input & display functions.
|
|
*/
|
|
void tool_select(struct tool *tool, int waitprocessesdie);
|
|
void tool_sigchld(struct tool *tool);
|
|
void tool_done(struct tool *tool);
|
|
void tool_sigwinch(struct tool *tool);
|
|
void tool_handlesigwinchstd(struct tool *tool);
|
|
void tool_selectedstd(struct tool *tool,
|
|
int *inputbits, *outputbits, *exceptbits, struct timeval *timer);
|
|
|
|
/*
|
|
* Replacable operations calling sequence.
|
|
*/
|
|
void tio_selected(caddr_t ts_data, int *inputbits, *outputbits, *exceptbits,
|
|
struct timeval *timer);
|
|
void tio_handlesigwinch(caddr_t ts_data);
|
|
void ts_destroy(caddr_t ts_data);
|
|
void tool_layoutsubwindows(struct tool *tool);
|
|
|
|
/*
|
|
* Attribute operations.
|
|
*/
|
|
int tool_set_attributes(struct tool *tool, int attribute_num, char *value,
|
|
...more attribute_num/value pairs..., 0);
|
|
char * tool_get_attribute(struct tool *tool, int attribute_num);
|
|
void tool_free_attribute(int attribute_num, char *value);
|
|
void tool_free_attribute_list(char **avlist);
|
|
void tool_find_attribute(char **avlist, int attribute_num, char **value);
|
|
int tool_parse_one(int argc, char **argv, char ***avlist_ptr,
|
|
char *tool_name);
|
|
int tool_parse_all(int *argc_ptr, char **argv, char ***avlist_ptr,
|
|
char *tool_name);
|
|
|
|
/*
|
|
* Obsolete (but implemented) operations
|
|
*/
|
|
struct tool *tool_create(char *name, short flags, struct rect *rect,
|
|
struct icon *icon); /* Use tool_make instead */
|
|
int tool *tool_make(int attribute_num, char *value,
|
|
...more attribute_num/value pairs..., 0);
|
|
void tool_display(struct tool *tool); /* Use tool_set_attributes */
|
|
|
|
#endif
|
|
|
|
/*
|
|
* Obsolete (but implemented) operations
|
|
*/
|
|
extern struct tool *tool_create(); /* Old-fashion */
|
|
extern struct tool *tool_make(); /* Old-fashion */
|
|
|
|
#endif not tool_struct_DEFINED
|