mshtml: Added beginning of IDM_PRINT implementation.

This commit is contained in:
Jacek Caban 2006-12-12 21:56:37 +01:00 committed by Alexandre Julliard
parent 139d2b813d
commit 7aa9ea4ec0
2 changed files with 182 additions and 2 deletions

View File

@ -109,6 +109,7 @@ typedef nsISupports nsIEditor;
typedef nsISupports nsIWebProgressListener;
typedef nsISupports nsIDOMCSSValue;
typedef nsISupports nsIDOMCSSRule;
typedef nsISupports nsIPrintSession;
[
object,
@ -940,6 +941,145 @@ interface nsIWebNavigation : nsISupports
nsresult SetSessionHistory(nsISHistory *aSessionHistory);
}
[
object,
uuid(f1094df6-ce0e-42c9-9847-2f663172c38d)
]
interface nsIPrintSettings : nsISupports
{
typedef struct {} nsMargin;
nsresult SetPrintOptions(PRInt32 aType, PRBool aTurnOnOff);
nsresult GetPrintOptions(PRInt32 aType, PRBool *_retval);
nsresult GetPrintOptionsBits(PRInt32 *_retval);
nsresult GetPageSizeInTwips(PRInt32 *aWidth, PRInt32 *aHeight);
nsresult Clone(nsIPrintSettings **_retval);
nsresult Assign(nsIPrintSettings *aPS);
nsresult GetPrintSession(nsIPrintSession **aPrintSession);
nsresult SetPrintSession(nsIPrintSession *aPrintSession);
nsresult GetStartPageRange(PRInt32 *aStartPageRange);
nsresult SetStartPageRange(PRInt32 aStartPageRange);
nsresult GetEndPageRange(PRInt32 *aEndPageRange);
nsresult SetEndPageRange(PRInt32 aEndPageRange);
nsresult GetMarginTop(double *aMarginTop);
nsresult SetMarginTop(double aMarginTop);
nsresult GetMarginLeft(double *aMarginLeft);
nsresult SetMarginLeft(double aMarginLeft);
nsresult GetMarginBottom(double *aMarginBottom);
nsresult SetMarginBottom(double aMarginBottom);
nsresult GetMarginRight(double *aMarginRight);
nsresult SetMarginRight(double aMarginRight);
nsresult GetScaling(double *aScaling);
nsresult SetScaling(double aScaling);
nsresult GetPrintBGColors(PRBool *aPrintBGColors);
nsresult SetPrintBGColors(PRBool aPrintBGColors);
nsresult GetPrintBGImages(PRBool *aPrintBGImages);
nsresult SetPrintBGImages(PRBool aPrintBGImages);
nsresult GetPrintRange(PRInt16 *aPrintRange);
nsresult SetPrintRange(PRInt16 aPrintRange);
nsresult GetTitle(PRUnichar **aTitle);
nsresult SetTitle(const PRUnichar *aTitle);
nsresult GetDocURL(PRUnichar **aDocURL);
nsresult SetDocURL(const PRUnichar *aDocURL);
nsresult GetHeaderStrLeft(PRUnichar **aHeaderStrLeft);
nsresult SetHeaderStrLeft(const PRUnichar *aHeaderStrLeft);
nsresult GetHeaderStrCenter(PRUnichar **aHeaderStrCenter);
nsresult SetHeaderStrCenter(const PRUnichar *aHeaderStrCenter);
nsresult GetHeaderStrRight(PRUnichar **aHeaderStrRight);
nsresult SetHeaderStrRight(const PRUnichar *aHeaderStrRight);
nsresult GetFooterStrLeft(PRUnichar **aFooterStrLeft);
nsresult SetFooterStrLeft(const PRUnichar *aFooterStrLeft);
nsresult GetFooterStrCenter(PRUnichar **aFooterStrCenter);
nsresult SetFooterStrCenter(const PRUnichar *aFooterStrCenter);
nsresult GetFooterStrRight(PRUnichar **aFooterStrRight);
nsresult SetFooterStrRight(const PRUnichar *aFooterStrRight);
nsresult GetHowToEnableFrameUI(PRInt16 *aHowToEnableFrameUI);
nsresult SetHowToEnableFrameUI(PRInt16 aHowToEnableFrameUI);
nsresult GetIsCancelled(PRBool *aIsCancelled);
nsresult SetIsCancelled(PRBool aIsCancelled);
nsresult GetPrintFrameTypeUsage(PRInt16 *aPrintFrameTypeUsage);
nsresult SetPrintFrameTypeUsage(PRInt16 aPrintFrameTypeUsage);
nsresult GetPrintFrameType(PRInt16 *aPrintFrameType);
nsresult SetPrintFrameType(PRInt16 aPrintFrameType);
nsresult GetPrintSilent(PRBool *aPrintSilent);
nsresult SetPrintSilent(PRBool aPrintSilent);
nsresult GetShrinkToFit(PRBool *aShrinkToFit);
nsresult SetShrinkToFit(PRBool aShrinkToFit);
nsresult GetShowPrintProgress(PRBool *aShowPrintProgress);
nsresult SetShowPrintProgress(PRBool aShowPrintProgress);
nsresult GetPaperName(PRUnichar **aPaperName);
nsresult SetPaperName(const PRUnichar *aPaperName);
nsresult GetPaperSizeType(PRInt16 *aPaperSizeType);
nsresult SetPaperSizeType(PRInt16 aPaperSizeType);
nsresult GetPaperData(PRInt16 *aPaperData);
nsresult SetPaperData(PRInt16 aPaperData);
nsresult GetPaperWidth(double *aPaperWidth);
nsresult SetPaperWidth(double aPaperWidth);
nsresult GetPaperHeight(double *aPaperHeight);
nsresult SetPaperHeight(double aPaperHeight);
nsresult GetPaperSizeUnit(PRInt16 *aPaperSizeUnit);
nsresult SetPaperSizeUnit(PRInt16 aPaperSizeUnit);
nsresult GetPlexName(PRUnichar **aPlexName);
nsresult SetPlexName(const PRUnichar *aPlexName);
nsresult GetColorspace(PRUnichar **aColorspace);
nsresult SetColorspace(const PRUnichar *aColorspace);
nsresult GetResolutionName(PRUnichar **aResolutionName);
nsresult SetResolutionName(const PRUnichar aResolutionName);
nsresult GetDownloadFonts(PRBool *aDownloadFonts);
nsresult SetDownloadFonts(PRBool aDownloadFonts);
nsresult GetPrintReversed(PRBool *aPrintReversed);
nsresult SetPrintReversed(PRBool aPrintReversed);
nsresult GetPrintInColor(PRBool *aPrintInColor);
nsresult SetPrintInColor(PRBool aPrintInColor);
nsresult GetPaperSize(PRInt32 *aPaperSize);
nsresult SetPaperSize(PRInt32 aPaperSize);
nsresult GetOrientation(PRInt32 *aOrientation);
nsresult SetOrientation(PRInt32 aOrientation);
nsresult GetPrintCommand(PRUnichar **aPrintCommand);
nsresult SetPrintCommand(const PRUnichar *aPrintCommand);
nsresult GetNumCopies(PRInt32 *aNumCopies);
nsresult SetNumCopies(PRInt32 aNumCopies);
nsresult GetPrinterName(PRUnichar **aPrinterName);
nsresult SetPrinterName(const PRUnichar *aPrinterName);
nsresult GetPrintToFile(PRBool *aPrintToFile);
nsresult SetPrintToFile(PRBool aPrintToFile);
nsresult GetToFileName(PRUnichar **aToFileName);
nsresult SetToFileName(const PRUnichar *aToFileName);
nsresult GetPrintPageDelay(PRInt32 *aPrintPageDelay);
nsresult SetPrintPageDelay(PRInt32 aPrintPageDelay);
nsresult GetIsInitializedFromPrinter(PRBool *aIsInitializedFromPrinter);
nsresult SetIsInitializedFromPrinter(PRBool aIsInitializedFromPrinter);
nsresult GetIsInitializedFromPrefs(PRBool *aIsInitializedFromPrefs);
nsresult SetIsInitializedFromPrefs(PRBool aIsInitializedFromPrefs);
nsresult SetMarginInTwips(nsMargin *aMargin);
nsresult GetMarginInTwips(nsMargin *aMargin);
}
[
object,
uuid(9a7ca4b0-fbba-11d4-a869-00105a183419)
]
interface nsIWebBrowserPrint : nsISupports
{
nsresult GetGlobalPrintSettings(nsIPrintSettings **aGlobalPrintSettings);
nsresult GetCurrentPrintSettings(nsIPrintSettings **aCurrentPrintSettings);
nsresult GetCurrentChildDOMWindow(nsIDOMWindow **aCurrentChildDOMWindow);
nsresult GetDoingPrint(PRBool *aDoingPrint);
nsresult GetDoingPrintPreview(PRBool *aDoingPrintPreview);
nsresult GetIsFramesetDocument(PRBool *aIsFramesetDocument);
nsresult GetIsFramesetFrameSelected(PRBool *aIsFramesetFrameSelected);
nsresult GetIsIFrameSelected(PRBool *aIsIFrameSelected);
nsresult GetIsRangeSelection(PRBool *aIsRangeSelection);
nsresult GetPrintPreviewNumPages(PRInt32 *aPrintPreviewNumPages);
nsresult Print(nsIPrintSettings *aThePrintSettings, nsIWebProgressListener *aWPListener);
nsresult PrintPreview(nsIPrintSettings *aThePrintSettings, nsIDOMWindow *aChildDOMWin,
nsIWebProgressListener *aWPListener);
nsresult PrintPreviewNavigate(PRInt16 aNavType, PRInt32 aPageNum);
nsresult Cancel();
nsresult EnumerateDocumentNames(PRUint32 *aCount, PRUnichar ***aResult);
nsresult ExitPrintPreview();
}
[
object,
uuid(c8c0a080-0868-11d3-915f-d9d889d48e3c)

View File

@ -97,8 +97,42 @@ static HRESULT exec_save_copy_as(HTMLDocument *This, DWORD nCmdexecopt, VARIANT
static HRESULT exec_print(HTMLDocument *This, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
{
FIXME("(%p)->(%d %p %p)\n", This, nCmdexecopt, pvaIn, pvaOut);
return E_NOTIMPL;
nsIInterfaceRequestor *iface_req;
nsIWebBrowserPrint *nsprint;
nsresult nsres;
TRACE("(%p)->(%d %p %p)\n", This, nCmdexecopt, pvaIn, pvaOut);
if(pvaOut)
FIXME("unsupported pvaOut\n");
if(pvaIn)
FIXME("unsupported pvaIn\n");
if(!This->nscontainer)
return S_OK;
nsres = nsIWebBrowser_QueryInterface(This->nscontainer->webbrowser,
&IID_nsIInterfaceRequestor, (void**)&iface_req);
if(NS_FAILED(nsres)) {
ERR("Could not get nsIInterfaceRequestor: %08x\n", nsres);
return S_OK;
}
nsres = nsIInterfaceRequestor_GetInterface(iface_req, &IID_nsIWebBrowserPrint,
(void**)&nsprint);
nsIInterfaceRequestor_Release(iface_req);
if(NS_FAILED(nsres)) {
ERR("Could not get nsIWebBrowserPrint: %08x\n", nsres);
return S_OK;
}
nsres = nsIWebBrowserPrint_Print(nsprint, NULL, NULL);
if(NS_FAILED(nsres))
ERR("Print failed: %08x\n", nsres);
nsIWebBrowserPrint_Release(nsprint);
return S_OK;
}
static HRESULT exec_print_preview(HTMLDocument *This, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
@ -837,6 +871,10 @@ static HRESULT WINAPI OleCommandTarget_QueryStatus(IOleCommandTarget *iface, con
TRACE("CGID_MSHTML: IDM_FONTSIZE\n");
prgCmds[i].cmdf = query_edit_status(This, NULL);
break;
case IDM_PRINT:
FIXME("CGID_MSHTML: IDM_PRINT\n");
prgCmds[i].cmdf = OLECMDF_SUPPORTED|OLECMDF_ENABLED;
break;
case IDM_PASTE:
FIXME("CGID_MSHTML: IDM_PASTE\n");
prgCmds[i].cmdf = OLECMDF_SUPPORTED|OLECMDF_ENABLED;
@ -940,6 +978,8 @@ static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID
return exec_fontname(This, pvaIn, pvaOut);
case IDM_FONTSIZE:
return exec_fontsize(This, pvaIn, pvaOut);
case IDM_PRINT:
return exec_print(This, nCmdexecopt, pvaIn, pvaOut);
case IDM_BOLD:
if(pvaIn || pvaOut)
FIXME("unsupported arguments\n");