another update from CVS HEAD, for QA
[alioth/jupp.git] / w.h
1 /*
2  *      Window management
3  *      Copyright
4  *              (C) 1992 Joseph H. Allen
5  *
6  *      This file is part of JOE (Joe's Own Editor)
7  */
8 #ifndef _JOE_W_H
9 #define _JOE_W_H 1
10
11 #ifdef EXTERN
12 __IDSTRING(rcsid_w_h, "$MirOS: contrib/code/jupp/w.h,v 1.9 2017/12/07 02:10:20 tg Exp $");
13 #endif
14
15 /***************/
16 /* Subroutines */
17 /***************/
18
19 /* int getgrouph(W *);
20  * Get height of a family of windows
21  */
22 int getgrouph(W *w);
23
24 /* W *findtopw(W *);
25  * Find first (top-most) window of a family
26  */
27 W *findtopw(W *w);
28
29 /* W *findbotw(W *);
30  * Find last (bottom-most) window a family
31  */
32 W *findbotw(W *w);
33
34 int demotegroup(W *w);
35
36 /* W *lastw(SCREEN *t);
37  * Find last window on screen
38  */
39 W *lastw(SCREEN *t);
40
41 /* Determine number of main windows
42  */
43 int countmain(SCREEN *t);
44
45 /* void wfit(SCREEN *t);
46  *
47  * Fit all of the windows onto the screen
48  */
49 void wfit(SCREEN *t);
50
51 /*****************/
52 /* Main routines */
53 /*****************/
54
55 /* SCREEN *screate(SCRN *);
56  *
57  * Create a screen
58  */
59 SCREEN *screate(SCRN *scrn);
60
61 /* void sresize(SCREEN *t);
62  * Screen size changed
63  */
64 void sresize(SCREEN *t);
65
66 /* W *wcreate(SCREEN *t,WATOM *watom,W *where,W *target,W *original,int height);
67  *
68  * Try to create a window
69  *
70  * 't'          Is the screen the window is placed on
71  * 'watom'      Type of new window
72  * 'where'      The window is placed after this window, or if 'where'==0, the
73  *              window is placed on the end of the screen
74  * 'target'     The window operates on this window.  The window becomes a
75  *              member of 'target's family or starts a new family if
76  *              'target'==0.
77  * 'original'   Attempt to get 'height' from this window.  When the window is
78  *              aborted, the space gets returned to 'original' if it still
79  *              exists.  If 'original'==0, the window will force other
80  *              windows to go off of the screen.
81  * 'height'     The height of the window
82  *
83  * Returns the new window or returns 0 if there was not enough space to
84  * create the window and maintain family integrity.
85  */
86 W *wcreate(SCREEN *t, WATOM *watom, W *where, W *target, W *original, int height, const unsigned char *huh, int *notify);
87
88 /* int wabort(W *w);
89  *
90  * Kill a window and it's children
91  */
92 int wabort(W *w);
93
94 /* int wnext(SCREEN *);
95  *
96  * Switch to next window
97  */
98 int wnext(SCREEN *t);
99
100 /* int wprev(SCREEN *);
101  *
102  * Switch to previous window
103  */
104 int wprev(SCREEN *t);
105
106 /* int wgrow(W *);
107  *
108  * increase size of window.  Return 0 for success, -1 for fail.
109  */
110 int wgrow(W *w);
111
112 /* int wshrink(W *);
113  *
114  * Decrease size of window.  Returns 0 for success, -1 for fail.
115  */
116 int wshrink(W *w);
117
118 /* void wshowone(W *);
119  *
120  * Show only one window on the screen
121  */
122 void wshowone(W *w);
123
124 /* void wshowall(SCREEN *);
125  *
126  * Show all windows on the screen, including the given one
127  */
128 void wshowall(SCREEN *t);
129
130 /* void wredraw(W *);
131  *
132  * Force complete redraw of window
133  */
134 void wredraw(W *w);
135
136 /* void updall()
137  *
138  * Redraw all windows
139  */
140 void updall(void);
141
142 /* void msgnw[t](W *w, char *s);
143  * Display a message which will be eliminated on the next keypress.
144  * msgnw displays message on bottom line of window
145  * msgnwt displays message on top line of window
146  */
147 void msgnw(W *w, const unsigned char *s);
148 void msgnwt(W *w, const unsigned char *s);
149
150 /* Message composition buffer for msgnw/msgnwt */
151 #define JOE_MSGBUFSIZE 300
152 extern unsigned char msgbuf[JOE_MSGBUFSIZE];
153
154 void msgout(W *w);                      /* Output msgnw/msgnwt messages */
155
156 /* Common user functions */
157
158 int urtn(jobject jO, int k);            /* User hit return */
159 int utype(jobject jO, int k);           /* User types a character */
160 int uretyp(BASE *bw);                   /* Refresh the screen */
161 int ugroww(BASE *bw);                   /* Grow current window */
162 int uexpld(BASE *bw);                   /* Explode current window or show all windows */
163 int ushrnk(BASE *bw);                   /* Shrink current window */
164 int unextw(BASE *bw);                   /* Goto next window */
165 int uprevw(BASE *bw);                   /* Goto previous window */
166
167 void scrdel(B *b, long int l, long int n, int flg);
168 void scrins(B *b, long int l, long int n, int flg);
169
170 #endif