Files
cdesktop/cde/programs/dtmail/dtmail/Editor.hh

186 lines
4.8 KiB
C++

/*
*+SNOTICE
*
* $TOG: Editor.hh /main/11 1998/02/03 10:28:56 mgreess $
*
* RESTRICTED CONFIDENTIAL INFORMATION:
*
* The information in this document is subject to special
* restrictions in a confidential disclosure agreement between
* HP, IBM, Sun, USL, SCO and Univel. Do not distribute this
* document outside HP, IBM, Sun, USL, SCO, or Univel without
* Sun's specific written approval. This document and all copies
* and derivative works thereof must be returned or destroyed at
* Sun's request.
*
* Copyright 1993 Sun Microsystems, Inc. All rights reserved.
*
*+ENOTICE
*/
#ifndef EDITOR_H
#define EDITOR_H
#include <Xm/Xm.h>
#include "MenuBar.h"
// Get all the Bento-related API and types (CMContainer, etc.)
#include <DtMail/DtMail.hh>
#include "UIComponent.h"
extern int use_XmTextEditor;
class DtMailEditor;
class Editor : public UIComponent {
public:
Editor();
virtual ~Editor();
virtual void initialize() = 0;
virtual void set_contents(
const char *contents,
const unsigned long len
) = 0;
virtual void set_contents(const char * path) = 0;
virtual char * get_contents() = 0;
virtual void append_to_contents(
const char *new_contents,
const unsigned long len
) = 0;
virtual void append_to_contents(const char * path) = 0;
virtual void append_at_cursor(const char *path) = 0;
virtual void append_at_cursor(
const char *contents,
const unsigned long len
) = 0;
enum InsertFormat {
IF_NONE, // No special format
IF_INDENTED, // Indented with indent_prefix
IF_BRACKETED // Bracketed
};
enum BracketFormat {
BF_NONE, // No bracketing
BF_INCLUDE, // As included message,
BF_FORWARD // As forwarded message
};
enum HeaderFormat {
HF_NONE, // Do not insert headers in message body.
HF_FULL, // Insert all headers.
HF_ABBREV // Do not insert ignored headers.
};
virtual void append_newline_to_contents();
virtual DtMailBoolean set_message(
DtMail::Message * msg,
char ** status_string,
HeaderFormat header_format = HF_ABBREV,
InsertFormat format = IF_NONE,
BracketFormat brackets = BF_NONE);
virtual void set_attachment(
DtMail::BodyPart * body_part,
InsertFormat format = IF_NONE,
BracketFormat brackets = BF_NONE);
virtual void clear_contents() = 0;
virtual int no_text() = 0;
virtual Widget get_editor() = 0;
virtual Widget get_text_widget() = 0;
virtual Pixel get_text_foreground() = 0;
virtual Pixel get_text_background() = 0;
virtual Dimension get_text_width() = 0;
virtual XmFontList get_text_fontList() = 0;
virtual int get_columns() = 0;
virtual int get_rows() = 0;
virtual void set_columns(int ncolumns) = 0;
virtual void set_editable(Boolean value) = 0;
virtual void set_rows(int nrows) = 0;
virtual void update_display_from_props(void);
virtual void auto_show_cursor_off() = 0;
virtual void auto_show_cursor_restore() = 0;
virtual void set_to_top() = 0;
virtual void set_to_bottom() = 0;
virtual void find_change() = 0;
virtual void spell() = 0;
virtual void format() = 0;
virtual void set_word_wrap(Boolean value) = 0;
virtual void undo_edit() = 0;
virtual void cut_selection() = 0;
virtual void copy_selection() = 0;
virtual void paste_from_clipboard() = 0;
virtual void paste_special_from_clipboard(InsertFormat) = 0;
virtual void clear_selection() = 0;
virtual void delete_selection() = 0;
virtual void select_all() = 0;
virtual void disable_redisplay() = 0;
virtual void enable_redisplay() = 0;
};
class AbstractEditorParent {
protected:
Widget _attachmentPopupMenu;
Widget _textPopupMenu;
MenuBar *_menuPopupAtt;
MenuBar *_menuPopupText;
public:
AbstractEditorParent();
virtual ~AbstractEditorParent();
virtual const char *const className()
{ return "AbstractEditorParent"; }
virtual DtMailEditor * get_editor() = 0;
// Text/attachment (de)selection methods
virtual void text_selected() = 0;
virtual void text_unselected() = 0;
virtual void attachment_selected() = 0;
virtual void all_attachments_deselected() = 0;
virtual void all_attachments_selected() = 0;
virtual void add_att(char *) = 0;
virtual void add_att(char *, DtMailBuffer) = 0;
virtual void add_att(DtMailBuffer) = 0;
virtual void postAttachmentPopup(XEvent *event);
virtual void postTextPopup(XEvent *event);
virtual void addAttachmentActions(
char **,
int
) = 0;
virtual void invokeAttachmentAction(int) = 0;
virtual void removeAttachmentActions() = 0;
virtual void selectAllAttachments() = 0;
virtual void showAttachArea() = 0;
virtual void hideAttachArea() = 0;
virtual void attachmentFeedback(Boolean) = 0;
};
#endif // EDITOR_HH