Fixed sizing, caret garbage, and prefs bugs for Composer. Initial implementation of 'freeze frame' concept.

This commit is contained in:
cmanske%netscape.com 1998-10-13 21:01:06 +00:00
Родитель 2f5a10e315
Коммит dbd232b60c
10 изменённых файлов: 26 добавлений и 6077 удалений

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,590 +0,0 @@
/* -*- 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.
*/
#include "stdafx.h"
#include "secnav.h"
#include "frameglu.h"
#include "mainfrm.h"
#include "ipframe.h"
#include "prefapi.h"
// Our active frame stack.
CPtrList CFrameGlue::m_cplActiveFrameStack;
// A way to correctly get the frame glue out of a frame at run time though
// the class derivations and casting are not right....
CFrameGlue *CFrameGlue::GetFrameGlue(CFrameWnd *pFrame) {
// Use IsKindOf to determine the frame's class type.
// From there, we can correctly cast the frame window pointer, and
// further cast to the abstract base class of CFrameGlue.
CFrameGlue *pRetval = NULL;
if(pFrame->IsKindOf(RUNTIME_CLASS(CGenericFrame))) {
pRetval = (CFrameGlue *)((CGenericFrame *)pFrame);
}
else if(pFrame->IsKindOf(RUNTIME_CLASS(CInPlaceFrame))) {
pRetval = (CFrameGlue *)((CInPlaceFrame *)pFrame);
}
#ifdef DEBUG
if(pRetval == NULL) {
// If you got here, either you need to add appropriate casting statements
// in the above if to resolve the CFrameGlue, or you have found a bug.
TRACE("Invalid frame window has no frame glue!\n");
// ASSERT(0);
}
#endif // DEBUG
return(pRetval);
}
CFrameGlue::CFrameGlue() {
m_pActiveContext = NULL;
m_pMainContext = NULL;
m_bCanRestoreState = FALSE;
m_iCSID = theApp.m_iCSID;
m_pChrome = NULL;
// location bar
// note I just changed this from 1.0 version to be more appropriate chouck 24-jan-95
XP_Bool bBar;
PREF_GetBoolPref("browser.chrome.show_url_bar",&bBar);
m_bLocationBar = bBar;
// show the starter buttons?
PREF_GetBoolPref("browser.chrome.show_directory_buttons",&bBar);
m_bStarter = bBar;
PREF_GetBoolPref("browser.chrome.show_toolbar",&bBar);
m_bShowToolbar = bBar;
// No find replace dialog yet.
m_pFindReplace = NULL;
m_pClipChildMap = NULL;
m_isBackgroundPalette = FALSE;
}
CFrameGlue::~CFrameGlue() {
// Take all entries of this frame in the active frame stack out.
POSITION pos;
while( pos = m_cplActiveFrameStack.Find( (LPVOID) this ) ){
m_cplActiveFrameStack.RemoveAt( pos );
}
// When the frame goes down, let the window context know.
if(GetMainWinContext()) {
GetMainWinContext()->ClearFrame();
}
if( m_pClipChildMap != NULL ) {
m_pClipChildMap->RemoveAll();
delete m_pClipChildMap;
m_pClipChildMap = NULL;
}
}
// Generic way to get a frame out of the context.
CFrameGlue *GetFrame(MWContext *pContext)
{
CFrameGlue *pRetval = NULL;
if(pContext != NULL) {
if(ABSTRACTCX(pContext) && ABSTRACTCX(pContext)->IsFrameContext()) {
pRetval = ABSTRACTCX(pContext)->GetFrame();
}
}
return(pRetval);
}
CAbstractCX *CFrameGlue::GetMainContext() const
{
return(m_pMainContext);
}
CAbstractCX *CFrameGlue::GetActiveContext() const
{
return(m_pActiveContext);
}
CWinCX *CFrameGlue::GetMainWinContext() const
{
if (m_pMainContext && m_pMainContext->IsFrameContext()) {
return((CWinCX *) m_pMainContext);
}
return NULL;
}
CWinCX *CFrameGlue::GetActiveWinContext() const
{
if (m_pActiveContext && m_pActiveContext->IsFrameContext()) {
return((CWinCX *) m_pActiveContext);
}
return NULL;
}
void CFrameGlue::SetMainContext(CAbstractCX *pContext) {
m_pMainContext = pContext;
}
CPtrList CFrameGlue::m_cplActiveContextCBList;
void CFrameGlue::SetActiveContext(CAbstractCX *pContext)
{
m_pActiveContext = pContext;
POSITION rIndex = m_cplActiveContextCBList.GetHeadPosition();
while(rIndex != NULL) {
ActiveContextCB cb = (ActiveContextCB)m_cplActiveContextCBList.GetNext(rIndex);
(cb)(this, pContext);
}
}
void CFrameGlue::AddActiveContextCB(ActiveContextCB cb)
{
m_cplActiveContextCBList.AddTail((LPVOID)cb);
}
void CFrameGlue::RemoveActiveContextCB(ActiveContextCB cb)
{
POSITION rIndex = m_cplActiveContextCBList.Find((LPVOID)cb);
if(rIndex) {
m_cplActiveContextCBList.RemoveAt(rIndex);
}
}
// Override to test if frame is an editor
BOOL CFrameGlue::IsEditFrame()
{
return(FALSE);
}
CPtrList CFrameGlue::m_cplActiveNotifyCBList;
// Add to the top of the stack of active frames.
void CFrameGlue::SetAsActiveFrame()
{
POSITION rIndex = m_cplActiveNotifyCBList.GetHeadPosition();
while(rIndex != NULL) {
ActiveNotifyCB cb = (ActiveNotifyCB) m_cplActiveNotifyCBList.GetNext(rIndex);
(cb)(this);
}
POSITION pos = m_cplActiveFrameStack.Find( (LPVOID) this );
if (pos) {
m_cplActiveFrameStack.RemoveAt( pos );
}
TRY {
m_cplActiveFrameStack.AddHead((void *)this);
}
CATCH(CException, e) {
// didn't work, Silently fail...
ASSERT(0);
}
END_CATCH
}
void CFrameGlue::AddActiveNotifyCB( ActiveNotifyCB cb )
{
m_cplActiveNotifyCBList.AddTail( (LPVOID) cb );
}
void CFrameGlue::RemoveActiveNotifyCB( ActiveNotifyCB cb )
{
POSITION rIndex = m_cplActiveNotifyCBList.Find( (LPVOID) cb );
if (rIndex) {
m_cplActiveNotifyCBList.RemoveAt( rIndex );
}
}
// Find a browser window in the active stack, only use cxType types.
// Default is to NOT find editor windows when cxType = MWContextBrowser
CFrameGlue *CFrameGlue::GetLastActiveFrame(MWContextType cxType, int nFindEditor)
{
CFrameGlue *pRetval = NULL;
// Loop through all active frames.
POSITION rIndex = m_cplActiveFrameStack.GetHeadPosition();
while(rIndex != NULL) {
pRetval = (CFrameGlue *)m_cplActiveFrameStack.GetNext(rIndex);
// See if we can get the type from the context, and verify the type.
if(pRetval->GetMainContext() != NULL) {
MWContextType cxRetType = pRetval->GetMainContext()->GetContext()->type;
if(cxType == MWContextAny || cxRetType == cxType) {
// If looking for only Browser, skip an editor frame
if (cxType == MWContextBrowser){
BOOL bIsEditor = EDT_IS_EDITOR(pRetval->GetMainContext()->GetContext());
if((nFindEditor == FEU_FINDBROWSERONLY && bIsEditor) ||
(nFindEditor == FEU_FINDEDITORONLY && !bIsEditor)) {
// Failed the check. clear retval.
pRetval = NULL;
continue;
}
}
// Don't allow Netcaster either
if (pRetval->GetMainContext()->GetContext() == theApp.m_pNetcasterWindow
|| (pRetval->GetMainContext()->GetContext()->name && (XP_STRCASECMP(pRetval->GetMainContext()->GetContext()->name,"Netscape_Netcaster_Drawer") == 0))) {
pRetval = NULL;
continue;
}
// Found one.
break;
}
}
// Failed the check. clear retval.
pRetval = NULL;
}
return(pRetval);
}
CFrameGlue *CFrameGlue::GetLastActiveFrameByCustToolbarType(CString custToolbar, CFrameWnd *pCurrentFrame, BOOL bUseSaveInfo)
{
CFrameGlue *pRetval = NULL;
// Loop through all active frames.
POSITION rIndex = m_cplActiveFrameStack.GetHeadPosition();
while(rIndex != NULL) {
pRetval = (CFrameGlue *)m_cplActiveFrameStack.GetNext(rIndex);
// if it's the current frame, then keep looking because we want the one before it.
if(pRetval->GetFrameWnd() == pCurrentFrame) {
pRetval = NULL;
continue;
}
// See if we share the same custtoolbar string.
if((pRetval->m_pChrome) && (pRetval->m_pChrome->GetCustToolbarString() == custToolbar)){
if(bUseSaveInfo){
// if customizable toolbar saves its prefs, then break
// this is used to ignore windows like View Page Source and View Page Info
if(pRetval->m_pChrome->GetCustomizableToolbar()->GetSaveToolbarInfo())
break;
}
else
break;
}
// Failed the check. clear retval.
pRetval = NULL;
}
return(pRetval);
}
CFrameGlue *CFrameGlue::GetBottomFrame(MWContextType cxType, int nFindEditor)
{
CFrameGlue *pRetval = NULL;
// Loop through all active frames until we reach the bottom.
POSITION rIndex = m_cplActiveFrameStack.GetTailPosition();
while(rIndex != NULL) {
pRetval = (CFrameGlue *)m_cplActiveFrameStack.GetPrev(rIndex);
// See if we can get the type from the context, and verify the type.
if(pRetval->GetMainContext() != NULL) {
MWContextType cxRetType = pRetval->GetMainContext()->GetContext()->type;
if(cxType == MWContextAny || cxRetType == cxType) {
// If looking for only Browser, skip an editor frame
if (cxType == MWContextBrowser){
BOOL bIsEditor = EDT_IS_EDITOR(pRetval->GetMainContext()->GetContext());
if((nFindEditor == FEU_FINDBROWSERONLY && bIsEditor) ||
(nFindEditor == FEU_FINDEDITORONLY && !bIsEditor)) {
// Failed the check. clear retval.
continue;
}
}
// Found one
break;
}
}
}
return(pRetval);
}
// Find the number of active frames of type cxType
int CFrameGlue::GetNumActiveFrames(MWContextType cxType, int nFindEditor)
{
int nCount = 0;
CFrameGlue *pRetval = NULL;
// Loop through all active frames.
POSITION rIndex = m_cplActiveFrameStack.GetHeadPosition();
while(rIndex != NULL) {
pRetval = (CFrameGlue *)m_cplActiveFrameStack.GetNext(rIndex);
// See if we can get the type from the context, and verify the type.
if(pRetval->GetMainContext() != NULL) {
MWContextType cxRetType = pRetval->GetMainContext()->GetContext()->type;
if(cxType == MWContextAny || cxRetType == cxType) {
// If looking for only Browser, skip an editor frame
if (cxType == MWContextBrowser){
BOOL bIsEditor = EDT_IS_EDITOR(pRetval->GetMainContext()->GetContext());
if((nFindEditor == FEU_FINDBROWSERONLY && bIsEditor) ||
(nFindEditor == FEU_FINDEDITORONLY && !bIsEditor)) {
continue;
}
}
// Found one so increase count.
nCount++;
}
}
}
return(nCount);
}
// Find a browser window by context ID....
CFrameGlue *CFrameGlue::FindFrameByID(DWORD dwID, MWContextType cxType)
{
CFrameGlue *pRetval = NULL;
// Must have a context first.
CAbstractCX *pCX = CAbstractCX::FindContextByID(dwID);
if(pCX != NULL) {
// Must be a window context.
if(pCX->IsFrameContext() == TRUE) {
// Make sure the context is of the correct type.
if(cxType == MWContextAny || cxType == pCX->GetContext()->type) {
pRetval = VOID2CX(pCX, CAbstractCX)->GetFrame();
}
}
}
return(pRetval);
}
// Common command handler for all frames.
// Call in your OnCommand derivation.
BOOL CFrameGlue::CommonCommand(UINT wParam, LONG lParam) {
UINT nID = LOWORD(wParam);
if (IS_PLACESMENU_ID(nID) || IS_HELPMENU_ID(nID)) {
char * url = NULL;
if (IS_PLACESMENU_ID(nID))
PREF_CopyIndexConfigString("menu.places.item",CASTINT(nID-FIRST_PLACES_MENU_ID),"url",&url);
else
PREF_CopyIndexConfigString("menu.help.item",CASTINT(nID-FIRST_HELP_MENU_ID),"url",&url);
if (!url) return FALSE;
if(!GetMainContext())
return(FALSE);
// if we are a browser window and NOT an editor just load it locally
if(GetMainContext()->GetContext()->type == MWContextBrowser &&
!EDT_IS_EDITOR(GetMainContext()->GetContext()) ){
GetMainContext()->NormalGetUrl(url);
return(TRUE);
}
// look for a browser window we can load into
CFrameGlue *pFrameGlue = CFrameGlue::GetLastActiveFrame(MWContextBrowser);
if(pFrameGlue != NULL && pFrameGlue->GetMainContext() != NULL) {
CAbstractCX * pCX = pFrameGlue->GetMainContext();
if (pCX != NULL) {
CFrameWnd * pWnd = pFrameGlue->GetFrameWnd();
if (pWnd->IsIconic())
pWnd->ShowWindow(SW_RESTORE);
pWnd->BringWindowToTop();
pCX->NormalGetUrl(url);
}
// pFrameGlue->GetMainContext()->NormalGetUrl(szLoadString(nID + LOAD_URL_COUNT));
return(TRUE);
}
// if we got here we must not have found a viable window --- create a new one
MWContext * pContext = CFE_CreateNewDocWindow(NULL, NULL);
ABSTRACTCX(pContext)->NormalGetUrl(url);
XP_FREE(url);
return(TRUE);
} else if ( nID == ID_SECURITY_ADVISOR ) {
CAbstractCX *pCX = GetMainContext();
if (pCX != NULL)
{
MWContext * pContext = pCX->GetContext();
if (pContext != NULL)
{
URL_Struct * pURL = pCX->CreateUrlFromHist(TRUE);
SECNAV_SecurityAdvisor(pContext, pURL);
}
}
}
return(FALSE);
}
#define CLIP_BIT 0x80000000L
#define GET_CLIP_BIT(x) ( (DWORD)(x) & CLIP_BIT )
#define CLIP_COUNT(x) ( (DWORD)(x) & 0x0000FFFFL )
void CFrameGlue::ClipChildren(CWnd *pWnd, BOOL bSet)
{
// ASSERT( GetFrameWnd()->IsChild(pWnd) );
#ifdef _DEBUG
if (GetFrameWnd() && !GetFrameWnd()->IsChild(pWnd))
TRACE("pWnd is not a child of this frame\n");
#endif
// If the child window hash table does not exist, then create one
if( m_pClipChildMap == NULL ) {
m_pClipChildMap = new CMapPtrToPtr();
}
//
// For every window in the hierarchy between pWnd and the top level
// frame, set or clear its WS_CLIPCHILDREN style bit.
//
while( (pWnd = pWnd->GetParent()) != NULL ) {
DWORD dwStyle;
void *item = 0;
void *key = (void*)pWnd->m_hWnd;
dwStyle = ::GetWindowLong(pWnd->m_hWnd, GWL_STYLE);
// Add the window to the map if necessary...
if( m_pClipChildMap->Lookup(key, item) == FALSE && bSet ) {
item = (void *)((dwStyle & WS_CLIPCHILDREN) ? CLIP_BIT : 0L);
m_pClipChildMap->SetAt(key, item);
}
// Setting the WS_CLIPCHILDREN bit...
if( bSet ) {
// Set the style the first time...
if( CLIP_COUNT(item) == 0 ) {
::SetWindowLong(pWnd->m_hWnd, GWL_STYLE,(dwStyle|WS_CLIPCHILDREN));
}
// Increment the count and save the new state...
item = (void *) (((DWORD)item) + 1);
m_pClipChildMap->SetAt(key, item);
}
// Clearing the WS_CLIPCHILDREN bit...
else if (CLIP_COUNT(item)) {
// Decrement the count...
item = (void *) (((DWORD)item) - 1);
// Restore the window to its original state and remove it
// from the map.
if( CLIP_COUNT(item) == 0 ) {
if( GET_CLIP_BIT(item) == 0 ) {
::SetWindowLong(pWnd->m_hWnd, GWL_STYLE,
(dwStyle & ~WS_CLIPCHILDREN) );
}
m_pClipChildMap->RemoveKey(key);
}
// Save the new state...
else {
m_pClipChildMap->SetAt(key, item);
}
}
}
}
BOOL CFrameGlue::RealizePalette(CWnd *pWnd, HWND hFocusWnd,BOOL background)
{
CWinCX *pWinCX = GetMainWinContext();
HDC hdc = pWinCX->GetContextDC();
if (hdc) {
::SelectPalette(hdc, pWinCX->GetPalette(), background);
int colorRealized = ::RealizePalette(hdc);
int lCount = XP_ListCount(pWinCX->GetContext()->grid_children);
if (lCount) {
// Go through each child.
MWContext *pChild;
XP_List *pTraverse = pWinCX->GetContext()->grid_children;
while (pChild = (MWContext *)XP_ListNextObject(pTraverse)) {
ASSERT(ABSTRACTCX(pChild)->IsWindowContext());
::InvalidateRect(PANECX(pChild)->GetPane(), NULL, TRUE);
::UpdateWindow(PANECX(pChild)->GetPane());
}
}
SetIsBackgroundPalette(background);
::InvalidateRect(pWinCX->GetPane(), NULL, TRUE);
::UpdateWindow(pWinCX->GetPane());
#ifdef MOZ_TASKBAR
if(theApp.GetTaskBarMgr().IsInitialized() && theApp.GetTaskBarMgr().IsFloating())
theApp.GetTaskBarMgr().ChangeTaskBarsPalette(hFocusWnd);
#endif /* MOZ_TASKBAR */
pWnd->SendMessageToDescendants(WM_PALETTECHANGED, (WPARAM)hFocusWnd);
return (colorRealized > 0) ? TRUE : FALSE;
}
else return FALSE;
}
void CFrameGlue::ClearContext(CAbstractCX *pGone) {
// Clear out the appropriate context
// fields, if set.
// Can't have an active without a main.
if(GetMainContext() == pGone) {
SetActiveContext(NULL);
SetMainContext(NULL);
}
else if(GetActiveContext() == pGone) {
SetActiveContext(NULL);
}
else if(pGone && pGone->IsGridParent()) {
// Need to see if pGone is a parent of the active context.
// If so, we need to clear our active context as the child
// context won't be able to look us up to call this
// function due to the recursive implemenation of
// CWinCX::GetFrame() which it uses to make this call
MWContext *pChild;
XP_List *pTraverse = pGone->GetContext()->grid_children;
while((pChild = (MWContext*)XP_ListNextObject(pTraverse))) {
ClearContext(ABSTRACTCX(pChild));
}
}
}
// NULL frame implementation, for CFrameGlue when there is no frame.
CFrameWnd *CNullFrame::GetFrameWnd() {
return(NULL);
}
void CNullFrame::UpdateHistoryDialog() {
}
CAbstractCX *CNullFrame::GetMainContext() const {
return(NULL);
}
CAbstractCX *CNullFrame::GetActiveContext() const {
return(NULL);
}

