pjs/cmd/xfe/xeditor.h

430 строки
18 KiB
C

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
*
* xeditor.h --- Editor-specific headers for the front end.
* Should only be include by files that work with the editor.
* Created: David Williams <djw@netscape.com>, Mar-12-1996
*
* RCSID: "$Id: xeditor.h,v 3.2 1998-09-28 19:09:17 akkana%netscape.com Exp $"
*/
#ifndef _XEDITOR_H_
#define _XEDITOR_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <edttypes.h> /* collect EDT_<editor> types. */
#include <pa_tags.h> /* for P_UNUM_LIST, P_NUM_LIST, etc */
#include "xfe.h"
/* These URLs shouldn't say gold, should say communicator */
#define XFE_EDITOR_DEFAULT_DOCUMENT_TEMPLATE_URL \
"http://home.netscape.com/home/gold4.0_templates.html"
#define XFE_WIZARD_TEMPLATE_URL \
"http://home.netscape.com/home/gold4.0_wizard.html"
#define XFE_EDITOR_NEW_DOC_NAME "file: Untitled"
typedef struct XFE_Frame XFE_Frame;
/*
* A useful type.
*/
typedef struct fe_NameValueItem
{
char* name;
char* value;
} fe_NameValueItem;
/*
* Put this edttype.h after 3.x merge.
*/
typedef enum {
ED_FONTSIZE_DEFAULT = 0, /* == ED_FONTSIZE_ZERO */
ED_FONTSIZE_MINUS_TWO = 1,
ED_FONTSIZE_MINUS_ONE = 2,
ED_FONTSIZE_ZERO = 3,
ED_FONTSIZE_PLUS_ONE = 4,
ED_FONTSIZE_PLUS_TWO = 5,
ED_FONTSIZE_PLUS_THREE = 6,
ED_FONTSIZE_PLUS_FOUR = 7
} ED_FontSize;
#define EDT_FONTSIZE_MAX ED_FONTSIZE_PLUS_FOUR
#define EDT_FONTSIZE_MIN ED_FONTSIZE_MINUS_TWO
#define TF_ALL_MASK \
(TF_BOLD|TF_ITALIC|TF_FIXED|TF_SUPER|TF_SUB|TF_STRIKEOUT|TF_BLINK|TF_UNDERLINE)
Boolean fe_EditorCanUndo(MWContext*, XmString* label_return);
Boolean fe_EditorCanRedo(MWContext*, XmString* label_return);
void fe_EditorUndo(MWContext*);
void fe_EditorRedo(MWContext*);
Boolean fe_EditorLineBreakCanInsert(MWContext*);
void fe_EditorLineBreak(MWContext*, ED_BreakType type);
void fe_EditorNonBreakingSpace(MWContext*);
void fe_EditorParagraphMarksSetState(MWContext*, Boolean display);
Boolean fe_EditorParagraphMarksGetState(MWContext*);
void fe_EditorFontSizeSet(MWContext*, ED_FontSize size);
ED_FontSize fe_EditorFontSizeGet(MWContext*);
void fe_EditorCharacterPropertiesSet(MWContext*, ED_TextFormat);
ED_TextFormat fe_EditorCharacterPropertiesGet(MWContext*);
void fe_EditorDoPoof(MWContext* context);
void fe_EditorParagraphPropertiesSet(MWContext*, int8);
int8 fe_EditorParagraphPropertiesGet(MWContext*);
Boolean fe_EditorParagraphPropertiesGetAll(MWContext*,
int8*,
EDT_ListData*,
ED_Alignment*);
void fe_EditorParagraphPropertiesSetAll(MWContext*,
int8,
EDT_ListData*,
ED_Alignment);
void fe_EditorIndent(MWContext* context, Boolean is_outdent);
void fe_EditorInitActions(void);
void fe_EditorStaticInit(void);
void fe_EditorUpdateToolbar(MWContext*, ED_TextFormat);
void fe_EditorInsertHorizontalRule(MWContext* context);
void fe_EditorHorizontalRulePropertiesSet(MWContext*, EDT_HorizRuleData*);
void fe_EditorHorizontalRulePropertiesGet(MWContext*, EDT_HorizRuleData*);
ED_Alignment fe_EditorAlignGet(MWContext*);
void fe_EditorAlignSet(MWContext*, ED_Alignment);
void fe_EditorHrefInsert(MWContext* context,
char* p_text, char* p_url);
Boolean fe_EditorHrefGet(MWContext* context, char** text, char** url);
void fe_EditorHrefSetUrl(MWContext* context, char* url);
void fe_EditorHrefClearUrl(MWContext* context);
void fe_EditorToggleList(MWContext* context, intn tag_type);
Boolean fe_EditorListDataGet(MWContext* context, EDT_ListData* l_data);
void fe_EditorListDataSet(MWContext* context, EDT_ListData* l_data);
void fe_EditorColorSet(MWContext* context, LO_Color* color);
Boolean fe_EditorColorGet(MWContext* context, LO_Color* color);
Boolean fe_EditorCanCut(MWContext* context);
Boolean fe_EditorCanCopy(MWContext* context);
Boolean fe_EditorCanPaste(MWContext* context);
Boolean fe_EditorCanPastePrimarySel(MWContext* context);
Boolean fe_EditorCut(MWContext* context, Time);
Boolean fe_EditorCopy(MWContext* context, Time);
void fe_EditorCopyToClipboard(MWContext*, char*, Time);
Boolean fe_EditorPaste(MWContext* context, Time);
Boolean fe_EditorPastePrimarySel(MWContext* context, Time);
Boolean fe_EditorSelectionContainsPoint(MWContext*, int32 x, int32 y);
void fe_EditorSelectAll(MWContext* context);
void fe_EditorDeleteItem(MWContext* context, Boolean previous);
void fe_EditorRemoveLinks(MWContext* context);
Boolean fe_EditorCanRemoveLinks(MWContext* context);
void fe_EditorInsertLinkDialogDo(MWContext* context);
void fe_EditorFind(MWContext* context);
void fe_EditorFindAgain(MWContext* context);
Boolean fe_EditorCanFindAgain(MWContext* context);
/* always makes a new window */
MWContext* fe_EditorNew(MWContext*, XFE_Frame*, Chrome*, char*);
/* tries to re-use existing windows */
MWContext* fe_EditorEdit(MWContext*, XFE_Frame*, Chrome*, char*);
/* open any editor, or make new */
MWContext* fe_EditorOpen(MWContext*, XFE_Frame*, Chrome*);
MWContext* fe_showEditor(Widget top, XFE_Frame*, Chrome*, URL_Struct*);
void fe_EditorDelete(MWContext* context);
void fe_EditorKill(MWContext* context);
void fe_EditorCleanup(MWContext* context);
Boolean fe_EditorSave(MWContext*);
Boolean fe_EditorSaveAs(MWContext*);
void fe_EditorPublish(MWContext*);
void fe_EditorReload(MWContext*, Boolean super_reload);
void fe_EditorKeyInsert(MWContext*, Widget, XEvent*);
void fe_EditorTab(MWContext* context, Boolean forward, Boolean force);
void fe_EditorGrabFocus(MWContext* context, XEvent *event);
void fe_EditorSelectionBegin(MWContext* context, XEvent *event);
void fe_EditorSelectionExtend(MWContext* context, XEvent *event);
void fe_EditorSelectionEnd(MWContext* context, XEvent *event);
/* Check whether an event is a shifted key or mouse button event */
void xfe_GetShiftAndCtrl(XEvent* event, Boolean* shiftP, Boolean* ctrlP);
/*
* Dialog interface.
*/
typedef enum fe_EditorPropertiesDialogType {
XFE_EDITOR_PROPERTIES_OOPS = 0,
XFE_EDITOR_PROPERTIES_LINK,
XFE_EDITOR_PROPERTIES_CHARACTER,
XFE_EDITOR_PROPERTIES_PARAGRAPH,
XFE_EDITOR_PROPERTIES_IMAGE,
XFE_EDITOR_PROPERTIES_HRULE,
XFE_EDITOR_PROPERTIES_HTML_TAG,
XFE_EDITOR_PROPERTIES_DOCUMENT,
XFE_EDITOR_PROPERTIES_IMAGE_INSERT,
XFE_EDITOR_PROPERTIES_LINK_INSERT,
XFE_EDITOR_PROPERTIES_TABLE,
XFE_EDITOR_PROPERTIES_TABLE_ROW,
XFE_EDITOR_PROPERTIES_TABLE_CELL,
XFE_EDITOR_PROPERTIES_TARGET
} fe_EditorPropertiesDialogType;
Boolean fe_EditorPropertiesDialogCanDo(MWContext*,
fe_EditorPropertiesDialogType);
void fe_EditorPropertiesDialogDo(MWContext*,
fe_EditorPropertiesDialogType);
void fe_EditorObjectPropertiesDialogDo(MWContext* context);
typedef enum fe_EditorDocumentPropertiesDialogType
{
XFE_EDITOR_DOCUMENT_PROPERTIES_OOPS = 0,
XFE_EDITOR_DOCUMENT_PROPERTIES_APPEARANCE,
XFE_EDITOR_DOCUMENT_PROPERTIES_GENERAL,
XFE_EDITOR_DOCUMENT_PROPERTIES_ADVANCED
} fe_EditorDocumentPropertiesDialogType;
void fe_EditorDocumentPropertiesDialogDo(MWContext* context,
fe_EditorDocumentPropertiesDialogType tab_type);
Boolean fe_EditorHorizontalRulePropertiesCanDo(MWContext* context);
void fe_EditorHorizontalRulePropertiesDialogDo(MWContext* context);
void fe_EditorSetColorsDialogDo(MWContext* context);
void fe_EditorDefaultGetColors( LO_Color* bg_color,
LO_Color* normal_color,
LO_Color* link_color,
LO_Color* active_color,
LO_Color* followed_color);
char* fe_EditorDefaultGetTemplate(void);
Boolean fe_EditorDefaultGetLastPublishLocation(MWContext* context,
char** location,
char** username,
char** password);
void fe_EditorDefaultSetLastPublishLocation(MWContext* context,
char* location,
char* username,
char* password);
/*
* Document Properties API.
*/
#define DOCUMENT_NORMAL_TEXT_COLOR (0)
#define DOCUMENT_LINK_TEXT_COLOR (1)
#define DOCUMENT_ACTIVE_TEXT_COLOR (2)
#define DOCUMENT_FOLLOWED_TEXT_COLOR (3)
#define DOCUMENT_BACKGROUND_COLOR (4)
#define DOCUMENT_NORMAL_TEXT_COLOR_MASK (0x1<<(DOCUMENT_NORMAL_TEXT_COLOR))
#define DOCUMENT_LINK_TEXT_COLOR_MASK (0x1<<(DOCUMENT_LINK_TEXT_COLOR))
#define DOCUMENT_ACTIVE_TEXT_COLOR_MASK (0x1<<(DOCUMENT_ACTIVE_TEXT_COLOR))
#define DOCUMENT_FOLLOWED_TEXT_COLOR_MASK (0x1<<(DOCUMENT_FOLLOWED_TEXT_COLOR))
#define DOCUMENT_BACKGROUND_COLOR_MASK (0x1<<(DOCUMENT_BACKGROUND_COLOR))
#define DOCUMENT_BACKGROUND_IMAGE_MASK (0x1<<5)
#define DOCUMENT_USE_CUSTOM_MASK (0x1<<6)
#define DOCUMENT_USE_IMAGE_MASK (0x1<<7)
#define DOCUMENT_ALL_APPEARANCE \
(DOCUMENT_BACKGROUND_COLOR_MASK|DOCUMENT_LINK_TEXT_COLOR_MASK| \
DOCUMENT_NORMAL_TEXT_COLOR_MASK|DOCUMENT_FOLLOWED_TEXT_COLOR_MASK| \
DOCUMENT_ACTIVE_TEXT_COLOR_MASK|DOCUMENT_BACKGROUND_IMAGE_MASK| \
DOCUMENT_USE_CUSTOM_MASK|DOCUMENT_USE_IMAGE_MASK)
typedef struct fe_EditorDocumentAppearancePropertiesStruct
{
fe_DependentList* dependents;
MWContext* context;
EDT_PageData page_data;
LO_Color colors[5]; /* customized by user */
LO_Color default_colors[5]; /* cache of defaults */
Boolean use_custom;
Boolean use_image;
Boolean leave_image;
char* image_path;
Widget image_text;
unsigned changed;
Boolean is_editor_preferences;
} fe_EditorDocumentAppearancePropertiesStruct;
Boolean fe_EditorDocumentGetColors(MWContext*,
char* background_image,
Boolean* leave_image,
LO_Color* bg_color,
LO_Color* normal_color,
LO_Color* link_color,
LO_Color* active_color,
LO_Color* followed_color);
void fe_EditorDocumentSetColors(MWContext* context,
char* background_image,
Boolean leave_image,
LO_Color* bg_color,
LO_Color* normal_color,
LO_Color* link_color,
LO_Color* active_color,
LO_Color* followed_color);
char* fe_EditorDocumentGetTitle(MWContext* context);
void fe_EditorDocumentSetTitle(MWContext* context, char* name);
void fe_EditorDocumentSetMetaData(MWContext*, char* name, char* val);
char* fe_EditorDocumentGetMetaData(MWContext*, char* name);
void fe_EditorDocumentSetAdvancedMetaDataList(MWContext*,
fe_NameValueItem*);
fe_NameValueItem* fe_EditorDocumentGetAdvancedMetaDataList(MWContext*);
void fe_EditorDocumentSetHttpEquivMetaDataList(MWContext* context,
fe_NameValueItem*);
fe_NameValueItem* fe_EditorDocumentGetHttpEquivMetaDataList(MWContext*);
Boolean fe_EditorPublishDialogDo(MWContext* context);
void fe_EditorDocumentSetImagesWithDocument(MWContext*, Boolean keep);
Boolean fe_EditorDocumentGetImagesWithDocument(MWContext*);
/*
* Editor preferences API.
*/
void fe_EditorPreferencesGetLinksAndImages(MWContext* context,
Boolean* links,
Boolean* images);
void fe_EditorPreferencesSetLinksAndImages(MWContext* context,
Boolean links,
Boolean images);
char* fe_EditorPreferencesGetAuthor(MWContext* context);
void fe_EditorPreferencesSetAuthor(MWContext* context, char*);
Boolean fe_EditorPreferencesGetColors(MWContext*,
char* background_image,
LO_Color* bg_color,
LO_Color* normal_color,
LO_Color* link_color,
LO_Color* active_color,
LO_Color* followed_color);
void fe_EditorPreferencesSetColors(MWContext* context,
char* background_image,
LO_Color* bg_color,
LO_Color* normal_color,
LO_Color* link_color,
LO_Color* active_color,
LO_Color* followed_color);
void fe_EditorPreferencesSetEditors(MWContext*, char*, char*);
void fe_EditorPreferencesGetEditors(MWContext*, char**, char**);
void fe_EditorEditImage(MWContext* context, char* file);
void fe_EditorEditSource(MWContext* context);
char* fe_EditorPreferencesGetTemplate(MWContext* context);
void fe_EditorPreferencesSetTemplate(MWContext* context, char*);
void fe_EditorPreferencesDialogDo(MWContext*, unsigned tab_type);
int fe_EditorGetPublishingHistory(unsigned, char**, char**, char**);
Boolean fe_EditorPreferencesGetPublishLocation(MWContext* context,
char** location,
char** username,
char** password);
void fe_EditorPreferencesSetPublishLocation(MWContext* context,
char* location,
char* username,
char* password);
char* fe_EditorPreferencesGetBrowseLocation(MWContext* context);
void fe_EditorPreferencesSetBrowseLocation(MWContext*, char*);
void fe_EditorPreferencesGetAutoSave(MWContext* context,
Boolean* enable,
unsigned* time);
void fe_EditorPreferencesSetAutoSave(MWContext* context,
Boolean enable,
unsigned time);
/* C adaptor to call C++ fe_showEditorPreferences(XFE_Component*,MWContext*)*/
void fe_EditorShowNewPreferences(MWContext*);
void fe_EditorTargetPropertiesDialogDo(MWContext*);
void fe_EditorHtmlPropertiesDialogDo(MWContext*);
char* fe_EditorGetTemplateURL(MWContext* context);
char* fe_EditorGetWizardURL(MWContext* context);
typedef struct EDT_AllTableData
{
EDT_TableData td;
EDT_TableCaptionData cd;
Boolean has_caption;
} EDT_AllTableData;
void fe_EditorTableDelete(MWContext*);
Boolean fe_EditorTableCanInsert(MWContext*);
void fe_EditorTableInsert(MWContext*, EDT_AllTableData* data);
Boolean fe_EditorTableCanDelete(MWContext*);
Boolean fe_EditorTableRowCanInsert(MWContext*);
void fe_EditorTableRowInsert(MWContext* context, EDT_TableRowData*);
Boolean fe_EditorTableRowCanDelete(MWContext*);
void fe_EditorTableRowDelete(MWContext* context);
Boolean fe_EditorTableColumnCanInsert(MWContext*);
void fe_EditorTableColumnInsert(MWContext*, EDT_TableCellData*);
void fe_EditorTableColumnDelete(MWContext* context);
Boolean fe_EditorTableColumnCanDelete(MWContext* context);
Boolean fe_EditorTableCellCanInsert(MWContext*);
void fe_EditorTableCellInsert(MWContext* context, EDT_TableCellData*);
Boolean fe_EditorTableCellCanDelete(MWContext*);
void fe_EditorTableCellDelete(MWContext* context);
Boolean fe_EditorTableGetData(MWContext*, EDT_AllTableData*);
void fe_EditorTableSetData(MWContext*, EDT_AllTableData*);
Boolean fe_EditorTableRowGetData(MWContext*, EDT_TableRowData*);
void fe_EditorTableRowSetData(MWContext*, EDT_TableRowData*);
Boolean fe_EditorTableCellGetData(MWContext*, EDT_TableCellData*);
void fe_EditorTableCellSetData(MWContext*, EDT_TableCellData*);
void fe_EditorDisplayTablesSet(MWContext* context, Boolean display);
Boolean fe_EditorDisplayTablesGet(MWContext* context);
void fe_EditorTablePropertiesDialogDo(MWContext*, fe_EditorPropertiesDialogType);
void fe_EditorTableCreateDialogDo(MWContext*);
Boolean fe_EditorCheckUnsaved(MWContext* context);
void fe_EditorDisplaySource(MWContext* context);
char* fe_EditorMakeName(MWContext*, char* buf, unsigned maxsize);
void fe_EditorRefresh(MWContext*);
MWContext* fe_EditorGetURL(MWContext* context, char* address);
void fe_EditorNotifyBackgroundChanged(MWContext*);
void fe_EditorRefreshArea(MWContext*, int, int, unsigned, unsigned);
void fe_EditorGetUrlExitRoutine(MWContext*, URL_Struct*, int status);
/*
* Misc stuff that should be elsewhere
*/
enum {
XFE_DIALOG_YES_BUTTON = (XmDIALOG_DIR_LIST_LABEL+1),
XFE_DAILOG_YESTOALL_BUTTON,
XFE_DIALOG_NO_BUTTON,
XFE_DIALOG_NOTOALL_BUTTON,
XFE_DIALOG_CANCEL_BUTTON,
XFE_DIALOG_DESTROY_BUTTON
};
XtPointer fe_GetUserData(Widget);
Widget fe_OptionMenuSetHistory(Widget, unsigned);
char* FE_CondenseURL(char* target, char* source, unsigned target_len);
Boolean fe_EditorDocumentIsSaved(MWContext* context);
int fe_YesNoCancelDialog(MWContext*, char* name, char* message);
MWContext* fe_GetURLInBrowser(MWContext* context, URL_Struct *url);
Boolean fe_HintDialog(MWContext* context, char* message);
void fe_editor_scroll(MWContext *context);
void fe_editor_delete_response(Widget, XtPointer, XtPointer);
#ifdef __cplusplus
}
#endif
#endif /* _XEDITOR_H_ */