LibreOffice Module sfx2 (master) 1
charmapcontrol.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
21#include <officecfg/Office/Common.hxx>
22#include <charmapcontrol.hxx>
23#include <charmappopup.hxx>
24#include <sfx2/viewfrm.hxx>
25#include <sfx2/strings.hrc>
26#include <sfx2/sfxresid.hxx>
27
28using namespace css;
29
31 : m_aRecentCharView{SvxCharView(rVirDev),
32 SvxCharView(rVirDev),
33 SvxCharView(rVirDev),
34 SvxCharView(rVirDev),
35 SvxCharView(rVirDev),
36 SvxCharView(rVirDev),
37 SvxCharView(rVirDev),
38 SvxCharView(rVirDev),
39 SvxCharView(rVirDev),
40 SvxCharView(rVirDev),
41 SvxCharView(rVirDev),
42 SvxCharView(rVirDev),
43 SvxCharView(rVirDev),
44 SvxCharView(rVirDev),
45 SvxCharView(rVirDev),
46 SvxCharView(rVirDev)}
47 , m_aFavCharView{SvxCharView(rVirDev),
48 SvxCharView(rVirDev),
49 SvxCharView(rVirDev),
50 SvxCharView(rVirDev),
51 SvxCharView(rVirDev),
52 SvxCharView(rVirDev),
53 SvxCharView(rVirDev),
54 SvxCharView(rVirDev),
55 SvxCharView(rVirDev),
56 SvxCharView(rVirDev),
57 SvxCharView(rVirDev),
58 SvxCharView(rVirDev),
59 SvxCharView(rVirDev),
60 SvxCharView(rVirDev),
61 SvxCharView(rVirDev),
62 SvxCharView(rVirDev)}
63 , m_xRecentCharView{std::make_unique<weld::CustomWeld>(rBuilder, "viewchar1", m_aRecentCharView[0]),
64 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar2", m_aRecentCharView[1]),
65 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar3", m_aRecentCharView[2]),
66 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar4", m_aRecentCharView[3]),
67 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar5", m_aRecentCharView[4]),
68 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar6", m_aRecentCharView[5]),
69 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar7", m_aRecentCharView[6]),
70 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar8", m_aRecentCharView[7]),
71 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar9", m_aRecentCharView[8]),
72 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar10", m_aRecentCharView[9]),
73 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar11", m_aRecentCharView[10]),
74 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar12", m_aRecentCharView[11]),
75 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar13", m_aRecentCharView[12]),
76 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar14", m_aRecentCharView[13]),
77 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar15", m_aRecentCharView[14]),
78 std::make_unique<weld::CustomWeld>(rBuilder, "viewchar16", m_aRecentCharView[15])}
79 , m_xFavCharView{std::make_unique<weld::CustomWeld>(rBuilder, "favchar1", m_aFavCharView[0]),
80 std::make_unique<weld::CustomWeld>(rBuilder, "favchar2", m_aFavCharView[1]),
81 std::make_unique<weld::CustomWeld>(rBuilder, "favchar3", m_aFavCharView[2]),
82 std::make_unique<weld::CustomWeld>(rBuilder, "favchar4", m_aFavCharView[3]),
83 std::make_unique<weld::CustomWeld>(rBuilder, "favchar5", m_aFavCharView[4]),
84 std::make_unique<weld::CustomWeld>(rBuilder, "favchar6", m_aFavCharView[5]),
85 std::make_unique<weld::CustomWeld>(rBuilder, "favchar7", m_aFavCharView[6]),
86 std::make_unique<weld::CustomWeld>(rBuilder, "favchar8", m_aFavCharView[7]),
87 std::make_unique<weld::CustomWeld>(rBuilder, "favchar9", m_aFavCharView[8]),
88 std::make_unique<weld::CustomWeld>(rBuilder, "favchar10", m_aFavCharView[9]),
89 std::make_unique<weld::CustomWeld>(rBuilder, "favchar11", m_aFavCharView[10]),
90 std::make_unique<weld::CustomWeld>(rBuilder, "favchar12", m_aFavCharView[11]),
91 std::make_unique<weld::CustomWeld>(rBuilder, "favchar13", m_aFavCharView[12]),
92 std::make_unique<weld::CustomWeld>(rBuilder, "favchar14", m_aFavCharView[13]),
93 std::make_unique<weld::CustomWeld>(rBuilder, "favchar15", m_aFavCharView[14]),
94 std::make_unique<weld::CustomWeld>(rBuilder, "favchar16", m_aFavCharView[15])}
95 , m_xRecentGrid(rBuilder.weld_widget("viewgrid"))
96 , m_xFavGrid(rBuilder.weld_widget("favgrid"))
97{
98 //so things don't jump around if all the children are hidden
99 m_xRecentGrid->set_size_request(-1, m_aRecentCharView[0].get_preferred_size().Height());
100 m_xFavGrid->set_size_request(-1, m_aFavCharView[0].get_preferred_size().Height());
101}
102
103void SfxCharmapContainer::init(bool bHasInsert, const Link<SvxCharView*,void> &rMouseClickHdl,
104 const Link<void*, void>& rUpdateFavHdl,
105 const Link<void*, void>& rUpdateRecentHdl)
106{
107 m_aUpdateFavHdl = rUpdateFavHdl;
108 m_aUpdateRecentHdl = rUpdateRecentHdl;
109
114
115 for(int i = 0; i < 16; i++)
116 {
117 m_aRecentCharView[i].SetHasInsert(bHasInsert);
118 m_aRecentCharView[i].setMouseClickHdl(rMouseClickHdl);
119 m_aRecentCharView[i].setClearClickHdl(LINK(this, SfxCharmapContainer, RecentClearClickHdl));
120 m_aRecentCharView[i].setClearAllClickHdl(LINK(this, SfxCharmapContainer, RecentClearAllClickHdl));
121 m_aFavCharView[i].SetHasInsert(bHasInsert);
122 m_aFavCharView[i].setMouseClickHdl(rMouseClickHdl);
123 m_aFavCharView[i].setClearClickHdl(LINK(this, SfxCharmapContainer, FavClearClickHdl));
124 m_aFavCharView[i].setClearAllClickHdl(LINK(this, SfxCharmapContainer, FavClearAllClickHdl));
125 }
126}
127
129 : WeldToolbarPopup(pControl->getFrameInterface(), pParent, "sfx/ui/charmapcontrol.ui", "charmapctrl")
130 , m_xControl(pControl)
131 , m_xVirDev(VclPtr<VirtualDevice>::Create())
132 , m_aCharmapContents(*m_xBuilder, m_xVirDev)
133 , m_xRecentLabel(m_xBuilder->weld_label("label2"))
134 , m_xDlgBtn(m_xBuilder->weld_button("specialchardlg"))
135{
136 m_aCharmapContents.init(false, LINK(this, SfxCharmapCtrl, CharClickHdl),
137 Link<void*,void>(), LINK(this, SfxCharmapCtrl, UpdateRecentHdl));
138
139 m_xDlgBtn->connect_clicked(LINK(this, SfxCharmapCtrl, OpenDlgHdl));
140}
141
143{
144}
145
147{
148 m_aFavCharList.clear();
149 m_aFavCharFontList.clear();
150
151 //retrieve recent character list
152 const css::uno::Sequence< OUString > rFavCharList( officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterList::get() );
153 m_aFavCharList.insert( m_aFavCharList.end(), rFavCharList.begin(), rFavCharList.end() );
154
155 //retrieve recent character font list
156 const css::uno::Sequence< OUString > rFavCharFontList( officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterFontList::get() );
157 m_aFavCharFontList.insert( m_aFavCharFontList.end(), rFavCharFontList.begin(), rFavCharFontList.end() );
158
159 // tdf#135997: make sure that the two lists are same length
160 const auto nCommonLength = std::min(m_aFavCharList.size(), m_aFavCharFontList.size());
161 m_aFavCharList.resize(nCommonLength);
162 m_aFavCharFontList.resize(nCommonLength);
163}
164
166{
167 assert(m_aFavCharList.size() == m_aFavCharFontList.size());
168
169 int i = 0;
170 for ( std::deque< OUString >::iterator it = m_aFavCharList.begin(), it2 = m_aFavCharFontList.begin();
171 it != m_aFavCharList.end() && it2 != m_aFavCharFontList.end();
172 ++it, ++it2, i++)
173 {
176 rFont.SetFamilyName( *it2 );
177 m_aFavCharView[i].SetFont(rFont);
179 }
180
181 for(; i < 16 ; i++)
182 {
183 m_aFavCharView[i].SetText(OUString());
185 }
186
187 m_aUpdateFavHdl.Call(nullptr);
188}
189
191{
192 m_aRecentCharList.clear();
193 m_aRecentCharFontList.clear();
194
195 //retrieve recent character list
196 const css::uno::Sequence< OUString > rRecentCharList( officecfg::Office::Common::RecentCharacters::RecentCharacterList::get() );
197 m_aRecentCharList.insert( m_aRecentCharList.end(), rRecentCharList.begin(), rRecentCharList.end() );
198
199 //retrieve recent character font list
200 const css::uno::Sequence< OUString > rRecentCharFontList( officecfg::Office::Common::RecentCharacters::RecentCharacterFontList::get() );
201 m_aRecentCharFontList.insert( m_aRecentCharFontList.end(), rRecentCharFontList.begin(), rRecentCharFontList.end() );
202
203 // tdf#135997: make sure that the two lists are same length
204 const auto nCommonLength = std::min(m_aRecentCharList.size(), m_aRecentCharFontList.size());
205 m_aRecentCharList.resize(nCommonLength);
206 m_aRecentCharFontList.resize(nCommonLength);
207}
208
209IMPL_LINK(SfxCharmapCtrl, CharClickHdl, SvxCharView*, pView, void)
210{
211 m_xControl->EndPopupMode();
212
213 pView->InsertCharToDoc();
214}
215
217{
218 m_xControl->EndPopupMode();
219
220 if (SfxViewFrame* pViewFrm = SfxViewFrame::Current())
221 {
222 uno::Reference<frame::XFrame> xFrame = pViewFrm->GetFrame().GetFrameInterface();
223 comphelper::dispatchCommand(".uno:InsertSymbol", xFrame, {});
224 }
225}
226
228{
230}
231
233{
235}
236
237static std::pair<std::deque<OUString>::const_iterator, std::deque<OUString>::const_iterator>
238findInPair(std::u16string_view str1, const std::deque<OUString>& rContainer1,
239 std::u16string_view str2, const std::deque<OUString>& rContainer2)
240{
241 assert(rContainer1.size() == rContainer2.size());
242
243 for (auto it1 = std::find(rContainer1.begin(), rContainer1.end(), str1);
244 it1 != rContainer1.end(); it1 = std::find(std::next(it1), rContainer1.end(), str1))
245 {
246 auto it2 = rContainer2.begin() + (it1 - rContainer1.begin());
247 if (*it2 == str2)
248 return { it1, it2 };
249 }
250 return { rContainer1.end(), rContainer2.end() };
251}
252
253std::pair<std::deque<OUString>::const_iterator, std::deque<OUString>::const_iterator>
254SfxCharmapContainer::getRecentChar(std::u16string_view sTitle, std::u16string_view rFont) const
255{
256 return findInPair(sTitle, m_aRecentCharList, rFont, m_aRecentCharFontList);
257}
258
259std::pair<std::deque<OUString>::const_iterator, std::deque<OUString>::const_iterator>
260SfxCharmapContainer::getFavChar(std::u16string_view sTitle, std::u16string_view rFont) const
261{
262 return findInPair(sTitle, m_aFavCharList, rFont, m_aFavCharFontList);
263}
264
266{
267 assert(m_aRecentCharList.size() == m_aRecentCharFontList.size());
268
269 int i = 0;
270 for ( std::deque< OUString >::iterator it = m_aRecentCharList.begin(), it2 = m_aRecentCharFontList.begin();
271 it != m_aRecentCharList.end() && it2 != m_aRecentCharFontList.end();
272 ++it, ++it2, i++)
273 {
276 rFont.SetFamilyName( *it2 );
279 }
280
281 for(; i < 16 ; i++)
282 {
283 m_aRecentCharView[i].SetText(OUString());
285 }
286
287 m_aUpdateRecentHdl.Call(nullptr);
288}
289
290void SfxCharmapContainer::updateRecentCharacterList(const OUString& sTitle, const OUString& rFont)
291{
292 // if recent char to be added is already in list, remove it
293 if( const auto& [itChar, itChar2] = getRecentChar(sTitle, rFont);
294 itChar != m_aRecentCharList.end() && itChar2 != m_aRecentCharFontList.end() )
295 {
296 m_aRecentCharList.erase( itChar );
297 m_aRecentCharFontList.erase( itChar2);
298 }
299
300 if (m_aRecentCharList.size() == 16)
301 {
302 m_aRecentCharList.pop_back();
303 m_aRecentCharFontList.pop_back();
304 }
305
306 m_aRecentCharList.push_front(sTitle);
307 m_aRecentCharFontList.push_front(rFont);
308
309 css::uno::Sequence< OUString > aRecentCharList(m_aRecentCharList.size());
310 auto aRecentCharListRange = asNonConstRange(aRecentCharList);
311 css::uno::Sequence< OUString > aRecentCharFontList(m_aRecentCharFontList.size());
312 auto aRecentCharFontListRange = asNonConstRange(aRecentCharFontList);
313
314 for (size_t i = 0; i < m_aRecentCharList.size(); ++i)
315 {
316 aRecentCharListRange[i] = m_aRecentCharList[i];
317 aRecentCharFontListRange[i] = m_aRecentCharFontList[i];
318 }
319
320 std::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create());
321 officecfg::Office::Common::RecentCharacters::RecentCharacterList::set(aRecentCharList, batch);
322 officecfg::Office::Common::RecentCharacters::RecentCharacterFontList::set(aRecentCharFontList, batch);
323 batch->commit();
324
326}
327
328void SfxCharmapContainer::updateFavCharacterList(const OUString& sTitle, const OUString& rFont)
329{
330 // if Fav char to be added is already in list, remove it
331 if( const auto& [itChar, itChar2] = getFavChar(sTitle, rFont);
332 itChar != m_aFavCharList.end() && itChar2 != m_aFavCharFontList.end() )
333 {
334 m_aFavCharList.erase( itChar );
335 m_aFavCharFontList.erase( itChar2);
336 }
337
338 if (m_aFavCharList.size() == 16)
339 {
340 m_aFavCharList.pop_back();
341 m_aFavCharFontList.pop_back();
342 }
343
344 m_aFavCharList.push_back(sTitle);
345 m_aFavCharFontList.push_back(rFont);
346
347 css::uno::Sequence< OUString > aFavCharList(m_aFavCharList.size());
348 auto aFavCharListRange = asNonConstRange(aFavCharList);
349 css::uno::Sequence< OUString > aFavCharFontList(m_aFavCharFontList.size());
350 auto aFavCharFontListRange = asNonConstRange(aFavCharFontList);
351
352 for (size_t i = 0; i < m_aFavCharList.size(); ++i)
353 {
354 aFavCharListRange[i] = m_aFavCharList[i];
355 aFavCharFontListRange[i] = m_aFavCharFontList[i];
356 }
357
358 std::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create());
359 officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterList::set(aFavCharList, batch);
360 officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterFontList::set(aFavCharFontList, batch);
361 batch->commit();
362}
363
364void SfxCharmapContainer::deleteFavCharacterFromList(std::u16string_view sTitle, std::u16string_view rFont)
365{
366 // if Fav char is found, remove it
367 if( const auto& [itChar, itChar2] = getFavChar(sTitle, rFont);
368 itChar != m_aFavCharList.end() && itChar2 != m_aFavCharFontList.end() )
369 {
370 m_aFavCharList.erase( itChar );
371 m_aFavCharFontList.erase( itChar2);
372 }
373
374 css::uno::Sequence< OUString > aFavCharList(m_aFavCharList.size());
375 auto aFavCharListRange = asNonConstRange(aFavCharList);
376 css::uno::Sequence< OUString > aFavCharFontList(m_aFavCharFontList.size());
377 auto aFavCharFontListRange = asNonConstRange(aFavCharFontList);
378
379 for (size_t i = 0; i < m_aFavCharList.size(); ++i)
380 {
381 aFavCharListRange[i] = m_aFavCharList[i];
382 aFavCharFontListRange[i] = m_aFavCharFontList[i];
383 }
384
385 std::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create());
386 officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterList::set(aFavCharList, batch);
387 officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterFontList::set(aFavCharFontList, batch);
388 batch->commit();
389}
390
391bool SfxCharmapContainer::isFavChar(std::u16string_view sTitle, std::u16string_view rFont)
392{
393 const auto& [itChar, itFont] = getFavChar(sTitle, rFont);
394 return itChar != m_aFavCharList.end() && itFont != m_aFavCharFontList.end();
395}
396
397IMPL_LINK(SfxCharmapContainer, RecentClearClickHdl, SvxCharView*, rView, void)
398{
399 const OUString& sTitle = rView->GetText();
400 OUString sFont = rView->GetFont().GetFamilyName();
401
402 // if recent char to be added is already in list, remove it
403 if( const auto& [itChar, itChar2] = getRecentChar(sTitle, sFont);
404 itChar != m_aRecentCharList.end() && itChar2 != m_aRecentCharFontList.end() )
405 {
406 m_aRecentCharList.erase( itChar );
407 m_aRecentCharFontList.erase( itChar2);
408 }
409
410 css::uno::Sequence< OUString > aRecentCharList(m_aRecentCharList.size());
411 auto aRecentCharListRange = asNonConstRange(aRecentCharList);
412 css::uno::Sequence< OUString > aRecentCharFontList(m_aRecentCharFontList.size());
413 auto aRecentCharFontListRange = asNonConstRange(aRecentCharFontList);
414
415 for (size_t i = 0; i < m_aRecentCharList.size(); ++i)
416 {
417 aRecentCharListRange[i] = m_aRecentCharList[i];
418 aRecentCharFontListRange[i] = m_aRecentCharFontList[i];
419 }
420
421 std::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create());
422 officecfg::Office::Common::RecentCharacters::RecentCharacterList::set(aRecentCharList, batch);
423 officecfg::Office::Common::RecentCharacters::RecentCharacterFontList::set(aRecentCharFontList, batch);
424 batch->commit();
425
426 updateRecentCharControl();
427}
428
429IMPL_LINK_NOARG(SfxCharmapContainer, RecentClearAllClickHdl, SvxCharView*, void)
430{
431 m_aRecentCharList.clear();
432 m_aRecentCharFontList.clear();
433
434 std::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create());
435 officecfg::Office::Common::RecentCharacters::RecentCharacterList::set({ }, batch);
436 officecfg::Office::Common::RecentCharacters::RecentCharacterFontList::set({ }, batch);
437 batch->commit();
438
439 updateRecentCharControl();
440}
441
442IMPL_LINK(SfxCharmapContainer, FavClearClickHdl, SvxCharView*, rView, void)
443{
444 deleteFavCharacterFromList(rView->GetText(), rView->GetFont().GetFamilyName());
445 updateFavCharControl();
446}
447
449{
450 m_aFavCharList.clear();
451 m_aFavCharFontList.clear();
452
453 std::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create());
454 officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterList::set({ }, batch);
455 officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterFontList::set({ }, batch);
456 batch->commit();
457
458 updateFavCharControl();
459}
460
462{
463 return m_aFavCharList.size() == 16;
464}
465
467{
468 return !m_aRecentCharList.empty();
469}
470
471IMPL_LINK_NOARG(SfxCharmapCtrl, UpdateRecentHdl, void*, void)
472{
473 //checking if the characters are recently used or no
474 m_xRecentLabel->set_label(m_aCharmapContents.hasRecentChars() ? SfxResId(STR_RECENT) : SfxResId(STR_NORECENT));
475}
476
477/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
IMPL_LINK(SfxCharmapCtrl, CharClickHdl, SvxCharView *, pView, void)
IMPL_LINK_NOARG(SfxCharmapCtrl, OpenDlgHdl, weld::Button &, void)
static std::pair< std::deque< OUString >::const_iterator, std::deque< OUString >::const_iterator > findInPair(std::u16string_view str1, const std::deque< OUString > &rContainer1, std::u16string_view str2, const std::deque< OUString > &rContainer2)
std::unique_ptr< weld::Widget > m_xRecentGrid
Definition: charwin.hxx:83
void updateRecentCharacterList(const OUString &sTitle, const OUString &rFont)
std::deque< OUString > m_aFavCharList
Definition: charwin.hxx:75
std::deque< OUString > m_aFavCharFontList
Definition: charwin.hxx:76
bool FavCharListIsFull() const
std::pair< std::deque< OUString >::const_iterator, std::deque< OUString >::const_iterator > getRecentChar(std::u16string_view sTitle, std::u16string_view rFont) const
std::unique_ptr< weld::Widget > m_xFavGrid
Definition: charwin.hxx:84
SfxCharmapContainer(weld::Builder &rBuilder, const VclPtr< VirtualDevice > &rVirDev)
void deleteFavCharacterFromList(std::u16string_view sTitle, std::u16string_view rFont)
std::pair< std::deque< OUString >::const_iterator, std::deque< OUString >::const_iterator > getFavChar(std::u16string_view sTitle, std::u16string_view rFont) const
bool isFavChar(std::u16string_view sTitle, std::u16string_view rFont)
SvxCharView m_aFavCharView[16]
Definition: charwin.hxx:79
Link< void *, void > m_aUpdateFavHdl
Definition: charwin.hxx:86
SvxCharView m_aRecentCharView[16]
Definition: charwin.hxx:78
std::deque< OUString > m_aRecentCharFontList
Definition: charwin.hxx:74
bool hasRecentChars() const
void updateFavCharacterList(const OUString &sTitle, const OUString &rFont)
std::deque< OUString > m_aRecentCharList
Definition: charwin.hxx:73
Link< void *, void > m_aUpdateRecentHdl
Definition: charwin.hxx:87
void init(bool bHasInsert, const Link< SvxCharView *, void > &rMouseClickHdl, const Link< void *, void > &rUpdateFavHdl, const Link< void *, void > &rUpdateRecentHdl)
virtual void GrabFocus() override
std::unique_ptr< weld::Button > m_xDlgBtn
SfxCharmapCtrl(CharmapPopup *pControl, weld::Widget *pParent)
virtual ~SfxCharmapCtrl() override
SfxCharmapContainer m_aCharmapContents
static SAL_WARN_UNUSED_RESULT SfxViewFrame * Current()
Definition: viewfrm.cxx:1975
vcl::Font const & GetFont() const
Definition: charwin.hxx:54
void setMouseClickHdl(const Link< SvxCharView *, void > &rLink)
Definition: charwin.cxx:224
void SetFont(const vcl::Font &rFont)
Definition: charwin.cxx:239
void SetHasInsert(bool bInsert)
Definition: charwin.cxx:267
void SetText(const OUString &rText)
Definition: charwin.cxx:261
void setClearClickHdl(const Link< SvxCharView *, void > &rLink)
Definition: charwin.cxx:229
void setClearAllClickHdl(const Link< SvxCharView *, void > &rLink)
Definition: charwin.cxx:234
static std::shared_ptr< ConfigurationChanges > create()
void SetFamilyName(const OUString &rFamilyName)
bool dispatchCommand(const OUString &rCommand, const uno::Reference< css::frame::XFrame > &rFrame, const css::uno::Sequence< css::beans::PropertyValue > &rArguments, const uno::Reference< css::frame::XDispatchResultListener > &rListener)
int i
void Create(SwFormatVertOrient &rItem, SvStream &rStrm, sal_uInt16 nVersionAbusedAsSize)
OUString SfxResId(TranslateId aId)
Definition: sfxresid.cxx:22
Reference< XFrame > xFrame
Reference< XControl > m_xControl