home *** CD-ROM | disk | FTP | other *** search
- /* -*- 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 GENCHROM_H
- #define GENCHROM_H
-
- #include "apichrom.h"
- #include "statbar.h"
- #include "animbar.h"
- #include "urlbar.h"
- #include "csttlbr2.h"
- #include "toolbar2.h"
- #include "usertlbr.h"
-
- class CGenericToolBar: public INSToolBar, public INSAnimation {
-
- protected:
- CCommandToolbar *m_pCommandToolbar;
- UINT m_nBitmapID;
- LPUNKNOWN m_pOuterUnk;
- ULONG m_ulRefCount;
-
- public:
- CGenericToolBar( LPUNKNOWN pOuterUnk = NULL );
- ~CGenericToolBar();
-
- // IUnknown Interface
- STDMETHODIMP QueryInterface(REFIID,LPVOID *);
- STDMETHODIMP_(ULONG) AddRef();
- STDMETHODIMP_(ULONG) Release();
-
- // INSToolbar Interface
- virtual int Create( CFrameWnd *pParent,
- DWORD dwStyle = WS_CHILD|WS_VISIBLE|CBRS_TOP,
- UINT nID = AFX_IDW_TOOLBAR );
-
- virtual void SetSizes( SIZE sizeButton,
- SIZE sizeImage );
-
- virtual void SetButtons( const UINT *lpIDArray,
- int nIDCount, UINT nBitmapID = 0 );
-
- //cmanske: Added functions convenient adding of popup menu styles to specific buttons
- // and getting rect (used for CDropDownToolbar that appears below button)
- virtual void SetButtonStyle( UINT nIDButtonCommand, DWORD dwButtonStyle );
- virtual void GetButtonRect( UINT nIDButtonCommand, RECT * pRect );
-
- virtual void AddButton( CToolbarButton *pButton, int index = -1 );
-
- virtual void RemoveAllButtons();
-
- virtual CToolbarButton *RemoveButton( int index );
-
- virtual BOOL LoadBitmap( LPCSTR lpszResourceName );
-
- virtual void SetToolbarStyle( int nToolbarStyle );
-
- virtual void Show( BOOL bShow = TRUE );
-
- // should the buttons be the same width or their own size
- virtual void SetButtonsSameWidth(BOOL bSameWidth);
-
- virtual HWND GetHWnd();
-
- // INSAnimation Interface
- virtual void StartAnimation();
- virtual void StopAnimation();
- };
-
- class CModalStatus;
-
- class CGenericStatusBar: public INSStatusBar {
- protected:
- CNetscapeStatusBar *m_pStatusBar;
- CNetscapeStatusBar *m_pCreatedBar;
-
- LPUNKNOWN m_pOuterUnk;
- ULONG m_ulRefCount;
-
- int m_iProg;
- CString m_csStatus;
-
- BOOL m_bModal;
- CModalStatus *m_pModalStatus;
-
- public:
-
- CGenericStatusBar( LPUNKNOWN );
- ~CGenericStatusBar();
-
- // IUnknown Interface
- STDMETHODIMP QueryInterface(REFIID,LPVOID *);
- STDMETHODIMP_(ULONG) AddRef();
- STDMETHODIMP_(ULONG) Release();
-
- // INSStatusBar Interface
- virtual BOOL Create( CWnd* pParentWnd,
- DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
- UINT nID = AFX_IDW_STATUS_BAR,
- BOOL bSecurityStatus = TRUE, BOOL bTaskbar = TRUE );
-
- virtual void Attach( CNetscapeStatusBar *pBar );
-
- // Messages
- virtual void SetStatusText(const char * = NULL);
- virtual const char *GetStatusText();
-
- // Progress
- virtual void SetProgress(int = 0);
- virtual int GetProgress();
- virtual void ProgressComplete();
-
- // Create/Remove a modal status window
- virtual void ModalStatus( BOOL bModal, UINT uDelay, char * pszTitle );
-
- virtual void Show( BOOL bShow = TRUE );
-
- virtual HWND GetHWnd();
-
- // "Cylon" mode cues
- virtual void StartAnimation();
- virtual void StopAnimation();
-
- CNetscapeStatusBar *GetNetscapeStatusBar();
- };
-
- //Begin JOKI
- // Purpose: Provide a registry to monitor when a status bar msg. text is changed
- class CStatusBarChangeRegistry {
- protected:
- static CPtrList m_Registry;
- POSITION m_rIndex;
-
- CStatusBarChangeRegistry() {}
- ~CStatusBarChangeRegistry() {m_Registry.RemoveAt(m_rIndex); }
- };
-
- class CStatusBarChangeItem : public CStatusBarChangeRegistry {
- protected:
- DWORD m_dwWindowID;
-
- CStatusBarChangeItem(DWORD dwWindowID) : CStatusBarChangeRegistry() {
- m_dwWindowID = dwWindowID;
- }
-
- virtual void StatusChanging(LPCSTR lpStatusMsg) = 0;
-
- public:
- DWORD GetWindowID() {
- return(m_dwWindowID);
- }
-
- static void Changing(DWORD dwWindowID, LPCSTR lpStatusMsg);
- };
-
- class CDDEStatusBarChangeItem : public CStatusBarChangeItem {
- CString m_csServiceName;
- CString m_csLastMsgSent;
-
- protected:
- CDDEStatusBarChangeItem(CString& csServiceName, DWORD dwWindowID) : CStatusBarChangeItem(dwWindowID) {
- m_rIndex = m_Registry.AddTail(this);
- m_csServiceName = csServiceName;
- }
-
- // Must override.
- void StatusChanging(LPCSTR lpStatusMsg);
-
- public:
- CString GetServiceName() {
- return(m_csServiceName);
- }
-
- BOOL IsSameAsLastMsgSent(LPCSTR lpCurMsg);
-
- // Consider these the constructor, destructor.
- static BOOL DDERegister(CString &csServiceName, DWORD dwWindowID);
- static BOOL DDEUnRegister(CString &csServiceName, DWORD dwWindowID);
- };
-
- //End JOKI
-
- class CGenericChrome: public IChrome {
- protected:
- ULONG m_ulRefCount;
- CFrameWnd *m_pParent;
- LPUNKNOWN m_pOuterUnk;
- CGenericToolBar *m_pToolBar;
- CGenericStatusBar *m_pStatusBar;
-
- CString m_csWindowTitle, m_csDocTitle;
-
- BOOL m_bHasStatus;
-
- CCustToolbar *m_pCustToolbar;
- CString m_toolbarName;
- LPNSTOOLBAR m_pMainToolBar;
-
- //#ifndef NO_TAB_NAVIGATION
- virtual BOOL CGenericChrome::procTabNavigation( UINT nChar, UINT forward, UINT controlKey );
- UINT m_tabFocusInChrom;
- enum { TAB_FOCUS_IN_NULL, TAB_FOCUS_IN_LOCATION_BAR };
- //#endif /* NO_TAB_NAVIGATION */
-
-
- public:
- // IUnknown Interface
- STDMETHODIMP QueryInterface(REFIID,LPVOID *);
- STDMETHODIMP_(ULONG) AddRef(void);
- STDMETHODIMP_(ULONG) Release(void);
-
- virtual void Initialize( CFrameWnd *pWnd );
-
- // Menu bar stuff
- virtual void SetMenu( UINT );
-
- // General Toolbar functionality
- virtual void ShowToolbar(UINT nToolbarID, BOOL bShow = TRUE);
- virtual BOOL GetToolbarVisible(UINT nToolbarID);
- virtual CWnd *GetToolbar(UINT nToolbarID);
- virtual void SetToolbarFocus(UINT nToolbarID);
- // nPos, bOpen, and bShowing are IN/OUT parameters. Values going in are default values and values
- // coming out are the values from the registry or default if not in the registry.
- virtual void LoadToolbarConfiguration(UINT nToolbarID, CString &csToolbarName, int32 & nPos, BOOL & bOpen, BOOL & bShowing);
- virtual void SaveToolbarConfiguration(UINT nToolbarID, CString &csToolbarName);
- virtual void SetSaveToolbarInfo(BOOL bSaveToolbarInfo);
-
- // Animation Stuff
- virtual void StartAnimation();
- virtual void StopAnimation();
-
- // Window Title Stuff
- virtual void SetWindowTitle(const char *);
- virtual void SetDocumentTitle(const char*);
-
- // ToolbarManager Stuff
- virtual int CreateCustomizableToolbar(CString toolbarName, int nMaxToolbars, BOOL bHasAnimation);
- virtual int CreateCustomizableToolbar(UINT nStringID, int nMaxToolbars, BOOL bHasAnimation);
- virtual CString GetCustToolbarString();
- virtual void RenameCustomizableToolbar(UINT nStringID);
- virtual void FinishedAddingBrowserToolbars();
- virtual void SetToolbarStyle( int nToolbarStyle );
- virtual BOOL CustToolbarShowing();
- virtual void ViewCustToolbar(BOOL bShow);
- virtual void Customize();
- virtual CCustToolbar * GetCustomizableToolbar();
-
-
- // MainFrame's Toolbar Stuff
- virtual void ImagesButton(BOOL);
-
- // Constructor and Destructor
- CGenericChrome( LPUNKNOWN pOuterUnk );
- virtual ~CGenericChrome();
- };
-
-
- #endif
-