pjs/cmd/macfe/Composer/meditdlg.h

842 строки
20 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.
*/
#pragma once
#include "CTabSwitcher.h"
#include "ntypes.h" // MWContext
#include "lo_ele.h" // LO_Color
#include "intl_csi.h" // INTL_GetCSIWinCSID
#ifdef COOL_IMAGE_RADIO_BUTTONS
# include "CBevelButton.h"
#endif
class OneRowLListBox;
class CColorButton;
class CTabControl;
class CLargeEditField;
class LGAEditField;
class LGAPopup;
class CChameleonView: public LView
{
public:
enum { class_ID = 'cviw' };
CChameleonView(LStream * inStream) : LView(inStream) {};
virtual void SetColor(RGBColor textColor);
virtual void DrawSelf();
protected:
RGBColor fTextColor;
};
class CChameleonCaption: public LCaption
{
public:
enum {class_ID = 'ccpt' };
CChameleonCaption(LStream * inStream) : LCaption(inStream) {};
virtual void SetColor(RGBColor textColor, RGBColor backColor);
protected:
RGBColor fTextColor;
RGBColor fBackColor;
virtual void DrawSelf();
};
// This class simply creates a dialog and extracts the context from the SuperCommand so
// that we can set the values of the controls in the dialog based on the context which created it.
class CEditDialog: public LDialogBox
{
public:
CEditDialog( LStream* inStream ): LDialogBox( inStream ), mUndoInited(false) { pExtra = NULL; }
~CEditDialog() { XP_FREEIF(pExtra); }
static Boolean Start(ResIDT inWindowID, MWContext * context = NULL, short initTabValue = 0, Boolean insert = FALSE);
Boolean AllowSubRemoval( LCommander *inSub );
virtual void InitializeDialogControls() = NULL;
void SetContext(MWContext* context) {fContext = context;}
MWContext* GetContext() { return fContext;}
void SetInitTabValue(short initValue) {fInitTabValue = initValue;}
short GetInitTabValue() { return fInitTabValue;}
void SetInWindowID(ResIDT inWindowID) {fInWindowID = inWindowID;}
ResIDT GetInWindowID() { return fInWindowID;}
void SetInsertFlag(Boolean insert) {fInsert = insert;}
Boolean GetInsertFlag() { return fInsert;}
int16 GetWinCSID() { return INTL_GetCSIWinCSID(LO_GetDocumentCharacterSetInfo(fContext)); }
static void ChooseImageFile(CLargeEditField* editField);
protected:
virtual Boolean CommitChanges(Boolean allPanes) = NULL;
virtual void Help() = NULL;
MWContext* fContext;
short fInitTabValue;
Boolean fInsert;
ResIDT fInWindowID;
char* pExtra;
Boolean mUndoInited;
};
class CEditTabSwitcher: public CTabSwitcher
{
public:
enum { class_ID = 'EtSw' };
CEditTabSwitcher(LStream* inStream);
virtual ~CEditTabSwitcher();
virtual void DoPostLoad(LView* inLoadedPage, Boolean inFromCache);
void SetData(MWContext* context, Boolean insert);
void Help();
protected:
MWContext* fContext;
Boolean fInsert;
char* fLinkName; // need to share between link and image pages
};
class CTableInsertDialog: public CEditDialog
{
public:
enum { class_ID = 'ETBT' };
CTableInsertDialog( LStream* inStream );
virtual ~CTableInsertDialog();
virtual Boolean CommitChanges(Boolean allPanes);
void AdjustEnable();
virtual void FinishCreateSelf();
virtual void InitializeDialogControls();
virtual void ListenToMessage( MessageT inMessage, void* ioParam );
protected:
virtual void Help();
LGAEditField* fNumRowsEditText;
LGAEditField* fNumColsEditText;
LControl* fBorderCheckBox;
LGAEditField* fBorderWidthEditText;
LGAEditField* fCellSpacingEditText;
LGAEditField* fCellPaddingEditText;
LControl* fCustomWidth;
LGAEditField* fWidthEditText;
LControl* fWidthPopup;
LControl* fCustomHeight;
LGAEditField* fHeightEditText;
LControl* fHeightPopup;
LControl* fCustomColor;
CColorButton* fColorCustomColor;
LControl* fCaptionAboveBelow;
LGAPopup* mTableAlignment;
LControl* mFastLayout;
LControl* mUseImage;
CLargeEditField* mImageFileName;
LControl* mLeaveImage;
};
class CFormatMsgColorAndImageDlog: public CEditDialog
{
public:
enum { class_ID = 'Ec+i' };
CFormatMsgColorAndImageDlog( LStream* inStream ) : CEditDialog( inStream ) {;}
virtual ~CFormatMsgColorAndImageDlog() {;}
virtual Boolean CommitChanges(Boolean allPanes);
virtual void InitializeDialogControls();
protected:
virtual void Help();
};
class CTarget: public CEditDialog
{
public:
enum { class_ID = 'ETRG' };
CTarget( LStream* inStream );
virtual ~CTarget();
void CleanUpTargetString(char *target);
Boolean AlreadyExistsInDocument(char *anchor);
virtual Boolean CommitChanges(Boolean allPanes);
virtual void InitializeDialogControls();
protected:
virtual void Help() {;} // Sorry, no help.
char* fOriginalTarget;
CLargeEditField* fTargetName;
};
class CLineProp: public CEditDialog
{
public:
enum { class_ID = 'EDL0' };
CLineProp( LStream* inStream );
virtual ~CLineProp( );
virtual Boolean CommitChanges(Boolean allPanes);
virtual void FinishCreateSelf();
virtual void InitializeDialogControls();
// virtual void ListenToMessage( MessageT inMessage, void* ioParam );
protected:
virtual void Help();
LControl* fLeftAlign;
LControl* fCenterAlign;
LControl* fRightAlign;
LGAEditField* fHeightEditText;
LGAEditField* fWidthEditText;
LControl* fPixelPercent;
LControl* fShading;
};
class CUnknownTag: public CEditDialog
{
public:
enum { class_ID = 'EDUT' };
CUnknownTag( LStream* inStream );
virtual ~CUnknownTag();
virtual Boolean CommitChanges(Boolean allPanes);
virtual void InitializeDialogControls();
virtual void FinishCreateSelf();
virtual void ListenToMessage( MessageT inMessage, void* ioParam );
protected:
virtual void Help();
CLargeEditField* fTargetName;
};
class MultipleSelectionSingleColumn: public LListBox
{
public:
enum { class_ID = 'MSSC' };
MultipleSelectionSingleColumn( LStream* inStream );
virtual int16 NumItems();
virtual void DeselectAll();
virtual void SelectAll();
virtual void AddItem( char* data, Boolean isSelected );
virtual StringPtr GetItem(Str255 outDescriptor, int32 rowNum) const; // rowNum is zero based
virtual void RemoveAllItems();
virtual Boolean IsSelected(int32 rowNum); // rowNum is zero based
};
class CPublishHistory
{
public:
// Do we have any history at all?
static Boolean IsTherePublishHistory();
// Get a particular entry
static char* GetPublishHistoryCharPtr(short whichone);
// Set a particular entry
static void SetPublishHistoryCharPtr(char* entry, short whichone);
// Put an entry at the top of the list (and remove any duplicate)
static void AddPublishHistoryEntry(char *entry);
};
class CPublish: public CEditDialog
{
public:
enum { class_ID = 'EPLS' };
CPublish( LStream* inStream );
virtual ~CPublish();
virtual Boolean CommitChanges(Boolean allPanes);
virtual void FinishCreateSelf();
virtual void InitializeDialogControls();
virtual void ListenToMessage( MessageT inMessage, void* ioParam );
protected:
virtual void Help();
char * DocName();
LCaption* fLocalLocation;
LControl* fImageFiles;
LControl* fFolderFiles;
LControl* fDefaultLocation;
MultipleSelectionSingleColumn* fFileList;
LGAEditField* fPublishLocation;
LGAEditField* fUserID;
LGAEditField* fPassword;
LControl* fSavePassword;
LGAPopup* mHistoryList;
};
// This is a dialog box which contains a Tab control.
// This code was written using Cmd-C & Cmd-V from the CPrefWindow class.
// We don't need everything in CPrefWindow though, and I'm too lazy to make
// a nice base class for both at the moment.
class CTabbedDialog : public CEditDialog
{
public:
enum {class_ID = 'EDTB'};
CTabbedDialog( LStream* inStream );
virtual ~CTabbedDialog();
static void RegisterViewTypes();
void FinishCreateSelf();
virtual void InitializeDialogControls();
virtual void SavePlace( LStream* ) { }
virtual void RestorePlace( LStream* ) { }
// virtual void ListenToMessage( MessageT inMessage, void* ioParam );
protected:
virtual void Help();
virtual Boolean CommitChanges(Boolean allPanes);
CTabControl* mTabControl;
CEditTabSwitcher* mTabSwitcher;
};
/*****************************************************************************
* class CEditorPrefContain. (used to be CPrefContain)
* Container for a related group of controls (1 pane of preference window)
* and know how to:
* - get proper variables from data, and assign the values to controls
* - get values from controls back into data.
*****************************************************************************/
class CEditorPrefContain : public LView, public LListener, public LTabGroup
{
public:
CEditorPrefContain( LStream* inStream ) : LView( inStream ) {};
virtual ~CEditorPrefContain() { };
// <20> link to little controls, and reset their values
virtual void FinishCreateSelf() { LView::FinishCreateSelf(); UReanimator::LinkListenerToControls(this, this, GetPaneID()); ControlsFromPref();}
// <20><>listens to 'default' message
void ListenToMessage( MessageT, void* ) {};
// <20> initialize from preferences
virtual void ControlsFromPref() = 0;
virtual void PrefsFromControls() = 0;
virtual void DrawSelf();
};
class CEditContain: public CEditorPrefContain, public LBroadcaster
{
public:
CEditContain(LStream* inStream): CEditorPrefContain( inStream ){ pExtra = NULL; }
~CEditContain(){ XP_FREEIF(pExtra); }
void SetContext(MWContext* context) {fContext = context;}
MWContext* GetContext() { return fContext;}
void SetInsertFlag(Boolean insert) {fInsert = insert;}
Boolean GetInsertFlag() { return fInsert;}
void SetLinkToLinkName(char** LinkNameLink) {fLinkName = LinkNameLink;}
void SetExtraHTMLString(char *s) { pExtra = s; };
virtual void Help() = NULL;
int16 GetWinCSID() { return INTL_GetCSIWinCSID(LO_GetDocumentCharacterSetInfo(fContext)); }
virtual Boolean AllFieldsOK() = NULL;
protected:
MWContext* fContext;
Boolean fInsert;
char** fLinkName;
char* pExtra;
};
class CEDCharacterContain: public CEditContain
{
public:
enum {class_ID = '1edl'};
CEDCharacterContain( LStream* inStream ) : CEditContain( inStream ){};
virtual void FinishCreateSelf();
virtual void PrefsFromControls();
virtual void ControlsFromPref();
virtual void ListenToMessage( MessageT inMessage, void* ioParam );
virtual void Help();
virtual Boolean AllFieldsOK() { return TRUE;}
protected:
Boolean fColorChanged;
Boolean fSizeChanged;
LControl* fTextSizePopup;
LControl* mFontMenu;
Boolean mFontChanged;
LControl* fColorDefaultRadio;
LControl* fColorCustomRadio;
CColorButton* fColorCustomColor;
LControl* fTextBoldCheck;
LControl* fTextItalicCheck;
LControl* fTextSuperscriptCheck;
LControl* fTextSubscriptCheck;
LControl* fTextNoBreaksCheck;
LControl* fTextUnderlineCheck;
LControl* fTextStrikethroughCheck;
LControl* fTextBlinkingCheck;
LControl* fClearTextStylesButton;
LControl* fClearAllStylesButton;
};
class CEDParagraphContain: public CEditContain
{
public:
enum {class_ID = '2edl'};
CEDParagraphContain( LStream* inStream ) : CEditContain( inStream ){};
virtual void FinishCreateSelf();
virtual void PrefsFromControls();
virtual void ControlsFromPref();
virtual void ListenToMessage( MessageT inMessage, void* ioParam );
virtual void Help();
virtual Boolean AllFieldsOK();
protected:
void AdjustPopupsVisibility();
LControl* fParagraphStylePopup;
LControl* fContainerStylePopup;
LControl* fListStylePopup;
LControl* fNumberPopup;
LControl* fBulletPopup;
LControl* fStartNumberCaption;
LGAEditField* fStartNumberEditText;
LControl* fLeftAlignRadio;
LControl* fCenterAlignRadio;
LControl* fRightAlignRadio;
};
#ifdef COOL_IMAGE_RADIO_BUTTONS
class CImageAlignButton: public CBevelButton
{
public:
enum { class_ID = 'BvRB' };
CImageAlignButton( LStream* inStream ) : CBevelButton( inStream ){};
virtual void SetValue(
Int32 inValue);
private:
virtual void HotSpotAction(
Int16 inHotSpot,
Boolean inCurrInside,
Boolean inPrevInside);
virtual void HotSpotResult(Int16 inHotSpot);
};
#endif
class CEDLinkContain: public CEditContain
{
public:
enum {class_ID = '3edl'};
CEDLinkContain( LStream* inStream ) : CEditContain( inStream ){};
virtual ~CEDLinkContain();
virtual void FinishCreateSelf();
virtual void PrefsFromControls();
virtual void ControlsFromPref();
virtual void Show();
virtual void Hide();
virtual void ListenToMessage( MessageT inMessage, void* ioParam );
virtual void Help();
virtual Boolean AllFieldsOK() { return TRUE;}
protected:
void SelectedFileUpdate();
void CurrentFileTargs();
CLargeEditField* fLinkedTextEdit;
LControl* fChooseFileLinkButton;
LControl* fRemoveLinkButton;
CLargeEditField* fLinkPageTextEdit;
LControl* fCurrentDocumentRadio;
LControl* fSelectedFileRadio;
OneRowLListBox* fTargetList;
char* fTargs;
};
class CEDImageContain: public CEditContain
{
public:
enum {class_ID = '4edl'};
CEDImageContain( LStream* inStream );
virtual ~CEDImageContain();
virtual void FinishCreateSelf();
virtual void PrefsFromControls();
virtual void ControlsFromPref();
EDT_ImageData * ImageDataFromControls();
virtual void Show();
virtual void Hide();
virtual void ListenToMessage( MessageT inMessage, void* ioParam );
virtual void Help();
virtual Boolean AllFieldsOK();
protected:
void AdjustEnable();
char * fSrcStr;
char * fLowSrcStr;
CLargeEditField* fImageFileName; // was CEditBroadcaster
CLargeEditField* fImageAltFileName;
CLargeEditField* fImageAltTextEdit;
LGAEditField* fHeightTextEdit;
LGAEditField* fWidthTextEdit;
LControl* fImageLockedCheckBox;
int32 fOriginalWidth; /* Width and Height we got on initial loading */
int32 fOriginalHeight;
LGAEditField* fLeftRightBorderTextEdit;
LGAEditField* fTopBottomBorderTextEdit;
LGAEditField* fSolidBorderTextEdit;
LControl* fCopyImageCheck;
LControl* fBackgroundImageCheck;
LControl* fRemoveImageMapButton;
LControl* fEditImageButton;
Boolean fLooseImageMap;
Boolean mBorderUnspecified;
LControl* mImageAlignmentPopup;
};
class CEDDocPropGeneralContain: public CEditContain
{
public:
enum {class_ID = '5edl'};
CEDDocPropGeneralContain( LStream* inStream ) : CEditContain( inStream ){};
virtual void FinishCreateSelf();
virtual void PrefsFromControls();
virtual void ControlsFromPref();
void AddMeta(char *Name, CLargeEditField* value);
// virtual void ListenToMessage( MessageT inMessage, void* ioParam );
virtual void Help();
virtual Boolean AllFieldsOK() { return TRUE;}
protected:
CLargeEditField* fLocation;
CLargeEditField* fTitle;
CLargeEditField* fAuthor;
CLargeEditField* fDescription;
CLargeEditField* fKeywords;
CLargeEditField* fClassification;
};
// This should be moved to XP code in the future
typedef struct _EDT_ColorSchemeData {
char * pSchemeName;
LO_Color ColorText;
LO_Color ColorLink;
LO_Color ColorActiveLink;
LO_Color ColorFollowedLink;
LO_Color ColorBackground;
char * pBackgroundImage;
} EDT_ColorSchemeData;
class AppearanceContain: public CEditContain
{
AppearanceContain( LStream* inStream ) : CEditContain( inStream ){};
virtual void FinishCreateSelf();
virtual void ListenToMessage( MessageT inMessage, void* ioParam );
void ChooseImageFile();
protected:
void UpdateTheWholeDamnDialogBox();
LControl* fCustomColor;
LControl* fBrowserColor;
LControl* fColorScheme;
CChameleonView* fExampleView;
CColorButton* fNormalText;
CColorButton* fLinkedText;
CColorButton* fActiveLinkedText;
CColorButton* fFollowedLinkedText;
CChameleonCaption* fExampleNormalText;
CChameleonCaption* fExampleLinkedTex;
CChameleonCaption* fExampleActiveLinkedText;
CChameleonCaption* fExampleFollowedLinkedText;
CColorButton* fSolidColor;
LControl* fImageFile;
CLargeEditField* fImageFileName;
XP_List* fSchemeData;
};
class CEDDocPropAppearanceContain: public AppearanceContain
{
public:
enum {class_ID = '6edl'};
CEDDocPropAppearanceContain( LStream* inStream ) : AppearanceContain( inStream ){};
virtual ~CEDDocPropAppearanceContain();
virtual void PrefsFromControls();
virtual void ControlsFromPref();
virtual Boolean AllFieldsOK() { return TRUE;}
virtual void Help();
};
class CEDDocAppearanceNoTab: public CEDDocPropAppearanceContain
{
public:
enum {class_ID = '6edL'};
CEDDocAppearanceNoTab( LStream* inStream ) : CEDDocPropAppearanceContain( inStream ){};
virtual ~CEDDocAppearanceNoTab() {;}
virtual void DrawSelf();
};
class CEDDocPropAdvancedContain: public CEditContain
{
public:
enum {class_ID = '7edl'};
CEDDocPropAdvancedContain( LStream* inStream ) : CEditContain( inStream ){};
virtual ~CEDDocPropAdvancedContain();
virtual void FinishCreateSelf();
void PutStringsInBuffer();
Boolean BufferUnique();
virtual void PrefsFromControls();
virtual void ControlsFromPref();
virtual void ListenToMessage( MessageT inMessage, void* ioParam );
virtual void Help();
virtual Boolean AllFieldsOK() { return TRUE;}
protected:
int16 fbufferlen;
char* fbuffer;
OneRowLListBox* fSystemVariables;
OneRowLListBox* fUserVariables;
CLargeEditField* fName;
CLargeEditField* fValue;
};
class CEDTableContain: public CEditContain
{
public:
enum {class_ID = '8edl'};
CEDTableContain( LStream* inStream ) : CEditContain( inStream ) { pExtra = NULL; }
~CEDTableContain() { XP_FREEIF(pExtra); }
virtual void FinishCreateSelf();
virtual void Help();
void AdjustEnable();
virtual void PrefsFromControls();
virtual void ControlsFromPref();
virtual void ListenToMessage( MessageT inMessage, void* ioParam );
virtual Boolean AllFieldsOK();
protected:
LGAEditField* fNumRowsEditText;
LGAEditField* fNumColsEditText;
LControl* fBorderCheckBox;
LGAEditField* fBorderWidthEditText;
LGAEditField* fCellSpacingEditText;
LGAEditField* fCellPaddingEditText;
LControl* fCustomWidth;
LGAEditField* fWidthEditText;
LControl* fWidthPopup;
LControl* fCustomHeight;
LGAEditField* fHeightEditText;
LControl* fHeightPopup;
LControl* fCustomColor;
CColorButton* fColorCustomColor;
LControl* fIncludeCaption;
LControl* fCaptionAboveBelow;
LGAPopup* mTableAlignment;
LControl* mFastLayout;
LControl* mUseImage;
CLargeEditField* mImageFileName;
LControl* mLeaveImage;
char* pExtra;
};
class CEDTableCellContain: public CEditContain
{
public:
enum {class_ID = 'aedl'};
CEDTableCellContain( LStream* inStream ) : CEditContain( inStream ) { pExtra = NULL; }
~CEDTableCellContain() { XP_FREEIF(pExtra); }
virtual void FinishCreateSelf();
virtual void Help();
void AdjustEnable();
virtual void PrefsFromControls();
virtual void ControlsFromPref();
virtual void ListenToMessage( MessageT inMessage, void* ioParam );
virtual Boolean AllFieldsOK();
protected:
LGAEditField* fRowSpanEditText;
LGAEditField* fColSpanEditText;
LGAPopup* fHorizontalAlignment;
LGAPopup* fVerticalAlignment;
LControl* fHeaderStyle;
LControl* fWrapText;
LControl* fCustomWidth;
LGAEditField* fWidthEditText;
LControl* fWidthPopup;
LControl* fCustomHeight;
LGAEditField* fHeightEditText;
LControl* fHeightPopup;
LControl* fCustomColor;
CColorButton* fColorCustomColor;
LControl* mNextButton;
LControl* mPreviousButton;
LControl* mUseImage;
CLargeEditField* mImageFileName;
LControl* mLeaveImage;
char* pExtra;
};