home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / e20313sr.zip / emacs / 20.3.1 / src / pmemacs.h < prev    next >
Text File  |  1999-07-31  |  13KB  |  540 lines

  1. /* pmemacs.h
  2.    Copyright (C) 1993-1996 Eberhard Mattes.
  3.  
  4. This file is part of GNU Emacs.
  5.  
  6. GNU Emacs is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU Emacs is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU Emacs; see the file COPYING.  If not, write to
  18. the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  19. Boston, MA 02111-1307, USA.  */
  20.  
  21.  
  22. #define DEFAULT_FONT "-*-Courier-medium-r-normal--*-100-*-*-m-*-cp850"
  23.  
  24. typedef struct
  25. {
  26.   int portion, whole, position;
  27. } slider;
  28.  
  29. /* Requests */
  30.  
  31. typedef enum
  32. {
  33.   PMR_CURSOR,                   /* Move the (visible) cursor */
  34.   PMR_GLYPHS,                   /* Display glyphs */
  35.   PMR_CLEAR,                    /* Clear a frame */
  36.   PMR_CLREOL,                   /* Clear to end of line */
  37.   PMR_BELL,                     /* Ring the bell */
  38.   PMR_CREATE,                   /* Create a frame */
  39.   PMR_DESTROY,                  /* Destroy a frame */
  40.   PMR_VISIBLE,                  /* Make frame visible or invisible */
  41.   PMR_NAME,                     /* Set frame name */
  42.   PMR_FOCUS,                    /* Set focus to frame */
  43.   PMR_ICONIFY,                  /* Turn window into an icon */
  44.   PMR_SIZE,                     /* Set size of frame  */
  45.   PMR_LINES,                    /* Insert or delete lines */
  46.   PMR_POPUPMENU,                /* Popup menu */
  47.   PMR_MODIFY,                   /* Modify parameters */
  48.   PMR_MOUSEPOS,                 /* Query mouse position */
  49.   PMR_PASTE,                    /* Get text from clipboard */
  50.   PMR_CUT,                      /* Copy text to clipboard */
  51.   PMR_MENUBAR,                  /* Set menubar */
  52.   PMR_QUITCHAR,                 /* Set the quit character */
  53.   PMR_CLOSE,                    /* Close connection */
  54.   PMR_RAISE,                    /* Raise frame */
  55.   PMR_LOWER,                    /* Lower frame */
  56.   PMR_FACE,                     /* Define a face */
  57.   PMR_FONTLIST,                 /* Get list of fonts */
  58.   PMR_TRACKMOUSE,               /* Turn on/off mouse tracking */
  59.   PMR_FRAMEPOS,                 /* Get position of frame window */
  60.   PMR_SETPOS,                   /* Set positition of frame window */
  61.   PMR_CONFIG,                   /* Get number of planes etc. */
  62.   PMR_DIALOG,                   /* Display dialog box */
  63.   PMR_DROP,                     /* Get name of dropped object */
  64.   PMR_INITIALIZE,               /* Initialization */
  65.   PMR_CPLIST,                   /* Get list of code pages */
  66.   PMR_CODEPAGE,                 /* Set the code page */
  67.   PMR_FILEDIALOG,               /* Show and process a file dialog */
  68.   PMR_CREATEDONE,               /* Frame creation finished */
  69.   PMR_CREATE_SCROLLBAR,         /* Create a scroll bar */
  70.   PMR_UPDATE_SCROLLBAR,         /* Update slider of a scroll bar */
  71.   PMR_MOVE_SCROLLBAR,           /* Move position of a scroll bar */
  72.   PMR_DESTROY_SCROLLBAR         /* Destroy a scroll bar */
  73. } pm_request_type;
  74.  
  75. typedef struct
  76. {
  77.   pm_request_type type;
  78.   unsigned long frame;
  79. } pmr_header;
  80.  
  81. typedef struct
  82. {
  83.   pmr_header header;
  84.   int height, width;
  85. } pmr_create;
  86.  
  87. typedef struct
  88. {
  89.   pmr_header header;
  90.   int x, y, on;
  91. } pmr_cursor;
  92.  
  93. typedef struct
  94. {
  95.   pmr_header header;
  96.   int count, x, y, face;
  97. } pmr_glyphs;
  98.  
  99. typedef struct
  100. {
  101.   pmr_header header;
  102.   int x0, x1, y;
  103. } pmr_clreol;
  104.  
  105. typedef struct
  106. {
  107.   pmr_header header;
  108.   int visible;
  109. } pmr_bell;
  110.  
  111. typedef struct
  112. {
  113.   pmr_header header;
  114.   int visible;
  115. } pmr_visible;
  116.  
  117. typedef struct
  118. {
  119.   pmr_header header;
  120.   int count;
  121. } pmr_name;
  122.  
  123. typedef struct
  124. {
  125.   pmr_header header;
  126.   int width, height;
  127. } pmr_size;
  128.  
  129. typedef struct
  130. {
  131.   pmr_header header;
  132.   int y, max_y;
  133.   int count;                    /* Insert this many lines if positive */
  134. } pmr_lines;
  135.  
  136. typedef struct
  137. {
  138.   pmr_header header;
  139.   int serial;                   /* Serial number for answer */
  140.   int button;
  141.   int align_top;
  142.   int x, y;
  143.   int count;
  144.   int size;                     /* Size of data to follow */
  145. } pmr_popupmenu;
  146.  
  147. typedef struct
  148. {
  149.   pmr_header header;
  150.   int serial;                   /* Serial number for answer */
  151. } pmr_mousepos;
  152.  
  153. typedef struct
  154. {
  155.   pmr_header header;
  156.   int serial;                   /* Serial number for answer */
  157.   int get_text;
  158. } pmr_paste;
  159.  
  160. typedef struct
  161. {
  162.   pmr_header header;
  163.   unsigned long size;           /* Size of data to follow */
  164. } pmr_cut;
  165.  
  166. typedef struct
  167. {
  168.   pmr_header header;
  169.   int entries;                  /* Number of pm_menu structures */
  170.   int size;                     /* Size of data to follow */
  171. } pmr_menubar;
  172.  
  173. typedef struct
  174. {
  175.   pmr_header header;
  176.   int quitchar;                 /* The quit character */
  177. } pmr_quitchar;
  178.  
  179. typedef struct
  180. {
  181.   pmr_header header;
  182.   int serial;                   /* Serial number for answer */
  183.   int foreground;               /* Foreground color */
  184.   int background;               /* Background color */
  185.   int name_length;              /* Length of font name to follow */
  186.   char underline;               /* Underline */
  187. } pmr_face;
  188.  
  189. typedef struct
  190. {
  191.   pmr_header header;
  192.   int serial;                   /* Serial number for answer */
  193.   int pattern_length;           /* Length of string to follow */
  194. } pmr_fontlist;
  195.  
  196. typedef struct
  197. {
  198.   pmr_header header;
  199.   int serial;                   /* Serial number for answer */
  200.   int count;
  201.   int size;                     /* Size of data to follow */
  202.   int cookie;                   /* Magic cookie */
  203. } pmr_menu;
  204.  
  205. typedef struct
  206. {
  207.   pmr_header header;
  208.   int flag;
  209. } pmr_track;
  210.  
  211. typedef struct
  212. {
  213.   pmr_header header;
  214.   int serial;                   /* Serial number for answer */
  215. } pmr_framepos;
  216.  
  217. typedef struct
  218. {
  219.   pmr_header header;
  220.   int top, top_base, left, left_base;
  221. } pmr_setpos;
  222.  
  223. typedef struct
  224. {
  225.   pmr_header header;
  226.   int serial;                   /* Serial number for answer */
  227. } pmr_config;
  228.  
  229. typedef struct
  230. {
  231.   pmr_header header;
  232.   int serial;                   /* Serial number for answer */
  233.   int buttons;
  234.   int count;
  235.   int size;                     /* Size of data to follow */
  236. } pmr_dialog;
  237.  
  238. typedef struct
  239. {
  240.   pmr_header header;
  241.   int serial;                   /* Serial number of answer */
  242.   int cookie;
  243. } pmr_drop;
  244.  
  245. typedef struct
  246. {
  247.   pmr_header header;
  248.   int codepage;
  249. } pmr_initialize;
  250.  
  251. typedef struct
  252. {
  253.   pmr_header header;
  254.   int serial;                   /* Serial number for answer */
  255. } pmr_cplist;
  256.  
  257. typedef struct
  258. {
  259.   pmr_header header;
  260.   int serial;                   /* Serial number of answer */
  261.   int codepage;
  262. } pmr_codepage;
  263.  
  264. typedef struct
  265. {
  266.   pmr_header header;
  267.   unsigned id;
  268.   slider s;
  269. } pmr_update_scrollbar;
  270.  
  271. typedef struct
  272. {
  273.   pmr_header header;
  274.   unsigned id;
  275.   int top, left, width, height;
  276. } pmr_move_scrollbar;
  277.  
  278. typedef struct
  279. {
  280.   pmr_header header;
  281.   unsigned id;
  282. } pmr_destroy_scrollbar;
  283.  
  284. typedef union
  285. {
  286.   pmr_header header;
  287.   pmr_create create;
  288.   pmr_cursor cursor;
  289.   pmr_glyphs glyphs;
  290.   pmr_clreol clreol;
  291.   pmr_bell bell;
  292.   pmr_visible visible;
  293.   pmr_name name;
  294.   pmr_size size;
  295.   pmr_lines lines;
  296.   pmr_popupmenu popupmenu;
  297.   pmr_mousepos mousepos;
  298.   pmr_paste paste;
  299.   pmr_cut cut;
  300.   pmr_menubar menubar;
  301.   pmr_quitchar quitchar;
  302.   pmr_face face;
  303.   pmr_fontlist fontlist;
  304.   pmr_menu menu;
  305.   pmr_track track;
  306.   pmr_framepos framepos;
  307.   pmr_setpos setpos;
  308.   pmr_config config;
  309.   pmr_dialog dialog;
  310.   pmr_drop drop;
  311.   pmr_initialize initialize;
  312.   pmr_cplist cplist;
  313.   pmr_codepage codepage;
  314.   pmr_update_scrollbar update_scrollbar;
  315.   pmr_move_scrollbar move_scrollbar;
  316.   pmr_destroy_scrollbar destroy_scrollbar;
  317. } pm_request;
  318.  
  319. /* Additional data for PMR_POPUPMENU and PMR_MENUBAR. */
  320.  
  321. typedef struct
  322. {
  323.   enum
  324.     {
  325.       PMMENU_END, PMMENU_PUSH, PMMENU_POP, PMMENU_ITEM,
  326.       PMMENU_SUB, PMMENU_TITLE, PMMENU_SEP, PMMENU_TOP
  327.     } type;
  328.   int item;
  329.   int str_offset;
  330.   int enable;
  331. } pm_menu;
  332.  
  333. /* Additional data for PMR_MODIFY */
  334.  
  335. #define CURSORTYPE_BOX          1
  336. #define CURSORTYPE_BAR          2
  337. #define CURSORTYPE_FRAME        3
  338. #define CURSORTYPE_UNDERLINE    4
  339. #define CURSORTYPE_HALFTONE     5
  340.  
  341. #define COLOR_NONE              (-99)
  342.  
  343. #define PMR_FALSE               1
  344. #define PMR_TRUE                2
  345.  
  346. #define SHORTCUT_SET            0x80000000
  347. #define SHORTCUT_ALT            0x00000001
  348. #define SHORTCUT_ALTGR          0x00000002
  349. #define SHORTCUT_F1             0x00000004
  350. #define SHORTCUT_F10            0x00000008
  351. #define SHORTCUT_ALT_F4         0x00000010
  352. #define SHORTCUT_ALT_F5         0x00000020
  353. #define SHORTCUT_ALT_F6         0x00000040
  354. #define SHORTCUT_ALT_F7         0x00000080
  355. #define SHORTCUT_ALT_F8         0x00000100
  356. #define SHORTCUT_ALT_F9         0x00000200
  357. #define SHORTCUT_ALT_F10        0x00000400
  358. #define SHORTCUT_ALT_F11        0x00000800
  359. #define SHORTCUT_ALT_SPACE      0x00001000
  360.  
  361. typedef struct
  362. {
  363.   int width, height;
  364.   int top, top_base, left, left_base;
  365.   int background_color;
  366.   int cursor_type, cursor_width, cursor_blink;
  367.   int alt_modifier, altgr_modifier;
  368.   unsigned shortcuts;
  369.   char buttons[3];
  370.   char default_font[100];
  371.   char menu_font[60];           /* see also pmemacs.c */
  372.   int menu_font_set;
  373.   int sb_width;
  374.   int var_width_fonts;
  375. } pm_modify;
  376.  
  377. /* Additional data for PMR_FILEDIALOG */
  378.  
  379. typedef struct
  380. {
  381.   int serial;
  382.   int save_as;
  383.   int must_match;
  384.   char title[80];
  385.   char ok_button[40];
  386.   char dir[260];                /* CCHMAXPATH */
  387.   char defalt[260];             /* CCHMAXPATH */
  388. } pm_filedialog;
  389.  
  390. /* Additional data for PMR_CREATE_SCROLLBAR */
  391.  
  392. typedef struct
  393. {
  394.   pmr_header header;
  395.   int top, left, width, height;
  396.   int serial;
  397.   slider s;
  398. } pm_create_scrollbar;
  399.  
  400.  
  401. /* Events */
  402.  
  403. typedef enum
  404. {
  405.   PME_PAINT,                    /* Repaint a frame */
  406.   PME_KEY,                      /* Key pressed */
  407.   PME_BUTTON,                   /* Mouse button */
  408.   PME_SIZE,                     /* Size of frame changed */
  409.   PME_RESTORE,                  /* Frame window restored  */
  410.   PME_MENUBAR,                  /* Menubar selection */
  411.   PME_MOUSEMOVE,                /* Mouse moved */
  412.   PME_MINIMIZE,                 /* Frame window minimized */
  413.   PME_FRAMEMOVE,                /* Frame window moved */
  414.   PME_SCROLLBAR,                /* Scrollbar event occured */
  415.   PME_WINDOWDELETE,             /* Close a window */
  416.   PME_ANSWER                    /* Answer for a request */
  417. } pm_event_type;
  418.  
  419. typedef enum
  420. {
  421.   PMK_ASCII,
  422.   PMK_VIRTUAL
  423. } pm_key_type;
  424.  
  425. typedef struct
  426. {
  427.   pm_event_type type;
  428.   unsigned long frame;
  429. } pme_header;
  430.  
  431. typedef struct
  432. {
  433.   pme_header header;
  434.   int x0, x1, y0, y1;
  435. } pme_paint;
  436.  
  437. typedef struct
  438. {
  439.   pme_header header;
  440.   pm_key_type type;
  441.   int code, modifiers;
  442. } pme_key;
  443.  
  444. typedef struct
  445. {
  446.   pme_header header;
  447.   int width, height;
  448.   int pix_width, pix_height;
  449. } pme_size;
  450.  
  451. typedef struct
  452. {
  453.   pme_header header;
  454.   int button, modifiers, x, y;
  455.   unsigned long timestamp;
  456. } pme_button;
  457.  
  458. typedef struct
  459. {
  460.   pme_header header;
  461.   int number;
  462. } pme_menubar;
  463.  
  464. typedef struct
  465. {
  466.   pme_header header;
  467.   int x, y;
  468. } pme_mouse;
  469.  
  470. typedef struct
  471. {
  472.   pme_header header;
  473.   int top, left;
  474. } pme_framemove;
  475.  
  476. typedef struct
  477. {
  478.   pme_header header;
  479.   unsigned id;
  480.   int button, modifiers, part, x, y;
  481.   unsigned long timestamp;
  482. } pme_scrollbar;
  483.  
  484. typedef struct
  485. {
  486.   pme_header header;
  487.   int serial, size, one_word;
  488. } pme_answer;
  489.  
  490. typedef union
  491. {
  492.   pme_header header;
  493.   pme_paint paint;
  494.   pme_key key;
  495.   pme_size size;
  496.   pme_button button;
  497.   pme_menubar menubar;
  498.   pme_mouse mouse;
  499.   pme_framemove framemove;
  500.   pme_scrollbar scrollbar;
  501.   pme_answer answer;
  502. } pm_event;
  503.  
  504.  
  505. /* Answers */
  506.  
  507. typedef struct
  508. {
  509.   unsigned long frame;
  510.   int x, y;
  511. } pmd_mousepos;
  512.  
  513. typedef struct
  514. {
  515.   int count;
  516. } pmd_fontlist;
  517.  
  518. typedef struct
  519. {
  520.   int top, left;
  521.   int pix_width, pix_height;
  522. } pmd_framepos;
  523.  
  524. typedef struct
  525. {
  526.   int planes;
  527.   int color_cells;
  528.   int width;
  529.   int height;
  530.   int width_mm;
  531.   int height_mm;
  532. } pmd_config;
  533.  
  534. #define SB_INVALID_ID   ((unsigned)(-1))
  535.  
  536. typedef struct
  537. {
  538.   unsigned id;
  539. } pmd_create_scrollbar;
  540.