23 #include <rtl/ustrbuf.hxx>
32 #include <editeng/editeng.hxx>
44 #include <com/sun/star/i18n/TextConversionOption.hpp>
45 #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
46 #include <com/sun/star/lang/XInitialization.hpp>
47 #include <com/sun/star/beans/XPropertySet.hpp>
48 #include <com/sun/star/awt/XWindow.hpp>
49 #include <com/sun/star/uno/XComponentContext.hpp>
60 #define ShellClass_SwDrawTextShell
62 #include <swslots.hxx>
81 GetStaticInterface()->RegisterPopupMenu(
"drawtext");
83 GetStaticInterface()->RegisterObjectBar(
SFX_OBJECTBAR_OBJECT, SfxVisibilityFlags::Invisible, ToolbarId::Draw_Text_Toolbox_Sw);
85 GetStaticInterface()->RegisterChildWindow(SvxFontWorkChildWindow::GetChildWindowId());
99 nCtrl |= EEControlBits::AUTOCORRECT;
106 if(pVOpt->IsOnlineSpell())
108 nCtrl |= EEControlBits::ONLINESPELLING|EEControlBits::ALLOWBIGOBJS;
113 pOutliner->SetControlWord(nCtrl);
133 if (
GetView().GetCurShell() ==
this )
180 pVFrame->
SetChildWindow(SvxFontWorkChildWindow::GetChildWindowId(),
181 static_cast<const SfxBoolItem&>( (rReq.
GetArgs()->
182 Get(SID_FONTWORK))).GetValue());
192 const sal_uInt16
nId = SvxFontWorkChildWindow::GetChildWindowId();
217 rTempView.AttrChangedNotify(
nullptr);
237 const bool bDeactivate(
276 case SID_HANGUL_HANJA_CONVERSION:
278 i18n::TextConversionOption::CHARACTER_BY_CHARACTER,
true,
false);
281 case SID_CHINESE_CONVERSION:
288 Reference<lang::XMultiComponentFactory> xMCF(xContext->getServiceManager());
292 Reference<ui::dialogs::XExecutableDialog> xDialog(
293 xMCF->createInstanceWithContext(
"com.sun.star.linguistic2.ChineseTranslationDialog", xContext), UNO_QUERY);
295 Reference<lang::XInitialization> xInit(xDialog, UNO_QUERY);
303 {
"ParentWindow",
uno::Any(Reference<awt::XWindow>())}
305 xInit->initialize( aSequence );
308 sal_Int16 nDialogRet = xDialog->execute();
312 bool bToSimplified =
true;
313 bool bUseVariants =
true;
314 bool bCommonTerms =
true;
316 if (xPropertySet.is())
320 xPropertySet->getPropertyValue(
"IsDirectionToSimplified") >>= bToSimplified;
321 xPropertySet->getPropertyValue(
"IsUseCharacterVariants") >>= bUseVariants;
322 xPropertySet->getPropertyValue(
"IsTranslateCommonTerms") >>= bCommonTerms;
332 sal_Int32 nOptions = bUseVariants ? i18n::TextConversionOption::USE_CHARACTER_VARIANTS : 0;
334 nOptions = nOptions | i18n::TextConversionOption::CHARACTER_BY_CHARACTER;
338 pOutlinerView->
StartTextConversion(nSourceLang, nTargetLang, &aTargetFont, nOptions,
false,
false);
343 xComponent->dispose();
348 OSL_ENSURE(
false,
"unexpected slot-id");
360 case FN_INSERT_SOFT_HYPHEN:
361 case FN_INSERT_HARDHYPHEN:
362 case FN_INSERT_HARD_SPACE:
363 case FN_INSERT_NNBSP:
364 case SID_INSERT_RLM :
365 case SID_INSERT_LRM :
366 case SID_INSERT_ZWNBSP :
367 case SID_INSERT_ZWSP:
375 case FN_INSERT_NNBSP: cIns =
CHAR_NNBSP;
break;
376 case SID_INSERT_RLM : cIns =
CHAR_RLM ;
break;
377 case SID_INSERT_LRM : cIns =
CHAR_LRM ;
break;
378 case SID_INSERT_ZWSP : cIns =
CHAR_ZWSP ;
break;
393 sal_uInt16 nSlot = rReq.
GetSlot();
408 sal_Int32 nParaCount = pOutliner->GetParagraphCount();
415 case FN_FORMAT_RESET:
442 sal_uInt16 nResult = pDlg->Execute();
449 rReq.
Done(*(pDlg->GetOutputItemSet()));
454 case SID_TABLE_VERT_NONE:
455 case SID_TABLE_VERT_CENTER:
456 case SID_TABLE_VERT_BOTTOM:
458 sal_uInt16 nSId = rReq.
GetSlot();
462 if (nSId == SID_TABLE_VERT_CENTER)
464 else if (nSId == SID_TABLE_VERT_BOTTOM)
478 OSL_ENSURE(
false,
"unexpected slot-id");
495 bool bCallBase =
true;
505 if( SfxItemState::SET == pArgs->
GetItemState( nId,
false, &pItem ) &&
512 if( SID_UNDO == nId )
514 pUndoManager->
Undo();
517 pUndoManager->
Redo();
546 case SID_GETUNDOSTRINGS:
547 case SID_GETREDOSTRINGS:
552 OUString (
SfxUndoManager::*fnGetComment)( size_t,
bool const )
const;
555 if( SID_GETUNDOSTRINGS == nWhich )
567 OUStringBuffer sList;
568 for( sal_uInt16
n = 0;
n < nCount; ++
n )
572 aItem.
SetString( sList.makeStringAndClear() );
588 pUndoManager->SetView(
nullptr);
601 using namespace i18n;
607 case SID_TRANSLITERATE_SENTENCE_CASE:
608 nMode = TransliterationFlags::SENTENCE_CASE;
610 case SID_TRANSLITERATE_TITLE_CASE:
611 nMode = TransliterationFlags::TITLE_CASE;
613 case SID_TRANSLITERATE_TOGGLE_CASE:
614 nMode = TransliterationFlags::TOGGLE_CASE;
616 case SID_TRANSLITERATE_UPPER:
617 nMode = TransliterationFlags::LOWERCASE_UPPERCASE;
619 case SID_TRANSLITERATE_LOWER:
620 nMode = TransliterationFlags::UPPERCASE_LOWERCASE;
623 case SID_TRANSLITERATE_HALFWIDTH:
624 nMode = TransliterationFlags::FULLWIDTH_HALFWIDTH;
626 case SID_TRANSLITERATE_FULLWIDTH:
627 nMode = TransliterationFlags::HALFWIDTH_FULLWIDTH;
630 case SID_TRANSLITERATE_HIRAGANA:
631 nMode = TransliterationFlags::KATAKANA_HIRAGANA;
633 case SID_TRANSLITERATE_KATAKANA:
634 nMode = TransliterationFlags::HIRAGANA_KATAKANA;
638 OSL_ENSURE(
false,
"wrong dispatcher");
641 if( nMode != TransliterationFlags::NONE )
654 if( rReq.
GetSlot() == SID_TRANSLITERATE_ROTATE_CASE )
694 std::shared_ptr<SvxFontItem> aSetDlgFont(std::make_shared<SvxFontItem>(
RES_CHRATR_FONT));
697 aSetItem.GetItemSet().Put( aSet,
false );
698 const SfxPoolItem* pI = aSetItem.GetItemOfScript( nScript );
700 aSetDlgFont.reset(static_cast<SvxFontItem*>(pI->
Clone()));
705 if (sFontName.isEmpty())
706 sFontName = aSetDlgFont->GetFamilyName();
717 if( !sSymbolFont.isEmpty() )
720 aAllSet.
Put(
SfxStringItem( SID_FONT_NAME, aSetDlgFont->GetFamilyName() ) );
733 pOutliner->SetUpdateMode(
false);
741 aFontSet.Set( aOldSet );
747 SfxItemSet aFontAttribSet( *aFontSet.GetPool(), aFontSet.GetRanges() );
753 if( SvtScriptType::LATIN & nScript )
754 aFontAttribSet.Put( aFontItem );
755 if( SvtScriptType::ASIAN & nScript )
757 aFontItem.SetWhich(EE_CHAR_FONTINFO_CJK);
758 aFontAttribSet.Put( aFontItem );
760 if( SvtScriptType::COMPLEX & nScript )
763 aFontAttribSet.Put( aFontItem );
770 aSel.nStartPos = aSel.nEndPos;
777 pOutliner->SetUpdateMode(
true);
792 return &pOutliner->GetUndoManager();
813 case SID_TABLE_VERT_NONE:
814 case SID_TABLE_VERT_CENTER:
815 case SID_TABLE_VERT_BOTTOM:
816 bool bContour =
false;
818 if( eConState != SfxItemState::DONTCARE )
828 if(SfxItemState::DONTCARE != eVState)
const SfxPoolItem * ExecuteSlot(SfxRequest &rReq, const SfxInterface *pIF=nullptr)
SfxViewFrame * GetViewFrame() const
constexpr TypedWhichId< XFormTextHideFormItem > XATTR_FORMTXTHIDEFORM(XATTR_TEXT_FIRST+10)
void GetFormTextState(SfxItemSet &rSet)
static vcl::Font GetDefaultFont(DefaultFontType nType, LanguageType eLang, GetDefaultFontFlags nFlags, const OutputDevice *pOutDev=nullptr)
constexpr TypedWhichId< SvxFontItem > EE_CHAR_FONTINFO_CJK(EE_CHAR_START+17)
void ExecTransliteration(SfxRequest const &)
EESpellState StartThesaurus()
void ExecUndo(SfxRequest &rReq)
size_t GetMarkCount() const
virtual SdrEndTextEditKind SdrEndTextEdit(bool bDontDeleteReally=false)
const OUString & GetFamilyName() const
#define SFX_IMPL_INTERFACE(Class, SuperClass)
void InsertText(const OUString &rNew, bool bSelect=false)
void RemoveAttribsKeepLanguages(bool bRemoveParaAttribs)
const OUString & GetStyleName() const
void ExecRotateTransliteration(SfxRequest const &)
virtual SfxPoolItem * Clone(SfxItemPool *pPool=nullptr) const =0
tools::Rectangle const & GetOutputArea() const
bool AreObjectsMarked() const
constexpr TypedWhichId< XFormTextOutlineItem > XATTR_FORMTXTOUTLINE(XATTR_TEXT_FIRST+5)
void ShowCursor(bool bGotoCursor=true, bool bActivate=false)
static SvxAbstractDialogFactory * Create()
void ExecFontWork(SfxRequest const &rReq)
constexpr TypedWhichId< SdrOnOffItem > SDRATTR_TEXT_CONTOURFRAME(SDRATTR_MISC_FIRST+21)
Reference< XFrame > xFrame
void StateFontWork(SfxItemSet &rSet)
SvtScriptType GetAllScriptsOfText(const OUString &rText) const
void TransliterateText(TransliterationFlags nTransliterationMode)
void Done(bool bRemove=false)
SdrMark * GetMark(size_t nNum) const
void RemoveFields(const std::function< bool(const SvxFieldData *)> &isFieldData=[](const SvxFieldData *){return true;})
const SfxItemSet * GetArgs() const
void Invalidate(sal_uInt16 nId)
constexpr TypedWhichId< SvxFontItem > RES_CHRATR_FONT(7)
virtual bool HasText() const override
constexpr TypedWhichId< XFormTextDistanceItem > XATTR_FORMTXTDISTANCE(XATTR_TEXT_FIRST+2)
FontFamily GetFamilyType()
SwWrtShell & GetWrtShell() const
Used by the UI to modify the document model.
void ToggleChildWindow(sal_uInt16)
const SwView & GetView() const
void ExecDraw(SfxRequest &)
constexpr TypedWhichId< SvxFontItem > EE_CHAR_FONTINFO_CTL(EE_CHAR_START+18)
SfxFrame & GetFrame() const
void SelectRange(sal_Int32 nFirst, sal_Int32 nCount)
void GetStatePropPanelAttr(SfxItemSet &)
void SetUndoManager(SfxUndoManager *pNewUndoMgr)
virtual size_t GetRedoActionCount(bool const i_currentLevel=CurrentLevel) const
constexpr TypedWhichId< XFormTextStyleItem > XATTR_FORMTXTSTYLE(XATTR_TEXT_FIRST)
EditView & GetEditView() const
void StateUndo(SfxItemSet &rSet)
SfxItemPool & GetPool() const
static void StateDisableItems(SfxItemSet &)
SdrObject * GetMarkedSdrObj() const
weld::Window * GetFrameWeld(const SfxFrame *pFrame)
const SfxItemPool & GetAttrPool() const
const SdrOutliner * GetTextEditOutliner() const
RotateTransliteration m_aRotateCase
void SetAttribs(const SfxItemSet &)
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
const SfxPoolItem * GetSlotState(sal_uInt16 nSlotId, const SfxInterface *pIF=nullptr, SfxItemSet *pStateSet=nullptr)
css::uno::Sequence< css::uno::Any > InitAnyPropertySequence(::std::initializer_list< ::std::pair< OUString, css::uno::Any > > vInit)
EditEngine * GetEditEngine() const
void ExecFormText(SfxRequest const &rReq)
SfxBindings & GetBindings()
constexpr TypedWhichId< SdrTextVertAdjustItem > SDRATTR_TEXT_VERTADJUST(SDRATTR_MISC_FIRST+8)
const OUString & GetValue() const
const SdrMarkList & GetMarkedObjectList() const
bool SetAttributes(const SfxItemSet &rSet, bool bReplaceAll=false)
void SetPool(SfxItemPool *pNewPool)
static sal_Int16 GetI18NScriptTypeOfLanguage(LanguageType nLang)
SvtScriptType GetSelectedScriptType() const
exports com.sun.star. i18n
sal_uInt16 GetWhichOfScript(sal_uInt16 nWhich, sal_uInt16 nScript)
TransliterationFlags getNextMode()
const OutlinerView * GetTextEditOutlinerView() const
#define LANGUAGE_CHINESE_SIMPLIFIED
void SetString(const OUString &)
Outliner * GetOutliner() const
virtual VclPtr< SfxAbstractDialog > CreateCharMapDialog(weld::Window *pParent, const SfxItemSet &rAttr, const css::uno::Reference< css::frame::XFrame > &rFrame)=0
#define FN_DRAWTEXT_ATTR_DLG
sal_uInt16 GetSlotId(sal_uInt16 nWhich) const
constexpr TypedWhichId< XFormTextShadowXValItem > XATTR_FORMTXTSHDWXVAL(XATTR_TEXT_FIRST+8)
constexpr TypedWhichId< XFormTextShadowItem > XATTR_FORMTXTSHADOW(XATTR_TEXT_FIRST+6)
void SetName(const OUString &rName)
constexpr TypedWhichId< XFormTextAdjustItem > XATTR_FORMTXTADJUST(XATTR_TEXT_FIRST+1)
void HideCursor(bool bDeactivate=false)
virtual size_t GetUndoActionCount(bool const i_currentLevel=CurrentLevel) const
const css::uno::Reference< css::frame::XFrame > & GetFrameInterface() const
const OUString & GetSymbolFont() const
#define SFX_OBJECTBAR_OBJECT
ESelection GetSelection() const
virtual VclPtr< SfxAbstractTabDialog > CreateTextTabDialog(weld::Window *pParent, const SfxItemSet *pAttrSet, SdrView *pView)=0
SfxItemPool * GetSecondaryPool() const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
OUString GetUndoActionComment(size_t nNo=0, bool const i_currentLevel=CurrentLevel) const
sal_uInt16 GetSlot() const
static const OUString & GetContextName(const Context eContext)
void SetSelection(const ESelection &)
constexpr TypedWhichId< XFormTextStartItem > XATTR_FORMTXTSTART(XATTR_TEXT_FIRST+3)
virtual bool IsTextEdit() const final override
void DisableItem(sal_uInt16 nWhich)
weld::Window * GetFrameWeld() const
OUString GetRedoActionComment(size_t nNo=0, bool const i_currentLevel=CurrentLevel) const
const SwViewOption * GetViewOptions() const
constexpr TypedWhichId< XFormTextShadowYValItem > XATTR_FORMTXTSHDWYVAL(XATTR_TEXT_FIRST+9)
void GetAttributes(SfxItemSet &rTargetSet, bool bOnlyHardAttr=false) const
LanguageType GetAppLanguage()
void SetChildWindow(sal_uInt16 nId, bool bVisible, bool bSetFocus=true)
SwDrawTextShell(SwView &rView)
void ExecDrawLingu(SfxRequest const &rReq)
void EndTextEdit()
Deletes object if required.
Reference< XComponentContext > getProcessComponentContext()
void SetAttrToMarked(const SfxItemSet &rAttr)
constexpr TypedWhichId< SvxFontItem > EE_CHAR_FONTINFO(EE_CHAR_START+1)
virtual void SetView(SwView *pView)=0
Return undo/redo info for this view.
virtual SfxInterface * GetInterface() const
void StartTextConversion(LanguageType nSrcLang, LanguageType nDestLang, const vcl::Font *pDestFont, sal_Int32 nOptions, bool bIsInteractive, bool bMultipleDoc)
void InvalidateAll(bool bWithMsg)
void AppendItem(const SfxPoolItem &)
#define LANGUAGE_CHINESE_TRADITIONAL
SVXCORE_DLLPUBLIC MSO_SPT Get(const OUString &)
const SfxItemPool & GetItemPool() const
void InsertSymbol(SfxRequest &rReq)
constexpr TypedWhichId< XFormTextMirrorItem > XATTR_FORMTXTMIRROR(XATTR_TEXT_FIRST+4)
SdrModel * GetModel() const
void SetContextName(const OUString &rsContextName)
static bool IsWhich(sal_uInt16 nId)
rtl_TextEncoding GetCharSet() const
virtual ~SwDrawTextShell() override
constexpr TypedWhichId< XFormTextShadowColorItem > XATTR_FORMTXTSHDWCOLOR(XATTR_TEXT_FIRST+7)
virtual SfxUndoManager * GetUndoManager() override
static bool const TopLevel