Просмотреть файл

@ -1,217 +0,0 @@
/* -*- 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.
*/
#ifndef __FrameGlue_H
// Avoid include redundancy
//
#define __FrameGlue_H
// Purpose: Provide a class from which all frame windows are derived from
// so that appropriate aggregation can occur between frames.
// Comments: Created mainly because In place frames have a different derivation
// tree than normal frame windows. The only way to pass around a
// common pointer is to introduce a third class which holds a common
// API to the frame windows.
// Revision History:
// 07-31-95 created GAB
//
// Required Includes
//
#include "apichrom.h"
// Constants
//
// Structures
//
class CFrameGlue {
// Frames have concepts of multiple contexts.
// Provide a way to get the active (or last active) context.
// Provide a way to get the Main context (frames should always have one context).
private:
CAbstractCX *m_pMainContext;
CAbstractCX *m_pActiveContext;
BOOL m_isBackgroundPalette;
// Need a constructor for initializations....
protected:
CFrameGlue();
public:
virtual ~CFrameGlue();
// How to get the frame glue from a frame window.
public:
static CFrameGlue *GetFrameGlue(CFrameWnd *pFrame);
protected:
friend class CGenericView; // Views can manipulate the frames active context.
friend class CInPlaceFrame;
void SetMainContext(CAbstractCX *pContext);
void SetActiveContext(CAbstractCX *pContext);
public:
virtual CAbstractCX *GetMainContext() const;
virtual CAbstractCX *GetActiveContext() const;
// For all those routines that think contexts are window contexts
virtual CWinCX *GetMainWinContext() const;
virtual CWinCX *GetActiveWinContext() const;
BOOL IsBackGroundPalette() {return m_isBackgroundPalette;}
void SetIsBackgroundPalette(BOOL flag) {m_isBackgroundPalette = flag;}
BOOL RealizePalette(CWnd *pWnd, HWND hFocusWnd,BOOL background);
void ClearContext(CAbstractCX *pGone);
// Override this in Editors to return TRUE. Default = FALSE
virtual BOOL IsEditFrame();
protected:
IChrome *m_pChrome;
private:
BOOL m_bCanRestoreState;
int m_iSaveToolBarStyle;
BOOL m_bSaveToolBarVisible;
BOOL m_bSaveLocationBarVisible;
BOOL m_bSaveStarterBarVisible;
public:
void SaveBarState() {
m_bCanRestoreState = TRUE;
m_bSaveToolBarVisible = m_pChrome->GetToolbarVisible(ID_NAVIGATION_TOOLBAR);
m_bSaveLocationBarVisible = m_pChrome->GetToolbarVisible(ID_LOCATION_TOOLBAR) ||
m_pChrome->GetToolbarVisible(ID_MESSENGER_INFOBAR);
m_bSaveStarterBarVisible = m_pChrome->GetToolbarVisible(ID_PERSONAL_TOOLBAR);
}
void RestoreBarState() {
if(m_bCanRestoreState == TRUE) {
m_pChrome->ShowToolbar(ID_NAVIGATION_TOOLBAR, m_bSaveToolBarVisible);
m_pChrome->ShowToolbar(ID_LOCATION_TOOLBAR, m_bSaveLocationBarVisible);
m_pChrome->ShowToolbar(ID_MESSENGER_INFOBAR, m_bSaveLocationBarVisible);
m_pChrome->ShowToolbar(ID_PERSONAL_TOOLBAR, m_bSaveStarterBarVisible);
}
}
IChrome *GetChrome() const { return m_pChrome; }
// You don't necessarily have to use these, but here they are.
public:
int m_iCSID;
// Mostly shared prefs.
public:
XP_Bool m_bShowToolbar;
XP_Bool m_bLocationBar;
XP_Bool m_bStarter;
// Keep track of the find replace dialog.
// There can be only one.
private:
CNetscapeFindReplaceDialog *m_pFindReplace;
public:
BOOL CanFindReplace() const {
return(m_pFindReplace == NULL);
}
void SetFindReplace(CNetscapeFindReplaceDialog *pDialog) {
ASSERT(m_pFindReplace == NULL);
m_pFindReplace = pDialog;
}
CNetscapeFindReplaceDialog *GetFindReplace() {
return m_pFindReplace;
}
void ClearFindReplace() {
m_pFindReplace = NULL;
}
// Keeping track of the last active frame...
protected:
static CPtrList m_cplActiveFrameStack;
static CPtrList m_cplActiveNotifyCBList;
static CPtrList m_cplActiveContextCBList;
void SetAsActiveFrame();
public:
typedef void (*ActiveNotifyCB)(CFrameGlue *);
typedef void (*ActiveContextCB)(CFrameGlue *, CAbstractCX *);
static void AddActiveNotifyCB( ActiveNotifyCB cb );
static void RemoveActiveNotifyCB( ActiveNotifyCB cb );
static void AddActiveContextCB( ActiveContextCB cb );
static void RemoveActiveContextCB( ActiveContextCB cb );
static CFrameGlue *GetLastActiveFrame(MWContextType cxType = MWContextAny, int nFindEditor = FEU_FINDBROWSERONLY);
// bUseSaveInfo is true if custToolbar's save info field should be used to disregard frames if save info is FALSE
static CFrameGlue *GetLastActiveFrameByCustToolbarType(CString custToolbar, CFrameWnd *pCurrentFrame, BOOL bUseSaveInfo);
static CFrameGlue *GetBottomFrame(MWContextType cxType = MWContextAny, int nFindEditor = FEU_FINDBROWSERONLY);
static int GetNumActiveFrames(MWContextType cxType = MWContextAny, int nFindEditor = FEU_FINDBROWSERONLY);
// How to look up a frame window via context ID.
static CFrameGlue *FindFrameByID(DWORD dwID, MWContextType cxType = MWContextAny);
// A common command ID handler for all frames.
// Should be called by your derived OnCommand implementation.
protected:
// This is a quick hack until the full security advisor is done.
void SecurityDialog();
public:
BOOL CommonCommand(UINT wParam, LONG lParam);
// Helper funtion to toggle WS_CLIPCHILDREN for a branch of the frame heirarchy
protected:
CMapPtrToPtr * m_pClipChildMap;
public:
void ClipChildren(CWnd *pWnd, BOOL bSet);
// Pure virtual APIs, must be correctly defined by the deriving frame window class.
public:
// Access to the CFrameWnd pointer.
// This could possibly return NULL if someone is not really a frame window, but
// wants to act like one via deriving from CFrameGlue....
virtual CFrameWnd *GetFrameWnd() = 0;
// Updating of the history window, if around.
virtual void UpdateHistoryDialog() = 0;
virtual void SetSecurityStatus(int) {}
};
class CNullFrame : public CFrameGlue {
virtual CAbstractCX *GetMainContext() const;
virtual CAbstractCX *GetActiveContext() const;
virtual CFrameWnd *GetFrameWnd();
virtual void UpdateHistoryDialog();
};
// Global variables
//
// Macros
//
// Function declarations
//
CFrameGlue *GetFrame(MWContext *pContext);
#endif // __FrameGlue_H

