/* @(#)noticeimpl.h 20.38 93/06/28 */ /* ------------------------------------------------------------------ */ /* * (c) Copyright 1989 Sun Microsystems, Inc. Sun design patents * pending in the U.S. and foreign countries. See LEGAL_NOTICE * file for terms of the license. */ /* ------------------------------------------------------------------ */ #ifndef notice_impl_h_already_defined #define notice_impl_h_already_defined #ifdef OW_I18N #include #endif /* OW_I18N */ #include #include #include #include #include #include #include #include #include #include #include #define NOTICE_PRIVATE(notice_public) XV_PRIVATE(Notice_info, Xv_notice_struct, notice_public) #define NOTICE_PUBLIC(notice) XV_PUBLIC(notice) #define NOTICE_HELP (NOTICE_TRIGGERED-1) #define NOTICE_ACTION_DO_IT '\015' #define VERT_MSG_MARGIN(scale) Notice_dimensions[scale].vert_msg_margin #define HORIZ_MSG_MARGIN(scale) Notice_dimensions[scale].horiz_msg_margin #define APEX_DIST(scale) Notice_dimensions[scale].apex_dist #define BUT_PORTION_HEIGHT(scale) Notice_dimensions[scale].but_portion_height #define FONT_POINTSIZE(scale) Notice_dimensions[scale].font_pointsize #define FONT_POINTSIZE(scale) Notice_dimensions[scale].font_pointsize #define NOTICE_BORDER_WIDTH(scale) Notice_dimensions[scale].border_width #define PANE_BORDER_WIDTH(scale) Notice_dimensions[scale].pane_border_width #define PANE_NOTICE_BORDER_DIST(scale) Notice_dimensions[scale].pane_notice_border_dist #define MSG_VERT_GAP(scale) Notice_dimensions[scale].msg_vert_gap #define BUT_HORIZ_GAP(scale) Notice_dimensions[scale].but_horiz_gap #define NOTICE_NOT_TOPLEVEL 0 #define NOTICE_IS_TOPLEVEL 1 #define PANE_XY(is_toplevel_window, scale) \ ( is_toplevel_window ? \ (NOTICE_BORDER_WIDTH(scale)+ \ PANE_NOTICE_BORDER_DIST(scale)+ \ PANE_BORDER_WIDTH(scale)) : \ PANE_BORDER_WIDTH(scale) \ ) #define PANE_NOTICE_DIFF(is_toplevel_window, scale) \ (2 * (PANE_XY(is_toplevel_window, scale)+1)) #define NOTICE_SMALL 0 #define NOTICE_MEDIUM 1 #define NOTICE_LARGE 2 #define NOTICE_EXTRALARGE 3 /* ------------------------------------------------------------------ */ /* -------------- opaque types and useful typedefs ----------------- */ /* ------------------------------------------------------------------ */ typedef struct notice { Xv_Notice public_self; Frame client_window; Frame owner_window; /* * XView objects that make up the non-screen locking * notice */ Frame sub_frame; Panel panel; Frame *busy_frames; void (*event_proc)(); Fullscreen fullscreen; Xv_object fullscreen_window; int result; int *result_ptr; int default_input_code; Event *event; Event help_event; Xv_Font notice_font; int beeps; int focus_x; int focus_y; int old_mousex; int old_mousey; CHAR **message_items; int number_of_buttons; int number_of_strs; struct notice_buttons *button_info; struct notice_msgs *msg_info; char *help_data; Graphics_info *ginfo; int three_d; /* * Notice scale */ int scale; /* flags */ unsigned lock_screen:1; unsigned yes_button_exists:1; unsigned no_button_exists:1; unsigned focus_specified:1; unsigned dont_beep:1; unsigned need_layout:1; unsigned show:1; unsigned new:1; unsigned block_thread:1; } Notice_info; typedef struct notice *notice_handle; struct notice_msgs { Panel panel_item; CHAR *string; struct rect msg_rect; struct notice_msgs *next; }; struct notice_buttons { Panel panel_item; CHAR *string; int value; int is_yes; int is_no; struct rect button_rect; struct notice_buttons *next; }; typedef struct notice_buttons *notice_buttons_handle; typedef struct notice_msgs *notice_msgs_handle; typedef struct { unsigned int width; /* (a) */ unsigned int vert_msg_margin; /* (b) */ unsigned int horiz_msg_margin; /* (c) */ unsigned int apex_dist; /* (d) */ unsigned int but_portion_height; /* (e) */ unsigned int font_pointsize; /* (f) */ unsigned int border_width; /* extra */ unsigned int pane_border_width; /* extra */ unsigned int pane_notice_border_dist;/* extra */ unsigned int msg_vert_gap; /* extra */ unsigned int but_horiz_gap; /* extra */ }Notice_config; Pkg_private Notice_config Notice_dimensions[]; Pkg_private void notice_add_default_button(); Pkg_private void notice_defaults(); Pkg_private void notice_add_button_to_list(); Pkg_private void notice_add_msg_to_list(); Pkg_private void notice_free_button_structs(); Pkg_private void notice_free_msg_structs(); Pkg_private void notice_do_bell(); Pkg_private void notice_init_cursor(); Pkg_private void notice_draw_borders(); Pkg_private void notice_get_notice_size(); Pkg_private void notice_layout(); Pkg_private void notice_do_buttons(); Pkg_private void notice_drawbox(); Pkg_private void notice_build_button(); Pkg_private void notice_button_panel_proc(); Pkg_private int notice_determine_font(); Pkg_private int notice_center(); Pkg_private int notice_subframe_layout(); Pkg_private int notice_text_width(); Pkg_private int notice_button_width(); Pkg_private int notice_get_owner_frame(); Pkg_private notice_buttons_handle notice_create_button_struct(); Pkg_private notice_msgs_handle notice_create_msg_struct(); Pkg_private Xv_opaque notice_set_avlist(); Pkg_private Xv_opaque notice_generic_set(); Pkg_private Xv_opaque notice_get_attr(); Pkg_private int notice_destroy_internal(); Pkg_private int notice_init_internal(); Pkg_private int default_beeps; Pkg_private int notice_use_audible_bell; Pkg_private int notice_jump_cursor; Pkg_private int notice_context_key; Pkg_private Defaults_pairs bell_types[]; #endif notice_impl_h_already_defined