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