const char * AP_UnixPrefs::_getPrefsPathname(void) const { /* return a pointer to a static buffer */ static UT_String buf; if(!buf.empty()) return buf.c_str(); const char * szDirectory = XAP_App::getApp()->getUserPrivateDirectory(); const char * szFile = "AbiWord.Profile"; buf = szDirectory; if (!buf.size() || szDirectory[buf.size()-1] != '/') buf += "/"; buf += szFile; return buf.c_str(); }
void AP_Dialog_FormatTable::setBorderColor(UT_RGBColor clr) { m_borderColor = clr; if (m_borderToggled) return; UT_String s = UT_String_sprintf("%02x%02x%02x", clr.m_red, clr.m_grn, clr.m_blu); m_vecProps.addOrReplaceProp("left-color", s.c_str()); m_vecProps.addOrReplaceProp("right-color", s.c_str()); m_vecProps.addOrReplaceProp("top-color", s.c_str()); m_vecProps.addOrReplaceProp("bot-color", s.c_str()); m_vecPropsAdjRight.addOrReplaceProp("left-color", s.c_str()); m_vecPropsAdjBottom.addOrReplaceProp("top-color", s.c_str()); m_bSettingsChanged = true; }
void AP_Dialog_FormatFrame::setBorderColorLeft (const UT_RGBColor & clr) { m_borderColorLeft = clr; UT_String s = UT_String_sprintf("%02x%02x%02x", clr.m_red, clr.m_grn, clr.m_blu); m_vecProps.addOrReplaceProp("left-color", s.c_str()); m_bSettingsChanged = true; }
void IE_Imp_WordPerfect::openFootnote(const WPXPropertyList & /*propList*/) { if (m_bHdrFtrOpenCount) return; // HACK if (!m_bInSection) { X_CheckDocumentError(appendStrux(PTX_Section, NULL)); X_CheckDocumentError(appendStrux(PTX_Block,NULL)); m_bInSection = true; } const gchar** propsArray = NULL; UT_String footnoteId; UT_String_sprintf(footnoteId,"%i",UT_rand()); propsArray = static_cast<const gchar **>(UT_calloc(7, sizeof(gchar *))); propsArray [0] = "type"; propsArray [1] = "footnote_ref"; propsArray [2] = "footnote-id"; propsArray [3] = footnoteId.c_str(); propsArray [4] = NULL; propsArray [5] = NULL; propsArray [6] = NULL; X_CheckDocumentError(appendObject(PTO_Field, propsArray)); const gchar * attribs[3] ={"footnote-id", footnoteId.c_str(), NULL}; X_CheckDocumentError(appendStrux(PTX_SectionFootnote,attribs)); X_CheckDocumentError(appendStrux(PTX_Block,NULL)); m_bRequireBlock = false; propsArray = static_cast<const gchar **>(UT_calloc(7, sizeof(gchar *))); propsArray [0] = "type"; propsArray [1] = "footnote_anchor"; propsArray [2] = "footnote-id"; propsArray [3] = footnoteId.c_str(); propsArray [4] = NULL; propsArray [5] = NULL; propsArray [6] = NULL; X_CheckDocumentError(appendObject(PTO_Field, propsArray)); }
char * XAP_Dialog_History::getListValue(UT_uint32 item, UT_uint32 column) const { UT_return_val_if_fail(m_pDoc, NULL); UT_String S; time_t tT; struct tm * tM; char * s; switch(column) { case 0: UT_String_sprintf(S,"%d",m_pDoc->getHistoryNthId(item)); return g_strdup(S.c_str()); case 1: { tT = m_pDoc->getHistoryNthTimeStarted(item); tM = localtime(&tT); s = (char*)g_try_malloc(30); if(!s) return NULL; size_t len = strftime(s,30,"%c",tM); if(!len) { FREEP(s); return NULL; } return s; } case 2: { UT_return_val_if_fail(m_pSS, NULL); const char * pszS; if(m_pDoc->getHistoryNthAutoRevisioned(item)) pszS = m_pSS->getValue(XAP_STRING_ID_DLG_MB_Yes); else pszS = m_pSS->getValue(XAP_STRING_ID_DLG_MB_No); UT_return_val_if_fail(pszS, NULL); return g_strdup(pszS); } default:; } UT_ASSERT(UT_SHOULD_NOT_HAPPEN); return NULL; }
static void s_check_changedDetails(GtkWidget * wid, AP_UnixDialog_FormatTOC * me) { UT_UTF8String sProp = static_cast<char *> (g_object_get_data(G_OBJECT(wid),"toc-prop")); UT_UTF8String sVal = "1"; if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wid)) == FALSE) { sVal = "0"; } UT_String sNum = UT_String_sprintf("%d",me->getDetailsLevel()); sProp += sNum.c_str(); me->setTOCProperty(sProp,sVal); }
UT_UTF8String UT_UTF8String_sprintf(const char * inFormat, ...) { UT_String str (""); va_list args; va_start (args, inFormat); UT_String_vprintf (str, inFormat, args); va_end (args); // create & return a validated UTF-8 string based on the input return UT_UTF8String(str.c_str()); }
void AP_UnixDialog_FormatTOC::event_HasLabelChanged(GtkWidget * wid) { UT_UTF8String sProp = static_cast<char *> (g_object_get_data(G_OBJECT(wid),"toc-prop")); UT_String sNum = UT_String_sprintf("%d",getMainLevel()); sProp += sNum.c_str(); UT_UTF8String sVal = "1"; if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wid)) == FALSE) { sVal = "0"; } setTOCProperty(sProp,sVal); }
GtkWidget * AP_UnixDialog_FormatTOC::_getWidget(const char * szNameBase, UT_sint32 iLevel) { UT_return_val_if_fail(m_pBuilder, NULL); UT_String sLocal = szNameBase; if(iLevel > 0) { UT_String sVal = UT_String_sprintf("%d",iLevel); sLocal += sVal; } return GTK_WIDGET(gtk_builder_get_object(m_pBuilder, sLocal.c_str())); }
/*! Request file encoding from user \param szEncoding Encoding to export file into This function should be identical to the one in ie_Imp_Text */ bool IE_Exp_Text::_doEncodingDialog(const char *szEncoding) { XAP_Dialog_Id id = XAP_DIALOG_ID_ENCODING; XAP_DialogFactory * pDialogFactory = static_cast<XAP_DialogFactory *>(XAP_App::getApp()->getDialogFactory()); XAP_Dialog_Encoding * pDialog = static_cast<XAP_Dialog_Encoding *>(pDialogFactory->requestDialog(id)); UT_return_val_if_fail(pDialog, false); pDialog->setEncoding(szEncoding); // run the dialog XAP_Frame * pFrame = XAP_App::getApp()->getLastFocussedFrame(); UT_return_val_if_fail(pFrame, false); pDialog->runModal(pFrame); // extract what they did bool bOK = (pDialog->getAnswer() == XAP_Dialog_Encoding::a_OK); if (bOK) { const gchar * s; static UT_String szEnc; s = pDialog->getEncoding(); UT_return_val_if_fail (s, false); szEnc = s; _setEncoding(szEnc.c_str()); getDoc()->setEncodingName(szEnc.c_str()); } pDialogFactory->releaseDialog(pDialog); return bOK; }
UT_UTF8String & UT_UTF8String_sprintf(UT_UTF8String & inStr, const char * inFormat, ...) { UT_String str (""); va_list args; va_start (args, inFormat); UT_String_vprintf (str, inFormat, args); va_end (args); // create a validated UTF-8 string based on the input inStr = str.c_str(); return inStr; }
bool AP_Dialog_FormatFrame::_getToggleButtonStatus(const char * lineStyle) { const gchar * pszStyle = NULL; UT_String lsOff = UT_String_sprintf("%d", LS_OFF); m_vecProps.getProp(lineStyle, pszStyle); if ((pszStyle && strcmp(pszStyle, lsOff.c_str())) || !pszStyle) return true; else return false; }
GR_Font* GR_Graphics::findFont(const char* pszFontFamily, const char* pszFontStyle, const char* pszFontVariant, const char* pszFontWeight, const char* pszFontStretch, const char* pszFontSize, const char* pszLang) { GR_Font * pFont = NULL; // NOTE: we currently favor a readable hash key to make debugging easier // TODO: speed things up with a smaller key (the three AP pointers?) UT_String key; UT_String_sprintf(key,"%s;%s;%s;%s;%s;%s",pszFontFamily, pszFontStyle, pszFontVariant, pszFontWeight, pszFontStretch, pszFontSize); GR_Font *pEntry = m_hashFontCache.pick(key.c_str()); if (!pEntry) { // TODO -- note that we currently assume font-family to be a single name, // TODO -- not a list. This is broken. pFont = _findFont(pszFontFamily, pszFontStyle, pszFontVariant,pszFontWeight, pszFontStretch, pszFontSize, pszLang); UT_ASSERT(pFont); xxx_UT_DEBUGMSG(("Insert font %x in gr_Graphics cache \n",pFont)); // add it to the cache if(pFont) m_hashFontCache.insert(key.c_str(), pFont); } else { pFont = pEntry; } return pFont; }
void AP_Dialog_FormatTable::setBackgroundColor(UT_RGBColor clr) { UT_String bgcol = UT_String_sprintf("%02x%02x%02x", clr.m_red, clr.m_grn, clr.m_blu); m_vecProps.removeProp ("bg-style"); // Why do we remove this property? We still use it in frames. -MG m_vecProps.removeProp ("bgcolor"); // this is only here for backward compatibility with AbiWord < 2.0. Could be removed as far as I can see - MARCM if (clr.isTransparent ()) m_vecProps.removeProp ("background-color"); else m_vecProps.addOrReplaceProp ("background-color", bgcol.c_str ()); m_bSettingsChanged = true; }
/*! * Set the title of a gtk dialog */ void abiDialogSetTitle(GtkWidget * dlg, const char * title, ...) { if ( title != NULL && strlen ( title ) ) { UT_String titleStr ( "" ) ; va_list args; va_start (args, title); UT_String_vprintf (titleStr, title, args); va_end (args); // create the title gtk_window_set_title ( GTK_WINDOW(dlg), titleStr.c_str() ) ; } }
bool XAP_App::findAbiSuiteLibFile(UT_String & path, const char * filename, const char * subdir) { if (!filename) { return false; } bool bFound = false; const char * dir = getUserPrivateDirectory(); if (dir) { path = dir; if (subdir) { path += G_DIR_SEPARATOR; path += subdir; } path += G_DIR_SEPARATOR; path += filename; bFound = UT_isRegularFile (path.c_str ()); } if (!bFound && (dir = getAbiSuiteLibDir())) { path = dir; if (subdir) { path += G_DIR_SEPARATOR; path += subdir; } path += G_DIR_SEPARATOR; path += filename; bFound = UT_isRegularFile (path.c_str ()); } return bFound; }
void AP_UnixDialog_FormatTOC::setStyle(GtkWidget * wid) { UT_UTF8String sVal; GtkWidget * pLabel = static_cast<GtkWidget *> (g_object_get_data(G_OBJECT(wid),"display-widget")); UT_UTF8String sProp = static_cast<char *> (g_object_get_data(G_OBJECT(pLabel),"toc-prop")); if(g_ascii_strcasecmp("toc-heading-style",sProp.utf8_str()) != 0) { UT_String sNum = UT_String_sprintf("%d",getMainLevel()); sProp += sNum.c_str(); } sVal = getNewStyle(sProp); gtk_label_set_text(GTK_LABEL(pLabel),sVal.utf8_str()); setTOCProperty(sProp,sVal); applyTOCPropsToDoc(); }
void AP_Dialog_FormatTable::ShowErrorBox(UT_String & sFile, UT_Error errorCode) { XAP_String_Id String_id; XAP_Frame * pFrame = XAP_App::getApp()->getLastFocussedFrame(); switch (errorCode) { case -301: String_id = AP_STRING_ID_MSG_IE_FileNotFound; break; case -302: String_id = AP_STRING_ID_MSG_IE_NoMemory; break; case -303: String_id = AP_STRING_ID_MSG_IE_UnsupportedType; //AP_STRING_ID_MSG_IE_UnknownType; break; case -304: String_id = AP_STRING_ID_MSG_IE_BogusDocument; break; case -305: String_id = AP_STRING_ID_MSG_IE_CouldNotOpen; break; case -306: String_id = AP_STRING_ID_MSG_IE_CouldNotWrite; break; case -307: String_id = AP_STRING_ID_MSG_IE_FakeType; break; case -311: String_id = AP_STRING_ID_MSG_IE_UnsupportedType; break; default: String_id = AP_STRING_ID_MSG_ImportError; } pFrame->showMessageBox(String_id, XAP_Dialog_MessageBox::b_O, XAP_Dialog_MessageBox::a_OK, sFile.c_str()); }
void AP_Dialog_FormatFrame::setBGColor(UT_RGBColor clr) { m_backgroundColor = clr; UT_String bgcol = UT_String_sprintf("%02x%02x%02x", clr.m_red, clr.m_grn, clr.m_blu); m_vecProps.removeProp ("bg-style"); m_vecProps.removeProp ("bgcolor"); if (clr.isTransparent ()) m_vecProps.removeProp ("background-color"); else m_vecProps.addOrReplaceProp ("background-color", bgcol.c_str ()); m_bSettingsChanged = true; }
void UT_LocaleInfo::init (const UT_String & locale) { if (locale.size () == 0) return; size_t dot = 0; size_t hyphen = 0; // take both hyphen types into account hyphen = UT_String_findCh (locale, '_'); if (hyphen == (size_t)-1) hyphen = UT_String_findCh (locale, '-'); dot = UT_String_findCh (locale, '.'); if (hyphen == (size_t)-1 && dot == (size_t)-1) { mLanguage = locale.c_str(); return; } if (hyphen != (size_t)-1 && dot != (size_t)-1) { if (hyphen < dot) { mLanguage = locale.substr (0, hyphen).c_str(); mTerritory = locale.substr (hyphen+1, dot-(hyphen+1)).c_str(); mEncoding = locale.substr (dot+1, locale.size ()-(dot+1)).c_str(); } else { mLanguage = locale.substr (0, dot).c_str(); mEncoding = locale.substr (dot+1, locale.size ()-(dot+1)).c_str(); } } else if (dot != (size_t)-1) { mLanguage = locale.substr (0, dot).c_str(); mEncoding = locale.substr (dot+1, locale.size ()-(dot+1)).c_str(); } else if (hyphen != (size_t)-1) { mLanguage = locale.substr (0, hyphen).c_str(); mEncoding = locale.substr (hyphen+1, locale.size ()-(hyphen+1)).c_str(); } }
static void s_TabLeader_changed(GtkWidget * wid, AP_UnixDialog_FormatTOC * me ) { GtkTreeIter iter; GtkComboBox * combo = GTK_COMBO_BOX(wid); gtk_combo_box_get_active_iter(combo, &iter); GtkTreeModel *store = gtk_combo_box_get_model(combo); char * value1; char * value2; gtk_tree_model_get(store, &iter, 1, &value1, 2, &value2, -1); UT_UTF8String sProp = value1; UT_UTF8String sVal = value2; UT_String sNum = UT_String_sprintf("%d",me->getDetailsLevel()); sProp += sNum.c_str(); me->setTOCProperty(sProp,sVal); }
void IE_Imp_WordPerfect::openTable(const librevenge::RVNGPropertyList &propList) { if (m_bHdrFtrOpenCount) return; // HACK // TODO: handle 'marginLeftOffset' and 'marginRightOffset' UT_DEBUGMSG(("AbiWordPerfect: openTable\n")); UT_String propBuffer; if (propList["table:align"]) { // no need to support left: default behaviour //if (strcmp(propList["table:align"]->getStr().cstr(), "right")) // abiword does not support this I think //if (strcmp(propList["table:align"]->getStr().cstr(), "center")) // abiword does not support this I think //if (strcmp(propList["table:align"]->getStr().cstr(), "margins")) // abiword does not support this I think if (strcmp(propList["table:align"]->getStr().cstr(), "margins")) { if (propList["fo:margin-left"]) UT_String_sprintf(propBuffer, "table-column-leftpos:%s; ", propList["fo:margin-left"]->getStr().cstr()); } } const librevenge::RVNGPropertyListVector *columns = propList.child("librevenge:table-columns"); if (columns) { propBuffer += "table-column-props:"; librevenge::RVNGPropertyListVector::Iter i(*columns); for (i.rewind(); i.next();) { UT_String tmpBuffer; if (i()["style:column-width"]) UT_String_sprintf(tmpBuffer, "%s/", i()["style:column-width"]->getStr().cstr()); propBuffer += tmpBuffer; } } const PP_PropertyVector propsArray = { "props", propBuffer.c_str() }; X_CheckDocumentError(appendStrux(PTX_SectionTable, propsArray)); }
/*! * Create a new GtkDialog with this title */ GtkWidget * abiDialogNew(const char * role, gboolean resizable, const char * title, ...) { GtkWidget * dlg = abiDialogNew(role, resizable); if ( title != NULL && strlen ( title ) ) { UT_String titleStr ( "" ) ; va_list args; va_start (args, title); UT_String_vprintf (titleStr, title, args); va_end (args); // create the title gtk_window_set_title ( GTK_WINDOW(dlg), titleStr.c_str() ) ; } return dlg ; }
/*! Set the color and style and thickness of the toggled button */ void AP_Dialog_FormatTable::toggleLineType(toggle_button btn, bool enabled) { UT_String cTmp = UT_String_sprintf("%02x%02x%02x", m_borderColor.m_red, m_borderColor.m_grn, m_borderColor.m_blu); UT_String sTmp = UT_String_sprintf("%d", (enabled ? m_lineStyle : LS_OFF)); switch (btn) { case toggle_left: { m_vecProps.addOrReplaceProp("left-style", sTmp.c_str()); m_vecProps.addOrReplaceProp("left-color", cTmp.c_str()); m_vecProps.addOrReplaceProp("left-thickness",m_sBorderThickness.utf8_str()); } break; case toggle_right: { m_vecProps.addOrReplaceProp("right-style", sTmp.c_str()); m_vecProps.addOrReplaceProp("right-color", cTmp.c_str()); m_vecProps.addOrReplaceProp("right-thickness",m_sBorderThickness.utf8_str()); } break; case toggle_top: { m_vecProps.addOrReplaceProp("top-style", sTmp.c_str()); m_vecProps.addOrReplaceProp("top-color", cTmp.c_str()); m_vecProps.addOrReplaceProp("top-thickness",m_sBorderThickness.utf8_str()); } break; case toggle_bottom: { m_vecProps.addOrReplaceProp("bot-style", sTmp.c_str()); m_vecProps.addOrReplaceProp("bot-color", cTmp.c_str()); m_vecProps.addOrReplaceProp("bot-thickness",m_sBorderThickness.utf8_str()); } break; } m_borderToggled = true; m_bSettingsChanged = true; }
void AP_UnixDialog_FormatTOC::event_HasHeadingChanged(GtkWidget * wid) { UT_UTF8String sProp = static_cast<char *> (g_object_get_data(G_OBJECT(wid),"toc-prop")); UT_UTF8String sVal = "1"; if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(wid)) == FALSE) { sVal = "0"; _setHasHeadingSensitivity(FALSE); } else { _setHasHeadingSensitivity(TRUE); } if(g_ascii_strcasecmp("toc-has-heading",sProp.utf8_str()) != 0) { UT_String sNum = UT_String_sprintf("%d",getMainLevel()); sProp += sNum.c_str(); } setTOCProperty(sProp,sVal); }
/** * Parses the <style:background-image> start tag. */ void ODi_Style_PageLayout::_parseBackgroundImage(const gchar** ppAtts) { const gchar* pVal = NULL; pVal = UT_getAttribute ("xlink:href", ppAtts); if(!pVal) { // this is a perfectly valid case. UT_DEBUGMSG(("ODT import: no background image found.\n")); return; } UT_String dataId; // id of the data item that contains the image. if(!m_rAbiData.addImageDataItem(dataId, ppAtts)) { UT_DEBUGMSG(("ODT import: no suitable image importer found\n")); return; } m_backgroundImage = dataId.c_str(); }
void XAP_App::setDefaultGraphicsId(UT_uint32 i) { if(i == GRID_UNKNOWN) return; m_iDefaultGraphicsId = i; if(i < GRID_LAST_BUILT_IN && i > GRID_LAST_DEFAULT) { // change the preference settings UT_return_if_fail(m_prefs) XAP_PrefsScheme *pPrefsScheme = m_prefs->getCurrentScheme(); UT_return_if_fail(pPrefsScheme); UT_String s; UT_String_sprintf(s, "%d", i); pPrefsScheme->setValue(XAP_PREF_KEY_DefaultGraphics, s.c_str()); } }
void XAP_Dictionary::_outputUTF8(const UT_UCSChar * data, UT_uint32 length) { UT_String buf; const UT_UCSChar * pData; for (pData = data; (pData<data+length); /**/) { if (*pData > 0x007f) { gchar outbuf[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; g_unichar_to_utf8(*pData++, outbuf); buf += outbuf; } else { buf += (char)*pData++; } } _writeBytes(reinterpret_cast<const UT_Byte *>(buf.c_str()),buf.size()); }
/*! * Strips off the first numeric part of string and returns it as a uint32. * ie. "Numbered Heading 5" would return 5. */ UT_uint32 UT_HeadingDepth(const char * szHeadingName) { UT_String sz; UT_uint32 i = 0; bool bFound = false; bool bStop = false; for(i=0; i< strlen(szHeadingName) && !bStop ; i++) { if(szHeadingName[i] >= '0' && szHeadingName[i] <= '9') { sz += szHeadingName[i]; bFound = true; } else if(bFound) { bStop = true; break; } } i = static_cast<UT_uint32>(atoi(sz.c_str())); return i; }
/*! * This restores a toolbar layout in memory to a version previously constructed * and used as Toolbar. */ void XAP_Toolbar_Factory::restoreToolbarLayout(EV_Toolbar_Layout *pTB) { UT_return_if_fail (pTB); UT_String strName = pTB->getName(); UT_uint32 count = m_vecTT.getItemCount(); // NO toolabrs UT_uint32 i = 0; bool bFound = false; XAP_Toolbar_Factory_vec * pVec = NULL; for (i=0; !bFound && (i < count); i++) { pVec = (XAP_Toolbar_Factory_vec *) m_vecTT.getNthItem(i); const char * szCurName = pVec->getToolbarName(); if (g_ascii_strcasecmp(strName.c_str(),szCurName)==0) { bFound = true; break; } } UT_ASSERT_HARMLESS(bFound); DELETEP(pVec); pVec = new XAP_Toolbar_Factory_vec(pTB); m_vecTT.setNthItem(i, (void *) pVec, NULL); }