home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sd386v50.zip / sd386src.zip / WINDOW.H < prev    next >
C/C++ Source or Header  |  1995-11-22  |  5KB  |  180 lines

  1. /*Data structures for supporting multiple windows.*/
  2.  
  3. struct _WINDOW;
  4. typedef struct _WINDOW WINDOW;
  5. typedef struct _WINDOW FRAMEWINDOW;
  6. #define MAX_CHILDREN 10
  7. #define WINDOW_MARKER "SD386 Window Data Structure"
  8.  
  9. /*Define known WINDOW classes.*/
  10. #define TEXT_WINDOW               1
  11. #define SCROLLBAR_WINDOW          2
  12. #define SCROLLUPARROW             3
  13. #define SCROLLDNARROW             4
  14. #define SCROLLSLIDER              5
  15. #define STRING_WINDOW             6
  16. #define PUTRC_TABLE_WINDOW        7
  17. #define BUTTON_WINDOW             8
  18. #define DATA_WINDOW               9
  19.  
  20. #define FRAME_WINDOW            100
  21. #define FRAMEUL_WINDOW          101
  22. #define FRAMEUR_WINDOW          103
  23. #define FRAMELL_WINDOW          104
  24. #define FRAMELR_WINDOW          105
  25. #define FRAMETOP_WINDOW         106
  26. #define FRAMEBOT_WINDOW         107
  27. #define FRAMELEFT_WINDOW        108
  28. #define FRAMERIGHT_WINDOW       109
  29. #define FRAMEMOVER_WINDOW       110
  30. #define FRAMETITLE_WINDOW       111
  31.  
  32. #define REGISTER_WINDOW         200
  33. #define COREGISTER_WINDOW       201
  34.  
  35. //Ordinal numbers for Frame Children
  36. #define FRAMEUL_CHILD              0
  37. #define FRAMEUR_CHILD              1
  38. #define FRAMELL_CHILD              2
  39. #define FRAMELR_CHILD              3
  40. #define FRAMETOP_CHILD             4
  41. #define FRAMEBOT_CHILD             5
  42. #define FRAMELEFT_CHILD            6
  43. #define FRAMERIGHT_CHILD           7
  44. #define FRAMEMOVER_CHILD           0 //Children of frame top
  45. #define FRAMETITLE_CHILD           1 //Children of frame top
  46.  
  47. #define VIEW_NORMAL      0
  48. #define VIEW_SHOW        1
  49. #define VIEW_DONT_SHOW   2
  50. typedef struct {
  51.     int    rc;
  52.     WINDOW *Window;
  53.     PEVENT Event;
  54.     int    func;
  55.     int    iview; /*Used to indicate whether output is written to screen.*/
  56.                   /*putrc tests. iview=0=> normal;iview=1=>write; iview=2=>dont't write*/
  57. } WINDOWEVENT;
  58.  
  59.  
  60. struct _WINDOW {
  61.      char    *marker;
  62.      WINDOW *self;  /*This is used to guarantee that we are looking at a window.*/
  63.      WINDOW *parent;
  64.      int row;
  65.      int height;
  66.      int col, width;
  67.      int num_children;
  68.      WINDOW *children[MAX_CHILDREN];
  69.      int itype;
  70.      int is_active;
  71.      uchar attrib;
  72.      char *title, *heading;
  73.      WINDOWEVENT *(*eventhandler)(WINDOWEVENT *);
  74.      WINDOW  *(*painter)(WINDOW *);
  75.      void *user_data;
  76.  
  77.  };
  78.  
  79. typedef struct {
  80.         int topLine;
  81.         int linesPer;
  82.         int videoCols;
  83.         int videoWidth;
  84.         int colStart;
  85.         int rowStart;
  86.         int reg_Display;
  87.         int asmRows;
  88.         int asmTop;
  89.         int vioStartOffSet;
  90.         int iview;
  91.         uchar boundPtr[1000];
  92. } VioContext;
  93.  
  94. #define NUM_WINDOWS        9
  95. #define MIN_MSH_LINES      0
  96. #define START_MSH_LINES    5
  97. #define SOURCE_SAVE_WIN    0
  98. #define SOURCE_WIN         3
  99. #define MSHPROMPT_WIN      2
  100. #define MSHCOMMAND_WIN     5
  101. #define MSHDATA_WIN        1
  102. #define DIVIDER_WIN        4
  103. #define REGISTER_WIN       6
  104. #define COREGISTER_WIN     7
  105. #define DATA_WIN           8
  106. #define MSHCOMMANDPROMPT "MSH Command "
  107.  
  108. extern uchar    ScrollShade1[];         /* attribute string for scroll bar.  */
  109. extern uchar    ScrollShade2[];         /* attribute string for scroll bar.  */
  110.  
  111. WINDOW *GetEventWindow(WINDOW *w) ;
  112. AFILE *ResetWindow(WINDOW *w);
  113. void PaintWindow(WINDOW *w);
  114. void LowerWindow(WINDOW *w);
  115. void RaiseWindow(WINDOW *w);
  116. void ScrollWindow(WINDOW *w, int line);
  117. void ResetScrollbar(WINDOW *parent);
  118. WINDOW *CreateScrollbar(WINDOW *parent);
  119.  
  120. FRAMEWINDOW *CreateFrame(WINDOW *parent, char *heading);
  121. void ResizeFrame(FRAMEWINDOW *w,int row, int col, int height, int width);
  122.  
  123.  
  124. WINDOW *CreateDivider(WINDOW *parent,char *title,
  125.                       char **buttons,
  126.                       WINDOWEVENT *(*buttonfns[])(WINDOWEVENT *windowevent)
  127.                       );
  128. void SetDivider(int row);
  129.  
  130. WINDOW *PaintScrollbar(WINDOW *w);
  131. WINDOW *PaintFrame(WINDOW *w);
  132. WINDOW *PaintData(WINDOW *w);
  133.  
  134. WINDOWEVENT *SourceHandler(WINDOWEVENT *windowevent);
  135. WINDOWEVENT *MSHLOGHandler(WINDOWEVENT *windowevent);
  136. WINDOWEVENT *ScrollHandler(WINDOWEVENT *windowevent);
  137. WINDOWEVENT *TextHandler  (WINDOWEVENT *windowevent);
  138. WINDOWEVENT *DividerHandler  (WINDOWEVENT *windowevent);
  139. WINDOWEVENT *FrameHandler  (WINDOWEVENT *windowevent);
  140. WINDOWEVENT *DataHandler  (WINDOWEVENT *windowevent);
  141.  
  142. WINDOW *CreateWindow(WINDOW *parent, char *title);
  143. WINDOW *GetScrollbar(WINDOW *w);
  144. WINDOW *GetSlider(WINDOW *scrollbar);
  145. WINDOW *GetUpArrow(WINDOW *scrollbar);
  146. WINDOW *GetDnArrow(WINDOW *scrollbar);
  147. WINDOW *GetTextParent(WINDOW *w);
  148. WINDOW *GetTextOrData(WINDOW *w);
  149.  
  150. extern WINDOW *root, *Window[NUM_WINDOWS], *framemsh, *framesrc;
  151.  
  152. WINDOW *focuswin;
  153. void SetFocusWin(WINDOW *win);
  154. void PutCsrWin(WINDOW *win);
  155. void DoVscr(WINDOW *w, int amt);
  156. void DoVcsr(WINDOW *w, int amt);
  157. void FmtTxt(WINDOW *w);
  158. void fmtstr(char *str,uchar attrib, WINDOW *w);
  159. extern USHORT ColStart, RowStart;
  160.  
  161.  
  162. uint GetWtime(uchar *filename);
  163.  
  164. void showvRegs(WINDOW *window);
  165. void showCoRegs(WINDOW *window);
  166.  
  167. typedef struct
  168.     { char *videoBuffer; int vlen; }
  169. VideoBuffer;
  170.  
  171. VideoBuffer *SaveVideoBuffer(void);
  172.  
  173. SEL RestoreVideoBuffer(VideoBuffer *videoBuffer);
  174.  
  175. VioContext *SaveVioContext(VioContext *vioContext);
  176. void *RestoreVioContext(VioContext *vioContext) ;
  177. extern VioContext MainVioContext;
  178. extern int iview;
  179. extern uint   VideoWidth;
  180.