-fpermissive to allow GCC to compile old C++
[oweals/cde.git] / cde / programs / dtmail / dtmail / DtEditor.hh
1 /*
2  *+SNOTICE
3  *
4  *      $TOG: DtEditor.hh /main/9 1998/02/03 10:28:23 mgreess $
5  *
6  *      RESTRICTED CONFIDENTIAL INFORMATION:
7  *      
8  *      The information in this document is subject to special
9  *      restrictions in a confidential disclosure agreement between
10  *      HP, IBM, Sun, USL, SCO and Univel.  Do not distribute this
11  *      document outside HP, IBM, Sun, USL, SCO, or Univel without
12  *      Sun's specific written approval.  This document and all copies
13  *      and derivative works thereof must be returned or destroyed at
14  *      Sun's request.
15  *
16  *      Copyright 1993 Sun Microsystems, Inc.  All rights reserved.
17  *
18  *+ENOTICE
19  */
20
21 #ifndef DTEDITOR_HH
22 #define DTEDITOR_HH
23
24 // Include the DtWidgetEditor .h file given by HP.
25
26 #include <Dt/Editor.h>
27
28 #include "Editor.hh"
29 #include "DtMailEditor.hh"
30
31 class CDEM_DtWidgetEditor : public Editor
32 {
33
34   public:
35     CDEM_DtWidgetEditor(
36                 Widget parent, 
37                 DtMailEditor *owner_of_editor);
38     ~CDEM_DtWidgetEditor();
39     
40         // Pure virtual functions of class Editor
41     //
42     virtual void        initialize();
43
44     virtual void        set_contents(
45                                 const char *contents,
46                                 const unsigned long len
47                                 );
48
49     virtual void        set_contents(const char *path);
50                                 
51     virtual char*       get_contents();
52
53     virtual void        append_to_contents(
54                                 const char *new_contents,
55                                 const unsigned long len
56                                 );
57
58     virtual void        append_to_contents(const char *path);
59
60     virtual void        append_at_cursor(const char *path);
61
62     virtual void        append_at_cursor(
63                                 const char *contents,
64                                 const unsigned long len
65                                 );
66
67     virtual void        clear_contents();
68     virtual int         no_text();
69
70     virtual Widget      get_text_widget();
71     virtual Pixel       get_text_foreground();
72     virtual Pixel       get_text_background();
73     virtual Dimension   get_text_width();
74     virtual XmFontList  get_text_fontList();
75     virtual Widget      get_editor();
76     
77     virtual int         get_columns();
78     virtual int         get_rows();
79     virtual void        set_columns(int ncolumns);
80     virtual void        set_editable(Boolean value);
81     virtual void        set_rows(int nrows);
82
83     virtual void        auto_show_cursor_off();
84     virtual void        auto_show_cursor_restore();
85
86     virtual void        set_to_top();
87     virtual void        set_to_bottom();
88
89     virtual void        cut_selection();
90     virtual void        copy_selection();
91     virtual void        paste_from_clipboard();
92     virtual void        paste_special_from_clipboard(Editor::InsertFormat);
93     virtual void        clear_selection();
94     virtual void        delete_selection();
95     virtual void        select_all();
96
97     virtual void        disable_redisplay();
98     virtual void        enable_redisplay();
99
100     //
101         // End of Pure virtual functions for class Editor.
102
103         // Pure virtual functions of class AbstractEditorParent
104     virtual void        text_selected();
105     virtual void        text_unselected();
106
107         // Functions specific to DtEditor
108     virtual void        set_word_wrap(Boolean value);
109     virtual void        undo_edit();
110     virtual void        find_change();
111     virtual void    spell();
112     virtual void    format();
113
114     static void MenuButtonHandler(Widget, XtPointer, XEvent *, Boolean *); 
115                         
116   protected:
117
118     // modify verify callback used during Paste Special
119     static void modify_verify_callback(Widget, XtPointer, XtPointer);
120
121     static void text_selected_callback(Widget, void *, void *);
122     static void text_unselected_callback(Widget, void *, void *);
123         
124
125   private:
126     struct PSClientData {
127         CDEM_DtWidgetEditor *obj;
128         Editor::InsertFormat insert_format;
129     };
130     XmTextBlockRec      *_modified_text; 
131     size_t              _modified_text_buflen;
132     enum PasteSpecBuf { MAXBUFSZ = 2048, BUFINC = 512};
133     void modifyData(char *, int, Editor::InsertFormat);
134     void reallocPasteBuf(size_t size_req) {
135                 _modified_text->ptr = 
136                         (char *)realloc((void *)_modified_text->ptr, size_req);
137                 _modified_text_buflen = size_req; 
138     }
139
140     const char *indent_str;
141     const char *begin_ins_bracket;
142     const char *end_ins_bracket;
143
144     Widget my_parent;
145     Widget my_text;
146     Widget my_text_core;
147
148     DtMailEditor *my_owner;
149     Boolean text_already_selected;
150     Boolean             _auto_show_cursor;
151
152     char * _buffer;
153     unsigned long _buf_len;
154
155 };
156
157 #endif // DTEDITOR_HH