/* AbiSource * * Copyright (C) 2011 Urmas Dren * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA. */ #include #include #include "ap_Win32Dialog_EpubExportOptions.h" #include "ap_Win32Res_EpubExportOptions.rc2" HINSTANCE AP_Win32Dialog_EpubExportOptions::m_hModule = NULL; pt2Constructor ap_Dialog_EpubExportOptions_Constructor = AP_Win32Dialog_EpubExportOptions::static_constructor; XAP_Dialog * AP_Win32Dialog_EpubExportOptions::static_constructor( XAP_DialogFactory* pDF, XAP_Dialog_Id id) { return new AP_Win32Dialog_EpubExportOptions(pDF,id); } AP_Win32Dialog_EpubExportOptions::AP_Win32Dialog_EpubExportOptions( XAP_DialogFactory* pDlgFactory, XAP_Dialog_Id id) : AP_Dialog_EpubExportOptions(pDlgFactory,id) { } AP_Win32Dialog_EpubExportOptions::~AP_Win32Dialog_EpubExportOptions() { } void AP_Win32Dialog_EpubExportOptions::runModal (XAP_Frame * pFrame) { if (pFrame == NULL) return; HWND hParent = ((XAP_Win32FrameImpl*)pFrame->getFrameImpl())->getTopLevelWindow(); DialogBoxParamW(m_hModule,MAKEINTRESOURCEW(AP_RID_DIALOG_EPUB_EXP_OPTIONS),hParent, s_dlgProc,(LPARAM)this); m_bShouldSave = true; } INT_PTR CALLBACK AP_Win32Dialog_EpubExportOptions::s_dlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: { AP_Win32Dialog_EpubExportOptions* pThis = (AP_Win32Dialog_EpubExportOptions *) lParam; UT_return_val_if_fail(pThis, false); SetWindowLongPtrW(hWnd,DWLP_USER,lParam); return pThis->_onInitDialog(hWnd,wParam,lParam); } case WM_COMMAND: { AP_Win32Dialog_EpubExportOptions* pThis = (AP_Win32Dialog_EpubExportOptions *)GetWindowLongPtrW(hWnd,DWLP_USER); UT_return_val_if_fail(pThis, false); return pThis->_onCommand(hWnd,wParam,lParam); } } return FALSE; } INT_PTR AP_Win32Dialog_EpubExportOptions::_onInitDialog(HWND hWnd, WPARAM /*wParam*/, LPARAM /*lParam*/) { const XAP_StringSet * pSS = m_pApp->getStringSet (); UT_Win32LocaleString str; m_hDlg = hWnd; str.fromUTF8("EPUB Export Options"); SetWindowTextW(hWnd,str.c_str()); str.fromUTF8(pSS->getValue (XAP_STRING_ID_DLG_HTMLOPT_ExpSave)); SetDlgItemTextW(hWnd,AP_RID_DIALOG_EPUBXOPT_SAVE,str.c_str()); str.fromUTF8(pSS->getValue (XAP_STRING_ID_DLG_HTMLOPT_ExpRestore)); SetDlgItemTextW(hWnd,AP_RID_DIALOG_EPUBXOPT_LOAD,str.c_str()); str.fromUTF8("EPUB 2.0.1"); SetDlgItemTextW(hWnd,AP_RID_DIALOG_EPUBXOPT_EPUB2,str.c_str()); str.fromUTF8(pSS->getValue (XAP_STRING_ID_DLG_HTMLOPT_ExpSplitDocument)); SetDlgItemTextW(hWnd,AP_RID_DIALOG_EPUBXOPT_SPLIT,str.c_str()); str.fromUTF8("Use PNG instead of MathML"); SetDlgItemTextW(hWnd,AP_RID_DIALOG_EPUBXOPT_PNGMATHML,str.c_str()); setvalues(); EnableWindow(GetDlgItem(hWnd,AP_RID_DIALOG_EPUBXOPT_EPUB2), can_set_Epub2()); EnableWindow(GetDlgItem(hWnd,AP_RID_DIALOG_EPUBXOPT_PNGMATHML), can_set_RenderMathMlToPng()); EnableWindow(GetDlgItem(hWnd,AP_RID_DIALOG_EPUBXOPT_SPLIT), can_set_SplitDocument()); return FALSE; } void AP_Win32Dialog_EpubExportOptions::setvalues() { bool v; v = get_Epub2(); CheckDlgButton(m_hDlg,AP_RID_DIALOG_EPUBXOPT_EPUB2,v?BST_CHECKED:BST_UNCHECKED); v = get_RenderMathMlToPng(); CheckDlgButton(m_hDlg,AP_RID_DIALOG_EPUBXOPT_PNGMATHML,v?BST_CHECKED:BST_UNCHECKED); v = get_SplitDocument(); CheckDlgButton(m_hDlg,AP_RID_DIALOG_EPUBXOPT_SPLIT,v?BST_CHECKED:BST_UNCHECKED); } void AP_Win32Dialog_EpubExportOptions::gathervalues() { set_RenderMathMlToPng(IsDlgButtonChecked(m_hDlg,AP_RID_DIALOG_EPUBXOPT_PNGMATHML)==BST_CHECKED); set_SplitDocument(IsDlgButtonChecked(m_hDlg,AP_RID_DIALOG_EPUBXOPT_SPLIT)==BST_CHECKED); if (IsDlgButtonChecked(m_hDlg,AP_RID_DIALOG_EPUBXOPT_EPUB2)==BST_CHECKED) { /* mandatory for EPUB 2 */ set_Epub2(true); set_RenderMathMlToPng(true); } else { set_Epub2(false); } } INT_PTR AP_Win32Dialog_EpubExportOptions::_onCommand(HWND hWnd, WPARAM wParam, LPARAM /*lParam*/) { switch (LOWORD(wParam)) { case IDOK: gathervalues(); m_bShouldSave = true; EndDialog(hWnd,TRUE); break; case IDCANCEL: m_bShouldSave = false; EndDialog(hWnd,FALSE); break; case AP_RID_DIALOG_EPUBXOPT_LOAD: restoreDefaults(); setvalues(); break; case AP_RID_DIALOG_EPUBXOPT_SAVE: gathervalues(); saveDefaults(); break; case AP_RID_DIALOG_EPUBXOPT_EPUB2: { bool v = IsDlgButtonChecked(hWnd,AP_RID_DIALOG_EPUBXOPT_EPUB2)==BST_CHECKED; if (v) { CheckDlgButton(hWnd,AP_RID_DIALOG_EPUBXOPT_PNGMATHML,BST_CHECKED); EnableWindow(GetDlgItem(hWnd,AP_RID_DIALOG_EPUBXOPT_PNGMATHML), FALSE); } else { EnableWindow(GetDlgItem(hWnd,AP_RID_DIALOG_EPUBXOPT_PNGMATHML), TRUE);; CheckDlgButton(hWnd,AP_RID_DIALOG_EPUBXOPT_PNGMATHML, get_RenderMathMlToPng() ? BST_CHECKED:BST_UNCHECKED); } } break; } return TRUE; }