-fpermissive to allow GCC to compile old C++
[oweals/cde.git] / cde / programs / dtmail / dtmail / Editor.hh
1 /*
2  *+SNOTICE
3  *
4  *      $TOG: Editor.hh /main/11 1998/02/03 10:28:56 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 EDITOR_H
22 #define EDITOR_H
23
24 #include <Xm/Xm.h>
25 #include "MenuBar.h"
26
27 // Get all the Bento-related API and types (CMContainer, etc.)
28
29 #include <DtMail/DtMail.hh>
30 #include "UIComponent.h"
31
32 extern int use_XmTextEditor;
33
34 class DtMailEditor;
35
36 class Editor : public UIComponent {
37     
38   public:       
39     Editor();
40     virtual ~Editor();
41
42     virtual void        initialize() = 0;
43
44     virtual void        set_contents(
45                                      const char *contents,
46                                      const unsigned long len
47                                      ) = 0;
48
49     virtual void        set_contents(const char * path) = 0;
50
51     virtual char *      get_contents() = 0;
52
53     virtual void        append_to_contents(
54                                            const char *new_contents,
55                                            const unsigned long len
56                                            ) = 0;
57
58     virtual void        append_to_contents(const char * path) = 0;
59
60     virtual void        append_at_cursor(const char *path) = 0;
61     virtual void        append_at_cursor(
62                                      const char *contents, 
63                                      const unsigned long len
64                                      ) = 0;
65
66     enum InsertFormat {
67         IF_NONE,        // No special format
68         IF_INDENTED,    // Indented with indent_prefix
69         IF_BRACKETED    // Bracketed
70     };
71
72     enum BracketFormat {
73         BF_NONE,        // No bracketing
74         BF_INCLUDE,     // As included message,
75         BF_FORWARD      // As forwarded message
76         };
77
78     enum HeaderFormat {
79         HF_NONE,        // Do not insert headers in message body.
80         HF_FULL,        // Insert all headers.
81         HF_ABBREV       // Do not insert ignored headers.
82         };
83
84     virtual void        append_newline_to_contents();
85     virtual DtMailBoolean       set_message(
86                                         DtMail::Message * msg,
87                                         char ** status_string,
88                                         HeaderFormat header_format = HF_ABBREV,
89                                         InsertFormat format = IF_NONE,
90                                         BracketFormat brackets = BF_NONE);
91
92     virtual void                set_attachment(
93                                         DtMail::BodyPart * body_part,
94                                         InsertFormat format = IF_NONE,
95                                         BracketFormat brackets = BF_NONE);
96
97     virtual void        clear_contents() = 0;
98     virtual int         no_text()        = 0;
99
100     virtual Widget      get_editor() = 0;
101     virtual Widget      get_text_widget() = 0;
102     virtual Pixel       get_text_foreground() = 0;
103     virtual Pixel       get_text_background() = 0;
104     virtual Dimension   get_text_width() = 0;    
105     virtual XmFontList  get_text_fontList() = 0;
106
107     virtual int         get_columns() = 0;
108     virtual int         get_rows() = 0;
109     virtual void        set_columns(int ncolumns) = 0;
110     virtual void        set_editable(Boolean value) = 0;
111     virtual void        set_rows(int nrows) = 0;
112     virtual void        update_display_from_props(void);
113
114     virtual void        auto_show_cursor_off() = 0;
115     virtual void        auto_show_cursor_restore() = 0;
116
117     virtual void        set_to_top() = 0;
118     virtual void        set_to_bottom() = 0;
119
120         virtual void    find_change() = 0;
121         virtual void    spell() = 0;
122         virtual void    format() = 0;
123         virtual void    set_word_wrap(Boolean value) = 0;
124         virtual void    undo_edit() = 0;
125     virtual void        cut_selection() = 0;
126     virtual void        copy_selection() = 0;
127     virtual void        paste_from_clipboard() = 0;
128     virtual void        paste_special_from_clipboard(InsertFormat) = 0;
129     virtual void        clear_selection() = 0;
130     virtual void        delete_selection() = 0;
131     virtual void        select_all() = 0;
132
133     virtual void        disable_redisplay() = 0;
134     virtual void        enable_redisplay() = 0;
135
136 };
137
138 class AbstractEditorParent {
139   protected:
140         Widget _attachmentPopupMenu;
141         Widget _textPopupMenu;
142         MenuBar *_menuPopupAtt;
143         MenuBar *_menuPopupText;
144   public:
145
146     AbstractEditorParent();
147     virtual ~AbstractEditorParent();
148
149     virtual     const char *const className() 
150                                 { return "AbstractEditorParent"; }
151
152     virtual DtMailEditor *  get_editor() = 0;
153
154     // Text/attachment (de)selection methods
155
156     virtual void text_selected()   = 0;
157     virtual void text_unselected() = 0;
158     virtual void attachment_selected() = 0;
159     virtual void all_attachments_deselected() = 0;
160     virtual void all_attachments_selected() = 0;
161     virtual void add_att(char *) = 0;
162     virtual void add_att(char *, DtMailBuffer) = 0;
163     virtual void add_att(DtMailBuffer) = 0;
164
165     virtual void postAttachmentPopup(XEvent *event);
166     virtual void postTextPopup(XEvent *event);
167     
168     virtual void addAttachmentActions(
169                         char **,
170                         int
171                 ) = 0;
172     virtual void invokeAttachmentAction(int) = 0;
173     virtual void removeAttachmentActions() = 0;
174
175     virtual void selectAllAttachments() = 0;
176
177     virtual void        showAttachArea() = 0;
178     virtual void        hideAttachArea() = 0;
179
180     virtual void        attachmentFeedback(Boolean) = 0;
181
182 };
183
184     
185 #endif // EDITOR_HH