gecko-dev/cmd/winfe/genframe.h
1998-03-28 02:44:41 +00:00

411 lines
14 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.
*/
#ifndef __GenericFrame_H
#define __GenericFrame_H
// genframe.h : header file
//
#include "frameglu.h"
#include "htrdf.h"
#define WIN_ANIMATE_ICON_TIMER 4
#define MSG_TASK_NOTIFY (WM_USER + 1)
// Longest menu item length for Composer's last-edited history submenus
#define MAX_MENU_ITEM_LENGTH 45
//cmanske: As much as I dislike assume fixed menu positions,
// it infinitely simplifies finding submenus when building menus at runtime
enum {
ED_MENU_FILE,
ED_MENU_EDIT,
ED_MENU_VIEW,
ED_MENU_INSERT,
ED_MENU_FORMAT,
ED_MENU_TABLE,
ED_MENU_TOOLS,
ED_MENU_COMMUNICATOR,
ED_MENU_HELP
};
// Load a URL into a new Browser window
// This simply creates the URL struct and calls CFE_CreateNewDocWindow
MWContext * wfe_CreateNavigator(char * pURL = NULL);
/////////////////////////////////////////////////////////////////////////////
// CGenericFrame frame
class CNSGenFrame : public CFrameWnd
{
DECLARE_DYNCREATE(CNSGenFrame)
public:
CNSNavFrame* GetDockedNavCenter();
virtual BOOL AllowDocking();
protected:
afx_msg void OnActivate( UINT nState, CWnd* pWndOther, BOOL bMinimized);
DECLARE_MESSAGE_MAP()
};
class CGenericFrame : public CNSGenFrame, public CFrameGlue
{
DECLARE_DYNCREATE(CGenericFrame)
protected:
CGenericFrame(); // protected constructor used by dynamic creation
BOOL m_bPreCreated;
CTreeMenu *m_pBookmarksMenu;
CTreeMenu *m_pFileBookmarkMenu;
CTreeItemList *m_BookmarksGarbageList;
CTreeItemList *m_OriginalBookmarksGarbageList;
CBitmap *m_pBookmarkBitmap;
CBitmap *m_pBookmarkFolderBitmap;
CBitmap *m_pBookmarkFolderOpenBitmap;
CTreeMenu* m_pCachedTreeMenu;
int m_nCachedStartPoint;
HT_Pane m_BookmarkMenuPane; // Added for Aurora (Dave Hyatt 2/12/97)
void BuildBookmarkMenu(CTreeMenu* pMenu, HT_Resource pRoot, int nStart = 0);
void BuildFileBookmarkMenu(CTreeMenu* pMenu, HT_Resource pRoot);
void BuildDirectoryMenu(CMenu* pMenu);
//Returns TRUE if pFolder is changed, FALSE otherwise
virtual BOOL FileBookmark(HT_Resource pFolder);
void InitFileBookmarkMenu(void);
void LoadBookmarkMenuBitmaps(void);
// Menu Map
// Everything below is for the case where a frame wants to dynamically load its
// menus. This is done to save user resources in Win16.
protected:
#ifdef _WIN32
CMapPtrToPtr *m_pMenuMap;
#else
CMapWordToPtr *m_pMenuMap;
#endif
void AddToMenuMap(int nIndex, UINT nID);
void LoadFrameMenu(CMenu *pPopup, UINT nIndex);
void DeleteFrameMenu(HMENU hMenu);
void DeleteMenuMapMenus(void);
void DeleteMenuMapIDs(void);
public:
CTreeMenu * GetBookmarksMenu(void) { return m_pBookmarksMenu; }
void FinishMenuExpansion(HT_Resource pRoot);
#ifdef XP_WIN32
// jliu added the following to support CJK caption print
virtual int16 GetTitleWinCSID();
#endif
public:
// ugh this should really be private
CGenericFrame * m_pNext; // the next frame in the theApp.m_pFrameList
// Use only by editor to avoid double-prompting for saving changes
// when we call CGenericDoc::CanCloseFrame followed by frame's OnClose()
BOOL m_bSkipSaveEditChanges;
BOOL m_isClosing;
BOOL m_DockOrientation;
// CFrameGlue required overrides
public:
virtual CFrameWnd *GetFrameWnd();
virtual void UpdateHistoryDialog();
void BuildHelpMenu(CMenu * pMenu);
// override this only if you want to
virtual void OnConstructWindowMenu ( CMenu * pMenu );
void OnSaveConfiguration();
// Attributes
public:
// Used for bookmark menu items and history menu items
int m_nBookmarkItems; // current number of bookmark menu items
int m_nFileBookmarkItems;
#ifdef XP_WIN32
CMapPtrToPtr* m_pSubmenuMap; // HMENU -> BM_Entry*
#else
CMapWordToPtr* m_pSubmenuMap; // HMENU -> BM_Entry*
#endif
#ifdef XP_WIN32
CMapPtrToPtr* m_pFileSubmenuMap; // HMENU -> BM_Entry*
#else
CMapWordToPtr* m_pFileSubmenuMap; // HMENU -> BM_Entry*
#endif
CMapWordToPtr* m_pHotlistMenuMap; // command ID -> URL and
// command ID -> History_Entry*
// We may or may not allow the window to resize.
private:
BOOL m_bCanResize;
CRect m_crMinMaxRect;
BOOL m_bZOrderLocked;
BOOL m_bBottommost;
BOOL m_bDisableHotkeys;
DWORD m_wAddedExStyles;
DWORD m_wRemovedExStyles;
#ifdef XP_WIN32
// jliu added the following to support CJK caption print
void SetupCapFont( int16 csid, BOOL force = FALSE );
UINT capStyle;
BOOL m_bActive;
CFont hCapFont;
int16 m_csid; // WinCSID of current document
#endif
HWND m_hPopupParent;
BOOL m_bConference;
public:
void EnableResize(BOOL bEnable = TRUE);
BOOL CanResize(){ return m_bCanResize; }
void SetZOrder(BOOL bZLock = FALSE, BOOL bBottommost = FALSE);
BOOL IsZOrderLocked(){ return m_bZOrderLocked; }
BOOL IsBottommost(){ return m_bBottommost; }
void DisableHotkeys(BOOL bDisable = FALSE);
BOOL HotkeysDisabled(){ return m_bDisableHotkeys; }
#ifdef WIN32
void SetExStyles(DWORD wAddedExStyles, DWORD wRemovedExStyles);
DWORD GetRemovedExStyles();
#endif
void SetAsPopup(HWND hPopupParent);
// Operations
public:
// Some static public data, initialized in genframe.cpp
// used to offset frame windows from one another
static int m_FirstFrame;
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CGenericFrame)
public:
virtual void RecalcLayout( BOOL bNotify = TRUE );
virtual BOOL PreTranslateMessage(MSG *pMsg);
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
protected:
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
//}}AFX_VIRTUAL
public:
// assorted people can cause us to open windows. Make these public so we
// can try to localize the functionality
afx_msg void OnOpenMailWindow();
afx_msg void OnOpenInboxWindow();
afx_msg void OnOpenNewsWindow();
afx_msg void OnToolsWeb();
afx_msg void OnOpenComposerWindow(); // Implemented in edframe.cpp
afx_msg void OnToggleEncoding(UINT nID);
afx_msg void OnUpdateEncoding(CCmdUI* pCmdUI);
// Implementation
protected:
virtual ~CGenericFrame();
virtual void GetMessageString( UINT nID, CString& rMessage ) const;
// Generated message map functions
afx_msg void OnEnterIdle(UINT nWhy, CWnd* pWho );
afx_msg void OnInitMenuPopup(CMenu * pPopup, UINT nIndex, BOOL bSysMenu);
afx_msg void OnMenuSelect( UINT nItemID, UINT nFlags, HMENU hSysMenu );
afx_msg void OnMeasureItem(int nIDCtl, LPMEASUREITEMSTRUCT lpMeasureItemStruct);
afx_msg LRESULT OnMenuChar( UINT nChar, UINT nFlags, CMenu* pMenu );
afx_msg LRESULT OnSetMessageString(WPARAM wParam, LPARAM lParam);
afx_msg void OnClose();
afx_msg void OnDestroy();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnSysColorChange();
afx_msg BOOL OnQueryNewPalette();
afx_msg void OnPaletteChanged(CWnd* pFocusWnd);
afx_msg void OnNewFrame();
afx_msg void OnUpdateNewFrame(CCmdUI* pCmdUI);
afx_msg void OnFileOpenurl();
afx_msg void OnUpdateFileOpenurl(CCmdUI* pCmdUI);
afx_msg void OnHotlistAddcurrenttohotlist();
afx_msg void OnUpdateHotlistAddcurrenttohotlist(CCmdUI* pCmdUI);
afx_msg void OnHotlistAddcurrenttotoolbar();
afx_msg void OnUpdateHotlistAddcurrenttotoolbar(CCmdUI* pCmdUI);
afx_msg void OnUpdateOpenMailWindow(CCmdUI* pCmdUI);
afx_msg void OnUpdateOpenNewsWindow(CCmdUI* pCmdUI);
afx_msg void OnUpdateTaskbar(CCmdUI *pCmdUI);
afx_msg void OnAbout();
afx_msg void OnDocumentTop();
afx_msg void OnDocumentBottom();
afx_msg void OnFishCam();
afx_msg void OnShowBookmarkWindow();
afx_msg void OnShowAddressBookWindow();
#ifdef JAVA
afx_msg void OnToggleJavaConsole();
afx_msg void OnUpdateJavaConsole(CCmdUI* pCmdUI);
#endif
afx_msg void OnSecurity();
afx_msg void OnUpdateSecurity(CCmdUI *pCmdUI);
afx_msg void OnViewCommandToolbar();
afx_msg void OnUpdateViewCommandToolbar(CCmdUI* pCmdUI);
afx_msg void OnViewLocationToolbar();
afx_msg void OnUpdateViewLocationToolbar(CCmdUI* pCmdUI);
afx_msg void OnViewCustomToolbar();
afx_msg void OnUpdateViewCustomToolbar(CCmdUI* pCmdUI);
afx_msg void OnViewNavCenter();
afx_msg void OnUpdateViewNavCenter(CCmdUI* pCmdUI);
afx_msg void OnUpdatePlaces(CCmdUI* pCmdUI);
afx_msg void OnUpdateCustomizeToolbar(CCmdUI *pCmdUI);
afx_msg void OnCustomizeToolbar();
afx_msg void OnIncreaseFont();
afx_msg void OnDecreaseFont();
afx_msg void OnGoHistory();
afx_msg void OnFileMailNew();
afx_msg void OnTaskbar();
afx_msg void OnUpdateLiveCall(CCmdUI *pCmdUI);
afx_msg void OnLiveCall();
afx_msg void OnCalendar();
afx_msg void OnIBMHostOnDemand();
afx_msg void OnNetcaster();
afx_msg void OnAim();
afx_msg void OnDisplayPreferences();
afx_msg void OnPrefsGeneral();
afx_msg void OnPrefsMailNews();
afx_msg void OnPrefsNetwork();
afx_msg void OnPrefsSecurity();
afx_msg void OnAnimationBonk();
afx_msg void OnUpdateFileRoot(CCmdUI* pCmdUI);
afx_msg void OnGoOffline();
afx_msg void OnUpdateGoOffline(CCmdUI* pCmdUI);
afx_msg void OnDoneGoingOffline();
#ifdef FORTEZZA
afx_msg void OnStartFortezzaCard();
afx_msg void OnStartFortezzaChange();
afx_msg void OnStartFortezzaView();
afx_msg void OnDoFortezzaInfo();
afx_msg void OnDoFortezzaLog();
#endif
afx_msg void OnFrameExit();
afx_msg void OnSetFocus(CWnd* pOldWnd);
afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos);
afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnSizing(UINT nSide, LPRECT lpRect);
afx_msg void OnNextWindow();
afx_msg void OnSaveOptions();
afx_msg LRESULT OnFindReplace(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnHelpMsg(WPARAM wParam, LPARAM lParam);
afx_msg void OnMove(int x, int y);
afx_msg void OnFilePageSetup();
afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
afx_msg LONG OnTaskNotify(WPARAM wParam, LPARAM lParam);
afx_msg void OnShowAdvanced();
afx_msg void OnUpdateShowAdvanced( CCmdUI *pCmdUI );
afx_msg void OnHelpMenu();
afx_msg void OnLDAPSearch();
afx_msg void OnPageFromWizard();
#ifdef EDITOR
afx_msg void OnEditNewBlankDocument();
afx_msg void OnActivateSiteManager();
afx_msg void OnUpdateActivateSiteManager(CCmdUI* pCmdUI);
// Response to Registered messages to detect 1st instance
afx_msg LRESULT OnNetscapeGoldIsActive(WPARAM wParam, LPARAM lParam);
// Response to Registered messages to open Editor or Navigator
// from attempted 2nd instance or Site Manager
afx_msg LRESULT OnOpenEditor(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnOpenNavigator(WPARAM wParam, LPARAM lParam);
#ifdef XP_WIN32
afx_msg LRESULT OnSiteMgrMessage(WPARAM wParam, LPARAM lParam);
#endif
// These are hooked up to menu commands...
afx_msg void OnNavigateToEdit();
afx_msg void OnEditFrame();
// ...and call this after setting appropriate m_iLoadUrlEditorState
void OpenEditorWindow(int iStyle);
// This is used for all of above - prevent interaction
// with menus when no context, edit buffer, etc exists
afx_msg void OnUpdateCanInteract(CCmdUI* pCmdUI);
afx_msg void OnUpdateEditFrame(CCmdUI* pCmdUI);
afx_msg void OnEditNewDocFromTemplate();
#endif
#ifdef _WIN32
afx_msg LONG OnHackedMouseWheel(WPARAM wParam, LPARAM lParam);
// jliu added the following to support CJK caption print
afx_msg void OnNcPaint();
afx_msg BOOL OnNcActivate( BOOL );
afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnSettingChange(WPARAM, LPARAM);
#endif
afx_msg void OnActivate( UINT nState, CWnd* pWndOther, BOOL bMinimized);
#ifdef DEBUG_WHITEBOX
afx_msg void OnWhiteBox();
#endif
DECLARE_MESSAGE_MAP()
#ifdef EDITOR
public:
// Load a URL into a new edit window,
// OR the existing window if bNewWindow is FALSE
// (used only when Composer is first window)
void LoadUrlEditor(char * pURL = NULL,
BOOL bNewWindow = TRUE,
int iLoadStyle = 0,
MWContext * pCopyHistoryContext = NULL);
// Called from Edit view only after CheckAndSaveDocument
void OpenNavigatorWindow(MWContext * pMWContext);
// Currently used only when canceling an already-loaded URL
// in editor and user doesn't want to save to disk
// (replaces editor with a browser with the same URL)
void EditToNavigate(MWContext * pEditContext, BOOL bNewDocument );
// Put all Composer-only code here - called only from CGenericFrame::OnMenuSelect()
void OnMenuSelectComposer(UINT nItemID, UINT nFlags, HMENU hSysMenu);
BOOL m_bCloseFrame;
#endif
virtual void RefreshNewEncoding(int16 csid, BOOL bIgnore=TRUE);
};
#ifdef EDITOR
// Global helpers so CEditFrame and CComposeFrame (mail message) can share
// dynamic menu functionality
BOOL edt_GetMessageString(CView *pView, UINT MenuId, CString& Message);
BOOL edt_IsEditorDynamicMenu(WPARAM wParam);
#endif
CGenericFrame *wfe_FrameFromXPContext(MWContext * pXPCX);
static UINT NEAR WM_FINDREPLACE = ::RegisterWindowMessage(FINDMSGSTRING);
static UINT NEAR WM_HELPMSG = ::RegisterWindowMessage(HELPMSGSTRING);
#endif