Просмотреть файл

@ -213,6 +213,7 @@ CGenericFrame::CGenericFrame()
else
capStyle = DT_LEFT; // for NT 4.0 and Win95
#endif
m_bFreezeFrame = FALSE;
}
@ -880,7 +881,6 @@ BEGIN_MESSAGE_MAP(CGenericFrame, CFrameWnd)
ON_COMMAND(ID_COMMAND_PAGE_FROM_WIZARD, OnPageFromWizard)
ON_REGISTERED_MESSAGE(WM_HELPMSG, OnHelpMsg)
#ifdef ON_COMMAND_RANGE
ON_COMMAND_RANGE(ID_OPTIONS_ENCODING_1, ID_OPTIONS_ENCODING_70, OnToggleEncoding)
ON_UPDATE_COMMAND_UI_RANGE(ID_OPTIONS_ENCODING_1, ID_OPTIONS_ENCODING_70, OnUpdateEncoding)
@ -927,6 +927,8 @@ BEGIN_MESSAGE_MAP(CGenericFrame, CFrameWnd)
#ifdef DEBUG_WHITEBOX
ON_COMMAND(IDS_WHITEBOX_MENU, OnWhiteBox)
#endif
ON_COMMAND(ID_TOGGLE_FREEZE_FRAME, OnToggleFreezeFrame)
ON_UPDATE_COMMAND_UI(ID_TOGGLE_FREEZE_FRAME, OnUpdateToggleFreezeFrame)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
@ -3391,6 +3393,17 @@ LONG CGenericFrame::OnHackedMouseWheel(WPARAM wParam, LPARAM lParam)
}
#endif
void CGenericFrame::OnToggleFreezeFrame()
{
m_bFreezeFrame = !m_bFreezeFrame;
}
void CGenericFrame::OnUpdateToggleFreezeFrame( CCmdUI *pCmdUI )
{
pCmdUI->SetCheck(m_bFreezeFrame);
pCmdUI->Enable(TRUE);
}
// Call to start a new Browser window with supplied URL
// or load homepage if none supplied
@ -3411,5 +3424,3 @@ MWContext * wfe_CreateNavigator(char * pUrl)
// Always create a new context
return CFE_CreateNewDocWindow(NULL, pUrlStruct );
}

Просмотреть файл

@ -389,8 +389,15 @@ protected:
#ifdef DEBUG_WHITEBOX
afx_msg void OnWhiteBox();
#endif
afx_msg void OnToggleFreezeFrame();
afx_msg void OnUpdateToggleFreezeFrame( CCmdUI *pCmdUI );
DECLARE_MESSAGE_MAP()
public:
BOOL IsFrozenFrame() {return m_bFreezeFrame; }
private:
BOOL m_bFreezeFrame;
#ifdef EDITOR
public:
// Load a URL into a new edit window,

Просмотреть файл

