LibreOffice Module sc (master) 1
viewutil.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#include <scitems.hxx>
21#include <sfx2/bindings.hxx>
22#include <sfx2/viewsh.hxx>
23#include <sfx2/dispatch.hxx>
24#include <editeng/fontitem.hxx>
25#include <editeng/langitem.hxx>
28#include <svl/itempool.hxx>
29#include <svl/itemset.hxx>
30#include <svl/cjkoptions.hxx>
31#include <svl/ctloptions.hxx>
32#include <vcl/svapp.hxx>
33#include <vcl/settings.hxx>
34#include <sfx2/objsh.hxx>
35#include <sfx2/viewfrm.hxx>
36#include <svl/eitem.hxx>
37#include <osl/diagnose.h>
38
39#include <viewutil.hxx>
40#include <chgtrack.hxx>
41#include <chgviset.hxx>
42#include <markdata.hxx>
43#include <document.hxx>
44#include <tabvwsh.hxx>
45
46#include <svx/svxdlg.hxx>
47#include <svx/svxids.hrc>
48#include <memory>
49
50void ScViewUtil::PutItemScript( SfxItemSet& rShellSet, const SfxItemSet& rCoreSet,
51 sal_uInt16 nWhichId, SvtScriptType nScript )
52{
53 // take the effective item from rCoreSet according to nScript
54 // and put in rShellSet under the (base) nWhichId
55
56 SfxItemPool& rPool = *rShellSet.GetPool();
57 SvxScriptSetItem aSetItem( rPool.GetSlotId(nWhichId), rPool );
58 // use PutExtended with eDefaultAs = SfxItemState::SET, so defaults from rCoreSet
59 // (document pool) are read and put into rShellSet (MessagePool)
60 aSetItem.GetItemSet().PutExtended( rCoreSet, SfxItemState::DONTCARE, SfxItemState::SET );
61 const SfxPoolItem* pI = aSetItem.GetItemOfScript( nScript );
62 if (pI)
63 {
64 rShellSet.Put( pI->CloneSetWhich(nWhichId) );
65 }
66 else
67 rShellSet.InvalidateItem( nWhichId );
68}
69
71{
72 // used for thesaurus
73
74 SvtScriptType nScript = rDoc.GetScriptType(rPos.Col(), rPos.Row(), rPos.Tab());
75 sal_uInt16 nWhich = ( nScript == SvtScriptType::ASIAN ) ? ATTR_CJK_FONT_LANGUAGE :
76 ( ( nScript == SvtScriptType::COMPLEX ) ? ATTR_CTL_FONT_LANGUAGE : ATTR_FONT_LANGUAGE );
77 const SfxPoolItem* pItem = rDoc.GetAttr( rPos.Col(), rPos.Row(), rPos.Tab(), nWhich);
78 const SvxLanguageItem* pLangIt = dynamic_cast<const SvxLanguageItem*>( pItem );
79 LanguageType eLnge;
80 if (pLangIt)
81 {
82 eLnge = pLangIt->GetValue();
83 if (eLnge == LANGUAGE_DONTKNOW)
84 {
85 LanguageType eLatin, eCjk, eCtl;
86 rDoc.GetLanguage( eLatin, eCjk, eCtl );
87 eLnge = ( nScript == SvtScriptType::ASIAN ) ? eCjk :
88 ( ( nScript == SvtScriptType::COMPLEX ) ? eCtl : eLatin );
89 }
90 }
91 else
92 eLnge = LANGUAGE_ENGLISH_US;
93 if ( eLnge == LANGUAGE_SYSTEM )
94 eLnge = Application::GetSettings().GetLanguageTag().getLanguageType(); // never use SYSTEM for spelling
95
96 return eLnge;
97}
98
100{
101 TransliterationFlags nType = TransliterationFlags::NONE;
102 switch ( nSlotID )
103 {
104 case SID_TRANSLITERATE_SENTENCE_CASE:
105 nType = TransliterationFlags::SENTENCE_CASE;
106 break;
107 case SID_TRANSLITERATE_TITLE_CASE:
108 nType = TransliterationFlags::TITLE_CASE;
109 break;
110 case SID_TRANSLITERATE_TOGGLE_CASE:
111 nType = TransliterationFlags::TOGGLE_CASE;
112 break;
113 case SID_TRANSLITERATE_UPPER:
114 nType = TransliterationFlags::LOWERCASE_UPPERCASE;
115 break;
116 case SID_TRANSLITERATE_LOWER:
117 nType = TransliterationFlags::UPPERCASE_LOWERCASE;
118 break;
119 case SID_TRANSLITERATE_HALFWIDTH:
120 nType = TransliterationFlags::FULLWIDTH_HALFWIDTH;
121 break;
122 case SID_TRANSLITERATE_FULLWIDTH:
123 nType = TransliterationFlags::HALFWIDTH_FULLWIDTH;
124 break;
125 case SID_TRANSLITERATE_HIRAGANA:
126 nType = TransliterationFlags::KATAKANA_HIRAGANA;
127 break;
128 case SID_TRANSLITERATE_KATAKANA:
129 nType = TransliterationFlags::HIRAGANA_KATAKANA;
130 break;
131 }
132 return nType;
133}
134
136 const ScChangeViewSettings& rSettings,
137 ScDocument& rDocument )
138{
139 // discarded are displayed as inverted accepted action, because of this
140 // order of ShowRejected/ShowAccepted is important
141
142 if ( !rSettings.IsShowRejected() && rAction.IsRejecting() )
143 return false;
144
145 if ( !rSettings.IsShowAccepted() && rAction.IsAccepted() && !rAction.IsRejecting() )
146 return false;
147
148 if ( rSettings.HasAuthor() && rAction.GetUser() != rSettings.GetTheAuthorToShow() )
149 return false;
150
151 if ( rSettings.HasComment() )
152 {
153 OUString aTmp = rAction.GetDescription(rDocument);
154 OUString aComStr = rAction.GetComment() + " (" + aTmp + ")";
155
156 if(!rSettings.IsValidComment(&aComStr))
157 return false;
158 }
159
160 if ( rSettings.HasRange() )
161 if ( !rSettings.GetTheRangeList().Intersects( rAction.GetBigRange().MakeRange( rDocument ) ) )
162 return false;
163
164 if (rSettings.HasDate() && rSettings.GetTheDateMode() != SvxRedlinDateMode::NONE)
165 {
166 DateTime aDateTime = rAction.GetDateTime();
167 const DateTime& rFirst = rSettings.GetTheFirstDateTime();
168 const DateTime& rLast = rSettings.GetTheLastDateTime();
169 switch ( rSettings.GetTheDateMode() )
170 { // corresponds with ScHighlightChgDlg::OKBtnHdl
171 case SvxRedlinDateMode::BEFORE:
172 if ( aDateTime > rFirst )
173 return false;
174 break;
175
176 case SvxRedlinDateMode::SINCE:
177 if ( aDateTime < rFirst )
178 return false;
179 break;
180
181 case SvxRedlinDateMode::EQUAL:
182 case SvxRedlinDateMode::BETWEEN:
183 if ( aDateTime < rFirst || aDateTime > rLast )
184 return false;
185 break;
186
187 case SvxRedlinDateMode::NOTEQUAL:
188 if ( aDateTime >= rFirst && aDateTime <= rLast )
189 return false;
190 break;
191
192 case SvxRedlinDateMode::SAVE:
193 {
194 ScChangeTrack* pTrack = rDocument.GetChangeTrack();
195 if ( !pTrack || pTrack->GetLastSavedActionNumber() >=
196 rAction.GetActionNumber() )
197 return false;
198 }
199 break;
200
201 default:
202 {
203 // added to avoid warnings
204 }
205 }
206 }
207
208 if ( rSettings.HasActionRange() )
209 {
210 sal_uLong nAction = rAction.GetActionNumber();
211 sal_uLong nFirstAction;
212 sal_uLong nLastAction;
213 rSettings.GetTheActionRange( nFirstAction, nLastAction );
214 if ( nAction < nFirstAction || nAction > nLastAction )
215 {
216 return false;
217 }
218 }
219
220 return true;
221}
222
224{
225 rMark.MarkToMulti();
226
227 const ScRange& aMultiArea = rMark.GetMultiMarkArea();
228 SCCOL nStartCol = aMultiArea.aStart.Col();
229 SCROW nStartRow = aMultiArea.aStart.Row();
230 SCCOL nEndCol = aMultiArea.aEnd.Col();
231 SCROW nEndRow = aMultiArea.aEnd.Row();
232
233 bool bChanged = false;
234 for (const SCTAB& nTab : rMark)
235 {
236 for (SCROW nRow = nStartRow; nRow <= nEndRow; ++nRow)
237 {
238 SCROW nLastRow = nRow;
239 if (rDoc.RowFiltered(nRow, nTab, nullptr, &nLastRow))
240 {
241 // use nStartCol/nEndCol, so the multi mark area isn't extended to all columns
242 // (visible in repaint for indentation)
243 rMark.SetMultiMarkArea(
244 ScRange(nStartCol, nRow, nTab, nEndCol, nLastRow, nTab), false);
245 bChanged = true;
246 nRow = nLastRow;
247 }
248 }
249 }
250
251 if ( bChanged && !rMark.HasAnyMultiMarks() )
252 rMark.ResetMark();
253
254 rMark.MarkToSimple();
255}
256
257bool ScViewUtil::FitToUnfilteredRows( ScRange & rRange, const ScDocument& rDoc, size_t nRows )
258{
259 SCTAB nTab = rRange.aStart.Tab();
260 bool bOneTabOnly = (nTab == rRange.aEnd.Tab());
261 // Always fit the range on its first sheet.
262 OSL_ENSURE( bOneTabOnly, "ScViewUtil::ExtendToUnfilteredRows: works only on one sheet");
263 SCROW nStartRow = rRange.aStart.Row();
264 SCROW nLastRow = rDoc.LastNonFilteredRow(nStartRow, rDoc.MaxRow(), nTab);
265 if (rDoc.ValidRow(nLastRow))
266 rRange.aEnd.SetRow(nLastRow);
267 SCROW nCount = rDoc.CountNonFilteredRows(nStartRow, rDoc.MaxRow(), nTab);
268 return static_cast<size_t>(nCount) == nRows && bOneTabOnly;
269}
270
271bool ScViewUtil::HasFiltered( const ScRange& rRange, const ScDocument& rDoc )
272{
273 SCROW nStartRow = rRange.aStart.Row();
274 SCROW nEndRow = rRange.aEnd.Row();
275 for (SCTAB nTab=rRange.aStart.Tab(); nTab<=rRange.aEnd.Tab(); nTab++)
276 {
277 if (rDoc.HasFilteredRows(nStartRow, nEndRow, nTab))
278 return true;
279 }
280
281 return false;
282}
283
284void ScViewUtil::HideDisabledSlot( SfxItemSet& rSet, SfxBindings& rBindings, sal_uInt16 nSlotId )
285{
286 SvtCTLOptions aCTLOptions;
287 bool bEnabled = true;
288
289 switch( nSlotId )
290 {
291 case SID_CHINESE_CONVERSION:
292 case SID_HANGUL_HANJA_CONVERSION:
293 bEnabled = SvtCJKOptions::IsAnyEnabled();
294 break;
295
296 case SID_TRANSLITERATE_HALFWIDTH:
297 case SID_TRANSLITERATE_FULLWIDTH:
298 case SID_TRANSLITERATE_HIRAGANA:
299 case SID_TRANSLITERATE_KATAKANA:
301 break;
302
303 case SID_INSERT_RLM:
304 case SID_INSERT_LRM:
305 bEnabled = aCTLOptions.IsCTLFontEnabled();
306 break;
307
308 default:
309 OSL_FAIL( "ScViewUtil::HideDisabledSlot - unknown slot ID" );
310 return;
311 }
312
313 rBindings.SetVisibleState( nSlotId, bEnabled );
314 if( !bEnabled )
315 rSet.DisableItem( nSlotId );
316}
317
319 const ScTabViewShell& rShell)
320{
322 SfxViewFrame& rFrame = *rShell.GetViewFrame();
323 SfxAllItemSet aSet( rFrame.GetObjectShell()->GetPool() );
324 aSet.Put( SfxBoolItem( FN_PARAM_1, false ) );
325 aSet.Put( SvxFontItem( rOldFont.GetFamily(), rOldFont.GetFamilyName(), rOldFont.GetStyleName(), rOldFont.GetPitch(), rOldFont.GetCharSet(), aSet.GetPool()->GetWhich( SID_ATTR_CHAR_FONT ) ) );
326 auto xFrame = rFrame.GetFrame().GetFrameInterface();
328 pDlg->Execute();
329}
330
331bool ScViewUtil::IsFullScreen( const SfxViewShell& rViewShell )
332{
333 SfxBindings& rBindings = rViewShell.GetViewFrame()->GetBindings();
334 std::unique_ptr<SfxBoolItem> pItem;
335 bool bIsFullScreen = false;
336
337 if (rBindings.QueryState( SID_WIN_FULLSCREEN, pItem ) >= SfxItemState::DEFAULT)
338 bIsFullScreen = pItem->GetValue();
339
340 return bIsFullScreen;
341}
342
343void ScViewUtil::SetFullScreen( const SfxViewShell& rViewShell, bool bSet )
344{
345 if( IsFullScreen( rViewShell ) != bSet )
346 {
347 SfxBoolItem aItem( SID_WIN_FULLSCREEN, bSet );
348 rViewShell.GetDispatcher()->ExecuteList(SID_WIN_FULLSCREEN,
349 SfxCallMode::RECORD, { &aItem });
350 }
351}
352
354 : nNewStartX(0)
355 , nNewStartY(0)
356 , nNewEndX(0)
357 , nNewEndY(0)
358{
359 PutInOrder( nX1, nX2 );
360 PutInOrder( nY1, nY2 );
361
362 nOldStartX = nX1;
363 nOldStartY = nY1;
364 nOldEndX = nX2;
365 nOldEndY = nY2;
366}
367
368void ScUpdateRect::SetNew( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2 )
369{
370 PutInOrder( nX1, nX2 );
371 PutInOrder( nY1, nY2 );
372
373 nNewStartX = nX1;
374 nNewStartY = nY1;
375 nNewEndX = nX2;
376 nNewEndY = nY2;
377}
378
379bool ScUpdateRect::GetDiff( SCCOL& rX1, SCROW& rY1, SCCOL& rX2, SCROW& rY2 )
380{
381 if ( nNewStartX == nOldStartX && nNewEndX == nOldEndX &&
383 {
384 rX1 = nNewStartX;
385 rY1 = nNewStartY;
386 rX2 = nNewStartX;
387 rY2 = nNewStartY;
388 return false;
389 }
390
391 rX1 = std::min(nNewStartX,nOldStartX);
392 rY1 = std::min(nNewStartY,nOldStartY);
393 rX2 = std::max(nNewEndX,nOldEndX);
394 rY2 = std::max(nNewEndY,nOldEndY);
395
396 if ( nNewStartX == nOldStartX && nNewEndX == nOldEndX )
397 {
398 if ( nNewStartY == nOldStartY )
399 {
400 rY1 = std::min( nNewEndY, nOldEndY );
401 rY2 = std::max( nNewEndY, nOldEndY );
402 }
403 else if ( nNewEndY == nOldEndY )
404 {
405 rY1 = std::min( nNewStartY, nOldStartY );
406 rY2 = std::max( nNewStartY, nOldStartY );
407 }
408 }
409 else if ( nNewStartY == nOldStartY && nNewEndY == nOldEndY )
410 {
411 if ( nNewStartX == nOldStartX )
412 {
413 rX1 = std::min( nNewEndX, nOldEndX );
414 rX2 = std::max( nNewEndX, nOldEndX );
415 }
416 else if ( nNewEndX == nOldEndX )
417 {
418 rX1 = std::min( nNewStartX, nOldStartX );
419 rX2 = std::max( nNewStartX, nOldStartX );
420 }
421 }
422
423 return true;
424}
425
426/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
void PutInOrder(T &nStart, T &nEnd)
Definition: address.hxx:150
const LanguageTag & GetLanguageTag() const
static const AllSettings & GetSettings()
LanguageType getLanguageType(bool bResolveSystem=true) const
SCTAB Tab() const
Definition: address.hxx:283
SCROW Row() const
Definition: address.hxx:274
void SetRow(SCROW nRowP)
Definition: address.hxx:287
SCCOL Col() const
Definition: address.hxx:279
ScRange MakeRange(const ScDocument &rDoc) const
Definition: bigrange.hxx:134
const OUString & GetComment() const
Definition: chgtrack.hxx:348
ScBigRange & GetBigRange()
Definition: chgtrack.hxx:229
bool IsRejecting() const
Definition: chgtrack.cxx:137
sal_uLong GetActionNumber() const
Definition: chgtrack.hxx:317
virtual OUString GetDescription(ScDocument &rDoc, bool bSplitRange=false, bool bWarning=true) const
Definition: chgtrack.cxx:420
SC_DLLPUBLIC DateTime GetDateTime() const
Definition: chgtrack.cxx:406
const OUString & GetUser() const
Definition: chgtrack.hxx:347
SC_DLLPUBLIC bool IsAccepted() const
Definition: chgtrack.cxx:127
sal_uLong GetLastSavedActionNumber() const
Definition: chgtrack.cxx:2139
const ScRangeList & GetTheRangeList() const
Definition: chgviset.hxx:109
bool IsValidComment(const OUString *pCommentStr) const
Definition: chgviset.cxx:78
bool HasAuthor() const
Definition: chgviset.hxx:92
const DateTime & GetTheFirstDateTime() const
Definition: chgviset.hxx:87
SvxRedlinDateMode GetTheDateMode() const
Definition: chgviset.hxx:84
bool IsShowRejected() const
Definition: chgviset.hxx:115
bool HasComment() const
Definition: chgviset.hxx:98
bool HasDate() const
Definition: chgviset.hxx:80
bool HasRange() const
Definition: chgviset.hxx:106
bool HasActionRange() const
Definition: chgviset.hxx:123
const DateTime & GetTheLastDateTime() const
Definition: chgviset.hxx:90
bool IsShowAccepted() const
Definition: chgviset.hxx:112
const OUString & GetTheAuthorToShow() const
Definition: chgviset.hxx:95
void GetTheActionRange(sal_uLong &nFirst, sal_uLong &nLast) const
Definition: chgviset.hxx:125
SCROW CountNonFilteredRows(SCROW nStartRow, SCROW nEndRow, SCTAB nTab) const
Definition: document.cxx:4611
bool ValidRow(SCROW nRow) const
Definition: document.hxx:899
bool HasFilteredRows(SCROW nStartRow, SCROW nEndRow, SCTAB nTab) const
Definition: document.cxx:4571
SC_DLLPUBLIC bool RowFiltered(SCROW nRow, SCTAB nTab, SCROW *pFirstRow=nullptr, SCROW *pLastRow=nullptr) const
Definition: document.cxx:4563
SC_DLLPUBLIC SCROW MaxRow() const
Definition: document.hxx:892
SCROW LastNonFilteredRow(SCROW nStartRow, SCROW nEndRow, SCTAB nTab) const
Definition: document.cxx:4603
SC_DLLPUBLIC void GetLanguage(LanguageType &rLatin, LanguageType &rCjk, LanguageType &rCtl) const
Definition: documen3.cxx:1979
SC_DLLPUBLIC SvtScriptType GetScriptType(SCCOL nCol, SCROW nRow, SCTAB nTab, const ScRefCellValue *pCell=nullptr)
Definition: documen6.cxx:132
ScChangeTrack * GetChangeTrack() const
Definition: document.hxx:2487
SC_DLLPUBLIC const SfxPoolItem * GetAttr(SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt16 nWhich) const
Definition: document.cxx:4778
todo: It should be possible to have MarkArrays for each table, in order to enable "search all" across...
Definition: markdata.hxx:43
const ScRange & GetMultiMarkArea() const
Definition: markdata.hxx:84
bool HasAnyMultiMarks() const
Definition: markdata.cxx:625
void SetMultiMarkArea(const ScRange &rRange, bool bMark=true, bool bSetupMulti=false)
Definition: markdata.cxx:107
void ResetMark()
Definition: markdata.cxx:80
void MarkToMulti()
Definition: markdata.cxx:209
void MarkToSimple()
Definition: markdata.cxx:222
bool Intersects(const ScRange &) const
Definition: rangelst.cxx:1077
ScAddress aEnd
Definition: address.hxx:498
ScAddress aStart
Definition: address.hxx:497
bool GetDiff(SCCOL &rX1, SCROW &rY1, SCCOL &rX2, SCROW &rY2)
Definition: viewutil.cxx:379
SCROW nOldEndY
Definition: viewutil.hxx:77
SCROW nNewEndY
Definition: viewutil.hxx:81
void SetNew(SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2)
Definition: viewutil.cxx:368
SCCOL nOldStartX
Definition: viewutil.hxx:74
ScUpdateRect(SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2)
Definition: viewutil.cxx:353
SCCOL nOldEndX
Definition: viewutil.hxx:76
SCROW nNewStartY
Definition: viewutil.hxx:79
SCROW nOldStartY
Definition: viewutil.hxx:75
SCCOL nNewStartX
Definition: viewutil.hxx:78
SCCOL nNewEndX
Definition: viewutil.hxx:80
static void SetFullScreen(const SfxViewShell &rViewShell, bool bSet)
Enters or leaves full screen mode at the passed view shell.
Definition: viewutil.cxx:343
static TransliterationFlags GetTransliterationType(sal_uInt16 nSlotID)
Definition: viewutil.cxx:99
static LanguageType GetEffLanguage(ScDocument &rDoc, const ScAddress &rPos)
Definition: viewutil.cxx:70
static void UnmarkFiltered(ScMarkData &rMark, const ScDocument &rDoc)
Definition: viewutil.cxx:223
static void ExecuteCharMap(const SvxFontItem &rOldFont, const ScTabViewShell &rShell)
Definition: viewutil.cxx:318
static bool FitToUnfilteredRows(ScRange &rRange, const ScDocument &rDoc, size_t nRows)
Fit a range to cover nRows number of unfiltered rows.
Definition: viewutil.cxx:257
static bool HasFiltered(const ScRange &rRange, const ScDocument &rDoc)
Definition: viewutil.cxx:271
static bool IsActionShown(const ScChangeAction &rAction, const ScChangeViewSettings &rSettings, ScDocument &rDocument)
Definition: viewutil.cxx:135
static bool IsFullScreen(const SfxViewShell &rViewShell)
Returns true, if the passed view shell is in full screen mode.
Definition: viewutil.cxx:331
static void HideDisabledSlot(SfxItemSet &rSet, SfxBindings &rBindings, sal_uInt16 nSlotId)
Definition: viewutil.cxx:284
static void PutItemScript(SfxItemSet &rShellSet, const SfxItemSet &rCoreSet, sal_uInt16 nWhichId, SvtScriptType nScript)
Definition: viewutil.cxx:50
void SetVisibleState(sal_uInt16 nId, bool bShow)
SfxItemState QueryState(sal_uInt16 nSID, std::unique_ptr< SfxPoolItem > &rpState)
const SfxPoolItem * ExecuteList(sal_uInt16 nSlot, SfxCallMode nCall, std::initializer_list< SfxPoolItem const * > args, std::initializer_list< SfxPoolItem const * > internalargs=std::initializer_list< SfxPoolItem const * >())
const css::uno::Reference< css::frame::XFrame > & GetFrameInterface() const
sal_uInt16 GetWhich(sal_uInt16 nSlot, bool bDeep=true) const
sal_uInt16 GetSlotId(sal_uInt16 nWhich) const
SfxItemPool * GetPool() const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
void DisableItem(sal_uInt16 nWhich)
void InvalidateItem(sal_uInt16 nWhich)
std::unique_ptr< SfxPoolItem > CloneSetWhich(sal_uInt16 nNewWhich) const
SfxItemPool & GetPool() const
SfxDispatcher * GetDispatcher() const
SfxBindings & GetBindings()
SfxFrame & GetFrame() const
virtual SfxObjectShell * GetObjectShell() override
weld::Window * GetFrameWeld() const
SfxViewFrame * GetViewFrame() const
bool IsCTLFontEnabled() const
virtual VclPtr< SfxAbstractDialog > CreateCharMapDialog(weld::Window *pParent, const SfxItemSet &rAttr, const css::uno::Reference< css::frame::XFrame > &rFrame)=0
static SvxAbstractDialogFactory * Create()
FontFamily GetFamily() const
FontPitch GetPitch() const
const OUString & GetStyleName() const
rtl_TextEncoding GetCharSet() const
const OUString & GetFamilyName() const
const SfxPoolItem * GetItemOfScript(SvtScriptType nScript) const
int nCount
#define LANGUAGE_SYSTEM
#define LANGUAGE_DONTKNOW
#define LANGUAGE_ENGLISH_US
SvtScriptType
bool IsChangeCaseMapEnabled()
bool IsAnyEnabled()
QPRO_FUNC_TYPE nType
Definition: qproform.cxx:398
constexpr TypedWhichId< SvxLanguageItem > ATTR_CTL_FONT_LANGUAGE(120)
constexpr TypedWhichId< SvxLanguageItem > ATTR_FONT_LANGUAGE(110)
constexpr TypedWhichId< SvxLanguageItem > ATTR_CJK_FONT_LANGUAGE(115)
static SfxItemSet & rSet
sal_uIntPtr sal_uLong
Reference< XFrame > xFrame
TransliterationFlags
sal_Int16 SCTAB
Definition: types.hxx:22
sal_Int16 SCCOL
Definition: types.hxx:21
sal_Int32 SCROW
Definition: types.hxx:17