Index: sc/sdi/cellsh.sdi =================================================================== --- sc/sdi/cellsh.sdi (revision 268546) +++ sc/sdi/cellsh.sdi (working copy) @@ -192,12 +192,13 @@ SID_HANGUL_HANJA_CONVERSION [ ExecMethod = ExecuteEdit; StateMethod = GetState; ] SID_CHINESE_CONVERSION [ ExecMethod = ExecuteEdit; StateMethod = GetState; ] - SID_TRANSLITERATE_UPPER [ ExecMethod = ExecuteTrans; StateMethod = GetBlockState; ] - SID_TRANSLITERATE_LOWER [ ExecMethod = ExecuteTrans; StateMethod = GetBlockState; ] - SID_TRANSLITERATE_HALFWIDTH [ ExecMethod = ExecuteTrans; StateMethod = GetBlockState; ] - SID_TRANSLITERATE_FULLWIDTH [ ExecMethod = ExecuteTrans; StateMethod = GetBlockState; ] - SID_TRANSLITERATE_HIRAGANA [ ExecMethod = ExecuteTrans; StateMethod = GetBlockState; ] - SID_TRANSLITERATE_KATAGANA [ ExecMethod = ExecuteTrans; StateMethod = GetBlockState; ] + SID_TRANSLITERATE_UPPER [ ExecMethod = ExecuteTrans; StateMethod = GetBlockState; ] + SID_TRANSLITERATE_LOWER [ ExecMethod = ExecuteTrans; StateMethod = GetBlockState; ] + SID_TRANSLITERATE_SENTENCE_CASE [ ExecMethod = ExecuteTrans; StateMethod = GetBlockState; ] + SID_TRANSLITERATE_HALFWIDTH [ ExecMethod = ExecuteTrans; StateMethod = GetBlockState; ] + SID_TRANSLITERATE_FULLWIDTH [ ExecMethod = ExecuteTrans; StateMethod = GetBlockState; ] + SID_TRANSLITERATE_HIRAGANA [ ExecMethod = ExecuteTrans; StateMethod = GetBlockState; ] + SID_TRANSLITERATE_KATAGANA [ ExecMethod = ExecuteTrans; StateMethod = GetBlockState; ] } // =========================================================================== Index: sc/sdi/editsh.sdi =================================================================== --- sc/sdi/editsh.sdi (revision 268546) +++ sc/sdi/editsh.sdi (working copy) @@ -85,6 +85,7 @@ SID_TRANSLITERATE_UPPER [ ExecMethod = ExecuteTrans; StateMethod = GetState; Export = FALSE; ] SID_TRANSLITERATE_LOWER [ ExecMethod = ExecuteTrans; StateMethod = GetState; Export = FALSE; ] + SID_TRANSLITERATE_SENTENCE_CASE [ ExecMethod = ExecuteTrans; StateMethod = GetState; Export = FALSE; ] SID_TRANSLITERATE_HALFWIDTH [ ExecMethod = ExecuteTrans; StateMethod = GetState; Export = FALSE; ] SID_TRANSLITERATE_FULLWIDTH [ ExecMethod = ExecuteTrans; StateMethod = GetState; Export = FALSE; ] SID_TRANSLITERATE_HIRAGANA [ ExecMethod = ExecuteTrans; StateMethod = GetState; Export = FALSE; ] Index: sc/sdi/drtxtob.sdi =================================================================== --- sc/sdi/drtxtob.sdi (revision 268546) +++ sc/sdi/drtxtob.sdi (working copy) @@ -131,6 +131,7 @@ SID_TRANSLITERATE_UPPER [ ExecMethod = ExecuteTrans; StateMethod = GetState; Export = FALSE; ] SID_TRANSLITERATE_LOWER [ ExecMethod = ExecuteTrans; StateMethod = GetState; Export = FALSE; ] + SID_TRANSLITERATE_SENTENCE_CASE [ ExecMethod = ExecuteTrans; StateMethod = GetState; Export = FALSE; ] SID_TRANSLITERATE_HALFWIDTH [ ExecMethod = ExecuteTrans; StateMethod = GetState; Export = FALSE; ] SID_TRANSLITERATE_FULLWIDTH [ ExecMethod = ExecuteTrans; StateMethod = GetState; Export = FALSE; ] SID_TRANSLITERATE_HIRAGANA [ ExecMethod = ExecuteTrans; StateMethod = GetState; Export = FALSE; ] Index: sc/source/ui/view/viewutil.cxx =================================================================== --- sc/source/ui/view/viewutil.cxx (revision 268546) +++ sc/source/ui/view/viewutil.cxx (working copy) @@ -50,6 +50,7 @@ #include #include +#include #include "viewutil.hxx" #include "global.hxx" @@ -124,6 +125,9 @@ case SID_TRANSLITERATE_LOWER: nType = com::sun::star::i18n::TransliterationModules_UPPERCASE_LOWERCASE; break; + case SID_TRANSLITERATE_SENTENCE_CASE: + nType = com::sun::star::i18n::TransliterationModulesExtra_SENTENCE_CASE; + break; case SID_TRANSLITERATE_HALFWIDTH: nType = com::sun::star::i18n::TransliterationModules_FULLWIDTH_HALFWIDTH; break; Index: sc/uiconfig/scalc/menubar/menubar.xml =================================================================== --- sc/uiconfig/scalc/menubar/menubar.xml (revision 268546) +++ sc/uiconfig/scalc/menubar/menubar.xml (working copy) @@ -235,6 +235,7 @@ + Index: sd/sdi/_drvwsh.sdi =================================================================== --- sd/sdi/_drvwsh.sdi (revision 268546) +++ sd/sdi/_drvwsh.sdi (working copy) @@ -2176,6 +2176,11 @@ ExecMethod = FuSupport ; StateMethod = GetCtrlState ; ] + SID_TRANSLITERATE_SENTENCE_CASE // ole : no, status : ? + [ + ExecMethod = FuSupport ; + StateMethod = GetCtrlState ; + ] SID_TRANSLITERATE_HALFWIDTH // ole : no, status : ? [ ExecMethod = FuSupport ; Index: sd/sdi/outlnvsh.sdi =================================================================== --- sd/sdi/outlnvsh.sdi (revision 268546) +++ sd/sdi/outlnvsh.sdi (working copy) @@ -441,6 +441,11 @@ ExecMethod = FuSupport ; StateMethod = GetCtrlState ; ] + SID_TRANSLITERATE_SENTENCE_CASE // ole : no, status : ? + [ + ExecMethod = FuSupport ; + StateMethod = GetCtrlState ; + ] SID_TRANSLITERATE_HALFWIDTH // ole : no, status : ? [ ExecMethod = FuSupport ; Index: sd/source/ui/view/outlnvsh.cxx =================================================================== --- sd/source/ui/view/outlnvsh.cxx (revision 268546) +++ sd/source/ui/view/outlnvsh.cxx (working copy) @@ -64,6 +64,7 @@ #include #include #include +#include #include #include #include @@ -538,6 +539,7 @@ if( pOlView && ( (nSlot == SID_TRANSLITERATE_UPPER) || (nSlot == SID_TRANSLITERATE_LOWER) || + (nSlot == SID_TRANSLITERATE_SENTENCE_CASE) || (nSlot == SID_TRANSLITERATE_HALFWIDTH) || (nSlot == SID_TRANSLITERATE_FULLWIDTH) || (nSlot == SID_TRANSLITERATE_HIRAGANA) || @@ -671,6 +673,7 @@ case SID_TRANSLITERATE_UPPER: case SID_TRANSLITERATE_LOWER: + case SID_TRANSLITERATE_SENTENCE_CASE: case SID_TRANSLITERATE_HALFWIDTH: case SID_TRANSLITERATE_FULLWIDTH: case SID_TRANSLITERATE_HIRAGANA: @@ -690,6 +693,9 @@ case SID_TRANSLITERATE_LOWER: nType = TransliterationModules_UPPERCASE_LOWERCASE; break; + case SID_TRANSLITERATE_SENTENCE_CASE: + nType = TransliterationModulesExtra_SENTENCE_CASE; + break; case SID_TRANSLITERATE_HALFWIDTH: nType = TransliterationModules_FULLWIDTH_HALFWIDTH; break; Index: sd/source/ui/view/drviewse.cxx =================================================================== --- sd/source/ui/view/drviewse.cxx (revision 268546) +++ sd/source/ui/view/drviewse.cxx (working copy) @@ -35,6 +35,7 @@ #include #include #include +#include #include @@ -1380,6 +1381,7 @@ case SID_TRANSLITERATE_UPPER: case SID_TRANSLITERATE_LOWER: + case SID_TRANSLITERATE_SENTENCE_CASE: case SID_TRANSLITERATE_HALFWIDTH: case SID_TRANSLITERATE_FULLWIDTH: case SID_TRANSLITERATE_HIRAGANA: @@ -1399,6 +1401,9 @@ case SID_TRANSLITERATE_LOWER: nType = TransliterationModules_UPPERCASE_LOWERCASE; break; + case SID_TRANSLITERATE_SENTENCE_CASE: + nType = TransliterationModulesExtra_SENTENCE_CASE; + break; case SID_TRANSLITERATE_HALFWIDTH: nType = TransliterationModules_FULLWIDTH_HALFWIDTH; break; Index: sd/source/ui/view/drviewsf.cxx =================================================================== --- sd/source/ui/view/drviewsf.cxx (revision 268546) +++ sd/source/ui/view/drviewsf.cxx (working copy) @@ -256,6 +256,7 @@ rSet.DisableItem( SID_TRANSLITERATE_UPPER ); rSet.DisableItem( SID_TRANSLITERATE_LOWER ); + rSet.DisableItem( SID_TRANSLITERATE_SENTENCE_CASE ); rSet.DisableItem( SID_TRANSLITERATE_HALFWIDTH ); rSet.DisableItem( SID_TRANSLITERATE_FULLWIDTH ); rSet.DisableItem( SID_TRANSLITERATE_HIRAGANA ); Index: sd/uiconfig/sdraw/menubar/menubar.xml =================================================================== --- sd/uiconfig/sdraw/menubar/menubar.xml (revision 268546) +++ sd/uiconfig/sdraw/menubar/menubar.xml (working copy) @@ -183,7 +183,8 @@ + Index: sd/uiconfig/simpress/menubar/menubar.xml =================================================================== --- sd/uiconfig/simpress/menubar/menubar.xml (revision 268546) +++ sd/uiconfig/simpress/menubar/menubar.xml (working copy) @@ -201,7 +201,8 @@ + Index: i18npool/source/transliteration/makefile.mk =================================================================== --- i18npool/source/transliteration/makefile.mk (revision 268546) +++ i18npool/source/transliteration/makefile.mk (working copy) @@ -78,7 +78,8 @@ $(SLO)$/numtochar.obj \ $(SLO)$/numtotext_cjk.obj \ $(SLO)$/chartonum.obj \ - $(SLO)$/texttonum.obj + $(SLO)$/texttonum.obj \ + $(SLO)$/transliteration_sentencecase.obj # --- Targets ------------------------------------------------------ Index: i18npool/source/registerservices/registerservices.cxx =================================================================== --- i18npool/source/registerservices/registerservices.cxx (revision 268546) +++ i18npool/source/registerservices/registerservices.cxx (working copy) @@ -50,6 +50,7 @@ #include #include #include +#include #include #include #include @@ -173,6 +174,7 @@ IMPL_CREATEINSTANCE( Transliteration_u2l ) IMPL_CREATEINSTANCE( Transliteration_l2u ) +IMPL_CREATEINSTANCE( Transliteration_sentencecase ) IMPL_CREATEINSTANCE( Transliteration_caseignore ) IMPL_CREATEINSTANCE( hiraganaToKatakana ) IMPL_CREATEINSTANCE( katakanaToHiragana ) @@ -423,6 +425,9 @@ TRLT_IMPLNAME_PREFIX "LOWERCASE_UPPERCASE", &Transliteration_l2u_CreateInstance }, { TRLT_SERVICELNAME_L10N, + TRLT_IMPLNAME_PREFIX "SENTENCE_CASE", + &Transliteration_sentencecase_CreateInstance }, + { TRLT_SERVICELNAME_L10N, TRLT_IMPLNAME_PREFIX "IGNORE_CASE", &Transliteration_caseignore_CreateInstance }, { TRLT_SERVICELNAME_L10N, Index: i18npool/source/localedata/data/en_US.xml =================================================================== --- i18npool/source/localedata/data/en_US.xml (revision 268546) +++ i18npool/source/localedata/data/en_US.xml (working copy) @@ -477,6 +477,7 @@ + Index: starmath/sdi/svxitems.sdi =================================================================== --- starmath/sdi/svxitems.sdi (revision 268546) +++ starmath/sdi/svxitems.sdi (working copy) @@ -48,6 +48,7 @@ SVX_CASEMAP_VERSALIEN, SVX_CASEMAP_GEMEINE, SVX_CASEMAP_TITEL, + SVX_CASEMAP_SENTENCE, SVX_CASEMAP_KAPITAELCHEN, SVX_CASEMAP_END }; Index: sw/sdi/_textsh.sdi =================================================================== --- sw/sdi/_textsh.sdi (revision 268546) +++ sw/sdi/_textsh.sdi (working copy) @@ -1495,6 +1495,12 @@ StateMethod = NoState ; DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; ] + SID_TRANSLITERATE_SENTENCE_CASE + [ + ExecMethod = ExecTransliteration; + StateMethod = NoState ; + DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; + ] SID_TRANSLITERATE_HALFWIDTH [ ExecMethod = ExecTransliteration; Index: sw/sdi/annotsh.sdi =================================================================== --- sw/sdi/annotsh.sdi (revision 268546) +++ sw/sdi/annotsh.sdi (working copy) @@ -194,6 +194,13 @@ StateMethod = NoState ; DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; ] + + SID_TRANSLITERATE_SENTENCE_CASE + [ + ExecMethod = ExecTransliteration; + StateMethod = NoState ; + DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; + ] SID_TRANSLITERATE_HALFWIDTH [ Index: sw/sdi/drwtxtsh.sdi =================================================================== --- sw/sdi/drwtxtsh.sdi (revision 268546) +++ sw/sdi/drwtxtsh.sdi (working copy) @@ -495,6 +495,12 @@ StateMethod = NoState ; DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; ] + SID_TRANSLITERATE_SENTENCE_CASE + [ + ExecMethod = ExecTransliteration; + StateMethod = NoState ; + DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR"; + ] SID_TRANSLITERATE_HALFWIDTH [ ExecMethod = ExecTransliteration; Index: sw/source/core/edit/editsh.cxx =================================================================== --- sw/source/core/edit/editsh.cxx (revision 268546) +++ sw/source/core/edit/editsh.cxx (working copy) @@ -1179,6 +1179,31 @@ EndAllAction(); } +void SwEditShell::TransliterateText( const String& moduleName ) +{ + utl::TransliterationWrapper aTrans(::comphelper::getProcessServiceFactory(), 0 ); + aTrans.loadModuleByImplName( moduleName, LANGUAGE_SYSTEM ); + StartAllAction(); + SET_CURR_SHELL( this ); + + SwPaM* pCrsr = GetCrsr(); + if( pCrsr->GetNext() != pCrsr ) + { + GetDoc()->StartUndo(UNDO_EMPTY, NULL); + FOREACHPAM_START( this ) + + if( PCURCRSR->HasMark() ) + GetDoc()->TransliterateText( *PCURCRSR, aTrans ); + + FOREACHPAM_END() + GetDoc()->EndUndo(UNDO_EMPTY, NULL); + } + else + GetDoc()->TransliterateText( *pCrsr, aTrans ); + + EndAllAction(); +} + void SwEditShell::CountWords( SwDocStat& rStat ) const { FOREACHPAM_START( this ) Index: sw/source/ui/shells/textsh.cxx =================================================================== --- sw/source/ui/shells/textsh.cxx (revision 268546) +++ sw/source/ui/shells/textsh.cxx (working copy) @@ -75,6 +75,9 @@ #ifndef _COM_SUN_STAR_I18N_TRANSLITERATIONMODULES_HDL_ #include #endif +#ifndef _COM_SUN_STAR_I18N_TRANSLITERATIONMODULESEXTRA_HDL_ +#include +#endif #include #include @@ -1052,6 +1055,9 @@ case SID_TRANSLITERATE_LOWER: nMode = TransliterationModules_UPPERCASE_LOWERCASE; break; + case SID_TRANSLITERATE_SENTENCE_CASE: + nMode = TransliterationModulesExtra_SENTENCE_CASE; + break; case SID_TRANSLITERATE_HALFWIDTH: nMode = TransliterationModules_FULLWIDTH_HALFWIDTH; Index: sw/source/ui/shells/drwtxtsh.cxx =================================================================== --- sw/source/ui/shells/drwtxtsh.cxx (revision 268546) +++ sw/source/ui/shells/drwtxtsh.cxx (working copy) @@ -56,6 +56,7 @@ #include #include #include +#include #include #include #include @@ -737,6 +738,9 @@ case SID_TRANSLITERATE_LOWER: nMode = TransliterationModules_UPPERCASE_LOWERCASE; break; + case SID_TRANSLITERATE_SENTENCE_CASE: + nMode = TransliterationModulesExtra_SENTENCE_CASE; + break; case SID_TRANSLITERATE_HALFWIDTH: nMode = TransliterationModules_FULLWIDTH_HALFWIDTH; Index: sw/source/ui/shells/annotsh.cxx =================================================================== --- sw/source/ui/shells/annotsh.cxx (revision 268546) +++ sw/source/ui/shells/annotsh.cxx (working copy) @@ -34,6 +34,7 @@ #include #include +#include #include #include #include @@ -1292,6 +1293,9 @@ case SID_TRANSLITERATE_LOWER: nMode = TransliterationModules_UPPERCASE_LOWERCASE; break; + case SID_TRANSLITERATE_SENTENCE_CASE: + nMode = TransliterationModulesExtra_SENTENCE_CASE; + break; case SID_TRANSLITERATE_HALFWIDTH: nMode = TransliterationModules_FULLWIDTH_HALFWIDTH; break; Index: sw/source/ui/config/modcfg.cxx =================================================================== --- sw/source/ui/config/modcfg.cxx (revision 268546) +++ sw/source/ui/config/modcfg.cxx (working copy) @@ -328,6 +328,7 @@ case SVX_CASEMAP_GEMEINE : nRet = 6;break; case SVX_CASEMAP_KAPITAELCHEN: nRet = 7;break; case SVX_CASEMAP_TITEL : nRet = 8;break; + case SVX_CASEMAP_SENTENCE : nRet = 10;break; } } break; @@ -386,6 +387,7 @@ case 6: rAttr.nItemId = SID_ATTR_CHAR_CASEMAP; rAttr.nAttr = SVX_CASEMAP_GEMEINE ; break; case 7: rAttr.nItemId = SID_ATTR_CHAR_CASEMAP; rAttr.nAttr = SVX_CASEMAP_KAPITAELCHEN ; break; case 8: rAttr.nItemId = SID_ATTR_CHAR_CASEMAP; rAttr.nAttr = SVX_CASEMAP_TITEL ; break; + case 10:rAttr.nItemId = SID_ATTR_CHAR_CASEMAP; rAttr.nAttr = SVX_CASEMAP_SENTENCE ; break; case 9: rAttr.nItemId = SID_ATTR_BRUSH; break; } } Index: sw/source/ui/config/optpage.cxx =================================================================== --- sw/source/ui/config/optpage.cxx (revision 268546) +++ sw/source/ui/config/optpage.cxx (working copy) @@ -1700,6 +1700,7 @@ { SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_GEMEINE }, { SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_KAPITAELCHEN }, { SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_TITEL }, + { SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_SENTENCE }, { SID_ATTR_BRUSH, 0 } }; Index: sw/uiconfig/swriter/menubar/menubar.xml =================================================================== --- sw/uiconfig/swriter/menubar/menubar.xml (revision 268546) +++ sw/uiconfig/swriter/menubar/menubar.xml (working copy) @@ -221,6 +221,7 @@ + Index: sw/inc/editsh.hxx =================================================================== --- sw/inc/editsh.hxx (revision 268546) +++ sw/inc/editsh.hxx (working copy) @@ -201,6 +201,7 @@ // change text to Upper/Lower/Hiragana/Katagana/... void TransliterateText( sal_uInt32 nType ); + void TransliterateText( const String& moduleName ); // count words in current selection void CountWords( SwDocStat& rStat ) const; Index: offapi/com/sun/star/i18n/TransliterationModules.idl =================================================================== --- offapi/com/sun/star/i18n/TransliterationModules.idl (revision 268546) +++ offapi/com/sun/star/i18n/TransliterationModules.idl (working copy) @@ -116,6 +116,13 @@ END_OF_MODULE = 0 }; +enum TransliterationModulesExtra +{ + /// Transliterate a string from upper case to lower case + SENTENCE_CASE = 200, + END_OF_MODULE = 0 +}; + //============================================================================= }; }; }; }; Index: offapi/com/sun/star/i18n/TransliterationModulesNew.idl =================================================================== --- offapi/com/sun/star/i18n/TransliterationModulesNew.idl (revision 268546) +++ offapi/com/sun/star/i18n/TransliterationModulesNew.idl (working copy) @@ -172,6 +172,13 @@ END_OF_MODULE = 0 }; +enum TransliterationModulesNewExtra +{ + /// Transliterate a string from upper case to lower case + SENTENCE_CASE = 200, + END_OF_MODULE = 0 +}; + //============================================================================= }; }; }; }; Index: offapi/com/sun/star/style/CaseMap.idl =================================================================== --- offapi/com/sun/star/style/CaseMap.idl (revision 268546) +++ offapi/com/sun/star/style/CaseMap.idl (working copy) @@ -78,6 +78,9 @@ */ const short SMALLCAPS = 4; + /** The first character of each first word of each sentence is put in upper case. + */ + const short SENTENCE = 5; }; //============================================================================= Index: configmgr/qa/unit/data/org/openoffice/UI/GenericCommands.xcu =================================================================== --- configmgr/qa/unit/data/org/openoffice/UI/GenericCommands.xcu (revision 268546) +++ configmgr/qa/unit/data/org/openoffice/UI/GenericCommands.xcu (working copy) @@ -2097,6 +2097,11 @@ ~Lowercase + + + ~Sentence Case + + H~alf-width Index: unotools/source/i18n/transliterationwrapper.cxx =================================================================== --- unotools/source/i18n/transliterationwrapper.cxx (revision 268546) +++ unotools/source/i18n/transliterationwrapper.cxx (working copy) @@ -40,6 +40,13 @@ #include #include +#ifndef _COM_SUN_STAR_I18N_TRANSLITERATIONMODULES_HDL_ +#include +#endif +#ifndef _COM_SUN_STAR_I18N_TRANSLITERATIONMODULESEXTRA_HDL_ +#include +#endif + #define TRANSLIT_LIBRARYNAME "i18n" #define TRANSLIT_SERVICENAME "com.sun.star.i18n.Transliteration" @@ -107,7 +114,7 @@ { try { - loadModuleIfNeeded( nLang ); + loadModuleIfNeeded( nLang ); if ( pOffset ) sRet = xTrans->transliterate( rStr, nStart, nLen, *pOffset ); @@ -168,14 +175,26 @@ sal_Bool bLoad = bFirstCall; bFirstCall = sal_False; - if( nLanguage != nLang ) - { - setLanguageLocaleImpl( nLang ); - if( !bLoad ) - bLoad = needLanguageForTheMode(); - } - if( bLoad ) - loadModuleImpl(); + if( nType == ::com::sun::star::i18n::TransliterationModulesExtra_SENTENCE_CASE ) + { + if( bLoad ) + { + loadModuleByImplName(String::CreateFromAscii("SENTENCE_CASE"), nLang); + } + } + else + { + if( nLanguage != nLang ) + { + setLanguageLocaleImpl( nLang ); + if( !bLoad ) + bLoad = needLanguageForTheMode(); + } + if( bLoad ) + { + loadModuleImpl(); + } + } } @@ -187,8 +206,10 @@ try { if ( xTrans.is() ) - xTrans->loadModule( (TransliterationModules)nType, aLocale ); - } + { + xTrans->loadModule( (TransliterationModules)nType, aLocale ); + } + } catch ( Exception& e ) { #ifndef PRODUCT @@ -215,7 +236,7 @@ nLanguage = LANGUAGE_DONTKNOW; if ( xTrans.is() ) xTrans->loadModuleByImplName( rModuleName, aLocale ); - } + } catch ( Exception& e ) { #ifndef PRODUCT Index: officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu =================================================================== --- officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu (revision 268546) +++ officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu (working copy) @@ -2122,6 +2122,14 @@ 1 + + + ~Sentence case + + + 1 + + H~alf-width Index: svx/sdi/svxitems.sdi =================================================================== --- svx/sdi/svxitems.sdi (revision 268546) +++ svx/sdi/svxitems.sdi (working copy) @@ -170,6 +170,7 @@ SVX_CASEMAP_VERSALIEN, SVX_CASEMAP_GEMEINE, SVX_CASEMAP_TITEL, + SVX_CASEMAP_SENTENCE, SVX_CASEMAP_KAPITAELCHEN, SVX_CASEMAP_END }; Index: svx/sdi/svx.sdi =================================================================== --- svx/sdi/svx.sdi (revision 268546) +++ svx/sdi/svx.sdi (working copy) @@ -1483,6 +1483,31 @@ ] //-------------------------------------------------------------------------- +SfxVoidItem ChangeCaseToSentenceCase SID_TRANSLITERATE_SENTENCE_CASE +() +[ + /* flags: */ + AutoUpdate = TRUE, + Cachable = Cachable, + FastCall = TRUE, + HasCoreId = FALSE, + HasDialog = FALSE, + ReadOnlyDoc = FALSE, + Toggle = FALSE, + Container = FALSE, + RecordAbsolute = FALSE, + RecordPerSet; + Asynchron; + + /* config: */ + AccelConfig = TRUE, + MenuConfig = TRUE, + StatusBarConfig = FALSE, + ToolBoxConfig = TRUE, + GroupId = GID_FORMAT; +] + +//-------------------------------------------------------------------------- SfxVoidItem ChangeCaseToUpper SID_TRANSLITERATE_UPPER () [ Index: svx/source/items/svxfont.cxx =================================================================== --- svx/source/items/svxfont.cxx (revision 268546) +++ svx/source/items/svxfont.cxx (working copy) @@ -176,15 +176,47 @@ bBlank = TRUE; else { + String aTemp( aTxt.GetChar( i ) ); if( bBlank ) + { + aCharClass.toUpper( aTemp ); + bBlank = FALSE; + + } + else { - String aTemp( aTxt.GetChar( i ) ); + aCharClass.toLower( aTemp ); + } + aTxt.Replace( i, 1, aTemp ); + + } + } + break; + } + case SVX_CASEMAP_SENTENCE: + { + // SENTENCE CASE + BOOL bPoint = TRUE; + + for( USHORT i = 0; i < aTxt.Len(); ++i ) + { + sal_Unicode c = aTxt.GetChar(i); + if( sal_Unicode('.') == c || sal_Unicode('!') == c || sal_Unicode('?') == c ) + bPoint = TRUE; + else if( sal_Unicode(' ') == c || sal_Unicode('\t') == c ) + ; + else + { + if( bPoint ) + { + String aTemp( c ); aCharClass.toUpper( aTemp ); aTxt.Replace( i, 1, aTemp ); } - bBlank = FALSE; + bPoint = FALSE; } } + break; } default: Index: svx/source/items/textitem.cxx =================================================================== --- svx/source/items/textitem.cxx (revision 268546) +++ svx/source/items/textitem.cxx (working copy) @@ -2378,6 +2378,7 @@ case SVX_CASEMAP_VERSALIEN : nRet = style::CaseMap::UPPERCASE; break; case SVX_CASEMAP_GEMEINE : nRet = style::CaseMap::LOWERCASE; break; case SVX_CASEMAP_TITEL : nRet = style::CaseMap::TITLE ; break; + case SVX_CASEMAP_SENTENCE : nRet = style::CaseMap::SENTENCE ; break; case SVX_CASEMAP_KAPITAELCHEN: nRet = style::CaseMap::SMALLCAPS; break; } rVal <<= (sal_Int16)(nRet); @@ -2398,6 +2399,7 @@ case style::CaseMap::UPPERCASE: nVal = SVX_CASEMAP_VERSALIEN ; break; case style::CaseMap::LOWERCASE: nVal = SVX_CASEMAP_GEMEINE ; break; case style::CaseMap::TITLE : nVal = SVX_CASEMAP_TITEL ; break; + case style::CaseMap::SENTENCE : nVal = SVX_CASEMAP_SENTENCE ; break; case style::CaseMap::SMALLCAPS: nVal = SVX_CASEMAP_KAPITAELCHEN; break; } SetValue(nVal); Index: svx/source/dialog/chardlg.src =================================================================== --- svx/source/dialog/chardlg.src (revision 268546) +++ svx/source/dialog/chardlg.src (working copy) @@ -402,6 +402,7 @@ < "Lowercase" ; Default ; > ; < "Title" ; Default ; > ; < "Small capitals" ; Default ; > ; + < "Sentence" ; Default ; > ; }; }; FixedText FT_RELIEF Index: svx/inc/globlmn_tmpl.hrc =================================================================== --- svx/inc/globlmn_tmpl.hrc (revision 268546) +++ svx/inc/globlmn_tmpl.hrc (working copy) @@ -1355,6 +1355,13 @@ };\ MenuItem\ {\ + Identifier = SID_TRANSLITERATE_SENTENCE_CASE; \ + Command = ".uno:ChangeCaseToSentenceCase" ; \ + HelpID = SID_TRANSLITERATE_SENTENCE_CASE; \ + Text [ en-US ] = "~Sentence case";\ + };\ + MenuItem\ + {\ Identifier = SID_TRANSLITERATE_HALFWIDTH; \ Command = ".uno:ChangeCaseToHalfWidth" ; \ HelpID = SID_TRANSLITERATE_HALFWIDTH; \ Index: svx/inc/svx/svxids.hrc =================================================================== --- svx/inc/svx/svxids.hrc (revision 268546) +++ svx/inc/svx/svxids.hrc (working copy) @@ -1348,8 +1348,10 @@ #define SID_RECHECK_DOCUMENT (SID_SVX_START+1091) #define SID_ATTR_PARA_OUTLINE_LEVEL (SID_SVX_START+1092) +#define SID_TRANSLITERATE_SENTENCE_CASE ( SID_SVX_START + 1093 ) + // IMPORTANT NOTE: adjust SID_SVX_FIRSTFREE, when adding new slot id -#define SID_SVX_FIRSTFREE SID_ATTR_PARA_OUTLINE_LEVEL + 1 +#define SID_SVX_FIRSTFREE SID_TRANSLITERATE_SENTENCE_CASE + 1 // -------------------------------------------------------------------------- // Overflow check for slot IDs Index: svx/inc/svx/svxenum.hxx =================================================================== --- svx/inc/svx/svxenum.hxx (revision 268546) +++ svx/inc/svx/svxenum.hxx (working copy) @@ -39,6 +39,7 @@ SVX_CASEMAP_GEMEINE, SVX_CASEMAP_TITEL, SVX_CASEMAP_KAPITAELCHEN, + SVX_CASEMAP_SENTENCE, SVX_CASEMAP_END };