@ -1,334 +0,0 @@
/* -*- 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.
*/
#include "pch.h"
#include "edpref.h"
#include "pages.h"
#include "edprefid.h"
#include "prefuiid.h"
#include "isppageo.h"
#include <assert.h>
#define NUM_EDITOR_PAGES 3
// Create a new instance of our derived class and return it.
CComDll *
DLL_ConsumerCreateInstance()
{
return new CEditorPrefsDll;
}
/////////////////////////////////////////////////////////////////////////////
// Global new/delete operators
// Override the global new/delete operators to allocate memory owned by the
// application and not by the DLL; _fmalloc calls GlobalAlloc with GMEM_SHARE
// for DLLs and that means the memory will not be freed until the DLL is
// unloaded. _fmalloc only maintains one heap for a DLL which is shared by
// all applications that use the DLL
#ifndef _WIN32
void *
operator new (size_t size)
{
return CoTaskMemAlloc(size);
}
void
operator delete (void *lpMem)
{
CoTaskMemFree(lpMem);
}
#endif
/////////////////////////////////////////////////////////////////////////////
// CSpecifyPropertyPageObjects
class CSpecifyPropertyPageObjects : public ISpecifyPropertyPageObjects {
public:
CSpecifyPropertyPageObjects();
// IUnknown methods
STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR* ppvObj);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
private:
ULONG m_uRef;
};
CSpecifyPropertyPageObjects::CSpecifyPropertyPageObjects()
{
m_uRef = 0;
}
STDMETHODIMP
CSpecifyPropertyPageObjects::QueryInterface(REFIID riid, LPVOID FAR* ppvObj)
{
*ppvObj = NULL;
if (riid == IID_IUnknown || riid == IID_ISpecifyPropertyPageObjects)
*ppvObj = (LPVOID)this;
if (*ppvObj) {
AddRef();
return NOERROR;
}
return ResultFromScode(E_NOINTERFACE);
}
STDMETHODIMP_(ULONG)
CSpecifyPropertyPageObjects::AddRef()
{
return ++m_uRef;
}
STDMETHODIMP_(ULONG)
CSpecifyPropertyPageObjects::Release()
{
if (--m_uRef == 0) {
#ifdef _DEBUG
OutputDebugString("Destroying CSpecifyPropertyPageObjects object.\n");
#endif
delete this;
return 0;
}
return m_uRef;
}
/////////////////////////////////////////////////////////////////////////////
// CEditorCategory
class CEditorCategory : public CSpecifyPropertyPageObjects {
public:
// ISpecifyPropertyPageObjects methods
STDMETHODIMP GetPageObjects(CAPPAGE *pPages);
};
STDMETHODIMP
CEditorCategory::GetPageObjects(CAPPAGE *pPages)
{
if (!pPages)
return ResultFromScode(E_POINTER);
pPages->cElems = NUM_EDITOR_PAGES;
pPages->pElems = (LPPROPERTYPAGE *)CoTaskMemAlloc(pPages->cElems * sizeof(LPPROPERTYPAGE));
if (!pPages->pElems)
return ResultFromScode(E_OUTOFMEMORY);
pPages->pElems[0] = new CEditorPrefs;
pPages->pElems[1] = new CPublishPrefs;
pPages->pElems[2] = new CEditorPrefs2;
for (ULONG i = 0; i < pPages->cElems; i++)
pPages->pElems[i]->AddRef();
return NOERROR;
}
/////////////////////////////////////////////////////////////////////////////
// Class CPropertyPageFactory
// Class factory for our property pages. We use the same C++ class
// to handle all of our CLSIDs
class CPropertyPageFactory : public IClassFactory {
public:
CPropertyPageFactory(REFCLSID rClsid);
// *** IUnknown methods ***
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR*);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
// *** IClassFactory methods ***
STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR*);
STDMETHODIMP LockServer(BOOL bLock);
private:
CRefDll m_refDll;
ULONG m_uRef;
CLSID m_clsid;
};
/////////////////////////////////////////////////////////////////////////////
// CPropertyPageFactory implementation
CPropertyPageFactory::CPropertyPageFactory(REFCLSID rClsid)
{
m_uRef = 0;
m_clsid = rClsid;
}
// *** IUnknown methods ***
STDMETHODIMP CPropertyPageFactory::QueryInterface(REFIID riid, LPVOID FAR* ppvObj)
{
*ppvObj = NULL;
if (riid == IID_IUnknown || riid == IID_IClassFactory)
*ppvObj = (LPVOID)this;
if (*ppvObj) {
AddRef();
return NOERROR;
}
return ResultFromScode(E_NOINTERFACE);
}
STDMETHODIMP_(ULONG) CPropertyPageFactory::AddRef()
{
return ++m_uRef;
}
STDMETHODIMP_(ULONG) CPropertyPageFactory::Release(void)
{
if (--m_uRef == 0) {
#ifdef _DEBUG
OutputDebugString("Destroying CPropertyPageFactory class object.\n");
#endif
delete this;
return 0;
}
return m_uRef;
}
// *** IClassFactory methods ***
STDMETHODIMP CPropertyPageFactory::CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, LPVOID FAR* ppvObj)
{
// We do not support aggregation
if (pUnkOuter)
return ResultFromScode(CLASS_E_NOAGGREGATION);
#ifdef _DEBUG
OutputDebugString("CPropertyPageFactory::CreateInstance() called.\n");
#endif
LPSPECIFYPROPERTYPAGEOBJECTS pCategory;
if (m_clsid == CLSID_EditorPrefs)
pCategory = new CEditorCategory;
if (!pCategory)
return ResultFromScode(E_OUTOFMEMORY);
pCategory->AddRef();
HRESULT hRes = pCategory->QueryInterface(riid, ppvObj);
pCategory->Release();
return hRes;
}
STDMETHODIMP CPropertyPageFactory::LockServer(BOOL bLock)
{
CComDll *pDll = CProcess::GetProcessDll();
HRESULT hres;
assert(pDll);
hres = CoLockObjectExternal(pDll, bLock, TRUE);
pDll->Release();
return hres;
}
/////////////////////////////////////////////////////////////////////////////
// CEditorPrefsDll implementation
HRESULT
CEditorPrefsDll::GetClassObject(REFCLSID rClsid, REFIID riid, LPVOID *ppObj)
{
HRESULT hres = ResultFromScode(E_UNEXPECTED);
*ppObj = NULL;
#ifdef _DEBUG
OutputDebugString("CEditorPrefsDll::GetClassObject() called.\n");
#endif
// See if we have that particular class object.
if (rClsid == CLSID_EditorPrefs) {
// Create a class object
CPropertyPageFactory *pFactory = new CPropertyPageFactory(rClsid);
if (!pFactory)
return ResultFromScode(E_OUTOFMEMORY);
// Get the desired interface. Note if the QueryInterface fails, the Release
// will delete the class object
pFactory->AddRef();
hres = pFactory->QueryInterface(riid, ppObj);
pFactory->Release();
} else {
hres = ResultFromScode(CLASS_E_CLASSNOTAVAILABLE);
}
return hres;
}
// Return array of implemented CLSIDs by this DLL. Allocated
// memory freed by caller.
const CLSID **
CEditorPrefsDll::GetCLSIDs()
{
const CLSID **ppRetval = (const CLSID **)CoTaskMemAlloc(sizeof(CLSID *) * 2);
if (ppRetval) {
ppRetval[0] = &CLSID_EditorPrefs;
ppRetval[1] = NULL;
}
return ppRetval;
}
#ifdef _WIN32
BOOL WINAPI
DllMain(HINSTANCE hInstance, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason) {
case DLL_PROCESS_ATTACH:
// The DLL is being loaded for the first time by a given process
CComDll::m_hInstance = hInstance;
break;
case DLL_PROCESS_DETACH:
// The DLL is being unloaded by a given process
break;
case DLL_THREAD_ATTACH:
// A thread is being created in a process that has already loaded
// this DLL
break;
case DLL_THREAD_DETACH:
// A thread is exiting cleanly in a process that has already
// loaded this DLL
break;
}
return TRUE;
}
#else
extern "C" int CALLBACK
LibMain(HINSTANCE hInstance, WORD wDataSeg, WORD cbHeapSize, LPSTR)
{
CComDll::m_hInstance = hInstance;
return TRUE;
}
#endif

Просмотреть файл

@ -1,197 +0,0 @@
/* -*- 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.
*/
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
#if !defined(_WIN32)
#define ES_NUMBER 0
#endif
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"#if !defined(_WIN32)\r\n"
"#define ES_NUMBER 0\r\n"
"#endif\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_PREF_EDITOR DIALOG DISCARDABLE 0, 0, 256, 190
STYLE WS_CHILD | WS_CLIPSIBLINGS
FONT 8, "MS Sans Serif"
BEGIN
GROUPBOX "",IDC_STATIC,7,7,241,47,WS_GROUP
LTEXT "Author &Name:",IDC_STATIC,17,19,49,8
EDITTEXT IDC_EDIT_AUTHOR,68,17,162,12,ES_AUTOHSCROLL
CONTROL "&Automatically save page every",IDC_AUTO_SAVE,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,17,36,116,10
LTEXT "&minutes",IDC_STATIC,165,37,48,8
EDITTEXT IDC_AUTO_SAVE_MINUTES,136,35,25,12,ES_AUTOHSCROLL
GROUPBOX "External Editors ",IDC_STATIC,7,57,241,70
LTEXT "&HTML Source:",IDC_STATIC,17,68,52,9
EDITTEXT IDC_HTML_EDITOR,16,79,159,12,ES_AUTOHSCROLL
PUSHBUTTON "&Choose...",IDC_CHOOSE_HTML_EDITOR,182,79,52,14
LTEXT "&Images:",IDC_STATIC,17,95,52,9
EDITTEXT IDC_IMAGE_EDITOR,16,106,159,12,ES_AUTOHSCROLL
PUSHBUTTON "Ch&oose",IDC_CHOOSE_IMAGE_EDITOR,182,106,52,14
GROUPBOX "Font Size Mode ",IDC_STATIC,7,131,241,55
CONTROL "Show relative size as points based on your Navigator font sizes",
IDC_FONTSIZE_MODE,"Button",BS_AUTORADIOBUTTON | WS_GROUP |
WS_TABSTOP,17,143,225,10
CONTROL "Show relative HTML font scale: -2, -1, 0, +1, +2, +3, +4",
IDC_FONTSIZE_MODE2,"Button",BS_AUTORADIOBUTTON,17,156,
224,10
CONTROL "Show relative HTML scale and absolute ""point-size"" attributes",
IDC_FONTSIZE_MODE3,"Button",BS_AUTORADIOBUTTON,17,169,
224,10
END
IDD_PREF_PUBLISH DIALOG DISCARDABLE 0, 0, 256, 190
STYLE WS_CHILD | WS_CLIPSIBLINGS
FONT 8, "MS Sans Serif"
BEGIN
GROUPBOX "Links and images ",IDC_STATIC,7,7,241,108,WS_GROUP
LTEXT "When saving remote pages...",IDC_STATIC,17,18,194,8
CONTROL "&Maintain links",IDC_AUTOADJUST_LINKS,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,27,30,182,10
CONTROL "&Keep images with page",IDC_KEEP_IMAGE_WITH_DOC,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,27,63,119,10
LTEXT "Adjust links to work from the page's location. (Links to local pages will work when local versions exist.)",
IDC_STATIC,40,40,202,18
LTEXT "Save copies of images to the page's location.\nImages will always appear in local version of the page and when page is published.",
IDC_STATIC,40,73,206,25
LTEXT "Tip: Check both options if you will be using remote publishing.",
IDC_STATIC,17,102,219,9
GROUPBOX "Default publishing location ",IDC_STATIC,7,121,241,67
LTEXT "Enter a FTP or HTTP site address to &Publish to:",
IDC_STATIC,17,132,201,8
EDITTEXT IDC_PUBLISH_FTP,17,142,224,12,ES_AUTOHSCROLL
LTEXT "If publishing to a FTP site, enter the HTTP address to &browse to:",
IDC_STATIC,17,160,223,9
EDITTEXT IDC_PUBLISH_HTTP,17,170,224,12,ES_AUTOHSCROLL
END
IDD_PREF_EDITOR2 DIALOG DISCARDABLE 0, 0, 186, 94
STYLE WS_CHILD | WS_CLIPSIBLINGS
FONT 8, "MS Sans Serif"
BEGIN
CONTROL "Page Up/Down Moves Cursor",IDC_PAGEUPDOWN,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,7,7,111,10
END
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
IDD_PREF_EDITOR, DIALOG
BEGIN
RIGHTMARGIN, 248
BOTTOMMARGIN, 186
END
IDD_PREF_EDITOR2, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 179
TOPMARGIN, 7
BOTTOMMARGIN, 87
END
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDD_PREF_EDITOR "Composer\nSet general preferences for authoring Web pages"
IDD_PREF_PUBLISH "Publishing\nDesignate the default publishing location"
IDS_APP_FILTER "Executable (*.exe)\n*.exe\nAll Files (*.*)\n*.*\n\n"
IDS_CHOOSE_HTML_EDITOR "Choose HTML Editor Application"
IDS_CHOOSE_IMAGE_EDITOR "Choose Image Editor Application"
IDD_PREF_EDITOR2 "Navigational\nSet general navigational preferences for authoring Web pages"
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

Просмотреть файл

