gecko-dev/cmd/winfe/feutil.h

213 строки
8.1 KiB
C++
Executable File

/* -*- 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 FE_UTILITIES__H
#define FE_UTILITIES__H
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
// File used for general purpose functions for the
// windows front end that have no other
// specific home.
// All functions should start with FEU to denote
// their origin.
// Wrap some SDK calls here
BOOL FEU_GetSaveFileName(OPENFILENAME *pOFN);
BOOL FEU_GetOpenFileName(OPENFILENAME *pOFN);
UINT FEU_GetCurrentDriveType(void);
// Port some SDK calls here
#ifdef XP_WIN16
DWORD GetCurrentDirectory(DWORD nBufferLength, LPSTR lpBuffer);
BOOL SetCurrentDirectory(LPCSTR lpPathName);
#endif
#define FEU_FINDBROWSERONLY 0
#define FEU_FINDBROWSERANDEDITOR 1
#define FEU_FINDEDITORONLY 2
// Way to get a frame window pointer out of a context ID.
CFrameWnd *FEU_FindFrameByID(DWORD dwID, MWContextType cxType = MWContextAny);
// Way to get a frame window that was last active browser window.
CFrameWnd *FEU_GetLastActiveFrame(MWContextType cxType = MWContextAny, int bFindEditor = FEU_FINDBROWSERONLY);
// Way to get the main context from the frameGlue.
CAbstractCX *FEU_GetLastActiveFrameContext(MWContextType cxType = MWContextAny, int nFindEditor = FEU_FINDBROWSERONLY);
// Way to get the last active frame window based on its customizable toolbar
// bUseSaveInfo is true if custToolbar's save info field should be used to disregard frames if save info is FALSE
CFrameWnd *FEU_GetLastActiveFrameByCustToolbarType(CString custToolbar, CFrameWnd *pCurrentFrame, BOOL bUseSaveInfo);
// Way to get the bottommost frame of type cxType
CFrameWnd *FEU_GetBottomFrame(MWContextType cxType = MWContextAny, int nFindEditor = FEU_FINDBROWSERONLY);
// Way to get the number of active frames that are of type cxType
int FEU_GetNumActiveFrames(MWContextType cxType = MWContextAny, int nFindEditor = FEU_FINDBROWSERONLY);
// Way to get the context ID out of the frame which was last active.
DWORD FEU_GetLastActiveFrameID(MWContextType cxType = MWContextAny);
// Way to block returning until a context is no longer in existance.
void FEU_BlockUntilDestroyed(DWORD dwContextID);
// Ensure a disk has space to write on, or ask the user about it.
BOOL FEU_ConfirmFreeDiskSpace(MWContext *pContext, const char *pFileName, int32 lContentLength);
#if defined(XP_WIN16)
// Debuggin resource stuff on 16 bits.
void FEU_FreeResources(const char *pString, int iDigit, BOOL bBox);
// 16 bits needs a GetDiskFreeSpace call.
BOOL GetDiskFreeSpace(LPCTSTR lpRootPathName, LPDWORD lpSectorsPerCluster,
LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters, LPDWORD lpTotalNumberOfClusters);
#endif
//#ifndef NO_TAB_NAVIGATION
void FEU_MakeRectVisible(MWContext *pContext, const UINT left, const UINT top, const UINT right, const UINT bottom);
void FEU_MakeElementVisible(MWContext *pContext, LO_Any *pElement);
//#else /* NO_TAB_NAVIGATION */
// scroll the given form into the visible part of the window
// void FEU_MakeFormVisible(MWContext *pContext, LO_FormElementStruct *pForm);
//#endif /* NO_TAB_NAVIGATION */
// Strip off all trailing backslashes
char *FEU_NoTrailingBackslash(char *pBackslash);
// Replace all occurrences of original in pStr with replace
void FEU_ReplaceChar(char *pStr, char original, char replace);
// Replaces all occurrences of & with &&
CString FEU_EscapeAmpersand(CString str);
// Write string values to the registry in the said location.
BOOL FEU_RegistryWizard(HKEY hRoot, const char *pKey, const char *pValue);
// As the fucntion indicates.
// char *FEU_ExtractCommaDilimetedString(const char *pArgList, int iArgToExtract);
#define MAXFONTFACENAME (LF_FACESIZE+1)
int FEU_ExtractCommaDilimetedFontName(const char *pArgList, int offSetByte, char *argItem);
// As the fucntion indicates.
char *FEU_ExtractCommaDilimetedQuotedString(const char *pArgList, int iArgToExtract);
// Performs a transparent BitBlt - see the implementation for more info.
BOOL FEU_TransBlt(CDC * pSrcDC, CDC * pDstDC, const CPoint & ptSrc,
const CPoint & ptDst, int nWidth, int nHeight, HPALETTE hPalette,
const COLORREF rgbTrans = RGB(255, 0, 255));
// Performs a transparent BitBlt, same as BitBlt except rgbTrans is the
// color to be drawn transparently (not drawn)
BOOL FEU_TransBlt(HDC hDstDC, int nXDest, int nYDest, int nWidth, int nHeight,
HDC hSrcDC, int nXSrc, int nYSrc, HPALETTE hPalette,
COLORREF rgbTrans = RGB(0xff, 0x00, 0xff));
// Correctly initialize a structure that no one seems to get right.
void FEU_InitWINDOWPLACEMENT(HWND hWindow, WINDOWPLACEMENT *pWindowPlacement);
// Mouse timer handler (to handle scrolling selections).
class MouseTimerData {
public:
enum InvokeType {
m_ContextNotify,
m_TimerNotify
} m_pType;
MWContext *m_pContext;
MouseTimerData(MWContext *pContext);
};
void FEU_MouseTimer(void *vpReallyMouseTimerData);
// Mouse timer handler (to handle window exit messages).
class MouseMoveTimerData {
public:
MWContext *m_pContext;
MouseMoveTimerData(MWContext *pContext);
};
void FEU_MouseMoveTimer(void *vpReallyMouseMoveTimerData);
// Only remnant of great idle processing empire.
// Context calls FEU_RequestIdleProcessing to get checked in the idle loop
// by FEU_DoIdleProcessing.
void FEU_RequestIdleProcessing(MWContext *pContext);
BOOL FEU_DoIdleProcessing();
// How to handle client pull requests.
void FEU_ClientPull(MWContext *pContext, uint32 ulMilliseconds, URL_Struct *pUrl, int iFormatOut, BOOL bCanInterrupt);
void FEU_ClientPullNow(void *vpReallyClientPullTimerData);
// Dynamically manage the MAPI libraries for mail posting
void FEU_OpenMapiLibrary();
void FEU_CloseMapiLibrary();
// Global history flush timer.
void FEU_GlobalHistoryTimeout(void *pNULL);
// This routine will return the handle of the pop-up menu whose first
// menu item has the specified command ID
HMENU FEU_FindSubmenu(HMENU hMenu, UINT nFirstCmdID);
BOOL FEU_IsConferenceAvailable(void);
BOOL FEU_IsCalendarAvailable(void);
BOOL FEU_IsIBMHostOnDemandAvailable(void);
BOOL FEU_IsNetcasterAvailable(void);
void FEU_OpenNetcaster(void);
BOOL FEU_IsAimAvailable(void);
void FEU_OpenAim(void);
BOOL FEU_IsNetscapeFrame(CWnd* pFocusWnd);
#ifdef XP_WIN32
CString FEU_GetCurrentRegistry(const CString &componentString);
#endif
CString FEU_GetInstallationDirectory(const CString &productString,const CString &installationString);
void FEU_FrameBroadcast(BOOL bSend, UINT Msg, WPARAM wParam, LPARAM lParam);
void FEU_AltMail_ShowMailBox(void);
void FEU_AltMail_ShowMessageCenter(void);
void FEU_AltMail_SetAltMailMenus(CMenu* pMenuCommunicator);
void FEU_AltMail_ModifyMenu(CMenu* pMenuCommunicator, UINT uiCommunicatorMenuID, LPCSTR pszAltMailMenuStr);
BOOL FEU_Execute(MWContext *pContext, const char *pCommand, const char *pParams);
BOOL FEU_FindExecutable(const char *pFileName, char *pExecutable, BOOL bIdentity, BOOL bExtension = FALSE);
BOOL FEU_SanityCheckFile(LPCSTR pszFileName);
BOOL FEU_SanityCheckDir(LPCSTR pszDirName);
// Free off misc URL data structs.
void FEU_DeleteUrlData(URL_Struct *pUrl, MWContext *pCX);
extern "C" {
// used in lj_init.c too:
extern HWND FindNavigatorHiddenWindow(void);
}
HWND FEU_GetWindowFromPoint(HWND hWndTop, POINT *pPoint);
CNSGenFrame *FEU_GetDockingFrameFromPoint(POINT *pPoint);
HRESULT FEU_CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID *ppv);
extern "C" char *FE_GetProgramDirectory(char *buffer, int length);
#endif // FE_UTILITIES__H