home *** CD-ROM | disk | FTP | other *** search
- /*--- This is WVGLOB.H ------------------------------------------- */
- /* WVGLOB.H contains all the global types and variables for WinVN. */
- /* Stylistically, this should probably be separated into several */
- /* header files, but this is what you've got for now. */
- /* cf WVDOC.C -- it describes some of these structures. */
-
- #define BUFSIZE 1024
- #define MAXFINDSTRING 80
- #define MAXSUBJECTSTRING 120
-
- typedef long TypLineID;
-
- typedef struct structdoc {
- HANDLE hFirstBlock; /* handle to first textblock in doc. */
- HANDLE hLastBlock; /* unused. */
- unsigned int TotalLines; /* total # of lines in doc. */
- unsigned int ActiveLines; /* # of selected or otherwise active lines */
- unsigned int BlockSize; /* # of bytes in a textblock */
- unsigned int SplitSize; /* textblock split point in bytes */
- HANDLE hCurAddBlock; /* hBlock to point at which to add lines. */
- unsigned int AddOffset; /* offset in bytes for point to add lines */
- TypLineID AddLineID; /* LineID of point to add lines. */
- HANDLE hCurTopScBlock; /* hBlock of current top line of window */
- unsigned int TopScOffset;
- TypLineID TopScLineID;
- unsigned int TopLineOrd; /* ordinal in doc of line line in window */
- HANDLE hLastSeenBlock;
- unsigned int LastSeenOffset;
- TypLineID LastSeenLineID;
- HANDLE hFindBlock; /* location of place to start next search */
- unsigned int FindOffset; /* for "SearchStr" */
- TypLineID FindLineID;
- unsigned int FindTextOffset;
- char SearchStr[MAXFINDSTRING]; /* Search string for current search */
- unsigned int ScXChars; /* # of chars/line for current window size */
- unsigned int ScYLines; /* # of lines that fit in current window */
- unsigned int ScXWidth; /* current size of client area of window */
- unsigned int ScYHeight;
- HWND hDocWnd;
- struct structdoc *ParentDoc; /* pointer to parent document */
- HANDLE hParentBlock; /* points to line in parent doc */
- unsigned int ParentOffset; /* that corresponds to/describes this */
- TypLineID ParentLineID; /* document */
- unsigned int OffsetToText;
- BOOL InUse; /* TRUE if this TypDoc in use. */
- int DocType; /* DOCTYPE_xxx */
- #ifdef MAC
- RECT DocClipRect; /* Current window clip rectangle */
- #endif
- } TypDoc;
-
- typedef struct structblock {
- HANDLE hPrevBlock; /* handle of previous block, or 0 */
- HANDLE hNextBlock; /* handle of next block in document, or 0 */
- HANDLE hCurBlock; /* handle of this block */
- int LWAp1; /* # of used data bytes in block, inc header */
- int NumLines; /* # of lines in this block */
- TypDoc *OwnerDoc; /* pointer to document this block is in. */
- int eob; /* end-of-block; must be just before 1st line. */
- /* Text lines */
- /* Another EOB marker */
- } TypBlock;
-
- typedef struct structline {
- int length; /* Total # of bytes in line, all-inclusive */
- TypLineID LineID; /* Unique identifier for this line. */
- /* Bytes of text */
- /* Another copy of length */
- } TypLine;
-
- typedef struct structtext {
- int NameLen; /* # of bytes of text */
- } TypText;
-
- typedef struct structgroup {
- char Subscribed; /* =TRUE if subscribed to this group. */
- char Selected; /* =TRUE if selected */
- int NameLen; /* # of bytes in group name */
- TypDoc *SubjDoc; /* points to doc containing subjs */
- unsigned int ServerEstNum; /* est # of arts in server */
- long int ServerFirst; /* # of first art that server has. */
- long int ServerLast; /* # of last art that server has. */
- long int HighestPrevSeen; /* # of highest art server had in last */
- /* session, from "s<num>" newsrc field */
- HANDLE header_handle;
- long int total_headers; /* total # of headers in array */
- int nRanges; /* # of TypRanges describing seen arts */
- /* Name of group */ /* name of group, zero-terminated */
- /* Ranges of articles seen */ /* array of TypRanges, of seen articles */
- } TypGroup;
-
- typedef struct structarticle {
- long int Number; /* Server's number for this article */
- char Seen; /* =TRUE if article seen */
- char Selected; /* =TRUE if article selected */
- TypDoc *ArtDoc; /* points to doc with actual article */
- int NameLen; /* # of bytes in subject line */
- /* Subject line of article */
- } TypArticle;
-
- /* this can now obsolete the article struct */
- /* #(++,10,#(++,6,#(++,4,#(++,#(++,#(++, 101, 75),30),30)))) */
- typedef struct {
- char Seen;
- char Selected;
- unsigned int number;
- unsigned int lines;
- char date[6];
- char subject[105];
- char from[75];
- char message_id[30];
- char references[30];
- TypDoc * ArtDoc;
- } TypHeader;
-
- typedef struct structrange {
- long int First;
- long int Last;
- } TypRange;
-
- /* TypMRRFile is used to describe a file; I use it because Windows */
- /* doesn't provide much in the way of disk I/O support. */
-
- typedef struct structMRRfile {
- HANDLE hFile; /* handle to file */
- #ifdef MAC
- int vRef;
- #else
- OFSTRUCT of;
- #endif
- char buf[BUFSIZE]; /* my I/O buffer. */
- HANDLE hthis; /* handle to this structure */
- int bufidx; /* Index to next place in buf */
- int bytesread; /* for reads, # of bytes read in last read */
- int mode; /* mode in which to open file. */
- int eofflag; /* whether we have reached EOF (read) */
- } TypMRRFile;
-
- #define MAXCHARS 80
- #define MAXLINES 24
- #define MAXCOMMLINE 140
- #define MAXINTERNALLINE 180
- #define MAXOUTLINE 255
- #define CtoX(c) (c*CharWidth + SideSpace)
- #define LtoY(l) (l*LineHeight + TopSpace)
-
- #define EDITID 1 /* ID of edit box, to identify for return values */
- #define MAXMEMONAME 15 /* Number of chars in memo name */
- #define MEMONAMECHARS (MAXMEMONAME+2)
- #define MAXVIEWS 10
- #define END_OF_BLOCK (-1)
- #define BLOCK_SIZE 1024
- /* RangeOffset gives the number of bytes from the beginning of
- * a Group structure to the first Range field, given the length
- * of the name entry.
- */
- #define RangeOffset(nlen) (((nlen+2)/2)*2 + sizeof(TypGroup))
-
- #ifdef WINMAIN
- #define DEF
- #else
- #define DEF extern
- #endif
-
- DEF TypDoc NetDoc;
-
- #define MRR_SCROLL_LINEUP 0
- #define MRR_SCROLL_LINEDOWN 1
- #define MRR_SCROLL_PAGEUP 2
- #define MRR_SCROLL_PAGEDOWN 3
-
-
- /* This structure maps between keystrokes and mouse events.
- * From an idea on p. 137 of Charles Petzold's book.
- * If you change the definition, be sure to update NUMKEYS.
- */
- #define NUMKEYS 4
- #ifndef MAC
- struct {
- WORD wVirtKey;
- int CtlState;
- int iMessage;
- WORD wRequest;
- } key2scroll[NUMKEYS]
- #ifdef WINMAIN
- =
- {VK_PRIOR, 0, WM_VSCROLL,SB_PAGEUP,
- VK_NEXT, 0, WM_VSCROLL,SB_PAGEDOWN,
- VK_UP, 1, WM_VSCROLL,SB_LINEUP,
- VK_DOWN, 1, WM_VSCROLL,SB_LINEDOWN
- }
- #endif
- ;
- #endif
-
- DEF BOOL Initializing;
- #define INIT_DONE 0
- #define INIT_READING_NEWSRC 1
- #define INIT_ESTAB_CONN 2
- #define INIT_SCANNING_NETDOC 3
- #define INIT_GETTING_LIST 4
-
- #define MAXGROUPWNDS 4
- #define MAXARTICLEWNDS 4
- #define MAXPOSTWNDS 4
- #define MAXMAILWNDS 4
-
- DEF TypDoc GroupDocs[MAXGROUPWNDS];
- DEF TypDoc ArticleDocs[MAXARTICLEWNDS];
- DEF TypDoc PostingDocs[MAXPOSTWNDS];
- DEF TypDoc MailDocs[MAXMAILWNDS];
- DEF HWND hWndPosts[MAXPOSTWNDS];
- DEF HWND hWndMails[MAXMAILWNDS];
- #ifndef MAC
- DEF HWND hWndPostEdits[MAXPOSTWNDS];
- DEF HWND hWndMailEdits[MAXMAILWNDS];
- #else
- DEF TEHandle TEHPosts[MAXPOSTWNDS];
- DEF TEHandle TEHCurrent;
- DEF ControlHandle vScroll;
- DEF int linesInFolder;
- #endif
-
- #define DOCTYPE_UNKNOWN 0
- #define DOCTYPE_NET 1
- #define DOCTYPE_GROUP 2
- #define DOCTYPE_ARTICLE 4
- #define DOCTYPE_POSTING 8
- #define DOCTYPE_MAIL 16
-
- /* Variables and constants for handling the FSA used to deal with */
- /* talking to the NNTP server. */
-
- DEF int CommState; /* current state in comm FSA */
- DEF BOOL CommBusy; /* =TRUE if comm line busy interacting w/ server */
- DEF TypDoc *CommDoc; /* Document currently receiving lines from server */
- DEF char CommLineIn[MAXCOMMLINE]; /* current input line being built by FSA */
- DEF char *CommLinePtr; /* pointer to next place to put char in CommLineIn */
- DEF char *CommLineLWAp1; /* if we get this far, we're at end of buffer */
- DEF char IgnoreCommCh; /* char to ignore when reading from server */
- DEF char EOLCommCh; /* char that indicates end of line upon input */
- DEF TypDoc *ActiveGroupDoc;
- DEF TypDoc *ActiveArticleDoc;
- DEF BOOL SaveNewsrc; /* =TRUE iff we write NEWSRC upon exit */
-
- #define MAXGROUPNAME 80
- DEF char CurrentGroup[MAXGROUPNAME]; /* name of group currently selected on server */
-
- DEF BOOL UsingSocket; /* =TRUE if using PC/TCP rather than serial I/O */
- #define MAXNNTPSIZE 40
- DEF char NNTPHost[MAXNNTPSIZE];
- DEF int NNTPPort;
-
- #define MAILLEN 48
- DEF char MailAddress[MAILLEN];
- DEF char UserName[MAILLEN];
- DEF char Organization[MAILLEN];
-
-
- /* States in the FSA that cracks input lines from the server. */
-
- #define ST_NONE 0
- #define ST_ESTABLISH_COMM 1
- #define ST_GROUP_RESP 2
- #define ST_XHDR_RESP 3
- #define ST_XHDR_SUBJ 4
- #define ST_IN_GROUP 5
- #define ST_ARTICLE_RESP 6
- #define ST_REC_ARTICLE 7
- #define ST_POST_WAIT_PERMISSION 8
- #define ST_POST_WAIT_END 9
- #define ST_GROUP_REJOIN 10
- #define ST_LIST_RESP 11
- #define ST_LIST_GROUPLINE 12
- #define ST_MAIL_WAIT_PERMISSION 13
- #define ST_MAIL_WAIT_END 14
- #define ST_XHDR_FROM_START 50
- #define ST_XHDR_FROM_DATA 51
- #define ST_XHDR_SUBJ_START 52
- #define ST_XHDR_SUBJ_DATA 53
- #define ST_XHDR_REF_START 54
- #define ST_XHDR_REF_DATA 55
- #define ST_XHDR_MID_START 56
- #define ST_XHDR_MID_DATA 57
- #define ST_XHDR_DATE_START 58
- #define ST_XHDR_DATE_DATA 59
- #define ST_XHDR_LINES_START 60
- #define ST_XHDR_LINES_DATA 61
-
-
- #define LFN_HELP "WINVN.HLP"
-
- /* variables used in an ad hoc attempt to optimize updating of windows by
- * the input cracking FSA.
- */
-
- #define UPDATE_TITLE_FREQ 10
- #define UPDATE_ART_FREQ 12
- #define MAX_IMMEDIATE_UPDATE 2
- DEF unsigned int RcvLineCount;
- DEF unsigned int TimesWndUpdated;
-
- DEF TypLineID NextLineID /* LineID to assign to next created line */
- #ifdef WINMAIN
- = 10664L
- #endif
- ;
-
- DEF HANDLE hInst;
- DEF HWND hWndConf; /* handle to NetDoc window */
- DEF HWND hWndSk;
- DEF HWND hDosWnd;
-
- #ifndef MAC
- HANDLE hAccel; /* handle to main accelerator table */
- MSG MainMsg; /* message returned from GetMessage */
-
- int CommDevice; /* comm device ID, if using serial I/O */
- #endif
-
-
- DEF char str[255]; /* general-purpose string buffer */
-
- #ifndef MAC
- HCURSOR hSaveCursor; /* handle to current cursor */
- HCURSOR hHourGlass; /* handle to hourglass cursor */
- #endif
-
- DEF int X, Y; /* last cursor position */
-
- #ifndef MAC
- POINT ptCursor; /* x and y coordinates of cursor */
-
- DCB DCBComm;
- #define MAXCOMMCHARS 40
- char szCommString[MAXCOMMCHARS]; /* string describing serial comm port */
- #endif
-
- DEF int xPos, yPos;
-
- DEF int ViewNew;
- DEF int NewArticleWindow;
- DEF int SelectAll;
- DEF int NViews;
- DEF int DoList;
-
- /* AskComm says whether to put up the communications dialog box
- * upon starting up. Options are never, always, and yes, because
- * this is the first time the program has been run.
- */
- #define ASK_COMM_NEVER 0
- #define ASK_COMM_ALWAYS 1
- #define ASK_COMM_INITIAL 2
- DEF int AskComm;
- DEF BOOL ArticleFixedFont;
-
- DEF unsigned int xScreen, yScreen;
- DEF HANDLE hFont; /* handle to font used in all windows except article */
- DEF HANDLE hFontArt; /* handle to font used in Article window. */
- DEF int FontSize;
- DEF int ArticleFontSize;
- DEF int FontBold;
- DEF char FontFace[32];
- DEF char ArticleFontFace[32];
-
- DEF int LineHeight,CharWidth; /* # of window units for current font */
- DEF int ArtLineHeight, ArtCharWidth; /* # of windows units for article font */
- DEF int TopSpace, SideSpace; /* # of window units to leave at top and side */
- /* of window (for aesthetic purposes) */
- DEF int StartPen; /* Similar to TopSpace; where to start pen 1st row */
-
- DEF DWORD OldTextColor, OldBkColor;
- DEF DWORD NetUnSubscribedColor; /* color to use for unsubscribed groups */
- DEF DWORD GroupSeenColor; /* color to use for articles that have been seen */
- DEF int ReverseVideo;
- DEF BOOL ThumbTrack;
- #ifdef MAC
- DEF RgnHandle BigClipRgn;
- DEF Rect myClipRect;
-
- DEF Handle netMenuBar,groupMenuBar,articleMenuBar,postMenuBar;
- DEF MenuHandle gAppleMenu;
- DEF MenuHandle gOptionsMenu;
- #endif
-
- #ifndef MAC
- FARPROC lpfnWinVnSaveArtDlg;
- FARPROC lpfnWinVnFindDlg;
- FARPROC lpfnWinVnSubjectDlg;
- FARPROC lpfnWinVnCommDlg;
- FARPROC lpfnWinVnAuthDlg;
- FARPROC lpfnWinVnDoListDlg;
- FARPROC lpfnWinVnPersonalInfoDlg;
- FARPROC lpfnWinVnMiscDlg;
- FARPROC lpfnWinVnAppearanceDlg;
- char *szAppName;
- char szAppProFile[80];
- #endif
-
- DEF BOOL Authorized;
-
- #define MAXFILENAME 60
- DEF char SaveArtFileName[MAXFILENAME];
- DEF char SubjectString[MAXSUBJECTSTRING];
- DEF int SaveArtvRef; /* volume ref num used only by Mac */
- DEF int SaveArtAppend;
-
- DEF TypDoc *PostDoc; /* Used to pass pointer to article being replied to. */
- DEF TypDoc *MailDoc;
- DEF TypDoc *FindDoc;
- DEF char *NewsgroupsPtr; /* Used to pass pointer to newsgroup of new posting. */
-
- /* For each new group detected, we create an entry in the following
- * array, NewGroupTable. Each entry contains a far pointer to a
- * dynamically-allocated global data structure containing:
- * -- Handle to this structure (so we can deallocate later).
- * -- A line containing information on this group, in the exact
- * same format as used in the NetDoc.
- */
- DEF void far * far * NewGroupTable; /* array of pointers to new group lines */
- DEF HANDLE hNewGroupTable; /* Handle to the above array */
- DEF int nNewGroups;
-
- #define ADD_SUBSCRIBED_END_OF_SUB 0
- #define ADD_SUBSCRIBED_TOP_OF_DOC 1
-
- #define LINE_FLAG_SET 0
-
- #define GROUP_ACTION_SUBSCRIBE 0
- #define GROUP_ACTION_UNSUBSCRIBE 1
-
- DEF int il,ic;
- DEF int irow;
- DEF int imemo;
- DEF int ih;
-
- #define MAXCOMMSPEEDCHARS 7
-
- DEF int CommPortID; /* IDD_COM1 or IDD_COM2 */
- DEF int CommParityID; /* IDD_7EVEN or IDD_8NONE */
- DEF char pszCommSpeed[MAXCOMMSPEEDCHARS]; /* character version of comm speed */
-
- DEF int idTimer; /* timer ID */
-
- #ifndef MAC
- #define IncPtr(ptr,byint) (char far *)ptr += byint
- #endif
-
- #include <string.h>
-
-
- /*--- Last line of WVGLOB.H -------------------------------------------- */
-