@ -1,818 +0,0 @@
/* -*- 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.
*/
#ifndef EDITOR
#define EDITOR
#endif
//
// EDITOR.RC2 - resources App Studio does not edit directly
//
#ifdef APSTUDIO_INVOKED
#error this file is not editable by App Studio
#endif //APSTUDIO_INVOKED
#ifdef EDITOR
#include "..\..\..\lib\libparse\pa_tags.h" // interface to layout tag defines
#include "..\edres2.h"
//////////////////////////////////////////////////////////////////////////////
//
// Page Composer Menu
//
IDR_EDITFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
POPUP "&New"
BEGIN
MENUITEM "&Navigator Window\tCtrl+N", ID_NEW_FRAME
MENUITEM "&Message\tCtrl+M", ID_FILE_MAILNEW
MENUITEM SEPARATOR
MENUITEM "Blank &Page\tCtrl+Shift+N", ID_EDT_NEW_DOC_BLANK
MENUITEM "Page From &Template...", ID_EDT_NEW_DOC_FROM_TEMPLATE
MENUITEM "Page From &Wizard..." ID_COMMAND_PAGE_FROM_WIZARD
END
MENUITEM "&Open Page...\tCtrl+O", ID_FILE_OPENURL
POPUP "Open &Recent"
BEGIN
MENUITEM "{URL list}" ID_EDIT_HISTORY_BASE
END
MENUITEM SEPARATOR
MENUITEM "&Save\tCtrl+S", ID_EDT_FILE_SAVE
MENUITEM "Save &As...", ID_EDT_FILE_SAVEAS
MENUITEM "P&ublish...", ID_FILE_PUBLISH
MENUITEM SEPARATOR
MENUITEM "Sen&d Page", ID_FILE_MAILTO
MENUITEM "Preview in &Browser" ID_OPEN_NAV_WINDOW
MENUITEM SEPARATOR
MENUITEM "Page Se&tup...", ID_FILE_PAGE_SETUP
MENUITEM "Print Pre&view", ID_FILE_PRINT_PREVIEW
MENUITEM "&Print...", ID_FILE_PRINT
MENUITEM SEPARATOR
MENUITEM "&Close\tCtrl+W", ID_FILE_CLOSE
MENUITEM "E&xit\tCtrl+Q", ID_APP_EXIT
END
POPUP "&Edit"
BEGIN
MENUITEM "{&U&R}", ID_EDIT_UNDO
MENUITEM SEPARATOR
MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT
MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY
MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE
MENUITEM "Paste Charater St&yle\tCtrl+Shift+V" ID_PASTE_CHARACTER_STYLE
MENUITEM "&Delete\tDel" ID_EDIT_DELETE
MENUITEM SEPARATOR
MENUITEM "Remove Lin&k", ID_REMOVE_LINKS
MENUITEM SEPARATOR
MENUITEM "Select &All\tCtrl+A", ID_EDIT_SELECTALL
MENUITEM SEPARATOR
MENUITEM "&Find in Page...\tCtrl+F", ID_EDIT_FINDINCURRENT
MENUITEM "Find A&gain\tF3", ID_EDIT_FINDAGAIN
// Restore when implemented:
// MENUITEM "&Replace...", ID_EDT_FINDREPLACE
MENUITEM SEPARATOR
MENUITEM "&HTML Source", ID_FILE_EDITSOURCE
MENUITEM SEPARATOR
MENUITEM "Pr&eferences...", ID_OPTIONS_PREFERENCES
END
POPUP "&View"
BEGIN
// Filled in at runtime - MNEMONIC IS SHOWN
MENUITEM "{&C}", ID_OPT_EDITBAR_TOGGLE
MENUITEM "{&F}", ID_OPT_CHARBAR_TOGGLE
MENUITEM SEPARATOR
MENUITEM "{&P}", ID_EDIT_DISPLAY_PARAGRAPH_MARKS
MENUITEM SEPARATOR
MENUITEM "&Reload", ID_NAVIGATE_RELOAD
MENUITEM "Show &Images", ID_VIEW_LOADIMAGES
MENUITEM "Refres&h", ID_NAVIGATE_REPAINT
MENUITEM "&Stop Loading\t<Esc>", ID_NAVIGATE_INTERRUPT
MENUITEM SEPARATOR
MENUITEM "Page So&urce", ID_FILE_VIEWSOURCE
MENUITEM "Page I&nfo", ID_FILE_DOCINFO
POPUP "C&haracter Set"
BEGIN
MENUITEM "Western (ISO-8859-1)", ID_OPTIONS_ENCODING_1
MENUITEM SEPARATOR
MENUITEM "Central European (ISO-8859-2)", ID_OPTIONS_ENCODING_2
MENUITEM "Central European (Windows-1250)", ID_OPTIONS_ENCODING_11
MENUITEM SEPARATOR
MENUITEM "Japanese (Auto-Detect)", ID_OPTIONS_ENCODING_3
MENUITEM "Japanese (Shift_JIS)", ID_OPTIONS_ENCODING_4
MENUITEM "Japanese (EUC-JP)", ID_OPTIONS_ENCODING_5
MENUITEM SEPARATOR
MENUITEM "Traditional Chinese (Big5)", ID_OPTIONS_ENCODING_6
MENUITEM "Traditional Chinese (EUC-TW)", ID_OPTIONS_ENCODING_7
MENUITEM SEPARATOR
MENUITEM "Simplified Chinese (GB2312)", ID_OPTIONS_ENCODING_8
MENUITEM SEPARATOR
MENUITEM "Korean (Auto-Detect)", ID_OPTIONS_ENCODING_9
MENUITEM SEPARATOR
MENUITEM "Cyrillic (KOI8-R)", ID_OPTIONS_ENCODING_14
MENUITEM "Cyrillic (ISO-8859-5)", ID_OPTIONS_ENCODING_13
MENUITEM "Cyrillic (Windows-1251)", ID_OPTIONS_ENCODING_12
MENUITEM SEPARATOR
MENUITEM "Armenian (ArmSCII-8)", ID_OPTIONS_ENCODING_21
MENUITEM SEPARATOR
MENUITEM "Thai (TIS-620)", ID_OPTIONS_ENCODING_22
MENUITEM SEPARATOR
MENUITEM "Greek (Windows-1253)", ID_OPTIONS_ENCODING_16
MENUITEM "Greek (ISO-8859-7)", ID_OPTIONS_ENCODING_15
MENUITEM SEPARATOR
MENUITEM "Turkish (ISO-8859-9)", ID_OPTIONS_ENCODING_17
MENUITEM SEPARATOR
MENUITEM "Vietnamese (VISCII)", ID_OPTIONS_ENCODING_23
MENUITEM "Vietnamese (VIQR)", ID_OPTIONS_ENCODING_26
MENUITEM "Vietnamese (VPS)", ID_OPTIONS_ENCODING_24
MENUITEM "Vietnamese (TCVN)", ID_OPTIONS_ENCODING_25
MENUITEM "Vietnamese (VNI)", ID_OPTIONS_ENCODING_27
MENUITEM "Vietnamese (Windows-1258)", ID_OPTIONS_ENCODING_28
MENUITEM SEPARATOR
MENUITEM "Unicode (UTF-8)", ID_OPTIONS_ENCODING_18
MENUITEM "Unicode (UTF-7)", ID_OPTIONS_ENCODING_20
MENUITEM SEPARATOR
MENUITEM "User-Defined" ID_OPTIONS_ENCODING_10
END
END
POPUP "&Insert"
BEGIN
MENUITEM "&Link...\tCtrl+Shift+L", ID_INSERT_LINK
MENUITEM "T&arget...", ID_INSERT_TARGET
MENUITEM "&Image...", ID_INSERT_IMAGE
MENUITEM "H&orizontal Line", ID_INSERT_HRULE
MENUITEM "&Table..." ID_INSERT_TABLE
MENUITEM "&HTML Tag...", ID_INSERT_TAG
MENUITEM SEPARATOR
MENUITEM "&New Line Break\tShift+Enter" ID_INSERT_LINE_BREAK
MENUITEM "&Break below Image(s)" ID_INSERT_BREAK_BOTH
END
POPUP "F&ormat"
BEGIN
// Font face items are added at runtime
POPUP "&Font"
BEGIN
MENUITEM "{}" ID_FORMAT_FONTFACE_BASE
END
// All of these items are added at runtime
POPUP "Si&ze"
BEGIN
MENUITEM "{}" ID_FORMAT_FONTSIZE_BASE
END
POPUP "&Style"
BEGIN
MENUITEM "&Bold\tCtrl+B" ID_FORMAT_CHAR_BOLD
MENUITEM "&Italic\tCtrl+I" ID_FORMAT_CHAR_ITALIC
MENUITEM "&Underline\tCtrl+U" ID_FORMAT_CHAR_UNDERLINE
MENUITEM "S&trikethrough" ID_FORMAT_CHAR_STRIKEOUT
MENUITEM "Su&perscript" ID_FORMAT_CHAR_SUPER
MENUITEM "&Subscript" ID_FORMAT_CHAR_SUB
MENUITEM "Blin&king" ID_FORMAT_CHAR_BLINK
MENUITEM "&Nonbreaking" ID_FORMAT_CHAR_NOBREAKS
END
MENUITEM "Text &Color...", ID_GET_COLOR // ID_FORMAT_FONTCOLOR
MENUITEM "Apply Last-Copied &Style\tCtrl+Y" ID_PASTE_CHARACTER_STYLE
MENUITEM "&Remove All Styles\tCtrl+K" ID_FORMAT_CHAR_NONE
MENUITEM SEPARATOR
POPUP "&Heading"
BEGIN
MENUITEM "&1", ID_FORMAT_PARAGRAPH_BASE+P_HEADER_1
MENUITEM "&2", ID_FORMAT_PARAGRAPH_BASE+P_HEADER_2
MENUITEM "&3", ID_FORMAT_PARAGRAPH_BASE+P_HEADER_3
MENUITEM "&4", ID_FORMAT_PARAGRAPH_BASE+P_HEADER_4
MENUITEM "&5", ID_FORMAT_PARAGRAPH_BASE+P_HEADER_5
MENUITEM "&6", ID_FORMAT_PARAGRAPH_BASE+P_HEADER_6
END
POPUP "&Paragraph"
BEGIN
MENUITEM "&Normal", ID_FORMAT_PARAGRAPH_BASE+P_NSDT
MENUITEM "&Address", ID_FORMAT_PARAGRAPH_BASE+P_ADDRESS
MENUITEM "&Formatted", ID_FORMAT_PARAGRAPH_BASE+P_PREFORMAT
MENUITEM "&Term Name" ID_FORMAT_PARAGRAPH_BASE+P_DESC_TITLE
MENUITEM "&Definition" ID_FORMAT_PARAGRAPH_BASE+P_DESC_TEXT
MENUITEM SEPARATOR
MENUITEM "&Blockquote" ID_FORMAT_PARAGRAPH_BASE+P_BLOCKQUOTE
END
POPUP "&List"
BEGIN
MENUITEM "N&one" ID_REMOVE_LIST
MENUITEM "&Bulletted" ID_FORMAT_PARAGRAPH_BASE+P_UNUM_LIST
MENUITEM "&Numbered" ID_FORMAT_PARAGRAPH_BASE+P_NUM_LIST
MENUITEM "&Definition" ID_FORMAT_PARAGRAPH_BASE+P_DESC_LIST
END
POPUP "&Align"
BEGIN
MENUITEM "&Left\tCtrl+L", ID_ALIGN_LEFT
MENUITEM "&Center\tCtrl+E", ID_ALIGN_CENTER
MENUITEM "&Right\tCtrl+R", ID_ALIGN_RIGHT
END
MENUITEM SEPARATOR
MENUITEM "&Increase Indent\tCtrl =" ID_FORMAT_INDENT
MENUITEM "&Decrease Indent\tCtrl -" ID_FORMAT_OUTDENT
MENUITEM SEPARATOR
// <object> Pr&operties
MENUITEM "{&o}" ID_PROPS_LOCAL
MENUITEM "Page &Title and Properties" ID_PROPS_DOCUMENT
MENUITEM "&Background and Page Colors" ID_PROPS_DOC_COLOR
END
POPUP "T&able"
BEGIN
// Will be replaced with IDM_COMPOSER_TABLE_INSERTMENU
MENUITEM "{&I}" ID_INSERT_TABLE
// Will be replaced with IDM_COMPOSER_TABLE_DELETEMENU
MENUITEM "{&D}" ID_DELETE_TABLE
// Will be replaced with IDM_COMPOSER_TABLE_SELECTMENU
MENUITEM "{&S}" ID_SELECT_TABLE
// Will be replaced with IDM_COMPOSER_TABLE_PASTEMENU
MENUITEM "{&P}" ID_PASTE_TABLE
MENUITEM SEPARATOR
POPUP "&Align Table"
BEGIN
MENUITEM "&Left", ID_ALIGN_TABLE_LEFT
MENUITEM "&Center", ID_ALIGN_TABLE_CENTER
MENUITEM "&Right", ID_ALIGN_TABLE_RIGHT
END
MENUITEM SEPARATOR
// Join selected cells or with cell to the right
MENUITEM "{&J}" ID_MERGE_TABLE_CELLS
MENUITEM "Spli&t Cell" ID_SPLIT_TABLE_CELL
// "&Convert Text To Table" or "&Convert Table To Text"
MENUITEM "{&C}" ID_TABLE_TEXT_CONVERT
MENUITEM SEPARATOR
MENUITEM "&Properties" ID_PROPS_TABLE
END
// Translate this menu group string and the string IDS_TOOLS_MENU(in editor.rc) identically.
// The code tries to find this menu entry using the string resource.
POPUP "&Tools"
BEGIN
MENUITEM "Check &Spelling..." ID_CHECK_SPELLING
// Don't translate this entry. It is replaced at runtime.
MENUITEM "{Editor Plug-ins}" ID_EDITOR_PLUGINS_BASE
MENUITEM "Stop Active &Plug-in" ID_STOP_EDITOR_PLUGIN
END
#ifndef MOZ_COMMUNICATOR_NAME
POPUP "&Window"
#else
POPUP "&Communicator"
#endif /* MOZ_COMMUNICATOR_NAME */
BEGIN
MENUITEM "&Navigator\tCtrl+1", ID_TOOLS_WEB
#ifdef MOZ_MAIL_NEWS
MENUITEM "&Messenger\tCtrl+2", ID_TOOLS_INBOX
#endif /* MOZ_MAIL_NEWS */
#ifdef EDITOR
MENUITEM "&Page Composer\tCtrl+4", ID_TOOLS_EDITOR
#endif /* EDITOR */
#ifdef MOZ_MAIL_NEWS
MENUITEM "&Conference\tCtrl+5", ID_WINDOW_LIVECALL
MENUITEM SEPARATOR
MENUITEM "Messa&ge Center\tCtrl+Shift+1", ID_TOOLS_MAIL
MENUITEM "&Address Book\tCtrl+Shift+2", ID_TOOLS_ADDRESSBOOK
#endif /* MOZ_MAIL_NEWS */
POPUP "&Bookmarks"
BEGIN
MENUITEM "Ad&d Bookmark\tCtrl+D", ID_HOTLIST_ADDCURRENTTOHOTLIST
POPUP "&File Bookmark"
BEGIN
MENUITEM "Root", ID_BOOKMARKS_FILEROOT
END
MENUITEM "Edit &Bookmarks...", ID_HOTLIST_VIEW
MENUITEM SEPARATOR
POPUP "&Places"
BEGIN
MENUITEM "PLACEHOLDER" IDC_FIRST_PLACES_MENU_ID
END
MENUITEM SEPARATOR
END
MENUITEM "&History\tCtrl+H", ID_GO_HISTORY
#if defined(JAVA) || defined(OJI)
MENUITEM "&Java Console", ID_OPTIONS_SHOWJAVACONSOLE
#endif
#ifdef MOZ_SECURITY
MENUITEM "&Security Info\tCtrl+Shift+I", ID_SECURITY
#endif
#ifdef MOZ_MAIL_NEWS
MENUITEM "Migration Tools", ID_MIGRATION_TOOLS
#endif //MOZ_MAIL_NEWS
POPUP "&Privacy Tools"
BEGIN
MENUITEM "&Anonymous Mode", ID_PRIVACY_ANONYMOUS
#ifdef TRANSACTION_RECEIPTS
MENUITEM "&Make Receipt", ID_PRIVACY_RECEIPT
#endif
MENUITEM SEPARATOR
MENUITEM "Display Privacy &Policy", ID_PRIVACY_DISPLAY_POLICY
MENUITEM "Display &Cookies", ID_PRIVACY_DISPLAY_COOKIES
MENUITEM "Display &Signons", ID_PRIVACY_DISPLAY_SIGNONS
#ifdef TRANSACTION_RECEIPTS
MENUITEM "Display &Receipts", ID_PRIVACY_DISPLAY_RECEIPTS
#endif
MENUITEM "Display Site &Info", ID_PRIVACY_DISPLAY_SITEINFO
MENUITEM SEPARATOR
MENUITEM "A&bout Privacy", ID_PRIVACY_DISPLAY_TUTORIAL
END
MENUITEM SEPARATOR
#ifdef XP_WIN16
MENUITEM "New Window" ID_WINDOW_WINDOW_0
#endif
END
POPUP "&Help"
BEGIN
MENUITEM "PLACEHOLDER" IDC_FIRST_HELP_MENU_ID
END
END
IDM_COMPOSER_TABLE_SELECTMENU MENU DISCARDABLE
BEGIN
MENUITEM "&Table" ID_SELECT_TABLE
MENUITEM "&Row" ID_SELECT_TABLE_ROW
MENUITEM "C&olumn" ID_SELECT_TABLE_COLUMN
MENUITEM "&Cell" ID_SELECT_TABLE_CELL
MENUITEM "&All Cells" ID_SELECT_TABLE_ALL_CELLS
END
IDM_COMPOSER_TABLE_INSERTMENU MENU DISCARDABLE
BEGIN
MENUITEM "&Table..." ID_INSERT_TABLE
MENUITEM SEPARATOR
MENUITEM "&Row Above" ID_INSERT_TABLE_ROW_ABOVE
MENUITEM "Row &Below" ID_INSERT_TABLE_ROW
MENUITEM SEPARATOR
MENUITEM "C&olumn Before" ID_INSERT_TABLE_COLUMN_BEFORE
MENUITEM "Co&lumn After" ID_INSERT_TABLE_COLUMN
MENUITEM SEPARATOR
MENUITEM "&Cell Before" ID_INSERT_TABLE_CELL_BEFORE
MENUITEM "C&ell After" ID_INSERT_TABLE_CELL
END
IDM_COMPOSER_TABLE_PASTEMENU MENU DISCARDABLE
BEGIN
MENUITEM "Nested &Table..." ID_PASTE_BASE
MENUITEM SEPARATOR
MENUITEM "&Above current Row" ID_PASTE_BASE+1
MENUITEM "&Below current Row" ID_PASTE_BASE+2
MENUITEM SEPARATOR
MENUITEM "B&efore current Column" ID_PASTE_BASE+3
MENUITEM "A&fter current Column" ID_PASTE_BASE+4
MENUITEM SEPARATOR
MENUITEM "&Replace cells" ID_PASTE_TABLE_REPLACE // MUST = ID_PASTE_BASE+5 in edres2.h
END
// Optional menu when both text and image are on clipboard together
IDM_COMPOSER_PASTEMENU MENU DISCARDABLE
BEGIN
MENUITEM "&Table" ID_PASTE_BASE,
MENUITEM "Te&xt" ID_PASTE_TEXT, // ID_PASTE_BASE+6
MENUITEM "&Image" ID_PASTE_IMAGE // ID_PASTE_BASE+7
END
IDM_COMPOSER_TABLE_DELETEMENU MENU DISCARDABLE
BEGIN
MENUITEM "&Table" ID_DELETE_TABLE
MENUITEM "&Row" ID_DELETE_TABLE_ROW
MENUITEM "C&olumn" ID_DELETE_TABLE_COLUMN
MENUITEM "&Cell" ID_DELETE_TABLE_CELL
END
// A clone of some items from the Insert Menu to put on right-mouse popup
IDM_COMPOSER_INSERTMENU MENU DISCARDABLE
BEGIN
MENUITEM "&Link...\tCtrl+Shift+L", ID_INSERT_LINK
MENUITEM "T&arget...", ID_INSERT_TARGET
MENUITEM "&Image...", ID_INSERT_IMAGE
MENUITEM "&Table..." ID_INSERT_TABLE
MENUITEM "H&orizontal Line", ID_INSERT_HRULE
MENUITEM "&HTML Tag...", ID_INSERT_TAG
END
//////////////////////////////////////////////////////////////////////////////
//
// Message Composer Menu
//
// NO MAIL COMPOSER IN 5.0
// Keep and maintain for possible future integration
#ifdef MOZ_MAIL_NEWS
IDR_COMPOSEFRAME MENU DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
POPUP "&New"
BEGIN
MENUITEM "&Navigator Window\tCtrl+N", ID_NEW_FRAME
MENUITEM "&Message\tCtrl+M", ID_FILE_NEWMESSAGE
MENUITEM SEPARATOR
MENUITEM "Blank &Page\tCtrl+Shift+N", ID_EDT_NEW_DOC_BLANK
MENUITEM "Page From &Template...", ID_EDT_NEW_DOC_FROM_TEMPLATE
MENUITEM "Page From &Wizard...", ID_COMMAND_PAGE_FROM_WIZARD
END
POPUP "Save &As"
BEGIN
MENUITEM "&File...", IDM_SAVEAS
MENUITEM SEPARATOR
MENUITEM "&Draft\tCtrl+S", IDM_SAVEASDRAFT
MENUITEM "&Template\tCtrl+T", IDM_SAVEASTEMPLATE
END
MENUITEM SEPARATOR
MENUITEM "Sen&d Now\tCtrl+Enter", IDM_SENDNOW
MENUITEM "Send &Later", IDM_SENDLATER
MENUITEM "&Quote Original Text", IDM_QUOTEORIGINAL
MENUITEM "Selec&t Addresses...", IDM_ADDRESSPICKER
POPUP "A&ttach"
BEGIN
MENUITEM "&File...", IDM_ATTACHFILE
MENUITEM "&Web Page...", IDM_ATTACHWEBPAGE
MENUITEM SEPARATOR
MENUITEM "&My Address Book Card", IDM_ATTACHMYCARD
END
MENUITEM SEPARATOR
MENUITEM "Sen&d Now\tCtrl+Enter", IDM_SENDNOW
MENUITEM "Send &Later", IDM_SENDLATER
MENUITEM "&Quote Original Text", IDM_QUOTEORIGINAL
MENUITEM "Selec&t Addresses...", IDM_ADDRESSPICKER
MENUITEM SEPARATOR
MENUITEM "Pa&ge Setup...", ID_FILE_PAGE_SETUP
MENUITEM "Print Pre&view", ID_FILE_PRINT_PREVIEW
MENUITEM "&Print...\tCtrl+P", ID_FILE_PRINT
MENUITEM SEPARATOR
MENUITEM "&Close\tCtrl+W", ID_FILE_CLOSE
MENUITEM "E&xit\tCtrl+Q", ID_APP_EXIT
END
POPUP "&Edit"
BEGIN
MENUITEM "{&U&R}", ID_EDIT_UNDO
MENUITEM SEPARATOR
MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT
MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY
MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE
MENUITEM "Paste as &Quotation", IDM_PASTEASQUOTE
MENUITEM "&Delete\tDel" ID_EDIT_DELETE
MENUITEM SEPARATOR
MENUITEM "Remove Lin&k", ID_REMOVE_LINKS
MENUITEM SEPARATOR
MENUITEM "Select &All\tCtrl+A", ID_EDIT_SELECTALL
MENUITEM SEPARATOR
MENUITEM "&Find in Message\tCtrl+F", ID_EDIT_FINDINCURRENT
MENUITEM "Find A&gain\tCtrl+G", ID_EDIT_FINDAGAIN
MENUITEM SEPARATOR
MENUITEM "Name Completion", ID_TOGGLENAMECOMPLETION
MENUITEM "Show Name Picker\tCtrl+J" ID_SHOW_NAME_PICKER
MENUITEM SEPARATOR
MENUITEM "Pr&eferences...", ID_OPTIONS_PREFERENCES
END
POPUP "&View"
BEGIN
MENUITEM "{&M}", IDM_OPT_MESSAGEBAR_TOGGLE
MENUITEM "{&A}", IDM_MESSAGEBODYONLY
MENUITEM "{&F}", ID_OPT_CHARBAR_TOGGLE
MENUITEM SEPARATOR
MENUITEM "A&ddress", IDM_ADDRESSES
MENUITEM "Attachmen&ts" IDM_ATTACHMENTS
MENUITEM "&Options", IDM_OPTIONS
MENUITEM SEPARATOR
MENUITEM "{&P}" ID_EDIT_DISPLAY_PARAGRAPH_MARKS
MENUITEM SEPARATOR
MENUITEM "Page So&urce", ID_FILE_VIEWSOURCE
MENUITEM "Page &Info", ID_FILE_DOCINFO
MENUITEM SEPARATOR
POPUP "C&haracter Set"
BEGIN
MENUITEM "Western (ISO-8859-1)", ID_OPTIONS_ENCODING_1
MENUITEM SEPARATOR
MENUITEM "Central European (ISO-8859-2)", ID_OPTIONS_ENCODING_2
MENUITEM "Central European (Windows-1250)", ID_OPTIONS_ENCODING_11
MENUITEM SEPARATOR
MENUITEM "Japanese (Auto-Detect)", ID_OPTIONS_ENCODING_3
MENUITEM "Japanese (Shift_JIS)", ID_OPTIONS_ENCODING_4
MENUITEM "Japanese (EUC-JP)", ID_OPTIONS_ENCODING_5
MENUITEM SEPARATOR
MENUITEM "Traditional Chinese (Big5)", ID_OPTIONS_ENCODING_6
MENUITEM "Traditional Chinese (EUC-TW)", ID_OPTIONS_ENCODING_7
MENUITEM SEPARATOR
MENUITEM "Simplified Chinese (GB2312)", ID_OPTIONS_ENCODING_8
MENUITEM SEPARATOR
MENUITEM "Korean (Auto-Detect)", ID_OPTIONS_ENCODING_9
MENUITEM SEPARATOR
MENUITEM "Cyrillic (KOI8-R)", ID_OPTIONS_ENCODING_14
MENUITEM "Cyrillic (ISO-8859-5)", ID_OPTIONS_ENCODING_13
MENUITEM "Cyrillic (Windows-1251)", ID_OPTIONS_ENCODING_12
MENUITEM SEPARATOR
MENUITEM "Armenian (ArmSCII-8)", ID_OPTIONS_ENCODING_21
MENUITEM SEPARATOR
MENUITEM "Thai (TIS-620)", ID_OPTIONS_ENCODING_22
MENUITEM SEPARATOR
MENUITEM "Greek (Windows-1253)", ID_OPTIONS_ENCODING_16
MENUITEM "Greek (ISO-8859-7)", ID_OPTIONS_ENCODING_15
MENUITEM SEPARATOR
MENUITEM "Turkish (ISO-8859-9)", ID_OPTIONS_ENCODING_17
MENUITEM SEPARATOR
MENUITEM "Vietnamese (VISCII)", ID_OPTIONS_ENCODING_23
MENUITEM "Vietnamese (VIQR)", ID_OPTIONS_ENCODING_26
MENUITEM "Vietnamese (VPS)", ID_OPTIONS_ENCODING_24
MENUITEM "Vietnamese (TCVN)", ID_OPTIONS_ENCODING_25
MENUITEM "Vietnamese (VNI)", ID_OPTIONS_ENCODING_27
MENUITEM "Vietnamese (Windows-1258)", ID_OPTIONS_ENCODING_28
MENUITEM SEPARATOR
MENUITEM "Unicode (UTF-8)", ID_OPTIONS_ENCODING_18
MENUITEM "Unicode (UTF-7)", ID_OPTIONS_ENCODING_20
MENUITEM SEPARATOR
MENUITEM "User-Defined", ID_OPTIONS_ENCODING_10
END
END
// Insert and Format must be same as those in EDITOR menu
POPUP "&Insert"
BEGIN
MENUITEM "&Link...\tCtrl+Shift+L", ID_INSERT_LINK
MENUITEM "T&arget...", ID_INSERT_TARGET
MENUITEM "&Image...", ID_INSERT_IMAGE
MENUITEM "H&orizontal Line", ID_INSERT_HRULE
MENUITEM "&Table..." ID_INSERT_TABLE
MENUITEM "&HTML Tag...", ID_INSERT_TAG
MENUITEM SEPARATOR
MENUITEM "&New Line Break\tShift+Enter" ID_INSERT_LINE_BREAK
MENUITEM "&Break below Image(s)" ID_INSERT_BREAK_BOTH
END
POPUP "F&ormat"
BEGIN
// Font face items are added at runtime
POPUP "&Font"
BEGIN
MENUITEM "{}" ID_FORMAT_FONTFACE_BASE
END
// All of these items are added at runtime
POPUP "Si&ze"
BEGIN
MENUITEM "{}" ID_FORMAT_FONTSIZE_BASE
END
POPUP "&Style"
BEGIN
MENUITEM "&Bold\tCtrl+B" ID_FORMAT_CHAR_BOLD
MENUITEM "&Italic\tCtrl+I" ID_FORMAT_CHAR_ITALIC
MENUITEM "&Underline\tCtrl+U" ID_FORMAT_CHAR_UNDERLINE
MENUITEM "S&trikethrough" ID_FORMAT_CHAR_STRIKEOUT
MENUITEM "Su&perscript" ID_FORMAT_CHAR_SUPER
MENUITEM "&Subscript" ID_FORMAT_CHAR_SUB
MENUITEM "Blin&king" ID_FORMAT_CHAR_BLINK
MENUITEM "&Nonbreaking" ID_FORMAT_CHAR_NOBREAKS
END
MENUITEM "Text &Color...", ID_GET_COLOR // ID_FORMAT_FONTCOLOR
MENUITEM "Apply Last-Copied St&yle\tCtrl+Y" ID_PASTE_CHARACTER_STYLE
MENUITEM "&Remove All Styles\tCtrl+K" ID_FORMAT_CHAR_NONE
MENUITEM SEPARATOR
POPUP "&Heading"
BEGIN
MENUITEM "&1", ID_FORMAT_PARAGRAPH_BASE+P_HEADER_1
MENUITEM "&2", ID_FORMAT_PARAGRAPH_BASE+P_HEADER_2
MENUITEM "&3", ID_FORMAT_PARAGRAPH_BASE+P_HEADER_3
MENUITEM "&4", ID_FORMAT_PARAGRAPH_BASE+P_HEADER_4
MENUITEM "&5", ID_FORMAT_PARAGRAPH_BASE+P_HEADER_5
MENUITEM "&6", ID_FORMAT_PARAGRAPH_BASE+P_HEADER_6
END
POPUP "&Paragraph"
BEGIN
MENUITEM "&Normal", ID_FORMAT_PARAGRAPH_BASE+P_NSDT
MENUITEM "&Address", ID_FORMAT_PARAGRAPH_BASE+P_ADDRESS
MENUITEM "&Formatted", ID_FORMAT_PARAGRAPH_BASE+P_PREFORMAT
MENUITEM "&Term Name" ID_FORMAT_PARAGRAPH_BASE+P_DESC_TITLE
MENUITEM "&Definition" ID_FORMAT_PARAGRAPH_BASE+P_DESC_TEXT
MENUITEM SEPARATOR
MENUITEM "&Blockquote" ID_FORMAT_PARAGRAPH_BASE+P_BLOCKQUOTE
END
POPUP "&List"
BEGIN
MENUITEM "N&one" ID_REMOVE_LIST
MENUITEM "&Bulletted" ID_FORMAT_PARAGRAPH_BASE+P_UNUM_LIST
MENUITEM "&Numbered" ID_FORMAT_PARAGRAPH_BASE+P_NUM_LIST
MENUITEM "&Definition" ID_FORMAT_PARAGRAPH_BASE+P_DESC_LIST
END
POPUP "&Align"
BEGIN
MENUITEM "&Left\tCtrl+L", ID_ALIGN_LEFT
MENUITEM "&Center\tCtrl+E", ID_ALIGN_CENTER
MENUITEM "&Right\tCtrl+R", ID_ALIGN_RIGHT
END
MENUITEM SEPARATOR
MENUITEM "&Increase Indent\tCtrl =" ID_FORMAT_INDENT
MENUITEM "&Decrease Indent\tCtrl -" ID_FORMAT_OUTDENT
MENUITEM SEPARATOR
// <object> Pr&operties
MENUITEM "{&o}" ID_PROPS_LOCAL
// No "Page Title" in message composer
MENUITEM "&Background and Page Colors" ID_PROPS_DOC_COLOR
END
POPUP "T&able"
BEGIN
// Will be replaced with IDM_COMPOSER_TABLE_INSERTMENU
MENUITEM "{&I}" ID_INSERT_TABLE
// Will be replaced with IDM_COMPOSER_TABLE_DELETEMENU
MENUITEM "{&D}" ID_DELETE_TABLE
// Will be replaced with IDM_COMPOSER_TABLE_SELECTMENU
MENUITEM "{&S}" ID_SELECT_TABLE
// Will be replaced with IDM_COMPOSER_TABLE_PASTEMENU
MENUITEM "{&P}" ID_PASTE_TABLE
MENUITEM SEPARATOR
POPUP "&Align Table"
BEGIN
MENUITEM "&Left", ID_ALIGN_TABLE_LEFT
MENUITEM "&Center", ID_ALIGN_TABLE_CENTER
MENUITEM "&Right", ID_ALIGN_TABLE_RIGHT
END
MENUITEM SEPARATOR
// Join selected cells or with cell to the right
MENUITEM "{&J}" ID_MERGE_TABLE_CELLS
MENUITEM "Spli&t Cell" ID_SPLIT_TABLE_CELL
// "&Convert Text To Table" or "&Convert Table To Text"
MENUITEM "{&C}" ID_TABLE_TEXT_CONVERT
MENUITEM SEPARATOR
MENUITEM "&Properties" ID_PROPS_TABLE
END
// Translate this menu group string and the string IDS_TOOLS_MENU(in editor.rc) identically.
// The code tries to find this menu entry using the string resource.
POPUP "&Tools"
BEGIN
MENUITEM "Check &Spelling..." ID_CHECK_SPELLING
// Don't translate this entry. It is replaced at runtime.
MENUITEM "{Editor Plug-ins}" ID_EDITOR_PLUGINS_BASE
MENUITEM "Stop Active &Plug-in" ID_STOP_EDITOR_PLUGIN
END
POPUP "&Communicator"
BEGIN
MENUITEM "&Navigator\tCtrl+1", ID_TOOLS_WEB
MENUITEM "&Messenger Mailbox\tCtrl+2", ID_TOOLS_INBOX
MENUITEM "Collabra &Discussion Groups\tCtrl+3", ID_TOOLS_NEWS
MENUITEM "&Page Composer\tCtrl+4", ID_TOOLS_EDITOR
MENUITEM "&Conference\tCtrl+5", ID_WINDOW_LIVECALL
MENUITEM SEPARATOR
MENUITEM "Show Componen&t Bar", ID_WINDOW_TASKBAR
MENUITEM "Messa&ge Center\tCtrl+Shift+1", ID_TOOLS_MAIL
MENUITEM "&Address Book\tCtrl+Shift+2", ID_TOOLS_ADDRESSBOOK
POPUP "&Bookmarks"
BEGIN
MENUITEM "&Add Bookmark\tCtrl+D", ID_HOTLIST_ADDCURRENTTOHOTLIST
POPUP "&File Bookmark"
BEGIN
MENUITEM "Root", ID_BOOKMARKS_FILEROOT
END
MENUITEM "&Edit Bookmarks...", ID_HOTLIST_VIEW
MENUITEM SEPARATOR
POPUP "&Places"
BEGIN
MENUITEM "PLACEHOLDER", IDC_FIRST_PLACES_MENU_ID
END
MENUITEM SEPARATOR
END
MENUITEM "&History\tCtrl+H", ID_GO_HISTORY
MENUITEM "&Java Console", ID_OPTIONS_SHOWJAVACONSOLE
MENUITEM "&Security Info\tCtrl+Shift+I", ID_SECURITY
MENUITEM "Migration Tools", ID_MIGRATION_TOOLS
MENUITEM SEPARATOR
MENUITEM "{}", ID_WINDOW_WINDOW_0
END
POPUP "&Help"
BEGIN
MENUITEM "PLACEHOLDER", IDC_FIRST_HELP_MENU_ID
END
END
#endif
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
/////////////////////////////////////////////////////////////////////////////
//
// String Tables
//
// Mostly status line and tooltip text
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
ID_GET_COLOR "Change the current text color\nText Color"
END
// Paragraph and Character Listboxes and submenu text
STRINGTABLE DISCARDABLE
BEGIN
// LTNOTE: If you make a change here, you must also make a change in
// FEED_nParagraphTags array in EDVIEW2.CPP.
// These are used in toolbar's Paragraph Combobox
ID_LIST_TEXT_PARAGRAPH_BASE+P_NSDT "Normal"
ID_LIST_TEXT_PARAGRAPH_BASE+P_HEADER_1 "Heading 1"
ID_LIST_TEXT_PARAGRAPH_BASE+P_HEADER_2 "Heading 2"
ID_LIST_TEXT_PARAGRAPH_BASE+P_HEADER_3 "Heading 3"
ID_LIST_TEXT_PARAGRAPH_BASE+P_HEADER_4 "Heading 4"
ID_LIST_TEXT_PARAGRAPH_BASE+P_HEADER_5 "Heading 5"
ID_LIST_TEXT_PARAGRAPH_BASE+P_HEADER_6 "Heading 6"
ID_LIST_TEXT_PARAGRAPH_BASE+P_ADDRESS "Address"
ID_LIST_TEXT_PARAGRAPH_BASE+P_PREFORMAT "Formatted"
ID_LIST_TEXT_PARAGRAPH_BASE+P_LIST_ITEM "List Item"
ID_LIST_TEXT_PARAGRAPH_BASE+P_DESC_TITLE "Term Name"
ID_LIST_TEXT_PARAGRAPH_BASE+P_DESC_TEXT "Definition"
ID_LIST_TEXT_PARAGRAPH_BASE+P_BLOCKQUOTE "Blockquote"
// End of Paragraph combobox list
ID_LIST_TEXT_CHARACTER_BASE+P_BOLD "Bold\tCtrl+B"
ID_LIST_TEXT_CHARACTER_BASE+P_ITALIC "Italic\tCtrl+I"
ID_LIST_TEXT_CHARACTER_BASE+P_STRIKEOUT "Strikethrough"
ID_LIST_TEXT_CHARACTER_BASE+P_FIXED "Fixed Width\tCtrl+T"
ID_LIST_TEXT_CHARACTER_BASE+P_EMPHASIZED "Empahsized"
ID_LIST_TEXT_CHARACTER_BASE+P_STRONG "Strong"
ID_LIST_TEXT_CHARACTER_BASE+P_CODE "Code"
ID_LIST_TEXT_CHARACTER_BASE+P_SAMPLE "Sample"
ID_LIST_TEXT_CHARACTER_BASE+P_KEYBOARD "Keyboard"
ID_LIST_TEXT_CHARACTER_BASE+P_VARIABLE "Variable"
ID_LIST_TEXT_CHARACTER_BASE+P_CITATION "Citation"
ID_LIST_TEXT_CHARACTER_BASE+P_BLINK "Blink"
ID_LIST_TEXT_CHARACTER_BASE+P_BIG "Big"
ID_LIST_TEXT_CHARACTER_BASE+P_SMALL "Small"
ID_LIST_TEXT_CHARACTER_BASE+P_SUPER "Superscript"
ID_LIST_TEXT_CHARACTER_BASE+P_SUB "Subscript"
ID_LIST_TEXT_PARAGRAPH_BASE+P_SERVER "LiveScript (Server)"
ID_LIST_TEXT_PARAGRAPH_BASE+P_SCRIPT "LiveScript (Client)"
END
// Status line and tooltip text for formating
STRINGTABLE DISCARDABLE
BEGIN
ID_FORMAT_PARAGRAPH_BASE+P_NSDT "Set the style to Normal\nNormal"
ID_FORMAT_PARAGRAPH_BASE+P_HEADER_1 "Set the style to Heading 1\nHeading 1"
ID_FORMAT_PARAGRAPH_BASE+P_HEADER_2 "Set the style to Heading 2\nHeading 2"
ID_FORMAT_PARAGRAPH_BASE+P_HEADER_3 "Set the style to Heading 3\nHeading 3"
ID_FORMAT_PARAGRAPH_BASE+P_HEADER_4 "Set the style to Heading 4\nHeading 4"
ID_FORMAT_PARAGRAPH_BASE+P_HEADER_5 "Set the style to Heading 5\nHeading 5"
ID_FORMAT_PARAGRAPH_BASE+P_HEADER_6 "Set the style to Heading 6\nHeading 6"
ID_FORMAT_PARAGRAPH_BASE+P_ADDRESS "Set the style to Address\nAddress"
ID_FORMAT_PARAGRAPH_BASE+P_PREFORMAT "Set the style to Preformat\nPreformat"
ID_FORMAT_PARAGRAPH_BASE+P_UNUM_LIST "Start, change to, or clear an Unnumbered (Bulleted) List\nBullet List"
ID_FORMAT_PARAGRAPH_BASE+P_NUM_LIST "Start, change to, or clear a Numbered List\nNumbered List"
ID_FORMAT_PARAGRAPH_BASE+P_DESC_LIST "Start, change to, or clear a Definition List\nDefinition List"
ID_FORMAT_PARAGRAPH_BASE+P_LIST_ITEM "Set the style to List Item\nList Item"
ID_FORMAT_PARAGRAPH_BASE+P_DESC_TITLE "Set the style to Term Name (an item to be defined)\nTerm Name"
ID_FORMAT_PARAGRAPH_BASE+P_DESC_TEXT "Set the style to Term Definition\nDefinition"
ID_FORMAT_PARAGRAPH_BASE+P_BLOCKQUOTE "Set or remove the Blockquote style (same as indenting or outdenting a non-list paragraph)\nBlockquote"
ID_FORMAT_CHAR_NONE "Remove all character styles and link(s)\nRemove All Styles (Ctrl+K)"
ID_FORMAT_CHAR_BOLD "Set the style to Bold\nBold (Ctrl+B)"
ID_FORMAT_CHAR_ITALIC "Set the style to Italic\nItalic (Ctrl+I)"
ID_FORMAT_CHAR_UNDERLINE "Set the style to Underline\nUnderline (Ctrl+U)"
ID_FORMAT_CHAR_NOBREAKS "Set the style to not break between words (no word wrap)\nNonbreaking"
ID_FORMAT_CHAR_SUPER "Set the style to Superscript\nSuperscript"
ID_FORMAT_CHAR_SUB "Set the style to Subscript\nSubscript"
ID_FORMAT_CHAR_STRIKEOUT "Set the style to Strikethrough\nStrikethrough"
ID_FORMAT_CHAR_BLINK "Set the style to Blink\nBlink"
ID_DISPLAY_TABLES "Display formated tables while editing"
END
STRINGTABLE DISCARDABLE
BEGIN
ID_PASTE_BASE "Paste a new table at the insert point"
ID_PASTE_BASE+1 "Paste new rows above the current row"
ID_PASTE_BASE+2 "Paste new rows below the current row"
ID_PASTE_BASE+3 "Paste new column before the current column"
ID_PASTE_BASE+4 "Paste new column after the current column"
ID_PASTE_BASE+5 "Paste cells over selected cells or cells starting with current cell"
ID_PASTE_BASE+6 "Paste the text version of clipboard data"
ID_PASTE_BASE+7 "Paste the image version of clipboard data"
END
STRINGTABLE DISCARDABLE
BEGIN
ID_CHECK_SPELLING "Check spelling errors in the page\nCheck Spelling\nSpelling"
IDS_ERR_ADD_WORD "Error adding word to dictionary file %1%2."
ID_STOP_EDITOR_PLUGIN "Stop currently running editor plug-in\nStop active plug-in"
END
STRINGTABLE DISCARDABLE
BEGIN
ID_FORMAT_FONTSIZE_BASE "Decrease font size by 2 levels"
ID_FORMAT_FONTSIZE_BASE+1 "Decrease font size by 1 level"
ID_FORMAT_FONTSIZE_BASE+2 "Remove font size (display text in viewer's font size)"
ID_FORMAT_FONTSIZE_BASE+3 "Increase font size by 1 level"
ID_FORMAT_FONTSIZE_BASE+4 "Increase font size by 2 levels"
ID_FORMAT_FONTSIZE_BASE+5 "Increase font size by 3 levels"
ID_FORMAT_FONTSIZE_BASE+6 "Increase font size by 4 levels"
END
#endif

Просмотреть файл

@ -702,7 +702,10 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "A&bout Privacy", ID_PRIVACY_DISPLAY_TUTORIAL
END
#ifdef DEBUG_cmanske
MENUITEM SEPARATOR
MENUITEM "&Freeze Window Contents" ID_TOGGLE_FREEZE_FRAME
#endif
MENUITEM SEPARATOR
#ifdef XP_WIN16
MENUITEM "New Window" ID_WINDOW_WINDOW_0

Просмотреть файл

@ -193,6 +193,7 @@
#define IDS_INVALID_EMAIL 178
#define IDS_READNEWS_STATIC2 179
#define IDS_PE_ACCT_SETUP 180
#define ID_TOGGLE_FREEZE_FRAME 181
#define IDB_IMAGE_DELAYED 184
#define IDB_IMAGE_BAD 185
#define IDB_IMAGE_NOTFOUND 186