home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / epmcsamp.zip / EPMCSAMP / INCLUDE / EDLL.H < prev    next >
C/C++ Source or Header  |  1995-09-30  |  32KB  |  630 lines

  1. /*═══════════════════════════════════════════════════════════════════════════╗
  2. ║ What's it called : EDLL.H                                                  ║
  3. ║                                                                            ║
  4. ║ What does it do  : Defines function prototypes of entry functions to E.DLL ║
  5. ║                    Defines E window information and structures.            ║
  6. ║                                                                            ║
  7. ║ Who and when     : Gennaro (Jerry) Cuomo                          9-88     ║
  8. ║                    John Ponzo                                              ║
  9. ╚═══════════════════════════════════════════════════════════════════════════*/
  10. #ifndef EDLLINCLUDE_INCLUDED
  11.    #define EDLLINCLUDE_INCLUDED
  12.    /*═══════════════════════════════════════════════════════════════════════════╗
  13.    ║ Include os2.h from the IBM OS/2 1.3 Programmer's Toolkit.  We do this to   ║
  14.    ║ pick up the definitions in os2def.h.  If you don't have this toolkit you   ║
  15.    ║ can probably figure out what the definitions are.  Most of them have names ║
  16.    ║ that are indicative of their definition. (jlc 92/4/28)                     ║
  17.    ╚═══════════════════════════════════════════════════════════════════════════*/
  18.    #ifndef OS2_INCLUDED
  19.       #include <os2.h>
  20.    #endif
  21.  
  22.  
  23.  
  24.    #undef MOVE_DTM_OUT_OF_FILEWNDPROC  // Move Direct Text Manipulation func ...
  25.    #define ACW_PRINT
  26.  
  27.    #include <etktypes.h>
  28.    #include <print.h>
  29.  
  30.    /*═══════════════════════════════════════════════════════════════════════════╗
  31.    ║ EPM version Length String.                                         GC 7-88 ║
  32.    ╚═══════════════════════════════════════════════════════════════════════════*/
  33.  
  34.  
  35.    #define MAXFILENAME 260
  36.  
  37.    /*═══════════════════════════════════════════════════════════════════════════╗
  38.    ║ EPM related Window Messages                                        GC 7-88 ║
  39.    ╚═══════════════════════════════════════════════════════════════════════════*/
  40.    #define EPM_EDIT_MSGID          WM_USER        +  0x500   // This evaluates to EPM_EDIT_MSGID = 5376
  41.    #define EPM_EDIT_COMMAND        EPM_EDIT_MSGID +  1       // Submit command to editor
  42.    #define EPM_EDIT_RETCODE        EPM_EDIT_MSGID +  2       // to owner: notify of errors/warnings
  43.    #define EPM_EDIT_SAYERROR       EPM_EDIT_MSGID +  3       //
  44.    #define EPM_EDIT_CURSORMOVE     EPM_EDIT_MSGID +  4       // to owner: cursor may have moved
  45.    #define EPM_EDIT_ACTIVEHWND     EPM_EDIT_MSGID +  6       // to owner: edit window received WM_ACTIVATE
  46.    #define EPM_EDIT_OPTION         EPM_EDIT_MSGID +  7       // query value of xxxx
  47.    #define EPM_EDIT_ID             EPM_EDIT_MSGID +  8       // query application/window id
  48.    #define EPM_EDIT_SHOW           EPM_EDIT_MSGID +  9       // show/repaint window
  49.    #define EPM_EDIT_NEWFILE        EPM_EDIT_MSGID +  10      // eres: ???
  50.    #define EPM_EDIT_DESTROYNOTIFY  EPM_EDIT_MSGID +  11
  51.    #define EPM_EDIT_CONTROLTOGGLE  EPM_EDIT_MSGID +  12
  52.    #define EPM_EDIT_MOUSEMGR       EPM_EDIT_MSGID +  13      // for subclass: mouse event recognized
  53.    #define EPM_EDIT_RECORDKEY      EPM_EDIT_MSGID +  14
  54.    #define EPM_EDIT_PLAYKEY        EPM_EDIT_MSGID +  15
  55.    #define EPM_EDIT_ENDRECORDKEY   EPM_EDIT_MSGID +  16
  56.    #define EPM_EDIT_QUERYRECORDKEY EPM_EDIT_MSGID +  17
  57.    #define EPM_EDIT_CHAR           EPM_EDIT_MSGID +  18      // internal
  58.    #define EPM_EDIT_CLOSE          EPM_EDIT_MSGID +  19
  59.    #define EPM_EDIT_DESTROYRC      EPM_EDIT_MSGID +  20
  60.    #define EPM_EDIT_HELPNOTIFY     EPM_EDIT_MSGID +  21
  61.    #define EPM_EDIT_ASKTOQUIT      EPM_EDIT_MSGID +  22
  62.    #define EPM_EDIT_ASKTOCLOSE     EPM_EDIT_MSGID +  23
  63.    #define EPM_EDIT_ASKTODONE      EPM_EDIT_MSGID +  24
  64.    #define EPM_EDIT_ASKTOFAILED    EPM_EDIT_MSGID +  25
  65.  
  66.    #define EPM_EDIT_UPDATE_EDITLIST_ITEM EPM_EDIT_MSGID + 26
  67.    #define EPM_EDIT_DOC2WIN              EPM_EDIT_MSGID + 27
  68.    #define EPM_EDIT_WIN2DOC              EPM_EDIT_MSGID + 28
  69.    #define EPM_EDIT_MINMAXFRAME          EPM_EDIT_MSGID + 29
  70.    #define EPM_EDIT_EXEC_PROC            EPM_EDIT_MSGID + 30
  71.    #define EPM_EDIT_EXEC_DYNALINK        EPM_EDIT_MSGID + 31
  72.    #define EPM_EDIT_TURN_OFF_HIGHLIGHT   EPM_EDIT_MSGID + 32
  73.    #define EPM_EDIT_SETTIMER             EPM_EDIT_MSGID + 33
  74.    #define EPM_EDIT_POSTEDMSG1           EPM_EDIT_MSGID + 34
  75.    #define EPM_EDIT_POSTEDMSG2           EPM_EDIT_MSGID + 35
  76.    #define EPM_EDIT_POSTEDMSG3           EPM_EDIT_MSGID + 36  // future use
  77.    #define EPM_EDIT_POSTDONE             EPM_EDIT_MSGID + 37
  78.    #define EPM_EDIT_COMMAND2             EPM_EDIT_MSGID + 38
  79.    #define EPM_EDIT_GETMEM               EPM_EDIT_MSGID + 39
  80.    #define EPM_EDIT_VERSION              EPM_EDIT_MSGID + 40
  81.    #define EPM_EDIT_MEMNOTIFY            EPM_EDIT_MSGID + 41
  82.    #define EPM_EDIT_EXEC_DYNALINK2       EPM_EDIT_MSGID + 42
  83.  
  84.    #define EPM_EXTRAWINDOW_REFRESH       EPM_EDIT_MSGID + 50
  85.    #define EPM_EDIT_GETPROFILE           EPM_EDIT_MSGID + 51
  86.    #define EPM_EDIT_ACTIVATEFILEID       EPM_EDIT_MSGID + 52
  87.    #define EPM_EDIT_QUERY_HELP_INSTANCE  EPM_EDIT_MSGID + 53
  88.    #define EPM_FRAME_STATUSLINE          EPM_EDIT_MSGID + 55
  89.    #define EPM_FRAME_MESSAGELINE         EPM_EDIT_MSGID + 56
  90.    #define EPM_DRAGDROP_DIRECTTEXTMANIP  EPM_EDIT_MSGID + 58
  91.    #define EPM_EDIT_WINDOWCREATED        EPM_EDIT_MSGID + 59
  92.    #define EPM_CREATE_DDE_LINK           EPM_EDIT_MSGID + 60
  93.    #define EPM_DRAGDROP_DRAGTARGET       EPM_EDIT_MSGID + 61
  94.    #define EPM_PRINT_RENDERPAGE          EPM_EDIT_MSGID + 62
  95.    #define EPM_PRINT_RENDERPAGERC        EPM_EDIT_MSGID + 63
  96.    #define EPM_QHELP_TABLE               EPM_EDIT_MSGID + 64
  97.    #define EPM_EDIT_CLIPBOARDCOPY        EPM_EDIT_MSGID + 65
  98.    #define EPM_EDIT_CLIPBOARDPASTE       EPM_EDIT_MSGID + 66
  99.    #define EPM_BROADCASTHELP             EPM_EDIT_MSGID + 67
  100.    #define EPM_GET_ERROR_MESSAGE         EPM_EDIT_MSGID + 68
  101.    #define EPM_SEND_MACROS_ERRORS        EPM_EDIT_MSGID + 69
  102.    #define EPM_QUERY_GLOBDATA            EPM_EDIT_MSGID + 70
  103.    #define EPM_IS_HELP_LOADED            EPM_EDIT_MSGID + 71
  104.    #define EPM_EDIT_TASKLIST             EPM_EDIT_MSGID + 72
  105.    #define EPM_EDIT_DELETEFILE           EPM_EDIT_MSGID + 73
  106.    #define EPM_DRAGDROP_RENDERCOMPLETE   EPM_EDIT_MSGID + 74
  107.    #define EPM_EDIT_INIT                 EPM_EDIT_MSGID + 75
  108.    #define EPM_HELP_LOADED               EPM_EDIT_MSGID + 76
  109.    #define EFRAME_STYLE_CHANGE           EPM_EDIT_MSGID + 77
  110.    #define EPM_EDIT_DEFAULTDTBITMAP      EPM_EDIT_MSGID + 78
  111.    #define EPM_FRAME_SETMSGLINE          EPM_EDIT_MSGID + 94
  112.    #define EPM_EDIT_EIQMSG               EPM_EDIT_MSGID + 95
  113.    #define EPM_EDIT_QUERYFILEINFO        EPM_EDIT_MSGID + 96
  114.    #define EPM_EDIT_QUERYSTATUSINFO      EPM_EDIT_MSGID + 97
  115.    #define EPM_EDIT_REQUESTDESTROY       EPM_EDIT_MSGID + 101
  116.    #define EPM_EDIT_DDE_POST_MSG         EPM_EDIT_MSGID + 102
  117.    #define EPM_EDIT_ROUNDTRIPMSG         EPM_EDIT_MSGID + 103
  118.    #define EPM_FRAME_UPDATESTATUSWND     EPM_EDIT_MSGID + 104
  119.    #define EPM_FRAME_ENABLERINGBUTTONS   EPM_EDIT_MSGID + 105
  120.    #define EPM_FRAME_TITLETEXTCHANGE     EPM_EDIT_MSGID + 106
  121.    #define EPM_QUERYHINI                 EPM_EDIT_MSGID + 107
  122.    #define EPM_EDIT_SHOWWINDOW           EPM_EDIT_MSGID + 108
  123.    #define EPM_FRAME_DELETEMSGLINE       EPM_EDIT_MSGID + 109
  124.    #define EPM_FREEFILEARRAY             EPM_EDIT_MSGID + 110
  125.    #define EPM_EDIT_NEWFILES             EPM_EDIT_MSGID + 111
  126.    #define EPM_EDIT_WHOLE_REPAINT_NEXT   EPM_EDIT_MSGID + 112
  127.    #define EPM_EDIT_HSBM_SETTHUMBSIZE    EPM_EDIT_MSGID + 113
  128.    #define EPM_EDIT_HSBM_SETPOS          EPM_EDIT_MSGID + 114
  129.    #define EPM_EDIT_HSBM_RESERVED1       EPM_EDIT_MSGID + 115
  130.    #define EPM_EDIT_VSBM_SETTHUMBSIZE    EPM_EDIT_MSGID + 116
  131.    #define EPM_EDIT_VSBM_SETPOS          EPM_EDIT_MSGID + 117
  132.    #define EPM_EDIT_VSBM_RESERVED1       EPM_EDIT_MSGID + 118
  133.    #define EPM_EDIT_LOGERROR             EPM_EDIT_MSGID + 119
  134.    #define EPM_EDIT_LOGAPPEND            EPM_EDIT_MSGID + 120
  135.    #define EPM_EDIT_SETDTCOLOR           EPM_EDIT_MSGID + 121
  136.    #define EPM_EDIT_SETDTBITMAP          EPM_EDIT_MSGID + 122
  137.    #define EPM_EDIT_SETDTBITMAPFROMFILE  EPM_EDIT_MSGID + 123
  138.    #define EPM_EDIT_QUERYHINI            EPM_EDIT_MSGID + 124
  139.    #define EPM_EDIT_ENDWFDDE             EPM_EDIT_MSGID + 125
  140. #define LPCOMMENTS
  141. #ifdef LPCOMMENTS
  142.    #define EPM_EDIT_TOGGLEPARSE          EPM_EDIT_MSGID + 126
  143.    #define EPM_EDIT_LOADKEYWORDS         EPM_EDIT_MSGID + 127
  144.    #define EPM_EDIT_KW_LOADED            EPM_EDIT_MSGID + 128
  145.    #define EPM_EDIT_KW_QUERYPARSE        EPM_EDIT_MSGID + 129
  146. #endif // LPCOMMENTS
  147.    #define EPM_EDIT_SETTOFSTYLE          EPM_EDIT_MSGID + 130
  148.    #define EPM_EDIT_STOREKEYS            EPM_EDIT_MSGID + 131
  149.    #define EPM_EDIT_RELEASEKEYS          EPM_EDIT_MSGID + 132
  150.    #define EPM_EDIT_STOP_STOREKEYS       EPM_EDIT_MSGID + 133
  151.    #define EPM_EDIT_QWPSHANDLE           EPM_EDIT_MSGID + 134
  152.    #define EPM_EDIT_TOTASKLIST           EPM_EDIT_MSGID + 135
  153.    #define EPM_EDIT_FORCE_DEFSELECT      EPM_EDIT_MSGID + 136
  154.    #define EPM_EDIT_MOVED_TO_LINE0       EPM_EDIT_MSGID + 137
  155.  
  156.    // Return codes sent by the EPM_EDIT_DESTROYRC message
  157.    #define EPM_RC_DESTROYOK       0
  158.    #define EPM_RC_DESTROYTIMEOUT  1
  159.    #define EPM_RC_DESTROYCANCEL   2
  160.    #define EPM_RC_DESTROYNOFREE   3
  161.  
  162.    // Return codes sent by the EPM_EDIT_ASKTOQUITDONE message
  163.    #define ERES_CANCEL             0
  164.    #define ERES_DISCARD            1
  165.    #define ERES_SAVE               2
  166.  
  167.    /*═══════════════════════════════════════════════════════════════════════════╗
  168.    ║ Editor Styles                                                      GC 7-88 ║
  169.    ╚═══════════════════════════════════════════════════════════════════════════*/
  170.    #define EDIT_STYLE_BROWSE               0x00000001L
  171.    #define EDIT_STYLE_ACTIVATEFOCUS        0x00000004L
  172.    #define EDIT_STYLE_MOVECURSORACTIVATE   0x00000080L
  173.    #define EDIT_STYLE_CURSORON             0x00001000L
  174.    #define EDIT_STYLE_STREAMEDIT           0x00100000L
  175.    #define EDIT_STYLE_CUAMARKING           0x00200000L
  176.    #define EDIT_STYLE_USEDEFAULTARROWKEYS  0x00800000L
  177.    #define EDIT_STYLE_COMMANDMSGTOMACROS   0x01000000L
  178.    #define EDIT_STYLE_DISPLAYERRORRETRY    0x02000000L
  179.    #define EDIT_STYLE_ASYNC                0x08000000L
  180.  
  181.    /*═══════════════════════════════════════════════════════════════════════════╗
  182.    ║ Editor Command Message Parameter Styles (mp2 of EPM_EDIT_COMMAND)  GC 7-88 ║
  183.    ╚═══════════════════════════════════════════════════════════════════════════*/
  184.    #define COMMAND_FREESEL    0x00000001L
  185.    #define COMMAND_SYNC       0x00000004L
  186.    #define COMMAND_GETABLE    0x00000008L
  187.  
  188.    /*═══════════════════════════════════════════════════════════════════════════╗
  189.    ║ Editor Options (Used with EPM_EDIT_OPTION message)                 GC 7-88 ║
  190.    ╚═══════════════════════════════════════════════════════════════════════════*/
  191.    #define OPTIONS_MARGINS          1
  192.    #define OPTIONS_LINE             2
  193.    #define OPTIONS_COLUMN           3
  194.    #define OPTIONS_INSERT           4
  195.    #define OPTIONS_AUTOSAVE         5
  196.    #define OPTIONS_NTABS            6
  197.    #define OPTIONS_NROWS            7
  198.    #define OPTIONS_NCOLS            8
  199.    #define OPTIONS_MODIFY           9
  200.    #define OPTIONS_TAB              10
  201.    #define OPTIONS_SEARCH           11
  202.    #define OPTIONS_GETTEXT          12
  203.    #define OPTIONS_NAME             13
  204.    #define OPTIONS_HWNDEXTRA        14
  205.    #define OPTIONS_HWNDEIOBJECT     15
  206.    #define OPTIONS_TEXTCOLOR        16
  207.    #define OPTIONS_RING             17
  208.    #define OPTIONS_FILEID           18
  209.    #define OPTIONS_QSELECTION       19
  210.  
  211.  
  212.    //     In EPM the field variables are:
  213.    //
  214.    #define  AUTOSAVE_FIELD                      0L
  215.    #define  COL_FIELD                           1L
  216.    #define  CURSORX_FIELD                       2L
  217.    #define  CURSORY_FIELD                       3L
  218.    #define  KEYSET_FIELD                        4L
  219.    #define  LAST_FIELD                          5L
  220.    #define  LINE_FIELD                          6L
  221.    #define  MARGINS_FIELD                       7L
  222.    #define  MARKCOLOR_FIELD                     8L
  223.    #define  MODIFY_FIELD                        9L
  224.    //#define  STATUSCOLOR_FIELD                  10L
  225.    #define  TABS_FIELD                         11L
  226.    #define  WINDOWHEIGHT_FIELD                 12L
  227.    #define  WINDOWWIDTH_FIELD                  13L
  228.    #define  WINDOWX_FIELD                      14L
  229.    #define  WINDOWY_FIELD                      15L
  230.    #define  FILENAME_FIELD                     16L
  231.    #define  USERSTRING_FIELD                   17L
  232.    #define  MOUSEX_FIELD                       18L
  233.    #define  MOUSEY_FIELD                       19L
  234.    #define  TEXTCOLOR_FIELD                    20L
  235.    #define  VISIBLE_FIELD                      21L
  236.    //#define  MESSAGECOLOR_FIELD                 22L
  237.    #define  DRAGCOLOR_FIELD                    23L
  238.    #define  DRAGSTYLE_FIELD                    24L
  239.    #define  FONTWIDTH_FIELD                    25L
  240.    #define  FONTHEIGHT_FIELD                   26L
  241.    //#define  MESSAGELINE_FIELD                  27L
  242.    //#define  STATUSLINE_FIELD                   28L
  243.    #define  LOCKHANDLE_FIELD                   29L
  244.    //#define  DRAGTHRESHHOLDX_FIELD              30L
  245.    //#define  DRAGTHRESHHOLDY_FIELD              31L
  246.    #define  EA_AREA_FIELD                      32L
  247.    #define  ATTRIBUTE_SUPPORT_LEVEL            33L
  248.    #define  CURSOR_OFFSET                      34L
  249.    //#define  TABMODE_FIELD                      35L
  250.    #define  AUTOSHELL_FIELD                    35L
  251.    #define  TITLETEXT_FIELD                    36L
  252.    #define  CURSOR_COLUMN                      37L
  253.    #define  FONT_FIELD                         38L
  254.    #define  SCROLLX_FIELD                      39L
  255.    #define  SCROLLY_FIELD                      40L
  256.    #define  CURSORYG_FIELD                     41L
  257.    #define  LINEG_FIELD                        42L
  258.    #define  WINDOWWIDTHG_FIELD                 43L
  259.    #define  WINDOWHEIGHTG_FIELD                44L
  260.    #define  READONLY_FIELD                     45L
  261.    #define  CODEPAGE_FIELD                     46L
  262.    #define  JUMPSCROLLHORZ_FIELD               47L
  263.    #define  JUMPSCROLLVERT_FIELD               48L
  264.    #define  KLUDGE1_FIELD                      49L
  265.    #define  TOFMARKER_FIELD                    50L
  266.    #define  BOFMARKER_FIELD                    51L
  267.    //#define  PRESENTATIONPROC_FIELD             52L
  268.    #define  EOF_FIELD                          53L
  269.    #define  REPKEY_CUTOFF_FIELD                54L
  270.    #define  NEXTVIEW_IN_RING_FIELD             55L
  271.    #define  PREVVIEW_IN_RING_FIELD             56L
  272.    #define  NEXTVIEW_OF_FILE_FIELD             57L
  273.    #define TYPINGCLASS1_FIELD                  58L
  274.    #define TYPINGCLASS2_FIELD                  59L
  275.    #define TYPINGCLASSVAL1_FIELD               60L
  276.    #define TYPINGCLASSVAL2_FIELD               61L
  277.    #define CURRENTVIEW_OF_FILE_FIELD           62L
  278.    #define FILEINFO_FIELD                      63L
  279.  
  280.    // Constants to be used with EtkProcessEditKey().
  281.    #if 1
  282.      #define  ETK_ADJUST_BLOCK              210
  283.      #define  ETK_BACKTAB                   211
  284.      #define  ETK_BACKTAB_WORD              212
  285.      #define  ETK_BEGIN_LINE                213
  286.      #define  ETK_BOTTOM                    214
  287.      #define  ETK_COPY_MARK                 215
  288.      #define  ETK_DELETE_CHAR               216
  289.      #define  ETK_DELETE_LINE               217
  290.      #define  ETK_DELETE_MARK               218
  291.      #define  ETK_DOWN                      219
  292.      #define  ETK_END_LINE                  220
  293.      #define  ETK_ERASE_END_LINE            221
  294.      #define  ETK_INSERT_LINE               222
  295.      #define  ETK_INSERT_TOGGLE             223
  296.      #define  ETK_JOIN                      224
  297.      #define  ETK_LEFT                      225
  298.      #define  ETK_MARK_BLOCK                226
  299.      #define  ETK_MARK_CHARG                227
  300.      #define  ETK_MARK_CHAR                 228
  301.      #define  ETK_MARK_LINE                 229
  302.      #define  ETK_MOVE_MARK                 230
  303.      #define  ETK_NEXT_FILE                 231
  304.      #define  ETK_OVERLAY_BLOCK             232
  305.      #define  ETK_PAGE_DOWN                 233
  306.      #define  ETK_PAGE_UP                   234
  307.      #define  ETK_PREVFILE                  235
  308.      #define  ETK_REFLOW                    236
  309.      #define  ETK_REPEAT_FIND               237
  310.      #define  ETK_RIGHT                     238
  311.      #define  ETK_RUBOUT                    239
  312.      #define  ETK_SHIFT_LEFT                240
  313.      #define  ETK_SHIFT_RIGHT               241
  314.      #define  ETK_SPLIT                     242
  315.      #define  ETK_TAB                       243
  316.      #define  ETK_TAB_WORD                  244
  317.      #define  ETK_TOP                       245
  318.      #define  ETK_UNDO                      246
  319.      #define  ETK_UNMARK                    247
  320.      #define  ETK_UP                        248
  321.    #endif
  322.  
  323.    //Line terminator constants
  324.    #define MAXLNSIZE_UNTERMINATED 1
  325.    #define CR_TERMINATED          2
  326.    #define LF_TERMINATED          3
  327.    #define CRLF_TERMINATED        4
  328.    #define CRCRLF_TERMINATED      5
  329.    #define NULL_TERMINATED        6
  330.    #define CTRLZ_TERMINATED       7
  331.    #define NOMOREDATA_TERMINATED  8
  332.    #define INHERITED_TERMINATED   9
  333.    #define CRLFEOF_TERMINATED    10
  334.  
  335.  
  336.    #define CR_TERMINATOR_LDFLAG           1  // Use CR as a terminator
  337.    #define LF_TERMINATOR_LDFLAG           2  // Use LF as a terminator
  338.    #define CRLF_TERMINATOR_LDFLAG         4  // Use CR,LF as a terminator
  339.    #define CTRLZ_TERMINATOR_LDFLAG        8  // Use EOF as a terminator
  340.    #define NULL_TERMINATOR_LDFLAG        16  // Use NULL as a terminator
  341.    #define TABEXP_LDFLAG                 32  // Expand tabs when loading
  342.    #define CRLFEOF_TERMINATOR_LDFLAG     64  // Use CR,LF,EOF as a terminator
  343.    #define CRCRLF_TERMINATOR_LDFLAG     128  // Use CR,CR,LF as a terminator
  344.    #define NOHEADER_LDFLAG              256  // Buffer has no header
  345.    #define NEW_BITS_LDFLAG              512  // Format flag is using these bits
  346.    #define STRIP_SPACES_LDFLAG         1024  // Strip trailing spaces when loading
  347.    #define IGNORE_STORED_FORMAT_LDFLAG 2048  // Don't use format flags saved in buffer header
  348.    #define FORCE_TERMINATOR_LDFLAG     4096  // Require a terminator after every line
  349.  
  350.  
  351.    #define EWINDOWCLASS      "EtkEditClass"
  352.    #define CLIENTWINDOWCLASS "EtkClientClass"
  353.  
  354.    //The number of bytes reversed in the EMLE class for window words
  355.    #define EMLEWNDWORDCOUNT 16
  356.    #define EMLECLIENTWNDWORDCOUNT (EMLEWNDWORDCOUNT+8)
  357.  
  358.    // Assistance for dynamic subclassing
  359.    #define EMLEWNDWORDIDX_DYNAMICSUBCLASS 8
  360.  
  361.    typedef struct _dysub * PDYSUBSTRUCT;
  362.    typedef struct _dysub {
  363.       LONG  cbSize;
  364.       PFNWP pfnwpNextProc;
  365.       PFNWP pfnwpSelfProc;
  366.       PDYSUBSTRUCT pdssNext;
  367.       LONG  idSelf;          // also base message
  368.    } DYSUBSTRUCT;
  369.  
  370.  
  371.    /*═══════════════════════════════════════════════════════════════════════════╗
  372.    ║ Application structure passed to editor                             GC 7-88 ║
  373.    ╚═══════════════════════════════════════════════════════════════════════════*/
  374.  
  375.    // EWindowCreationErrorCodes
  376.    #define EWCEC_OUTOFRESOURCES1    1
  377.    #define EWCEC_OUTOFRESOURCES2    2
  378.    #define EWCEC_OUTOFRESOURCES3    3
  379.    #define EWCEC_LIF_EXNOTFOUND     103
  380.    #define EWCEC_LIF_EXBADVERSION   104
  381.    #define EWCEC_LIF_OUTOFRESOURCES 105
  382.  
  383.    typedef struct _EDITORINFO {
  384.       USHORT Size;         // Size of structure field
  385.       USHORT ErrCode;
  386.       PSZ    FileName;     // file to be edited (with wildcard)
  387.       ULONG  EditorStyle;  // internal editor options
  388.       PSZ    ExFile;       // pre-compiled macro code file (EPM.EX)
  389.       PSZ    TopMkr;       // top and bottom of file marker
  390.       PSZ    BotMkr;       //
  391.       PSZ    ExSearchPath; // a set of paths to search for ex's files
  392.       PSZ    ExePath;     // path where the application started
  393.    } EDITORINFO;
  394.    typedef EDITORINFO  *PEDITORINFO;
  395.    typedef EDITORINFO  EDITWNDCTRLDATA;
  396.    typedef PEDITORINFO PEDITWNDCTRLDATA;
  397.  
  398. #ifdef LPCOMMENTS
  399.    typedef struct _CHARSET {
  400.       char * name;            // string containing all the char..
  401.    } CHARSET;
  402.    typedef CHARSET * PCHARSET;
  403.  
  404.    typedef struct _SPECIALCHAR {
  405.       char     character;
  406.       BOOL     owncolor;    // True if it is not using bgcolor and fgcolor (for break characters)
  407.       LONG     bgcolor;
  408.       LONG     fgcolor;
  409.    } SPECIALCHAR;
  410.    typedef SPECIALCHAR * PSPECIALCHAR;
  411.  
  412.    typedef struct _KEYWORD {
  413.       char   * name;
  414.       LONG     bgcolor;
  415.       LONG     fgcolor;
  416.    } KEYWORD;
  417.    typedef KEYWORD * PKEYWORD;
  418.  
  419.    typedef struct _DELIM {
  420.       char *  start;
  421.       char *  end;
  422.       char    escape;
  423.       LONG    bgcolor;
  424.       LONG    fgcolor;
  425.       ULONG   column;
  426.    } DELIM;
  427.    typedef DELIM * PDELIM;
  428.  
  429.    typedef struct _KEYWORDSINFO {
  430.       PCHARSET     kwCharSet;    // array[1]:   string containing the characters of the keywords of the "keywords" array
  431.       ULONG        nbCharSet;    // right now array with just 1 element, but we may want to have several char sets, who knows?
  432.       PSPECIALCHAR kwEndChar;    // array[] keyword end characters with their associated colors
  433.       ULONG        nbEndChar;
  434.       char *       pszEndChar;   // string with the end characters only
  435.       PSPECIALCHAR kwBreakChar;  // array[] keyword break characters with their associated colors
  436.       ULONG        nbBreakChar;
  437.       char *       pszBreakChar; // string with the break characters only
  438.       PKEYWORD     keywords;     // array[] case sensitive keywords
  439.       ULONG        nbKeywords;
  440.       PKEYWORD     keywordsi;    // array[] case insensitive keywords
  441.       ULONG        nbKeywordsi;
  442.       PKEYWORD     specialKW;    // array[]
  443.       ULONG        nbSpecialKW;
  444.       PKEYWORD     specialKWi;   // array[]
  445.       ULONG        nbSpecialKWi;
  446.       PDELIM       delim;      // array[]
  447.       ULONG        nbDelim;
  448.       PDELIM       delimi;     // array[]
  449.       ULONG        nbDelimi;
  450.       PCHAR        baseStringAddr; // All the strings referenced are in the same memory bank, this is its base address
  451.       BOOL         keywordsFileLoaded;    // GLS true if the keywords file has been loaded
  452.       BOOL         keywordsFileLoading;   // GLS true if the keywords file is being loaded
  453.       PCHAR        kwFileName;
  454.    } KEYWORDSINFO;
  455.    typedef KEYWORDSINFO * PKEYWORDSINFO;
  456.  
  457. #endif // LPCOMMENTS
  458.  
  459.    /*═══════════════════════════════════════════════════════════════════════════╗
  460.    ║ Function Prototypes                                                        ║
  461.    ╚═══════════════════════════════════════════════════════════════════════════*/
  462.    #if OS2VERSION < 20
  463.       //#define ETKENTRY _loadds
  464.       #define ETKENTRY _loadds _cdecl
  465.    #else
  466.       /* #define ETKENTRY */
  467.       #define ETKENTRY _System
  468.    #endif
  469.    #include <mainx.h>
  470.    #include <attr.h>
  471.  
  472.  
  473.    #define pszETKWINDOWCLASS "EtkEditClass"
  474.    #define plsETKWINDOWCLASS CONSTPLSTRING("\14",pszETKWINDOWCLASS)
  475.  
  476.  
  477.  
  478.    #define pszETKCLIENTWINDOWCLASS "EtkClientClass"
  479.    #define plsETKCLIENTWINDOWCLASS CONSTPLSTRING("\16",pszETKCLIENTWINDOWCLASS)
  480.  
  481.  
  482.  
  483.    USHORT ETKENTRY EtkCreate( PEDITORINFO epm_p, PHWND hEwnd_p);
  484.    USHORT ETKENTRY EtkDestroy( HAB hab, HWND hwnd, HWND hwndef);
  485.    VOID   ETKENTRY EtkVersion( PSZ strbuffer );
  486.    #if OS2VERSION >= 20
  487.       typedef VOID   APIENTRY ETKGETPROCADDRS(PFN * fptr);
  488.    #else
  489.       typedef VOID   ETKENTRY ETKGETPROCADDRS(PFN * fptr);
  490.    #endif
  491.    typedef ETKGETPROCADDRS * PETKGETPROCADDRS;
  492.    #define ETKGPA_STRING  "_EtkGetProcAddrs"
  493.    ETKGETPROCADDRS EtkGetProcAddrs;
  494.    #define TERMTYPE BYTE
  495.    typedef BYTE * PTERMTYPE;
  496.  
  497.  
  498.    PSZ     ETKENTRY EtkRegisterEMLEClass(HAB hab);
  499.    PSZ     ETKENTRY EtkRegisterEMLEClientClass(HAB hab);
  500.  
  501.  
  502.    // Window Procedure
  503.    PVOID  EXPENTRY EtkWndProc(HWND hwnd, USHORT message, MPARAM lParam1, MPARAM lParam2 );
  504.  
  505.    // Special Access Functions.
  506.    USHORT ETKENTRY EtkRegisterFont( HWND  hwndClient, PLSTRING fontname, USHORT  fontsize, USHORT  fontsel);
  507.    USHORT ETKENTRY EtkRegisterFont2(HWND  hwndClient, PLSTRING fontname, USHORT  fontsize, USHORT  fontheight, USHORT  fontwidth, USHORT  fontsel);
  508.    SHORT  ETKENTRY EtkProcessEditKey( HWND  hwndClient, SHORT  key, USHORT repcount);
  509.    SHORT  ETKENTRY EtkQueryFileID( HWND hwndClient, PULONG  fileid);
  510.    SHORT  ETKENTRY EtkQueryLineTerminator( HWND hwndClient, FIDTYPE getFileid, LINE_INDEX_FR linenum, PTERMTYPE termtype );
  511.    SHORT  ETKENTRY EtkChangeLineTerminator( HWND hwndClient, FIDTYPE getFileid, LINE_INDEX_FR linenum, TERMTYPE termtype );
  512.    SHORT  ETKENTRY EtkDeleteText( HWND  hwndClient, ULONG  thefileid, ULONG  y, ULONG  number_oflines);
  513.    SHORT  ETKENTRY EtkReplaceText( HWND  hwndClient, FIDTYPE  repFileid, LINE_INDEX_FR  repLocLinenum, PPATTRSTRING  repLineString, TERMTYPE terminator);
  514.    SHORT  ETKENTRY EtkInsertText( HWND  hwndClient, FIDTYPE  insFileid, LINE_INDEX  insLocLinenum, PPATTRSTRING  insLineString, TERMTYPE terminator);
  515.    SHORT  ETKENTRY EtkQueryText(HWND hwndClient, ULONG getFileid, ULONG getLocLinenum, PLSTRING *getText, ATTRIBRECTYPE  *  * getAttrs, ATTRIBRECTYPE  *  * getALAttr);
  516.    SHORT  ETKENTRY EtkFindAttribute( HWND hwndClient, FIDTYPE fileid, LINE_INDEX_FR TheLineNm, SHORT TheColm, SHORT TheOfst, PPATTRIBRECTYPE TheAttribute, PBOOL Found);
  517.    SHORT  ETKENTRY EtkSetSelection( HWND  hwndClient, LINE_INDEX_FR  firstline,  LINE_INDEX_FR  lastline, USHORT firstcol, USHORT lastcol, SHORT  firstoff, SHORT  lastoff, USHORT marktype, FIDTYPE fileid);
  518.    SHORT  ETKENTRY EtkQuerySelection(HWND hwndClient, PLINE_INDEX firstline, PLINE_INDEX lastline, PSHORT firstcol, PSHORT lastcol, PFIDTYPE markfileid, USHORT respectattributes, USHORT relative2file);
  519.    SHORT  ETKENTRY EtkQuerySelectionType(HWND hwndClient, PUSHORT marktype);
  520.    SHORT  ETKENTRY EtkQueryInsertState(HWND hwndClient, PUSHORT insertstate);
  521.    SHORT  ETKENTRY EtkSetFileField(HWND hwndClient, ULONG field, VIDTYPE fileid,  PVOID indata);
  522.    SHORT  ETKENTRY EtkQueryFileField( HWND hwndClient, ULONG field, VIDTYPE fileid, PLONG retdata);
  523.    SHORT  ETKENTRY EtkExecuteCommand(HWND hwndClient, PSZ command);
  524.    SHORT  ETKENTRY EtkQueryFileFieldString(HWND hwndClient, ULONG field, ULONG getFileid, PLSTRING getText);
  525.    LONG   ETKENTRY EtkInsertTextBuffer( HWND  hwndClient, LINE_INDEX_FR line, ULONG LenText, PSZ buffer, USHORT BufStyle);
  526.    ULONG  ETKENTRY EtkQueryTextBuffer( HWND  hwndClient, FIDTYPE fileid, LINE_INDEX_FR startline, LINE_INDEX_FR lastline, ULONG TotalLen, PSZ buffer);
  527.    SHORT  ETKENTRY EtkAccessLowLevelData( HWND  hwndClient, FIDTYPE  getFileid, PVOID  *  getSubLineArray);
  528.    SHORT  ETKENTRY EtkGetPMInfo(HWND hwnd, SHORT which, PULONG retval);
  529.    SHORT  ETKENTRY EtkInvalidateText( HWND  hwndClient, LINE_INDEX_FR firstline, LINE_INDEX_FR lastline);
  530.  
  531.    SHORT  ETKENTRY EtkFindArray(HWND hwnd, PLSTRING ArrayName, FIDTYPE *FoundArrayID);
  532.    SHORT  ETKENTRY EtkCreateArray(HWND hwnd, PLSTRING ArrayName, FIDTYPE *RetFileid);
  533.    VOID   ETKENTRY EtkSetArrayElement(HWND hwnd, FIDTYPE TheViewID, PLSTRING Index, PLSTRING AssignedValue);
  534.    SHORT  ETKENTRY EtkGetArrayElement(HWND hwnd, FIDTYPE TheViewID, PLSTRING Index, PPLSTRING RetString);
  535.    SHORT  ETKENTRY EtkDeleteArrayElement( HWND hwnd, FIDTYPE TheViewID, PLSTRING Index);
  536.  
  537.    SHORT  ETKENTRY EtkAssignAttributeClass( HWND hwndClient, PLSTRING ClassName, PLSTRING ClassModel, SHORT classid);
  538.    SHORT  ETKENTRY EtkRegisterAttributeClass( HWND hwndClient, PLSTRING ClassName, PLSTRING ClassModel);
  539.    SHORT  ETKENTRY EtkQueryAttributeClassID( HWND hwndClient, SHORT classid, PPLSTRING ClassName, PPLSTRING ClassModel);
  540.  
  541.    LONG   ETKENTRY EtkMapPointLCO2Window( HWND hwndClient, FIDTYPE  fileid, LONG  Line, SHORT  Col, SHORT  Off, PLONG   yOut,  PLONG xOut);
  542.    LONG   ETKENTRY EtkMapPointWindow2LCO( HWND hwndClient, FIDTYPE  fileid, LONG   yIn,  LONG xIn, PLONG  Line, PSHORT  Col, PSHORT  Off);
  543.    LONG   ETKENTRY EtkMapPointDoc2LCO( HWND hwndClient, FIDTYPE fileid, LONG xIn,   LONG yIn, LINE_INDEX * Line, PSHORT Col, PSHORT Off);
  544.    LONG   ETKENTRY EtkMapPointWindow2Doc( HWND hwndClient, FIDTYPE fileid, LONG xIn,   LONG yIn, PLONG DocX, PLONG DocY);
  545.    LONG   ETKENTRY EtkMapPointDoc2Window( HWND hwndClient, FIDTYPE  fileid, LONG  DocX,    LONG  DocY, PLONG  xIn,    PLONG  yIn);
  546.    LONG   ETKENTRY EtkMapPointLCO2Doc(  HWND hwndClient, FIDTYPE  fileid, LINE_INDEX  Line, SHORT  Col, SHORT  Off, PLONG  xIn,    PLONG  yIn);
  547.    LONG   ETKENTRY EtkSort( HWND  hwndClient, FIDTYPE  fileid, LINE_INDEX_FR  firstline, LINE_INDEX_FR  lastline, SHORT  begin_column, SHORT  end_column, LONG  options );
  548.    ULONG  EXPENTRY EtkBuildNextPage( PVOID pPrnInfo );
  549.    ULONG  EXPENTRY EtkSetupPrint( HWND hwndClient, PVOID PrnInfo,
  550.                                   FIDTYPE ftFile, PPRINTJOB pPJ, HPS hps );
  551. #ifdef  LPCOMMENTS
  552.    VOID   ETKENTRY EtkFreeKeywordsInfo( PKEYWORDSINFO kwInfo );
  553. #endif // LPCOMMENTS
  554.  
  555.  
  556.  /* - Id numbers used by macros to idenify certian handles in the EPM editor */
  557. #define ANCHORBLOCK      0
  558. #define OWNERCLIENT      1
  559. #define OWNERFRAME       2
  560. #define PARENTCLIENT     3
  561. #define PARENTFRAME      4
  562. #define EDITCLIENT       5
  563. #define EDITFRAME        6
  564. #define EDITSTATUSAREA   7
  565. #define EDITMSGAREA      8
  566. #define EDITVSCROLL      9
  567. #define EDITHSCROLL      10
  568. #define EDITINTERPRETER  11
  569. #define EDITVIOPS        12
  570. #define EDITTITLEBAR     13
  571. #define EDITCURSOR       14
  572. #define PARTIALTEXT      15
  573. #define EDITEXSEARCHPATH 16
  574. #define EDITMENU         17
  575. #define EDITHDC          18
  576. #define EDITINIHANDLE    19
  577. #define ROTATEBUTTONS    20
  578. #define DMTITLEBAR       21
  579. #define FILEICON         22
  580. #define STATUSONTOP      23
  581. #define STREAMEDIT       24
  582. #define CUAMARKING       25
  583. #define ARROWKEYS        26
  584. #define EDITSTATUSHWND   27
  585. #define EDITMSGHWND      28
  586. #define LSLENGTH         29
  587. #define SEARCHPOS        30
  588.  
  589.  
  590. #define EPM_DM_COLOR  1
  591. #define EPM_DM_EDIT   2
  592.                          // 1 attributes (color supported),
  593.                          // 2 attributes (editing supported)
  594. #define EPM_DM_FONT   4
  595.                          // 0 treat characters as all one font
  596.                          //   force that font to have fixed block
  597.                          //   align text into a single column
  598.                          //   + formatting calculations for
  599.                          //     complex display may continue in
  600.                          //     background so that when user
  601.                          //     switches to complex mode, the
  602.                          //     formatting is already done.
  603.                          // 1 don't make/force the above assumptions
  604.                          //     when displaying text.
  605.                          //
  606. #define GETPROC_ETKVERSION              0
  607. #define GETPROC_ETKREGEMLECLASS         1
  608. #define GETPROC_ETKREGEFRAMECLASS       2
  609. #define GETPROC_ETKREGEMLECLIENTCLASS   3
  610.  
  611. #define DOSCOLOR_BLACK                    0
  612. #define DOSCOLOR_BLUE                     1
  613. #define DOSCOLOR_GREEN                    2
  614. #define DOSCOLOR_CYAN                     3
  615. #define DOSCOLOR_RED                      4
  616. #define DOSCOLOR_MAGENTA                  5
  617. #define DOSCOLOR_BROWN                    6
  618. #define DOSCOLOR_LIGHT_GREY               7
  619. #define DOSCOLOR_DARK_GREY                8
  620. #define DOSCOLOR_LIGHT_BLUE               9
  621. #define DOSCOLOR_LIGHT_GREEN             10
  622. #define DOSCOLOR_LIGHT_CYAN              11
  623. #define DOSCOLOR_LIGHT_RED               12
  624. #define DOSCOLOR_LIGHT_MAGENTA           13
  625. #define DOSCOLOR_YELLOW                  14
  626. #define DOSCOLOR_WHITE                   15
  627.  
  628. #endif
  629.  
  630.