void AP_Win32Dialog_New::_doChoose() { XAP_Dialog_Id id = XAP_DIALOG_ID_FILE_OPEN; XAP_DialogFactory * pDialogFactory = (XAP_DialogFactory *) m_pFrame->getDialogFactory(); XAP_Dialog_FileOpenSaveAs * pDialog = (XAP_Dialog_FileOpenSaveAs *)(pDialogFactory->requestDialog(id)); UT_return_if_fail (pDialog); pDialog->setCurrentPathname(0); pDialog->setSuggestFilename(false); UT_uint32 filterCount = IE_Imp::getImporterCount(); const char ** szDescList = (const char **) UT_calloc(filterCount + 1, sizeof(char *)); UT_return_if_fail(szDescList); const char ** szSuffixList = (const char **) UT_calloc(filterCount + 1, sizeof(char *)); if(!szSuffixList) { UT_ASSERT_HARMLESS(szSuffixList); FREEP(szDescList); return; } IEFileType * nTypeList = (IEFileType *) UT_calloc(filterCount + 1, sizeof(IEFileType)); if(!nTypeList) { UT_ASSERT_HARMLESS(nTypeList); FREEP(szDescList); FREEP(szSuffixList); return; } UT_uint32 k = 0; while (IE_Imp::enumerateDlgLabels(k, &szDescList[k], &szSuffixList[k], &nTypeList[k])) k++; pDialog->setFileTypeList(szDescList, szSuffixList, (const UT_sint32 *) nTypeList); pDialog->setDefaultFileType(IE_Imp::fileTypeForSuffix(".abw")); pDialog->runModal(m_pFrame); XAP_Dialog_FileOpenSaveAs::tAnswer ans = pDialog->getAnswer(); bool bOK = (ans == XAP_Dialog_FileOpenSaveAs::a_OK); if (bOK) { const char * szResultPathname = pDialog->getPathname(); if (szResultPathname && *szResultPathname) { // update the entry box _win32Dialog.setControlText( AP_RID_DIALOG_NEW_EBX_EXISTING, szResultPathname); setFileName (szResultPathname); } } }
void XAP_Win32Dialog_PluginManager::event_Load() { const XAP_StringSet * pSS = m_pApp->getStringSet(); XAP_DialogFactory * pDialogFactory = (XAP_DialogFactory *) getApp()->findValidFrame()->getDialogFactory(); XAP_Dialog_FileOpenSaveAs * pDialog = (XAP_Dialog_FileOpenSaveAs *)(pDialogFactory->requestDialog(XAP_DIALOG_ID_FILE_OPEN)); UT_return_if_fail(pDialog); // set the intial plugin directory to the user-local plugin directory // could also set to: XAP_App::getApp()->getUserPrivateDirectory()\plugins // could also set to: XAP_App::getApp()->getAbiSuiteLibDir()\plugins UT_String pluginDir (XAP_App::getApp()->getAbiSuiteAppDir()); pluginDir += "\\plugins"; pDialog->setCurrentPathname (pluginDir.c_str()); pDialog->setSuggestFilename(false); UT_uint32 filterCount = 1; const char ** szDescList = (const char **) UT_calloc(filterCount + 1, sizeof(char *)); UT_return_if_fail(szDescList); const char ** szSuffixList = (const char **) UT_calloc(filterCount + 1, sizeof(char *)); if(!szSuffixList) { UT_ASSERT_HARMLESS(szSuffixList); FREEP(szDescList); return; } IEFileType * nTypeList = (IEFileType *) UT_calloc(filterCount + 1, sizeof(IEFileType)); if(!nTypeList) { UT_ASSERT_HARMLESS(nTypeList); FREEP(szDescList); FREEP(szSuffixList); return; } // we probably shouldn't hardcode this // HP-UX uses .sl, for instance szDescList[0] = "AbiWord Plugin (.dll)"; szSuffixList[0] = "*.dll"; nTypeList[0] = (IEFileType)1; pDialog->setFileTypeList(szDescList, szSuffixList, (const UT_sint32 *) nTypeList); pDialog->setDefaultFileType((IEFileType)1); // todo: cd to the proper plugin directory pDialog->runModal(getApp()->findValidFrame()); XAP_Dialog_FileOpenSaveAs::tAnswer ans = pDialog->getAnswer(); bool bOK = (ans == XAP_Dialog_FileOpenSaveAs::a_OK); if (bOK) { const char * szResultPathname = pDialog->getPathname(); if (szResultPathname && *szResultPathname) { if( activatePlugin(szResultPathname) ) { // worked! refreshPluginList(); } else { // error message getApp()->findValidFrame()->showMessageBox( pSS->getValue(XAP_STRING_ID_DLG_PLUGIN_MANAGER_COULDNT_LOAD), XAP_Dialog_MessageBox::b_O, XAP_Dialog_MessageBox::a_OK ); } } } FREEP(szDescList); FREEP(szSuffixList); FREEP(nTypeList); pDialogFactory->releaseDialog(pDialog); }
static bool s_AskForMathMLPathname(XAP_Frame * pFrame, char ** ppPathname) { // raise the file-open dialog for inserting a MathML equation. // return a_OK or a_CANCEL depending on which button // the user hits. // return a pointer a g_strdup()'d string containing the // pathname the user entered -- ownership of this goes // to the caller (so free it when you're done with it). UT_DEBUGMSG(("s_AskForMathMLPathname: frame %p\n", pFrame)); UT_return_val_if_fail (ppPathname, false); *ppPathname = NULL; pFrame->raise(); XAP_DialogFactory * pDialogFactory = static_cast<XAP_DialogFactory *>(pFrame->getDialogFactory()); XAP_Dialog_FileOpenSaveAs * pDialog = static_cast<XAP_Dialog_FileOpenSaveAs *>(pDialogFactory->requestDialog(XAP_DIALOG_ID_INSERTMATHML)); UT_return_val_if_fail (pDialog, false); pDialog->setCurrentPathname(NULL); pDialog->setSuggestFilename(false); /* TODO: add a "MathML (.xml)" entry to the file type list, and set is as the default file type pDialog->setFileTypeList(szDescList, szSuffixList, static_cast<const UT_sint32 *>(nTypeList)); */ pDialog->runModal(pFrame); XAP_Dialog_FileOpenSaveAs::tAnswer ans = pDialog->getAnswer(); bool bOK = (ans == XAP_Dialog_FileOpenSaveAs::a_OK); if (bOK) { const char * szResultPathname = pDialog->getPathname(); UT_DEBUGMSG(("MATHML Path Name selected = %s \n",szResultPathname)); if (szResultPathname && *szResultPathname) *ppPathname = g_strdup(szResultPathname); UT_sint32 type = pDialog->getFileType(); // If the number is negative, it's a special type. // Some operating systems which depend solely on filename // suffixes to identify type (like Windows) will always // want auto-detection. if (type < 0) { switch (type) { case XAP_DIALOG_FILEOPENSAVEAS_FILE_TYPE_AUTO: // do some automagical detecting break; default: // it returned a type we don't know how to handle UT_ASSERT_HARMLESS(UT_SHOULD_NOT_HAPPEN); } } else { /* todo */ } } pDialogFactory->releaseDialog(pDialog); return bOK; }
/*! * Import graphic for cell background. */ void AP_Dialog_FormatFrame::askForGraphicPathName(void) { UT_return_if_fail(m_pApp); XAP_Frame * pFrame = m_pApp->getLastFocussedFrame(); UT_return_if_fail(pFrame); XAP_DialogFactory * pDialogFactory = static_cast<XAP_DialogFactory *>(pFrame->getDialogFactory()); UT_return_if_fail(pDialogFactory); XAP_Dialog_FileOpenSaveAs * pDialog = static_cast<XAP_Dialog_FileOpenSaveAs *>(pDialogFactory->requestDialog(XAP_DIALOG_ID_INSERT_PICTURE)); UT_return_if_fail (pDialog); pDialog->setCurrentPathname(NULL); pDialog->setSuggestFilename(false); // to fill the file types popup list, we need to convert AP-level // ImpGraphic descriptions, suffixes, and types into strings. UT_uint32 filterCount = IE_ImpGraphic::getImporterCount(); const char ** szDescList = static_cast<const char **>(UT_calloc(filterCount + 1, sizeof(char *))); const char ** szSuffixList = static_cast<const char **>(UT_calloc(filterCount + 1, sizeof(char *))); IEGraphicFileType * nTypeList = (IEGraphicFileType *) UT_calloc(filterCount + 1, sizeof(IEGraphicFileType)); UT_uint32 k = 0; while (IE_ImpGraphic::enumerateDlgLabels(k, &szDescList[k], &szSuffixList[k], &nTypeList[k])) k++; pDialog->setFileTypeList(szDescList, szSuffixList, static_cast<const UT_sint32 *>(nTypeList)); pDialog->runModal(pFrame); XAP_Dialog_FileOpenSaveAs::tAnswer ans = pDialog->getAnswer(); bool bOK = (ans == XAP_Dialog_FileOpenSaveAs::a_OK); if (bOK) { m_sImagePath = pDialog->getPathname(); UT_sint32 type = pDialog->getFileType(); // If the number is negative, it's a special type. // Some operating systems which depend solely on filename // suffixes to identify type (like Windows) will always // want auto-detection. if (type < 0) switch (type) { case XAP_DIALOG_FILEOPENSAVEAS_FILE_TYPE_AUTO: // do some automagical detecting m_iGraphicType = IEGFT_Unknown; break; default: // it returned a type we don't know how to handle UT_ASSERT_HARMLESS(UT_SHOULD_NOT_HAPPEN); } else m_iGraphicType = static_cast<IEGraphicFileType>(pDialog->getFileType()); } FREEP(szDescList); FREEP(szSuffixList); FREEP(nTypeList); pDialogFactory->releaseDialog(pDialog); if(m_sImagePath.size() == 0) { return; } FG_Graphic* pFG = NULL; UT_Error errorCode; errorCode = IE_ImpGraphic::loadGraphic(m_sImagePath.c_str(), m_iGraphicType, &pFG); if(errorCode != UT_OK || !pFG) { ShowErrorBox(m_sImagePath, errorCode); return; } DELETEP(m_pGraphic); DELETEP(m_pImage); m_pGraphic = pFG->clone(); GR_Graphics * pG = m_pFormatFramePreview->getGraphics(); FV_View * pView = static_cast<FV_View *>(pFrame->getCurrentView()); UT_return_if_fail(pView && pView->getDocument()); UT_uint32 uid = pView->getDocument()->getUID(UT_UniqueId::Image); //see Bug 10851 m_sImagePath.clear(); m_sImagePath = UT_std_string_sprintf("%d",uid); m_pImage = _makeImageForRaster(m_sImagePath, pG, m_pGraphic); // draw the preview with the changed properties if(m_pFormatFramePreview) m_pFormatFramePreview->draw(); }
static bool s_AskForGOComponentPathname(XAP_Frame * pFrame, char ** ppPathname, IEGraphicFileType * iegft) { // raise the file-open dialog for inserting a component. // return a_OK or a_CANCEL depending on which button // the user hits. // return a pointer a g_strdup()'d string containing the // pathname the user entered -- ownership of this goes // to the caller (so free it when you're done with it). UT_DEBUGMSG(("s_AskForGOComponentPathname: frame %p\n", pFrame)); UT_return_val_if_fail (ppPathname, false); *ppPathname = NULL; pFrame->raise(); XAP_DialogFactory * pDialogFactory = static_cast<XAP_DialogFactory *>(pFrame->getDialogFactory()); XAP_Dialog_FileOpenSaveAs * pDialog = static_cast<XAP_Dialog_FileOpenSaveAs *>(pDialogFactory->requestDialog(XAP_DIALOG_ID_INSERTOBJECT)); UT_return_val_if_fail (pDialog, false); pDialog->setCurrentPathname(""); pDialog->setSuggestFilename(false); // to fill the file types popup list, we need to convert AP-level // ImpGraphic descriptions, suffixes, and types into strings. UT_uint32 filterCount = IE_ImpGraphic::getImporterCount(); const char ** szDescList = static_cast<const char **>(UT_calloc(filterCount + 1, sizeof(char *))); const char ** szSuffixList = static_cast<const char **>(UT_calloc(filterCount + 1, sizeof(char *))); IEGraphicFileType * nTypeList = (IEGraphicFileType *) UT_calloc(filterCount + 1, sizeof(IEGraphicFileType)); UT_uint32 k = 0; while (IE_ImpGraphic::enumerateDlgLabels(k, &szDescList[k], &szSuffixList[k], &nTypeList[k])) k++; pDialog->setFileTypeList(szDescList, szSuffixList, static_cast<const UT_sint32 *>(nTypeList)); if (iegft != NULL) pDialog->setDefaultFileType(*iegft); pDialog->runModal(pFrame); XAP_Dialog_FileOpenSaveAs::tAnswer ans = pDialog->getAnswer(); bool bOK = (ans == XAP_Dialog_FileOpenSaveAs::a_OK); if (bOK) { const std::string & resultPathname = pDialog->getPathname(); UT_DEBUGMSG(("OBJECT Path Name selected = %s \n", resultPathname.c_str())); if (!resultPathname.empty()) { *ppPathname = g_strdup(resultPathname.c_str()); } UT_sint32 type = pDialog->getFileType(); // If the number is negative, it's a special type. // Some operating systems which depend solely on filename // suffixes to identify type (like Windows) will always // want auto-detection. if (type < 0) switch (type) { case XAP_DIALOG_FILEOPENSAVEAS_FILE_TYPE_AUTO: // do some automagical detecting *iegft = IEGFT_Unknown; break; default: // it returned a type we don't know how to handle UT_ASSERT_HARMLESS(UT_SHOULD_NOT_HAPPEN); } else *iegft = static_cast<IEGraphicFileType>(pDialog->getFileType()); } FREEP(szDescList); FREEP(szSuffixList); FREEP(nTypeList); pDialogFactory->releaseDialog(pDialog); return bOK; }
bool XAP_Dialog_Print::_getPrintToFilePathname(XAP_Frame * pFrame, const char * szSuggestedName) { UT_return_val_if_fail(pFrame,false); UT_ASSERT(szSuggestedName && *szSuggestedName); XAP_Dialog_Id id = XAP_DIALOG_ID_PRINTTOFILE; XAP_DialogFactory * pDialogFactory = (XAP_DialogFactory *)(pFrame->getDialogFactory()); XAP_Dialog_FileOpenSaveAs * pDialog = (XAP_Dialog_FileOpenSaveAs *)(pDialogFactory->requestDialog(id)); UT_return_val_if_fail(pDialog,false); pDialog->setCurrentPathname(szSuggestedName); pDialog->setSuggestFilename(true); const char ** szDescList = NULL; const char ** szSuffixList = NULL; UT_sint32 * nTypeList = NULL; { // TODO : FIX THIS! Make this pull dynamic types from the export // TODO : filter list (creat that while you're at it). // TODO : Right now we can just feed the dialog some static filters // TODO : that will be ignored by Windows but will be required // TODO : by Unix. UT_uint32 filterCount = 1; szDescList = (const char **) UT_calloc(filterCount + 1, sizeof(char *)); szSuffixList = (const char **) UT_calloc(filterCount + 1, sizeof(char *)); // HACK : this should be IEFileType nTypeList = (UT_sint32 *) UT_calloc(filterCount + 1, sizeof(UT_sint32)); szDescList[0] = "PostScript 2.0"; szSuffixList[0] = "ps"; nTypeList[0] = 0; pDialog->setFileTypeList(szDescList, szSuffixList, (const UT_sint32 *) nTypeList); } pDialog->runModal(pFrame); XAP_Dialog_FileOpenSaveAs::tAnswer ans = pDialog->getAnswer(); bool bOK = (ans == XAP_Dialog_FileOpenSaveAs::a_OK); if (bOK) m_szPrintToFilePathname = g_strdup(pDialog->getPathname()); FREEP(szDescList); FREEP(szSuffixList); FREEP(nTypeList); pDialogFactory->releaseDialog(pDialog); return bOK; }