1 
2 //  ------------------------------------------------------------------
3 //  GoldED+
4 //  Copyright (C) 1990-1999 Odinn Sorensen
5 //  Copyright (C) 1999-2000 Alexander S. Aganichev
6 //  ------------------------------------------------------------------
7 //  This program is free software; you can redistribute it and/or
8 //  modify it under the terms of the GNU General Public License as
9 //  published by the Free Software Foundation; either version 2 of the
10 //  License, or (at your option) any later version.
11 //
12 //  This program is distributed in the hope that it will be useful,
13 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
14 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 //  General Public License for more details.
16 //
17 //  You should have received a copy of the GNU General Public License
18 //  along with this program; if not, write to the Free Software
19 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
20 //  MA 02111-1307 USA
21 //  ------------------------------------------------------------------
22 //  $Id: geall.h,v 1.6 2007/10/29 21:33:04 stas_degteff Exp $
23 //  ------------------------------------------------------------------
24 //  Definition of system-wide sizes and structures.
25 //  ------------------------------------------------------------------
26 #ifndef __GEALL__H
27 #define __GEALL__H
28 
29 #include <map>
30 #include <vector>
31 #include <string>
32 
33 #include <gdefs.h>
34 #include <gregex.h>
35 
36 
37 //  ------------------------------------------------------------------
38 
39 #if defined(GOLD_CANPACK)
40 #pragma pack(1)
41 #endif
42 
43 
44 //  ------------------------------------------------------------------
45 //  General data/list size limits
46 
47 const uint MAX_COMM =  25;        // Editor comments
48 const uint MAX_FIND =  10;        // Max number of search strings
49 const uint MAXQUOTELEN = 40;      // Max length of quote
50 
51 
52 //  ------------------------------------------------------------------
53 //  Header attach size types
54 
55 const int ATTACH_BYTES  = 1;
56 const int ATTACH_KBYTES = 2;
57 
58 
59 //  ------------------------------------------------------------------
60 //  Control info types
61 
62 const int CI_NONE = 0x0000;
63 const int CI_TEAR = 0x0001;
64 const int CI_ORIG = 0x0002;
65 const int CI_TAGL = 0x0004;
66 
67 
68 //  ------------------------------------------------------------------
69 //  Misc mode types (ACK!! these need cleaning up!)
70 
71 const int MODE_AREACONF      = 100;
72 const int MODE_CONFIRM       = 101;
73 const int MODE_COPY          = 102;
74 const int MODE_FORWARD       = 103;
75 const int MODE_MOVE          = 108;
76 const int MODE_QUOTE         = 109;
77 const int MODE_QUOTEBUF      = 110;
78 const int MODE_REPLY         = 111;
79 const int MODE_REPLYCOMMENT  = 112;
80 const int MODE_SAVE          = 114;
81 const int MODE_SAVENOCTRL    = 115;
82 const int MODE_VIEW          = 116;
83 const int MODE_WRITE         = 117;
84 const int MODE_PRINT         = 118;
85 const int MODE_APPEND        = 119;
86 const int MODE_WRITEHEADER   = 120;
87 const int MODE_HEADER        = 121;
88 
89 const int MODE_NEW           = 0x0100;
90 const int MODE_CHANGE        = 0x0200;
91 const int MODE_UPDATE        = 0x0400;
92 const int MODE_QUIT          = 0x0800;
93 
94 const int MODE_PREVIOUS      = 2;
95 const int MODE_MARKED        = 1;
96 const int MODE_CURRENT       = 0;
97 const int MODE_DONT          = -1;
98 
99 
100 //  ------------------------------------------------------------------
101 //  Scanning constants
102 
103 const int SCAN_STARTUP       =  0;
104 const int SCAN_ALL           =  1;
105 const int SCAN_MARKED        =  2;
106 const int SCAN_CURRENT       =  3;
107 const int SCAN_MATCHING      =  4;
108 const int SCAN_UNSCANNED     =  5;
109 const int SCAN_EXPORTQWK     =  6;
110 const int SCAN_IMPORTQWK     =  7;
111 const int SCAN_EXPORTSOUP    =  8;
112 const int SCAN_IMPORTSOUP    =  9;
113 const int SCAN_LIST          = 10;
114 const int SCAN_GROUP         = 11;
115 const int SCAN_NETMAIL       = 12;
116 const int SCAN_QUIT          = 99;
117 
118 
119 //  ------------------------------------------------------------------
120 //  Exit errorcodes
121 
122 const int EXIT_OK          = 0x00;
123 const int EXIT_LOCAL       = 0x01;
124 const int EXIT_NET         = 0x02;
125 const int EXIT_ECHO        = 0x04;
126 const int EXIT_NONAME      = 0x20;
127 const int EXIT_CFGERR      = 0x21;
128 const int EXIT_ERRORS      = 0x22;
129 
130 
131 //  ------------------------------------------------------------------
132 //  Direction defines
133 
134 const int DIR_PREV  = -1;
135 const int DIR_NEXT  =  1;
136 
137 const int DIR_ABOVE = DIR_PREV;
138 const int DIR_BELOW = DIR_NEXT;
139 
140 
141 //  ------------------------------------------------------------------
142 //  Misc screen limits
143 
144 #define MINROW        6
145 #define MAXCOL        gvid->numcols
146 #define MAXROW        gvid->numrows
147 #define MAXMSGLINES   (MAXROW-MINROW-1)
148 
149 
150 //  ------------------------------------------------------------------
151 //  Message marking
152 
153 const char MMRK_MARK = '\x10';
154 const char MMRK_BOOK = '\x11';
155 
156 
157 //  ------------------------------------------------------------------
158 //  Twit options
159 
160 const int NOT_TWIT    = 0;
161 const int TWIT_SHOW   = 1;
162 const int TWIT_BLANK  = 2;
163 const int TWIT_SKIP   = 3;
164 const int TWIT_IGNORE = 4;
165 const int TWIT_KILL   = 5;
166 
167 
168 //  ------------------------------------------------------------------
169 //  CC list options
170 
171 const int CC_REMOVE  = 0;
172 const int CC_HIDDEN  = 1;
173 const int CC_VISIBLE = 2;
174 const int CC_NAMES   = 3;
175 const int CC_KEEP    = 4;
176 
177 
178 //  ------------------------------------------------------------------
179 //  Arealist types
180 
181 const int AL_TOTLST = 0;
182 const int AL_TOTNEW = 1;
183 
184 
185 //  ------------------------------------------------------------------
186 //  Area R/O modes
187 
188 const int READONLY_SOFT = 1;
189 const int READONLY_HARD = 2;
190 
191 
192 //  ------------------------------------------------------------------
193 //  Colorset types
194 
195 const int CS_NORMAL   = 0;
196 const int CS_INTENSE  = 1;
197 const int CS_MONO     = 2;
198 
199 
200 //  ------------------------------------------------------------------
201 //  Lookup types
202 
203 const int LOOK_DEST = 0;
204 const int LOOK_ORIG = 1;
205 const int LOOK_NAME = 2;
206 const int LOOK_CITY1 = 3;
207 const int LOOK_CITY2 = 4;
208 
209 
210 //  ------------------------------------------------------------------
211 //  Squish scanning types
212 
213 //const int SQS_API   = 1;
214 //const int SQS_QUICK = 2;
215 
216 
217 //  ------------------------------------------------------------------
218 //  Quotebuffer modes
219 
220 const int QBUF_ASK       = 1;
221 const int QBUF_APPEND    = 2;
222 const int QBUF_OVERWRITE = 3;
223 
224 
225 //  ------------------------------------------------------------------
226 //  Screenblanker types
227 
228 const int BLANK_ALLBLACK = 0;
229 const int BLANK_SLIDEWIN = 1;
230 
231 
232 //  ------------------------------------------------------------------
233 //  DISPMSGSIZE types
234 
235 const int DISPMSGSIZE_BYTES  = 1;
236 const int DISPMSGSIZE_KBYTES = 2;
237 const int DISPMSGSIZE_LINES = 3;
238 
239 
240 //  ------------------------------------------------------------------
241 //  Replylink types
242 
243 const int REPLYLINK_DIRECT   = 0;
244 const int REPLYLINK_CHAIN    = 1;
245 const int REPLYLINK_NONE     = 2;
246 
247 const int REPLYLINKLIST_FAST = 0;
248 const int REPLYLINKLIST_FULL = 1;
249 
250 
251 //  ------------------------------------------------------------------
252 
253 const int KEYB_BLOCK = 0;
254 const int KEYB_POLL  = 1;
255 
256 
257 //  ------------------------------------------------------------------
258 //  Registration key valid OS
259 
260 const int GKEY_VALID_DOS = 0x0001;
261 const int GKEY_VALID_OS2 = 0x0002;
262 const int GKEY_VALID_W32 = 0x0004;
263 const int GKEY_VALID_LNX = 0x0008;
264 const int GKEY_VALID_WIN = 0x0010;
265 const int GKEY_VALID_OPM = 0x0020;
266 const int GKEY_VALID_XWN = 0x0040;
267 
268 
269 //  ------------------------------------------------------------------
270 //  File request options
271 
272 const int FREQ_SORT        = 0x0001;
273 const int FREQ_FROMTOP     = 0x0002;
274 const int FREQ_NOFILES     = 0x0004;
275 const int FREQ_FAST        = 0x0008;
276 const int FREQ_NOWAZOOMSG  = 0x0010;
277 const int FREQ_USEFLOWFILE = 0x0020;
278 
279 
280 //  ------------------------------------------------------------------
281 //  Peek URLs options
282 
283 const int PEEK_SORT        = 0x0001;
284 const int PEEK_FROMTOP     = 0x0002;
285 
286 
287 //  ------------------------------------------------------------------
288 //  Automatic echoid names
289 
290 const int AUTOID_VERBOSE = 0;
291 const int AUTOID_SHORT   = 1;
292 const int AUTOID_LONG    = 2;
293 
294 
295 //  ------------------------------------------------------------------
296 //  Values for EDITHEADERFIRST
297 
298 const int EDITHEADERFIRST_NO       = 0x0000;
299 const int EDITHEADERFIRST_NEW      = 0x0001;
300 const int EDITHEADERFIRST_CHANGES  = 0x0002;
301 const int EDITHEADERFIRST_REPLIES  = 0x0004;
302 const int EDITHEADERFIRST_FORWARDS = 0x0008;
303 const int EDITHEADERFIRST_YES      = 0x000F;
304 
305 
306 //  ------------------------------------------------------------------
307 //  Values for MSGLISTDATE
308 
309 const int MSGLISTDATE_NONE     = 0;
310 const int MSGLISTDATE_WRITTEN  = 1;
311 const int MSGLISTDATE_ARRIVED  = 2;
312 const int MSGLISTDATE_RECEIVED = 3;
313 
314 
315 //  ------------------------------------------------------------------
316 //  Write constants
317 
318 const int WRITE_CURRENT       = 0;
319 const int WRITE_MARKED        = 1;
320 const int WRITE_QUIT          = -1;
321 const int WRITE_FILE          = 1;
322 const int WRITE_PRINTER       = 2;
323 const int WRITE_CLIPBRD       = 4;
324 const int WRITE_NO_HEADER     = 8;
325 const int WRITE_ONLY_HEADER   = 16;
326 
327 
328 //  ------------------------------------------------------------------
329 //  Values for REPLYRE
330 
331 const int REPLYRE_NO = 0;
332 const int REPLYRE_YES = 1;
333 const int REPLYRE_NUMERIC = 2;
334 
335 
336 //  ------------------------------------------------------------------
337 
338 const int MAX_DESC =  81;        // Area descriptions
339 const int MAX_ECHO =  81;        // Echoids
340 
341 
342 //  ------------------------------------------------------------------
343 //  Name typedefs
344 
345 typedef TCHAR Name[36];
346 
347 
348 //  ------------------------------------------------------------------
349 //  Tearline typedefs
350 
351 typedef char Tear[77];
352 
353 
354 //  ------------------------------------------------------------------
355 //  Subject typedefs
356 
357 typedef char Subj[128];
358 
359 
360 //  ------------------------------------------------------------------
361 //  Internet address typedefs
362 
363 typedef char IAdr[128];
364 
365 
366 //  ------------------------------------------------------------------
367 //  Internet subject typedefs
368 
369 typedef char XlatName[17];
370 
371 
372 //  ------------------------------------------------------------------
373 //  Echoid typedefs
374 
375 typedef char Echo[MAX_ECHO];
376 
377 
378 //  ------------------------------------------------------------------
379 //  Description typedefs
380 
381 typedef char Desc[MAX_DESC];
382 
383 
384 //  ------------------------------------------------------------------
385 //  Echo rename struct
386 
387 class EchoRen {
388 public:
389   std::string from;
390   std::string to;
EchoRen()391   EchoRen() {}
EchoRen(const char * _from,const char * _to)392   EchoRen(const char *_from, const char *_to) { from = _from; to = _to; }
~EchoRen()393   ~EchoRen() {}
394   EchoRen& operator=(const EchoRen& a) { from = a.from; to = a.to; return *this; }
395 };
396 
397 
398 //  ------------------------------------------------------------------
399 //  Sound effect defines
400 
401 const int SND_THEEND  = 0;
402 const int SND_GOTIT   = 1;
403 const int SND_TOOBAD  = 2;
404 const int SND_TOYOU   = 3;
405 const int SND_S_O_S   = 4;
406 const int SND_SAYBIBI = 5;
407 
408 
409 //  ------------------------------------------------------------------
410 //  Event command "Play". Types and structure
411 
412 const byte PLAY_NO  =  0;   // * No sound
413 const byte PLAY_DOS =  1;   // + DOS beeping and effects
414 const byte PLAY_VOC =  2;   // * Creative Technology Voice samples
415 const byte PLAY_CMF =  3;   // + Creative Technology FM songs
416 const byte PLAY_WAV =  4;   // + MPIDS (Multimedia) WAVE samples
417 const byte PLAY_SAM =  5;   // + Raw sample without any header
418 const byte PLAY_MID =  6;   // - MIDI songs
419 const byte PLAY_ROL =  7;   // - Adlib songs
420 const byte PLAY_SNG =  8;   // - Sequencer plus Jr. songs
421 const byte PLAY_MOD =  9;   // - ProTracker MOD songs
422 const byte PLAY_STM = 10;   // - ScreamTracker STM/STX songs
423                             //
424                             // * = Supported in the current version
425                             // + = Planned for support "soon"
426                             // - = Will probably not be supported any time soon
427 
428 struct GPlay {
429   byte  type;
430   int   effectno;   // For the DOS sound effects SND_xxx
431   Path  file;
432   int   Play() const;
433 };
434 
435 
436 //  ------------------------------------------------------------------
437 //  Event types (CRC16 values), commands and structure
438 
439 const word EVTT_AREALIST       = 0x445D;
440 const word EVTT_ASKYESNO       = 0xB26C;
441 const word EVTT_ATTENTION      = 0x0F21;
442 const word EVTT_BLANKEROFF     = 0x16EF;
443 const word EVTT_BLANKERON      = 0x819F;
444 const word EVTT_DOSSHELL       = 0x2111;
445 const word EVTT_EDITCOMMENT    = 0x662C;
446 const word EVTT_EDITCOMPLETION = 0xDA45;
447 const word EVTT_ENDOFMSGS      = 0x95BC;
448 const word EVTT_ERRORFATAL     = 0xE9C1;
449 const word EVTT_EXIT           = 0x6090;
450 const word EVTT_JOBDONE        = 0xA81F;
451 const word EVTT_JOBFAILED      = 0xCC9A;
452 const word EVTT_MSGCOMMENT     = 0x0761;
453 const word EVTT_MSGCOPYING     = 0x087B;
454 const word EVTT_MSGDELETING    = 0x1AFF;
455 const word EVTT_MSGFROMYOU     = 0xBACB;
456 const word EVTT_MSGISLOCAL     = 0x2BD6;
457 const word EVTT_MSGISTWIT      = 0xC466;
458 const word EVTT_MSGLIST        = 0x84D0;
459 const word EVTT_MSGMOVING      = 0xAA1B;
460 const word EVTT_MSGNEW         = 0x2882;
461 const word EVTT_MSGPRINTING    = 0x29E0;
462 const word EVTT_MSGREPLY       = 0x3439;
463 const word EVTT_MSGTOYOU       = 0xFB77;
464 const word EVTT_MSGWRITING     = 0x0CA8;
465 const word EVTT_NODEBROWSE     = 0xB6B5;
466 const word EVTT_SAYBIBI        = 0xD39D;
467 const word EVTT_SEARCHFAILED   = 0xEB54;
468 const word EVTT_SEARCHSUCCESS  = 0x2EB2;
469 const word EVTT_STARTUP        = 0x494B;
470 const word EVTT_TIMEOUT        = 0x4065;
471 
472 const word EVTT_BREAKLOOP      = 0xFFFF;
473 const word EVTT_STOPVOICE      = 0xFFFE;
474 const word EVTT_REMOVEVOCBUF   = 0xFFFD;
475 const word EVTT_INITCARD       = 0xFFFC;
476 
477 const int EVTC_DO_NOTHING    = 0;
478 const int EVTC_PLAY          = 1;
479 
480 struct GEvent {
481   word type;       // EVTT crc value
482   int  command;    // EVTC value
483   union {
484     GPlay play;
485     // Other event command structures can be added here
486   };
487   GEvent& operator=(const GEvent& a) {
488     type = a.type;
489     command = a.command;
490     switch(command) {
491       case EVTC_PLAY:
492         memcpy(&play, &a.play, sizeof(play));
493         break;
494     }
495     return *this;
496   }
497 };
498 
499 
500 //  ------------------------------------------------------------------
501 //  Sound device structure
502 
503 const int SNDDEV_NONE  = 0;
504 const int SNDDEV_DOS   = 1;
505 const int SNDDEV_CARD  = 2;
506 
507 struct SoundDos {
508   int  type;
509   // Doesn't need more data..
510 };
511 
512 
513 //  ------------------------------------------------------------------
514 //  Enums for the marking menu (GEMENU etc)
515 
516 enum {
517   TAG_MARKYOURMAIL=100,
518   TAG_MARKHEADER,
519   TAG_MARKTXTHDR,
520   TAG_MARKTHREAD,
521   TAG_MARKASREAD,
522   TAG_MARKNEWMSGS,
523   TAG_MARKOLDMSGS,
524   TAG_MARKALLMSGS,
525   TAG_MARKUNMARK,
526   TAG_MARKRANGE,
527   TAG_MARKTOGGLE,
528   TAG_MARKQUIT
529 };
530 
531 
532 //  ------------------------------------------------------------------
533 //  Structure for GOLDNODE.IXL
534 
535 struct NodeIxl {
536 
537   // Nodelists
538   int    nodelists;
539   Stamp* nodelist;
540 
541   // Index files
542   Path addrindex;
543   Path nodeindex;
544 
545 };
546 
547 
548 //  ------------------------------------------------------------------
549 //  GEUSER
550 
551 struct infoLookup {
552   char*  attr;
553   char*  node;
554   char*  system;
555   char*  location;
556   char*  name;
557   char*  phone;
558   char*  baud;
559   char*  flags;
560 };
561 
562 
563 //  ------------------------------------------------------------------
564 //  Structures and constants for external utilities
565 
566 const uint32_t EXTUTIL_CLS          = 0x0001;
567 const uint32_t EXTUTIL_CURSOR       = 0x0004;
568 const uint32_t EXTUTIL_RELOAD       = 0x0008;
569 const uint32_t EXTUTIL_PAUSE        = 0x0010;
570 const uint32_t EXTUTIL_PAUSEONERROR = 0x0020;
571 const uint32_t EXTUTIL_WIPE         = 0x0040;
572 const uint32_t EXTUTIL_KEEPCTRL     = 0x0080;
573 
574 struct ExtUtil
575 {
576   uint32_t    utilno;
577   uint32_t    options;
578   std::string cmdline;
579 };
580 
581 struct SaveUtil
582 {
583   uint32_t    utilno;
584   std::string menutext;
585 };
586 
587 struct UrlHandler
588 {
589   std::string name;
590   gregex      scheme;
591   ExtUtil     handler;
592 };
593 
594 
595 //  ------------------------------------------------------------------
596 //  Window areas
597 
598 #define GC_BACK_    CFG->color[0]
599 #define GC_STAT_    CFG->color[1]
600 #define GC_BRAG_    CFG->color[2]
601 #define GC_AREA_    CFG->color[3]
602 #define GC_READ_    CFG->color[4]
603 #define GC_HEAD_    CFG->color[5]
604 #define GC_ASK__    CFG->color[6]
605 #define GC_MENU_    CFG->color[7]
606 #define GC_HELP_    CFG->color[8]
607 #define GC_CFG_     CFG->color[9]
608 #define GC_INFO_    CFG->color[10]
609 #define GC_CFGB_    CFG->color[11]
610 #define GC_STYLE_   CFG->color[12]
611 #define GC_SHAD_    CFG->color[13]
612 #if defined(GCFG_SPELL_INCLUDED)
613 #define GC_SPELL_   CFG->color[14]
614 #endif
615 
616 
617 //  ------------------------------------------------------------------
618 //  Window parts
619 
620 #define _Window    c[0]
621 #define _Border    c[1]
622 #define _Title     c[2]
623 #define _Cursor    c[2]
624 #define _Selector  c[3]
625 #define _Quote     c[3]
626 #define _Subject   c[3]
627 #define _Highlight c[4]
628 #define _Noselect  c[5]
629 #define _Kludge    c[5]
630 #define _Location  c[5]
631 #define _Tearline  c[6]
632 #define _Edit      c[6]
633 #define _Block     c[7]
634 #define _Input     c[7]
635 #define _Shadow    c[7]
636 #define _Origin    c[8]
637 #define _To        c[8]
638 #define _From      c[9]
639 #define _Tagline   c[9]
640 #define _Hidden    c[10]
641 #define _Pagebar   c[11]
642 #define _Signature c[12]
643 #define _Quote2    c[13]
644 #define _URL       c[14]
645 
646 #define _WindowUnsent     c[6]
647 #define _WindowUnread     c[7]
648 #define _HighlightUnsent  c[8]
649 #define _HighlightUnread  c[9]
650 
651 #define _Bold                         c[1]
652 #define _Italic                       c[2]
653 #define _BoldItalic                   c[3]
654 #define _Underscore                   c[4]
655 #define _BoldUnderscore               c[5]
656 #define _ItalicUnderscore             c[6]
657 #define _BoldItalicUnderscore         c[7]
658 #define _Reverse                      c[8]
659 #define _ReverseBold                  c[9]
660 #define _ReverseItalic                c[10]
661 #define _ReverseBoldItalic            c[11]
662 #define _ReverseUnderscore            c[12]
663 #define _ReverseBoldUnderscore        c[13]
664 #define _ReverseItalicUnderscore      c[14]
665 #define _ReverseBoldItalicUnderscore  c[15]
666 
667 #if defined(GCFG_SPELL_INCLUDED)
668 #define _SpellError                   c[0]
669 #endif
670 
671 
672 //  ------------------------------------------------------------------
673 //  Window part colors
674 
675 #define C_BACKW   GC_BACK_._Window
676 #define C_BACKB   GC_BACK_._Border
677 
678 #define C_STATW   GC_STAT_._Window
679 #define C_STATB   GC_STAT_._Border
680 
681 #define C_BRAGW   GC_BRAG_._Window
682 #define C_BRAGB   GC_BRAG_._Border
683 #define C_BRAGT   GC_BRAG_._Title
684 #define C_BRAGH   GC_BRAG_._Highlight
685 #define C_BRAGA   GC_BRAG_._Block
686 
687 #define C_AREAW   GC_AREA_._Window
688 #define C_AREAB   GC_AREA_._Border
689 #define C_AREAT   GC_AREA_._Title
690 #define C_AREAS   GC_AREA_._Selector
691 #define C_AREAQ   GC_AREA_._Highlight
692 #define C_AREAPB  GC_AREA_._Pagebar
693 
694 #define C_READW   GC_READ_._Window
695 #define C_READB   GC_READ_._Border
696 #define C_READQ   GC_READ_._Quote
697 #define C_READK   GC_READ_._Kludge
698 #define C_READKH  GC_READ_._Hidden
699 #define C_READC   GC_READ_._Cursor
700 #define C_READA   GC_READ_._Block
701 #define C_READH   GC_READ_._Highlight
702 #define C_READG   GC_READ_._Tagline
703 #define C_READT   GC_READ_._Tearline
704 #define C_READO   GC_READ_._Origin
705 #define C_READPB  GC_READ_._Pagebar
706 #define C_READS   GC_READ_._Signature
707 #define C_READQ2  GC_READ_._Quote2
708 #define C_READU   GC_READ_._URL
709 #define C_HEADW   GC_HEAD_._Window
710 #define C_HEADB   GC_HEAD_._Border
711 #define C_HEADT   GC_HEAD_._Title
712 #define C_HEADE   GC_HEAD_._Edit
713 #define C_HEADI   GC_HEAD_._Input
714 #define C_HEADQ   GC_HEAD_._Highlight
715 #define C_HEADBY  GC_HEAD_._From
716 #define C_HEADTO  GC_HEAD_._To
717 #define C_HEADRE  GC_HEAD_._Subject
718 #define C_HEADLOC GC_HEAD_._Location
719 
720 #define C_ASKW    GC_ASK__._Window
721 #define C_ASKB    GC_ASK__._Border
722 #define C_ASKT    GC_ASK__._Title
723 #define C_ASKS    GC_ASK__._Selector
724 #define C_ASKQ    GC_ASK__._Highlight
725 #define C_ASKN    GC_ASK__._Noselect
726 #define C_ASKPB   GC_ASK_._Pagebar
727 
728 #define C_MENUW   GC_MENU_._Window
729 #define C_MENUB   GC_MENU_._Border
730 #define C_MENUT   GC_MENU_._Title
731 #define C_MENUS   GC_MENU_._Selector
732 #define C_MENUQ   GC_MENU_._Highlight
733 #define C_MENUN   GC_MENU_._Noselect
734 #define C_MENUPB  GC_MENU_._Pagebar
735 #define C_MENUW_UNREAD      GC_MENU_._WindowUnread
736 #define C_MENUQ_UNREADHIGH  GC_MENU_._HighlightUnread
737 #define C_MENUW_UNSENT      GC_MENU_._WindowUnsent
738 #define C_MENUQ_UNSENTHIGH  GC_MENU_._HighlightUnsent
739 
740 #define C_HELPW   GC_HELP_._Window
741 #define C_HELPB   GC_HELP_._Border
742 #define C_HELPT   GC_HELP_._Title
743 #define C_HELPS   GC_HELP_._Selector
744 #define C_HELPQ   GC_HELP_._Highlight
745 #define C_HELPPB  GC_HELP_._Pagebar
746 
747 #define C_INFOW   GC_INFO_._Window
748 #define C_INFOB   GC_INFO_._Border
749 #define C_INFOT   GC_INFO_._Title
750 #define C_INFOPB  GC_INFO_._Pagebar
751 
752 #define C_CFGW    GC_CFG_._Window
753 #define C_CFGB    GC_CFG_._Border
754 #define C_CFGT    GC_CFG_._Title
755 #define C_CFGS    GC_CFG_._Selector
756 #define C_CFGQ    GC_CFG_._Highlight
757 #define C_CFGN    GC_CFG_._Noselect
758 #define C_CFGPB   GC_CFG_._Pagebar
759 
760 #define C_CFGBW   GC_CFGB_._Window
761 #define C_CFGBB   GC_CFGB_._Border
762 #define C_CFGBT   GC_CFGB_._Title
763 #define C_CFGBS   GC_CFGB_._Selector
764 #define C_CFGBQ   GC_CFGB_._Highlight
765 #define C_CFGBN   GC_CFGB_._Noselect
766 #define C_CFGBPB  GC_CFGB_._Pagebar
767 
768 #define C_SHADOW  GC_SHAD_._Shadow
769 
770 #define C_STYLE     GC_STYLE_.c
771 #define C_STYLE___B GC_STYLE_._Bold
772 #define C_STYLE__I_ GC_STYLE_._Italic
773 #define C_STYLE__IB GC_STYLE_._BoldItalic
774 #define C_STYLE_U__ GC_STYLE_._Underscore
775 #define C_STYLE_U_B GC_STYLE_._BoldUnderscore
776 #define C_STYLE_UI_ GC_STYLE_._ItalicUnderscore
777 #define C_STYLE_UIB GC_STYLE_._BoldItalicUnderscore
778 #define C_STYLER___ GC_STYLE_._Reverse
779 #define C_STYLER__B GC_STYLE_._ReverseBold
780 #define C_STYLER_I_ GC_STYLE_._ReverseItalic
781 #define C_STYLER_IB GC_STYLE_._ReverseBoldItalic
782 #define C_STYLERU__ GC_STYLE_._ReverseUnderscore
783 #define C_STYLERU_B GC_STYLE_._ReverseBoldUnderscore
784 #define C_STYLERUI_ GC_STYLE_._ReverseItalicUnderscore
785 #define C_STYLERUIB GC_STYLE_._ReverseBoldItalicUnderscore
786 
787 #if defined(GCFG_SPELL_INCLUDED)
788 #define C_SCERROR   GC_SPELL_._SpellError
789 #endif
790 
791 
792 //  ------------------------------------------------------------------
793 //  Window handles
794 
795 #define W_BACK    GC_BACK_.w
796 #define W_STAT    GC_STAT_.w
797 #define W_BRAG    GC_BRAG_.w
798 #define W_AREA    GC_AREA_.w
799 #define W_READ    GC_READ_.w
800 #define W_HEAD    GC_READ_.w
801 #define W_ASK     GC_ASK__.w
802 #define W_MENU    GC_MENU_.w
803 #define W_INFO    GC_INFO_.w
804 
805 
806 //  ------------------------------------------------------------------
807 //  Window offsets
808 
809 #define W_XBACK   GC_BACK_.x
810 #define W_XSTAT   GC_STAT_.x
811 #define W_XBRAG   GC_BRAG_.x
812 #define W_XAREA   GC_AREA_.x
813 #define W_XREAD   GC_READ_.x
814 #define W_XHEAD   GC_READ_.x
815 #define W_XASK    GC_ASK__.x
816 #define W_XMENU   GC_MENU_.x
817 #define W_XINFO   GC_INFO_.x
818 
819 #define W_YBACK   GC_BACK_.y
820 #define W_YSTAT   GC_STAT_.y
821 #define W_YBRAG   GC_BRAG_.y
822 #define W_YAREA   GC_AREA_.y
823 #define W_YREAD   GC_READ_.y
824 #define W_YHEAD   GC_READ_.y
825 #define W_YASK    GC_ASK__.y
826 #define W_YMENU   GC_MENU_.y
827 #define W_YINFO   GC_INFO_.y
828 
829 
830 //  ------------------------------------------------------------------
831 //  Window border types
832 
833 #define W_BBACK   GC_BACK_.btype
834 #define W_BSTAT   GC_STAT_.btype
835 #define W_BBRAG   GC_BRAG_.btype
836 #define W_BAREA   GC_AREA_.btype
837 #define W_BREAD   GC_READ_.btype
838 #define W_BHEAD   GC_READ_.btype
839 #define W_BASK    GC_ASK__.btype
840 #define W_BMENU   GC_MENU_.btype
841 #define W_BHELP   GC_HELP_.btype
842 #define W_BINFO   GC_INFO_.btype
843 #define W_BCFG    GC_CFG_.btype
844 #define W_BCFGB   GC_CFGB_.btype
845 
846 //  ------------------------------------------------------------------
847 //  Charset translation table structure
848 
849 typedef byte ChsTab[4];
850 
851 struct Chs {
852   long   id;
853   int    version;
854   int    level;
855   int    displaylevel;
856   XlatName imp;   // From Charset
857   XlatName exp;   // To Charset
858   ChsTab t[256];       // The Translation Table
859 };
860 
861 
862 //  ------------------------------------------------------------------
863 //  Escaped characters table structure
864 
865 typedef byte EscTab[5];
866 
867 struct Esc {
868   XlatName exp;   // To Charset
869   byte   esc;          // Escape character
870   int    pos1;         // Relative position of first character
871   int    pos2;         // Relative position of last character
872   uint   size;         // Number of escaped chars in table
873   EscTab t[256];       // The Escaped Characters Table
874 };
875 
876 
877 //  ------------------------------------------------------------------
878 //  Charset mapping files
879 
880 struct Map {
881   XlatName imp;         // From Charset
882   XlatName exp;         // To Charset
883   char* mapfile;        // Mapping file and timestamp
884 };
885 
886 
887 //  ------------------------------------------------------------------
888 
889 struct PosLen {
890   int pos;
891   int len;
892 };
893 
894 
895 //  ------------------------------------------------------------------
896 
897 struct Ezycom {
898   Path msgbasepath;
899   Path userbasepath;
900 };
901 
902 
903 //  ------------------------------------------------------------------
904 
905 struct Invalidate {
906   std::pair<std::string, std::string> origin, seenby, tearline, cc, xc, xp;
907 };
908 
909 
910 //  ------------------------------------------------------------------
911 
912 struct Semaphore {
913   Path netscan;
914   Path echoscan;
915   Path exportlist;
916   Path importlist;
917   Path scanall;
918   Path scanthis;
919   Path scannetmail;
920   Path pmscanall;
921   Path pmscanthis;
922   Path pmscannetmail;
923   Path qwkimport;
924   Path qwkexport;
925   Path soupimport;
926   Path soupexport;
927   Path exitnow;
928 
929   uint  idletime;
930 };
931 
932 
933 //  ------------------------------------------------------------------
934 
935 typedef char BarList[45];
936 
937 struct FFblk {
938   int  year;
939   int  month;
940   int  day;
941   int  hour;
942   int  minute;
943   int  second;
944   long size;
945   Path name;
946   bool selected;           // Extra - YES/NO
947 };
948 
949 struct FileSpec {
950   Path   path;             // Path to file(s)
951   char   password[20];     // File Password
952   int    files;            // Number of files
953   bool   delsent;          // Kill files after sent
954   FFblk* fblk;             // Filenames
955 };
956 
957 
958 //  ------------------------------------------------------------------
959 
960 const int RFCAddress = 1;
961 const int RFCName = 2;
962 
963 //  ------------------------------------------------------------------
964 //  Message written by/to me/you ?
965 
966 const uint TO_ME   = 1;
967 const uint BY_ME   = 2;
968 const uint TO_YOU  = 4;
969 const uint BY_YOU  = 8;
970 const uint TO_ALL  = 16;
971 
972 //  ------------------------------------------------------------------
973 
974 #if defined(GOLD_CANPACK)
975 #pragma pack()
976 #endif
977 
978 
979 //  ------------------------------------------------------------------
980 
981 #endif
982