X-Git-Url: http://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=man%2Fpanel.3x;h=f16931ce3ec268f18c6ce4f21f455848d435e55f;hb=16fbf3f4f7d96b6ee6bf9159b22f26e05962aa3d;hp=0d683130beec49a0689978da241a998c7c563e24;hpb=ce4803687b821efbc5fb2c5a5f06d69cd4dc2656;p=ncurses.git diff --git a/man/panel.3x b/man/panel.3x index 0d683130..f16931ce 100644 --- a/man/panel.3x +++ b/man/panel.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. * +.\" Copyright 2018-2021,2022 Thomas E. Dickey * +.\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * .\" copy of this software and associated documentation files (the * @@ -26,158 +27,234 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: panel.3x,v 1.21 2017/02/18 16:53:23 tom Exp $ +.\" $Id: panel.3x,v 1.42 2022/02/12 20:03:40 tom Exp $ .TH panel 3X "" .ie \n(.g .ds `` \(lq .el .ds `` `` .ie \n(.g .ds '' \(rq .el .ds '' '' -.ds n 5 -.ds d @TERMINFO@ +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .SH NAME panel \- panel stack extension for curses .SH SYNOPSIS -\fB#include \fR +\fB#include \fP .P -\fBcc [flags] sourcefiles \-lpanel \-lncurses\fR +\fBcc [flags] sourcefiles \-lpanel \-lncurses\fP .P -\fBPANEL *new_panel(WINDOW *win);\fR +\fBPANEL *new_panel(WINDOW *\fIwin\fB);\fR +.sp +\fBint bottom_panel(PANEL *\fIpan\fB);\fR .br -\fBint bottom_panel(PANEL *pan);\fR +\fBint top_panel(PANEL *\fIpan\fB);\fR .br -\fBint top_panel(PANEL *pan);\fR +\fBint show_panel(PANEL *\fIpan\fB);\fR .br -\fBint show_panel(PANEL *pan);\fR +\fBvoid update_panels(void);\fP .br -\fBvoid update_panels();\fR +\fBint hide_panel(PANEL *\fIpan\fB);\fR +.sp +\fBWINDOW *panel_window(const PANEL *\fIpan\fB);\fR .br -\fBint hide_panel(PANEL *pan);\fR +\fBint replace_panel(PANEL *\fIpan\fB, WINDOW *\fIwindow\fB);\fR .br -\fBWINDOW *panel_window(const PANEL *pan);\fR +\fBint move_panel(PANEL *\fIpan\fB, int \fIstarty\fB, int \fIstartx\fB);\fR .br -\fBint replace_panel(PANEL *pan, WINDOW *window);\fR +\fBint panel_hidden(const PANEL *\fIpan\fB);\fR +.sp +\fBPANEL *panel_above(const PANEL *\fIpan\fB);\fR .br -\fBint move_panel(PANEL *pan, int starty, int startx);\fR +\fBPANEL *panel_below(const PANEL *\fIpan\fB);\fR +.sp +\fBint set_panel_userptr(PANEL *\fIpan\fB, const void *\fIptr\fB);\fR .br -\fBint panel_hidden(const PANEL *pan);\fR +\fBconst void *panel_userptr(const PANEL *\fIpan\fB);\fR +.sp +\fBint del_panel(PANEL *\fIpan\fB);\fR +.sp +\fR/* ncurses-extensions */\fP .br -\fBPANEL *panel_above(const PANEL *pan);\fR +\fBPANEL *ground_panel(SCREEN *\fIsp\fB);\fR .br -\fBPANEL *panel_below(const PANEL *pan);\fR -.br -\fBint set_panel_userptr(PANEL *pan, const void *ptr);\fR -.br -\fBconst void *panel_userptr(const PANEL *pan);\fR -.br -\fBint del_panel(PANEL *pan);\fR +\fBPANEL *ceiling_panel(SCREEN *\fIsp\fB);\fR .br .SH DESCRIPTION -Panels are \fBcurses\fR(3X) windows with the added feature of -depth. Panel functions allow the use of stacked windows and ensure -the proper portions of each window and the curses \fBstdscr\fR window are +Panels are \fBcurses\fP(3X) windows with the added feature of +depth. +Panel functions allow the use of stacked windows and ensure +the proper portions of each window and the curses \fBstdscr\fP window are hidden or displayed when panels are added, moved, modified or removed. -The set of currently visible panels is the stack of panels. The -\fBstdscr\fR window is beneath all panels, and is not considered part +The set of currently visible panels is the stack of panels. +The +\fBstdscr\fP window is beneath all panels, and is not considered part of the stack. .P -A window is associated with every panel. The panel routines enable +A window is associated with every panel. +The panel routines enable you to create, move, hide, and show panels, as well as position a panel at any desired location in the stack. .P -Panel routines are a functional layer added to \fBcurses\fR(3X), make only +Panel routines are a functional layer added to \fBcurses\fP(3X), make only high-level curses calls, and work anywhere terminfo curses does. .SH FUNCTIONS -.TP -.B new_panel(win) -allocates a \fBPANEL\fR structure, associates it with -\fBwin\fR, places the panel on the top of the stack (causes it -to be displayed above any other panel) and returns a +.\" --------- +.SS bottom_panel +\fBbottom_panel(\fIpan\fB)\fR +puts panel \fIpan\fP at the bottom of all panels. +.\" --------- +.SS ceiling_panel +\fBceiling_panel(\fIsp\fB)\fR +acts like \fBpanel_below(NULL)\fP, for the given \fBSCREEN\fP \fIsp\fP. +.\" --------- +.SS del_panel +\fBdel_panel(\fIpan\fB)\fR +removes the given panel \fIpan\fP from the stack and deallocates the +\fBPANEL\fP structure (but not its associated window). +.\" --------- +.SS ground_panel +\fBground_panel(\fIsp\fB)\fR +acts like \fBpanel_above(NULL)\fP, for the given \fBSCREEN\fP \fIsp\fP. +.\" --------- +.SS hide_panel +\fBhide_panel(\fIpan\fB)\fR +removes the given panel \fIpan\fP from the panel stack +and thus hides it from view. +The \fBPANEL\fP structure is not lost, merely removed from the stack. +.\" --------- +.SS move_panel +\fBmove_panel(\fIpan\fB,\fIstarty\fB,\fIstartx\fB)\fR +moves the given panel \fIpan\fP's window so that its upper-left corner is at +\fIstarty\fP, \fIstartx\fP. +It does not change the position of the panel in the stack. +Be sure to use this function, not \fBmvwin\fP(3X), to move a panel window. +.\" --------- +.SS new_panel +\fBnew_panel(\fIwin\fB)\fR allocates a \fBPANEL\fR structure, +associates it with \fIwin\fP, places the panel on the top of the stack +(causes it to be displayed above any other panel) and returns a pointer to the new panel. -.TP -.B update_panels -refreshes the virtual screen to reflect the relations between the -panels in the stack, but does not call \fBdoupdate\fP to refresh the -physical screen. -Use this function and not \fBwrefresh\fP or \fBwnoutrefresh\fP. -.B update_panels -may be called more than once before a call to -\fBdoupdate\fP, but \fBdoupdate\fP is the function responsible for updating -the physical screen. -.TP -.B del_panel(pan) -removes the given panel from the stack and deallocates the -\fBPANEL\fR structure (but not its associated window). -.TP -.B hide_panel(pan) -removes the given panel from the panel stack and thus hides it from -view. The \fBPANEL\fR structure is not lost, merely removed from the stack. -.TP -.B panel_hidden(pan) -returns \fBTRUE\fP if the panel is in the panel stack, +.\" --------- +.SS panel_above +\fBpanel_above(\fIpan\fB)\fR +returns a pointer to the panel above \fIpan\fP. +If the panel argument is +\fB(PANEL *)0\fP, it returns a pointer to the bottom panel in the stack. +.\" --------- +.SS panel_below +\fBpanel_below(\fIpan\fB)\fR +returns a pointer to the panel just below \fIpan\fP. +If the panel argument +is \fB(PANEL *)0\fP, it returns a pointer to the top panel in the stack. +.\" --------- +.SS panel_hidden +\fBpanel_hidden(\fIpan\fB)\fR +returns \fBTRUE\fP if the panel \fIpan\fP is in the panel stack, \fBFALSE\fP if it is not. -If the panel is a null pointer, return ERR. -.TP -.B show_panel(pan) -makes a hidden panel visible by placing it on top of the panels in the -panel stack. See COMPATIBILITY below. -.TP -.B top_panel(pan) -puts the given visible panel on top of all panels in the stack. See -COMPATIBILITY below. -.TP -.B bottom_panel(pan) -puts panel at the bottom of all panels. -.TP -.B move_panel(pan,starty,startx) -moves the given panel window so that its upper-left corner is at -\fBstarty\fR, \fBstartx\fR. It does not change the position of the -panel in the stack. Be sure to use this function, not \fBmvwin\fR, -to move a panel window. -.TP -.B replace_panel(pan,window) -replaces the current window of panel with \fBwindow\fR (useful, for -example if you want to resize a panel; if you're using \fBncurses\fR, -you can call \fBreplace_panel\fR on the output of \fBwresize\fR(3X)). +If the panel is a null pointer, return \fBERR\fP. +.\" --------- +.SS panel_userptr +\fBpanel_userptr(\fIpan\fB)\fR +returns the user pointer for a given panel \fIpan\fP. +.\" --------- +.SS panel_window +\fBpanel_window(\fIpan\fB)\fR +returns a pointer to the window of the given panel \fIpan\fP. +.\" --------- +.SS replace_panel +\fBreplace_panel(\fIpan\fB,\fIwindow\fB)\fR +replaces the current window of panel \fIpan\fP with \fIwindow\fP +This is useful, for example if you want to resize a panel. +In \fBncurses\fP, you can call \fBreplace_panel\fP +to resize a panel using a window resized with \fBwresize\fP(3X). It does not change the position of the panel in the stack. -.TP -.B panel_above(pan) -returns a pointer to the panel above pan. If the panel argument is -\fB(PANEL *)0\fR, it returns a pointer to the bottom panel in the stack. -.TP -.B panel_below(pan) -returns a pointer to the panel just below pan. If the panel argument -is \fB(PANEL *)0\fR, it returns a pointer to the top panel in the stack. -.TP -.B set_panel_userptr(pan,ptr) +.\" --------- +.SS set_panel_userptr +\fBset_panel_userptr(\fIpan\fB,\fIptr\fB)\fR sets the panel's user pointer. -.TP -.B panel_userptr(pan) -returns the user pointer for a given panel. -.TP -.B panel_window(pan) -returns a pointer to the window of the given panel. +.\" --------- +.SS show_panel +\fBshow_panel(\fIpan\fB)\fR +makes a hidden panel visible by placing it on top of the panels in the +panel stack. +See \fBCOMPATIBILITY\fP below. +.\" --------- +.SS top_panel +\fBtop_panel(\fIpan\fB)\fR +puts the given visible panel \fIpan\fP on top of all panels in the stack. +See \fBCOMPATIBILITY\fP below. +.\" --------- +.SS update_panels +\fBupdate_panels()\fR +refreshes the \fIvirtual screen\fP to reflect the relations between the +panels in the stack, but does not call \fBdoupdate\fP(3X) to refresh the +\fIphysical screen\fP. +Use this function and not \fBwrefresh\fP(3X) or \fBwnoutrefresh\fP(3X). +.PP +\fBupdate_panels\fP may be called more than once before a call to +\fBdoupdate\fP, but \fBdoupdate\fP is the function responsible for updating +the \fIphysical screen\fP. .SH DIAGNOSTICS -Each routine that returns a pointer returns \fBNULL\fR if an error -occurs. Each routine that returns an int value returns \fBOK\fR if it -executes successfully and \fBERR\fR if not. +Each routine that returns a pointer returns \fBNULL\fP if an error +occurs. +Each routine that returns an int value returns \fBOK\fP if it +executes successfully and \fBERR\fP if not. +.PP +Except as noted, the \fIpan\fP and \fIwindow\fP parameters must be non-null. +If those are null, an error is returned. +.PP +The \fBmove_panel\fP function uses \fBmvwin\fP(3X), +and will return an error if \fBmvwin\fP returns an error. .SH COMPATIBILITY Reasonable care has been taken to ensure compatibility -with the native panel facility introduced in SVr3.2 (inspection of +with the native panel facility introduced in System V (inspection of the SVr4 manual pages suggests the programming interface is unchanged). -The \fBPANEL\fR data structures are merely similar. The programmer -is cautioned not to directly use \fBPANEL\fR fields. +The \fBPANEL\fP data structures are merely similar. +The programmer +is cautioned not to directly use \fBPANEL\fP fields. .P -The functions \fBshow_panel\fR and \fBtop_panel\fR are identical +The functions \fBshow_panel\fP and \fBtop_panel\fP are identical in this implementation, and work equally well with displayed or hidden -panels. In the native System V implementation, \fBshow_panel\fR is +panels. +In the native System V implementation, \fBshow_panel\fP is intended for making a hidden panel visible (at the top of the stack) -and \fBtop_panel\fR is intended for making an already-visible panel -move to the top of the stack. You are cautioned to use the correct +and \fBtop_panel\fP is intended for making an already-visible panel +move to the top of the stack. +You are cautioned to use the correct function to ensure compatibility with native panel libraries. .SH NOTE In your library list, libpanel.a should be before libncurses.a; that is, you should say \*(``\-lpanel \-lncurses\*('', not the other way around (which would give a link-error with static libraries). +.SH PORTABILITY +.PP +The panel facility was documented in SVr4.2 in +\fICharacter User Interface Programming (UNIX SVR4.2)\fP. +.PP +It is not part of X/Open Curses. +.PP +A few implementations exist: +.bP +Systems based on SVr4 source code, +e.g., Solaris, provide this library. +.bP +\fBncurses\fP (since version 0.6 in 1993) +and \fBPDCurses\fP (since version 2.2 in 1995) +provide a panel library whose common ancestor +was a public domain implementation by Warren Tucker +published in \fIu386mon\fP 2.20 (1990). +.IP +According to Tucker, the SystemV panel library +was first released in SVr3.2 (1988), +and his implementation helped with a port to SVr3.1 (1987). +.IP +Several developers have improved each of these; +they are no longer the same as Tucker's implementation. +.bP +NetBSD 8 (2018) +has a panel library begun by Valery Ushakov in 2015. +This is based on the AT&T documentation. .SH FILES .P panel.h @@ -186,12 +263,17 @@ interface for the panels library libpanel.a the panels library itself .SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_variables\fR(3X), +\fBcurses\fP(3X), +\fBcurs_variables\fP(3X), .PP -This describes \fBncurses\fR +This describes \fBncurses\fP version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). .SH AUTHOR +.PP Originally written by Warren Tucker , -primarily to assist in porting u386mon to systems without a native -panels library. Repackaged for ncurses by Zeyd ben-Halim. +primarily to assist in porting \fIu386mon\fP to systems without a native +panels library. +.PP +Repackaged for ncurses by Zeyd ben-Halim. +.PP +Juergen Pfeifer and Thomas E. Dickey revised/improved the library.