29 #include <rtl/textenc.h>
36 #include <officecfg/Office/Common.hxx>
37 #include <com/sun/star/beans/PropertyValue.hpp>
42 #include <dialmgr.hxx>
45 #include <svx/svxids.hrc>
46 #include <editeng/editids.hrc>
48 #include <strings.hrc>
49 #include <unicode/uchar.h>
50 #include <unicode/utypes.h>
55 const css::uno::Reference<css::frame::XFrame>& rFrame)
92 , m_aShowChar(m_xVirDev)
93 , m_xOKBtn(
m_xFrame.is() ? m_xBuilder->weld_button(
"insert") : m_xBuilder->weld_button(
"ok"))
94 , m_xFontText(m_xBuilder->weld_label(
"fontft"))
95 , m_xFontLB(m_xBuilder->weld_combo_box(
"fontlb"))
96 , m_xSubsetText(m_xBuilder->weld_label(
"subsetft"))
97 , m_xSubsetLB(m_xBuilder->weld_combo_box(
"subsetlb"))
98 , m_xSearchText(m_xBuilder->weld_entry(
"search"))
99 , m_xHexCodeText(m_xBuilder->weld_entry(
"hexvalue"))
100 , m_xDecimalCodeText(m_xBuilder->weld_entry(
"decimalvalue"))
101 , m_xFavouritesBtn(m_xBuilder->weld_button(
"favbtn"))
102 , m_xCharName(m_xBuilder->weld_label(
"charname"))
103 , m_xRecentGrid(m_xBuilder->weld_widget(
"viewgrid"))
104 , m_xFavGrid(m_xBuilder->weld_widget(
"favgrid"))
106 , m_xRecentCharView{std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar1", m_aRecentCharView[0]),
107 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar2", m_aRecentCharView[1]),
108 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar3", m_aRecentCharView[2]),
109 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar4", m_aRecentCharView[3]),
110 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar5", m_aRecentCharView[4]),
111 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar6", m_aRecentCharView[5]),
112 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar7", m_aRecentCharView[6]),
113 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar8", m_aRecentCharView[7]),
114 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar9", m_aRecentCharView[8]),
115 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar10", m_aRecentCharView[9]),
116 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar11", m_aRecentCharView[10]),
117 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar12", m_aRecentCharView[11]),
118 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar13", m_aRecentCharView[12]),
119 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar14", m_aRecentCharView[13]),
120 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar15", m_aRecentCharView[14]),
121 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"viewchar16", m_aRecentCharView[15])}
122 , m_xFavCharView{std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar1", m_aFavCharView[0]),
123 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar2", m_aFavCharView[1]),
124 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar3", m_aFavCharView[2]),
125 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar4", m_aFavCharView[3]),
126 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar5", m_aFavCharView[4]),
127 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar6", m_aFavCharView[5]),
128 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar7", m_aFavCharView[6]),
129 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar8", m_aFavCharView[7]),
130 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar9", m_aFavCharView[8]),
131 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar10", m_aFavCharView[9]),
132 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar11", m_aFavCharView[10]),
133 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar12", m_aFavCharView[11]),
134 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar13", m_aFavCharView[12]),
135 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar14", m_aFavCharView[13]),
136 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar15", m_aFavCharView[14]),
137 std::make_unique<weld::CustomWeld>(*m_xBuilder,
"favchar16", m_aFavCharView[15])}
138 , m_xShowSet(
new SvxShowCharSet(m_xBuilder->weld_scrolled_window(
"showscroll",
true), m_xVirDev))
139 , m_xShowSetArea(
new weld::CustomWeld(*m_xBuilder,
"showcharset", *m_xShowSet))
140 , m_xSearchSet(
new SvxSearchCharSet(m_xBuilder->weld_scrolled_window(
"searchscroll",
true), m_xVirDev))
141 , m_xSearchSetArea(
new weld::CustomWeld(*m_xBuilder,
"searchcharset", *m_xSearchSet))
143 m_aShowChar.SetCentered(
true);
144 m_xFontLB->make_sorted();
146 fillAllSubsets(*m_xSubsetLB);
147 m_xSubsetLB->set_size_request(m_xSubsetLB->get_preferred_size().Width(), -1);
148 m_xCharName->set_size_request(m_aShowChar.get_preferred_size().Width(), m_xCharName->get_text_height() * 4);
150 m_xHexCodeText->set_size_request(m_xHexCodeText->get_preferred_size().Width(), -1);
152 m_xRecentGrid->set_size_request(-1, m_aRecentCharView[0].get_preferred_size().
Height());
153 m_xFavGrid->set_size_request(-1, m_aFavCharView[0].get_preferred_size().
Height());
157 const SfxInt32Item* pCharItem = SfxItemSet::GetItem<SfxInt32Item>(pSet, SID_ATTR_CHAR,
false);
161 const SfxBoolItem* pDisableItem = SfxItemSet::GetItem<SfxBoolItem>(pSet, FN_PARAM_2,
false);
162 if ( pDisableItem && pDisableItem->GetValue() )
163 DisableFontSelection();
165 const SvxFontItem* pFontItem = SfxItemSet::GetItem<SvxFontItem>(pSet, SID_ATTR_CHAR_FONT,
false);
166 const SfxStringItem* pFontNameItem = SfxItemSet::GetItem<SfxStringItem>(pSet, SID_FONT_NAME,
false);
171 aTmpFont.SetPitch( pFontItem->
GetPitch() );
172 SetCharFont( aTmpFont );
174 else if ( pFontNameItem )
177 aTmpFont.SetFamilyName( pFontNameItem->GetValue() );
178 SetCharFont( aTmpFont );
183 m_xSearchSet->Hide();
197 OUString aOUStr( &cChar, 1 );
204 return SfxDialogController::run();
228 const css::uno::Sequence< OUString > rRecentCharList( officecfg::Office::Common::RecentCharacters::RecentCharacterList::get() );
229 for (OUString
const & s : rRecentCharList)
235 const css::uno::Sequence< OUString > rRecentCharFontList( officecfg::Office::Common::RecentCharacters::RecentCharacterFontList::get() );
236 for (OUString
const & s : rRecentCharFontList)
253 const css::uno::Sequence< OUString > rFavCharList( officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterList::get() );
254 for (
const OUString& s : rFavCharList)
260 const css::uno::Sequence< OUString > rFavCharFontList( officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterFontList::get() );
261 for (
const OUString& s : rFavCharFontList)
272 static std::pair<std::deque<OUString>::const_iterator, std::deque<OUString>::const_iterator>
273 findInPair(std::u16string_view str1,
const std::deque<OUString>& rContainer1,
274 std::u16string_view str2,
const std::deque<OUString>& rContainer2)
276 assert(rContainer1.size() == rContainer2.size());
278 if (
auto it1 = std::find(rContainer1.begin(), rContainer1.end(), str1);
279 it1 != rContainer1.end())
281 auto it2 = rContainer2.begin() + (it1 - rContainer1.begin());
285 return { rContainer1.end(), rContainer2.end() };
288 std::pair<std::deque<OUString>::const_iterator, std::deque<OUString>::const_iterator>
294 std::pair<std::deque<OUString>::const_iterator, std::deque<OUString>::const_iterator>
327 if(
const auto& [itChar, itChar2] =
getRecentChar(sTitle, rFont);
344 auto aRecentCharListRange = asNonConstRange(aRecentCharList);
346 auto aRecentCharFontListRange = asNonConstRange(aRecentCharFontList);
355 officecfg::Office::Common::RecentCharacters::RecentCharacterList::set(aRecentCharList, batch);
356 officecfg::Office::Common::RecentCharacters::RecentCharacterFontList::set(aRecentCharFontList, batch);
366 if(
const auto& [itChar, itChar2] =
getFavChar(sTitle, rFont);
382 css::uno::Sequence< OUString > aFavCharList(
maFavCharList.size());
383 auto aFavCharListRange = asNonConstRange(aFavCharList);
385 auto aFavCharFontListRange = asNonConstRange(aFavCharFontList);
394 officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterList::set(aFavCharList, batch);
395 officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterFontList::set(aFavCharFontList, batch);
430 if(
const auto& [itChar, itChar2] =
getFavChar(sTitle, rFont);
437 css::uno::Sequence< OUString > aFavCharList(
maFavCharList.size());
438 auto aFavCharListRange = asNonConstRange(aFavCharList);
440 auto aFavCharFontListRange = asNonConstRange(aFavCharFontList);
449 officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterList::set(aFavCharList, batch);
450 officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterFontList::set(aFavCharFontList, batch);
465 std::vector<weld::ComboBoxEntry>
aEntries;
466 aEntries.reserve(nCount);
467 for (
int i = 0;
i < nCount; ++
i)
469 OUString aFontName(
m_xVirDev->GetFontMetricFromCollection(
i ).GetFamilyName() );
470 if (aFontName != aLastName)
472 aLastName = aFontName;
473 aEntries.emplace_back(aFontName, OUString::number(
i));
476 m_xFontLB->insert_vector(aEntries,
true);
480 bool bFound = (
m_xFontLB->find_text(aDefStr) != -1);
486 OUString aToken = aDefStr.getToken(0,
';', nIndex);
494 while ( nIndex >= 0 );
531 nMaxWidth = std::max(nMaxWidth,
m_xFavouritesBtn->get_preferred_size().Width());
542 OUString aOUStr( &cChar, 1 );
557 for(
int i = 0;
i < 16;
i++)
577 const auto& [itChar, itFont] =
getFavChar(sTitle, rFont);
584 if(sTitle.empty() || rFont.empty())
616 if (
const sal_Int32
nIndex = sFontFamilyName.indexOf(
":");
nIndex != -1)
617 sFontFamilyName = sFontFamilyName.copy(0,
nIndex);
618 if (sFontFamilyName ==
"StarSymbol" &&
m_xFontLB->find_text(sFontFamilyName) == -1)
622 aTmp.SetFamilyName(
"OpenSymbol");
625 if (
m_xFontLB->find_text(sFontFamilyName) == -1)
628 m_xFontLB->set_active_text(sFontFamilyName);
638 std::vector<weld::ComboBoxEntry>
aEntries;
640 aEntries.emplace_back(subset.GetName());
650 uno::Sequence<beans::PropertyValue> aArgs{
671 const sal_uInt32 nFont =
m_xFontLB->get_active_id().toUInt32();
697 for (
auto const& subset :
pSubsetMap->GetSubsetMap())
744 UErrorCode errorCode = U_ZERO_ERROR;
748 u_charName(nDecimalValue, U_UNICODE_CHAR_NAME, buffer,
sizeof(buffer), &errorCode);
749 if (U_SUCCESS(errorCode))
750 m_xCharName->set_label(OUString::createFromAscii(buffer));
756 const Subset* pSubset = weld::fromId<const Subset*>(
m_xSubsetLB->get_active_id());
770 const Subset* curSubset =
nullptr;
785 const OUString& sTitle = rView->GetText();
786 OUString sFont = rView->GetFont().GetFamilyName();
789 if(
const auto& [itChar, itChar2] =
getRecentChar(sTitle, sFont);
797 auto aRecentCharListRange = asNonConstRange(aRecentCharList);
799 auto aRecentCharFontListRange = asNonConstRange(aRecentCharFontList);
808 officecfg::Office::Common::RecentCharacters::RecentCharacterList::set(aRecentCharList, batch);
809 officecfg::Office::Common::RecentCharacters::RecentCharacterFontList::set(aRecentCharFontList, batch);
821 officecfg::Office::Common::RecentCharacters::RecentCharacterList::set({ }, batch);
822 officecfg::Office::Common::RecentCharacters::RecentCharacterFontList::set({ }, batch);
840 officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterList::set({ }, batch);
841 officecfg::Office::Common::FavoriteCharacters::FavoriteCharacterFontList::set({ }, batch);
866 UErrorCode errorCode = U_ZERO_ERROR;
868 u_charName(sChar, U_UNICODE_CHAR_NAME, buffer,
sizeof(buffer), &errorCode);
869 if (U_SUCCESS(errorCode))
871 OUString
sName = OUString::createFromAscii(buffer);
872 if(!sName.isEmpty() && sName.toAsciiLowerCase().indexOf(aKeyword.toAsciiLowerCase()) >= 0)
878 UErrorCode errorCode = U_ZERO_ERROR;
880 u_charName(sChar, U_UNICODE_CHAR_NAME, buffer,
sizeof(buffer), &errorCode);
881 if (U_SUCCESS(errorCode))
883 OUString
sName = OUString::createFromAscii(buffer);
884 if(!sName.isEmpty() && sName.toAsciiLowerCase().indexOf(aKeyword.toAsciiLowerCase()) >= 0)
906 OUString charValue = rView->GetText();
908 OUString aHexText = OUString::number(cChar, 16).toAsciiUpperCase();
911 OUString aDecimalText = OUString::number(cChar);
925 OUString aOUStr( &cChar, 1 );
934 OUString aOUStr( &cChar, 1 );
986 bool bSelect = (cChar > 0);
992 aText = OUString( &cChar, 1 );
994 OUString aHexText = OUString::number(cChar, 16).toAsciiUpperCase();
996 OUString aDecimalText = OUString::number(cChar);
1005 const Subset* pSubset =
nullptr;
1007 pSubset =
pSubsetMap->GetSubsetByUnicode( cChar );
1025 bool bSelect = (cChar > 0);
1030 aText = OUString( &cChar, 1 );
1032 OUString aHexText = OUString::number(cChar, 16).toAsciiUpperCase();
1034 OUString aDecimalText = OUString::number(cChar);
1043 const Subset* pSubset =
nullptr;
1045 pSubset =
pSubsetMap->GetSubsetByUnicode( cChar );
1064 OUString aCodeString;
1075 sal_UCS4 cChar = aCodeString.toUInt32(static_cast<sal_Int16> (radix));
1078 if (xFontCharMap->
HasChar(cChar))
1148 CustomWidgetController::SetDrawingArea(pDrawingArea);
1155 m_xVirDev->LogicToPixel(aFontSize).Height() * 2);
1172 const OUString aText =
GetText();
1178 bool bGotBoundary =
true;
1179 bool bShrankFont =
false;
1181 Size aFontSize(aOrigFont.GetFontSize());
1184 for (
tools::Long nFontHeight = aFontSize.Height(); nFontHeight > 0; nFontHeight -= 5)
1186 if (!rRenderContext.
GetTextBoundRect( aBoundRect, aText ) || aBoundRect.IsEmpty())
1188 bGotBoundary =
false;
1195 if (nAvailWidth > nTextWidth)
1198 aFontSize.setHeight( nFontHeight );
1200 rRenderContext.
SetFont(aFont);
1212 aBoundRect += aPoint;
1215 int nYLDelta = aBoundRect.Top();
1216 int nYHDelta = aSize.
Height() - aBoundRect.Bottom();
1218 aPoint.AdjustY( -(nYLDelta - 1) );
1219 else if( nYHDelta <= 0 )
1220 aPoint.AdjustY(nYHDelta - 1 );
1225 aPoint.setX( -aBoundRect.Left() + (aSize.
Width() - aBoundRect.GetWidth()) / 2 );
1230 int nXLDelta = aBoundRect.Left();
1231 int nXHDelta = aSize.
Width() - aBoundRect.Right();
1233 aPoint.AdjustX( -(nXLDelta - 1) );
1234 else if( nXHDelta <= 0 )
1235 aPoint.AdjustX(nXHDelta - 1 );
1240 rRenderContext.
DrawText(aPoint, aText);
1244 rRenderContext.
SetFont(aOrigFont);
void updateRecentCharControl()
void SetFamily(FontFamily)
#define LINK(Instance, Class, Member)
const Color & GetTextColor() const
bool HasChar(sal_UCS4) const
sal_Int32 GetValue() const
SvxCharView m_aFavCharView[16]
void SetFontSize(const Size &)
ScopedVclPtr< VirtualDevice > m_xVirDev
std::unique_ptr< const SubsetMap > pSubsetMap
const OUString & GetFamilyName() const
static std::shared_ptr< ConfigurationChanges > create()
const OUString & GetStyleName() const
const SubsetVec & GetSubsetMap() const
virtual void Paint(vcl::RenderContext &rRenderContext, const tools::Rectangle &) override
css::beans::PropertyValue makePropertyValue(const OUString &rName, T &&rValue)
const OUString & GetName() const
const StyleSettings & GetStyleSettings() const
static const AllSettings & GetSettings()
std::unique_ptr< SvxSearchCharSet > m_xSearchSet
css::uno::Reference< css::lang::XComponent > m_xFrame
void SetWeight(FontWeight)
void SetFont(const vcl::Font &rFont)
std::deque< OUString > maRecentCharList
void setFavButtonState(std::u16string_view sTitle, std::u16string_view rFont)
static void fillAllSubsets(weld::ComboBox &rListBox)
void insertCharToDoc(const OUString &sChar)
void SetCharSet(rtl_TextEncoding)
std::pair< std::deque< OUString >::const_iterator, std::deque< OUString >::const_iterator > getFavChar(std::u16string_view sTitle, std::u16string_view rFont) const
FontPitch GetPitch() const
OUString const & GetText() const
ScopedVclPtr< VirtualDevice > m_xVirDev
std::pair< std::deque< OUString >::const_iterator, std::deque< OUString >::const_iterator > getRecentChar(std::u16string_view sTitle, std::u16string_view rFont) const
FontFamily GetFamilyType()
void selectCharByCode(Radix radix)
SfxApplication * SfxGetpApp()
std::unique_ptr< SfxAllItemSet > m_xOutputSet
constexpr tools::Long Width() const
void toggleSearchView(bool state)
const vcl::Font & GetFont() const
std::unique_ptr< weld::Label > m_xFontText
static sal_uInt32 & getSelectedChar()
rtl_TextEncoding GetCharSet() const
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)
void deleteFavCharacterFromList(std::u16string_view rChar, std::u16string_view rFont)
bool GetTextBoundRect(tools::Rectangle &rRect, const OUString &rStr, sal_Int32 nBase=0, sal_Int32 nIndex=0, sal_Int32 nLen=-1, sal_uLong nLayoutWidth=0, o3tl::span< const sal_Int32 > pDXArray={}, const SalLayoutGlyphs *pGlyphs=nullptr) const
std::unique_ptr< weld::ComboBox > m_xSubsetLB
std::deque< OUString > maFavCharList
void setCharName(sal_UCS4 nDecimalValue)
void DrawRect(const tools::Rectangle &rRect)
void SetPitch(FontPitch ePitch)
SfxItemPool & GetPool() const
const OUString & GetStyleName() const
std::unique_ptr< weld::Entry > m_xDecimalCodeText
bool isFavChar(std::u16string_view sTitle, std::u16string_view rFont)
css::uno::Reference< css::frame::XFrame > m_xFrame
OUString CuiResId(TranslateId aKey)
std::unique_ptr< SvxShowCharSet > m_xShowSet
void updateRecentCharacterList(const OUString &rChar, const OUString &rFont)
sal_UCS4 GetFirstChar() const
std::unique_ptr< weld::Button > m_xFavouritesBtn
void SetFamilyName(const OUString &rFamilyName)
void getRecentCharacterList()
void SetFont(const vcl::Font &rFont)
tools::Long GetTextWidth(const OUString &rStr, sal_Int32 nIndex=0, sal_Int32 nLen=-1, vcl::text::TextLayoutCache const *=nullptr, SalLayoutGlyphs const *const pLayoutCache=nullptr) const
void SetHasInsert(bool bInsert)
virtual void insert_vector(const std::vector< weld::ComboBoxEntry > &rItems, bool bKeepExisting)=0
std::unique_ptr< weld::Entry > m_xHexCodeText
void SetTextColor(const Color &rColor)
void setClearAllClickHdl(const Link< SvxCharView *, void > &rLink)
const Size & GetFontSize() const
void getFavCharacterList()
void SetWidthType(FontWidth)
void updateFavCharacterList(const OUString &rChar, const OUString &rFont)
std::unique_ptr< weld::Entry > m_xSearchText
void SetText(const OUString &rText)
sal_UCS4 GetRangeMin() const
constexpr T & temporary(T &&x)
virtual short run() override
void SetAlignment(TextAlign)
SvxCharacterMap(weld::Widget *pParent, const SfxItemSet *pSet, const css::uno::Reference< css::frame::XFrame > &rFrame)
IMPL_LINK(SvxCharacterMap, RecentClearClickHdl, SvxCharView *, rView, void)
const OUString & GetFamilyName() const
sal_UCS4 GetNextChar(sal_UCS4 cChar) const
OUString toId(const void *pValue)
std::deque< OUString > maFavCharFontList
void setClearClickHdl(const Link< SvxCharView *, void > &rLink)
sal_uInt16 GetWhich(sal_uInt16 nSlot, bool bDeep=true) const
constexpr tools::Long Height() const
void setMouseClickHdl(const Link< SvxCharView *, void > &rLink)
std::deque< OUString > maRecentCharFontList
void SetFont(const vcl::Font &rNewFont)
void SetTransparent(bool bTransparent)
tools::Long GetTextHeight() const
SvxShowText(const VclPtr< VirtualDevice > &rVirDev)
sal_UCS4 GetLastChar() const
Reference< XExecutableDialog > m_xDialog
void SetCharFont(const vcl::Font &rFont)
void updateFavCharControl()
const Color & GetWindowColor() const
virtual void SetDrawingArea(weld::DrawingArea *pDrawingArea) override
void DisableFontSelection()
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)
FILE * init(int, char **)
std::unique_ptr< weld::ComboBox > m_xFontLB
void SetItalic(FontItalic)
void SetText(const OUString &rText)
ScXMLEditAttributeMap::Entry const aEntries[]
vcl::Font const & GetFont() const
The main purpose of this dialog is to enable the use of characters that are not easily accessible fro...
IMPL_LINK_NOARG(SvxCharacterMap, FontSelectHdl, weld::ComboBox &, void)
std::unique_ptr< weld::Button > m_xOKBtn
const Color & GetDialogTextColor() const
void DrawText(const Point &rStartPt, const OUString &rStr, sal_Int32 nIndex=0, sal_Int32 nLen=-1, std::vector< tools::Rectangle > *pVector=nullptr, OUString *pDisplayText=nullptr, const SalLayoutGlyphs *pLayoutCache=nullptr)
vcl::Font const & GetFont() const
std::unique_ptr< weld::Label > m_xSubsetText
rtl_TextEncoding GetCharSet() const
virtual void Resize() override
const Color & GetFillColor() const
SvxCharView m_aRecentCharView[16]
bool m_bDetectedRangeSegmentation false
std::unique_ptr< weld::Label > m_xCharName