gecko-dev/cmd/winfe/property.h

108 строки
3.6 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.
*/
// The CNetscapePropertySheet is the same as a CPropertySheet except that
// it calls all of its children with the IDOK message instead of just
// the active page. It also assumes all of its children panes are of
// type CNetscapePropertyPage and calls OnHelp() on them whenever it
// receives a ID_HELP commend.
//
#ifndef __PROPERTY_H
#define __PROPERTY_H
// Tests if the Apply button in a property page is enabled
// If Apply enable state is carefully managed, this can be used
// to test if any data has been modifed in a property page
#define IS_APPLY_ENABLED(pPage) (pPage && pPage->GetParent()->GetDlgItem(ID_APPLY_NOW)->IsWindowEnabled())
/////////////////////////////////////////////////////////////////////////////
// CNetscapePropertySheet dialog
class CNetscapePropertySheet : public CPropertySheet
{
// Construction
public:
CNetscapePropertySheet(const char * pName, CWnd * parent = NULL, UINT nSelectedPage = 0,
MWContext *pMWContext = NULL,
BOOL bUseApplyButton = FALSE);
virtual void OnOK();
virtual void OnHelp();
// Change the text of a property page during runtime
void SetPageTitle(int nPage, LPCTSTR pszText);
// TODO: We can remove this check once everyone moves to MSVC 4.0
#if defined(MSVC4)
//CLM: The change to MFC broke this -- it doesn't return last page
// once the dialog is closed, which is how we always use it!
// see genframe.cpp for new function
int GetCurrentPage();
int m_nCurrentPage;
BOOL SetCurrentPage(int iPage);
#else
int GetCurrentPage() { return m_nCurPage; };
int SetCurrentPage(int iPage);
#endif // MSVC4
protected:
BOOL m_bUseApplyButton;
// Generated message map functions
//{{AFX_MSG(CNetscapePropertySheet)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
//}}AFX_MSG
#ifdef XP_WIN32
afx_msg BOOL OnHelpInfo(HELPINFO *);
#endif
DECLARE_MESSAGE_MAP()
private:
MWContext *m_pMWContext; //For Editor Undo
};
/////////////////////////////////////////////////////////////////////////////
// CNetscapePropertyPage dialog
class CNetscapePropertyPage : public CPropertyPage
{
protected:
UINT m_nIDFocus;
public:
// CLM: Added to pass in Caption ID and initial control to set focus
CNetscapePropertyPage(UINT nID, UINT nIDCaption = 0, UINT nIDFocus = 0);
// Use instead of MFC's CancelToClose, which doesn't work as advertised!
// Changes "OK" button text to "Close" and dissables "Cancel" button
// Also does SetModified(FALSE), which is always needed when this is used
void OkToClose();
// for help works in property page, OnHelp should be a virtual, not
// from message map
virtual void OnHelp();
protected:
DECLARE_MESSAGE_MAP()
BOOL SetInitialFocus( UINT nID );
};
#endif // __PROPERTY_H