diff options
author | Caolán McNamara <caolanm@redhat.com> | 2012-09-26 15:31:01 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2012-09-28 08:48:54 +0100 |
commit | 2f6e8daf883fe67a1cebc2cdf9d54e41b064a55c (patch) | |
tree | 9bb4ec91a3b96fd8b8a535b69bed30ed46d9101c | |
parent | de43297de3b81fd60894e4aed8574d51c68a4800 (diff) |
adapt insert character dialog to new layout
Change-Id: I5561c2684d0957b65aef0d139e9210ebdd703153
-rw-r--r-- | cui/AllLangResTarget_cui.mk | 1 | ||||
-rw-r--r-- | cui/UI_cui.mk | 1 | ||||
-rw-r--r-- | cui/source/dialogs/charmap.hrc | 41 | ||||
-rw-r--r-- | cui/source/dialogs/charmap.src | 129 | ||||
-rw-r--r-- | cui/source/dialogs/cuicharmap.cxx | 199 | ||||
-rw-r--r-- | cui/source/factory/dlgfact.cxx | 17 | ||||
-rw-r--r-- | cui/source/inc/cuicharmap.hxx | 29 | ||||
-rw-r--r-- | cui/source/tabpages/chardlg.cxx | 28 | ||||
-rw-r--r-- | svx/inc/svx/charmap.hxx | 5 | ||||
-rw-r--r-- | svx/source/dialog/charmap.cxx | 39 |
10 files changed, 169 insertions, 320 deletions
diff --git a/cui/AllLangResTarget_cui.mk b/cui/AllLangResTarget_cui.mk index 840193f2a91f..4af405878fb3 100644 --- a/cui/AllLangResTarget_cui.mk +++ b/cui/AllLangResTarget_cui.mk @@ -55,7 +55,6 @@ $(eval $(call gb_SrsTarget_add_files,cui/res,\ cui/source/customize/macropg.src \ cui/source/customize/selector.src \ cui/source/dialogs/about.src \ - cui/source/dialogs/charmap.src \ cui/source/dialogs/colorpicker.src \ cui/source/dialogs/commonlingui.src \ cui/source/dialogs/cuiimapdlg.src \ diff --git a/cui/UI_cui.mk b/cui/UI_cui.mk index 89e1a6a45eea..c2d51e6afb46 100644 --- a/cui/UI_cui.mk +++ b/cui/UI_cui.mk @@ -13,6 +13,7 @@ $(eval $(call gb_UI_add_uifiles,cui,\ cui/uiconfig/ui/charnamepage \ cui/uiconfig/ui/effectspage \ cui/uiconfig/ui/positionpage \ + cui/uiconfig/ui/specialcharacters \ cui/uiconfig/ui/twolinespage \ cui/uiconfig/ui/zoomdialog \ )) diff --git a/cui/source/dialogs/charmap.hrc b/cui/source/dialogs/charmap.hrc deleted file mode 100644 index c31761221ff5..000000000000 --- a/cui/source/dialogs/charmap.hrc +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ -#ifndef _SVX_CHARMAP_HRC -#define _SVX_CHARMAP_HRC - -// defines ------------------------------------------------------------------ - -#define CT_SHOWSET 10 -#define FT_FONT 11 -#define LB_FONT 12 -#define CT_SHOWTEXT 13 -#define FT_SYMBOLE 14 -#define CT_SHOWCHAR 15 -#define FT_CHARCODE 16 -#define BTN_CHAR_OK 17 -#define BTN_CHAR_CANCEL 18 -#define BTN_CHAR_HELP 19 -#define BTN_DELETE 20 -#define FT_SUBSET 30 -#define LB_SUBSET 31 -#define ED_SHORTCUT 32 -#define BT_ASSIGN 33 -#define FT_ASSIGN 34 - -#endif - diff --git a/cui/source/dialogs/charmap.src b/cui/source/dialogs/charmap.src deleted file mode 100644 index 845b5d274c79..000000000000 --- a/cui/source/dialogs/charmap.src +++ /dev/null @@ -1,129 +0,0 @@ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#include <cuires.hrc> -#include "charmap.hrc" -#include "helpid.hrc" -#include <svx/dialogs.hrc> // for RID_SVXDLG_CHARMAP - - // RID_SVXDLG_CHARMAP ---------------------------------------------------- -ModalDialog RID_SVXDLG_CHARMAP -{ - HelpId = CMD_SID_CHARMAP ; - SvLook = TRUE ; - Text [ en-US ] = "Special Characters"; - Size = MAP_APPFONT ( 297 , 153 ) ; - OutputSize = TRUE ; - Moveable = TRUE ; - Control CT_SHOWSET - { - HelpId = HID_CHARMAP_CTL_SHOWSET ; - Border = TRUE ; - Pos = MAP_APPFONT ( 6 , 24 ) ; - Size = MAP_APPFONT ( 230 , 112 ) ; - TabStop = TRUE ; - Group = TRUE ; - }; - FixedText FT_FONT - { - Pos = MAP_APPFONT ( 6 , 8 ) ; - Size = MAP_APPFONT ( 33 , 8 ) ; - Text [ en-US ] = "~Font" ; - Left = TRUE ; - Group = TRUE ; - }; - ListBox LB_FONT - { - HelpID = "cui:ListBox:RID_SVXDLG_CHARMAP:LB_FONT"; - Pos = MAP_APPFONT ( 42 , 6 ) ; - Size = MAP_APPFONT ( 70 , 58 ) ; - Sort = TRUE ; - TabStop = TRUE ; - DropDown = TRUE ; - }; - FixedText FT_SUBSET - { - Pos = MAP_APPFONT ( 118 , 8 ) ; - Size = MAP_APPFONT ( 42 , 8 ) ; - Text [ en-US ] = "~Subset"; - }; - ListBox LB_SUBSET - { - HelpID = "cui:ListBox:RID_SVXDLG_CHARMAP:LB_SUBSET"; - Pos = MAP_APPFONT ( 161 , 6 ) ; - Size = MAP_APPFONT ( 63 , 68 ) ; - Sort = FALSE ; - TabStop = TRUE ; - DropDown = TRUE ; - }; - FixedText FT_SYMBOLE - { - Pos = MAP_APPFONT ( 6 , 140 ) ; - Size = MAP_APPFONT ( 38 , 8 ) ; - Left = TRUE ; - Text [ en-US ] = "Characters:"; - }; - Control CT_SHOWTEXT - { - HelpId = HID_CHARMAP_CTL_SHOWTEXT ; - Pos = MAP_APPFONT ( 46 , 137 ) ; - Size = MAP_APPFONT ( 244 , 16 ) ; - Group = TRUE ; - }; - Control CT_SHOWCHAR - { - HelpId = HID_CHARMAP_CTL_SHOWCHAR ; - Pos = MAP_APPFONT ( 241 , 79 ) ; - Size = MAP_APPFONT ( 50 , 44 ) ; - Group = TRUE ; - }; - FixedText FT_CHARCODE - { - Pos = MAP_APPFONT ( 241 , 126 ) ; - Size = MAP_APPFONT ( 50 , 8 ) ; - Center = TRUE ; - }; - OKButton BTN_CHAR_OK - { - Pos = MAP_APPFONT ( 242 , 6 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - DefButton = TRUE ; - }; - CancelButton BTN_CHAR_CANCEL - { - Pos = MAP_APPFONT ( 242 , 23 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - HelpButton BTN_CHAR_HELP - { - Pos = MAP_APPFONT ( 242 , 43 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - TabStop = TRUE ; - }; - PushButton BTN_DELETE - { - HelpID = "cui:PushButton:RID_SVXDLG_CHARMAP:BTN_DELETE"; - Pos = MAP_APPFONT ( 242 , 63 ) ; - Size = MAP_APPFONT ( 50 , 14 ) ; - Text [ en-US ] = "~Delete"; - }; -}; - -// ********************************************************************** EOF diff --git a/cui/source/dialogs/cuicharmap.cxx b/cui/source/dialogs/cuicharmap.cxx index c900b45891b9..06be05701243 100644 --- a/cui/source/dialogs/cuicharmap.cxx +++ b/cui/source/dialogs/cuicharmap.cxx @@ -48,29 +48,28 @@ #include <sfx2/sfxsids.hrc> #include <sfx2/app.hxx> #include <editeng/fontitem.hxx> -#include "charmap.hrc" #include "macroass.hxx" // class SvxCharacterMap ================================================= SvxCharacterMap::SvxCharacterMap( Window* pParent, sal_Bool bOne_, const SfxItemSet* pSet ) - : SfxModalDialog( pParent, CUI_RES( RID_SVXDLG_CHARMAP ) ), - aShowSet ( this, CUI_RES( CT_SHOWSET ) ), - aShowText ( this, CUI_RES( CT_SHOWTEXT ) ), - aOKBtn ( this, CUI_RES( BTN_CHAR_OK ) ), - aCancelBtn ( this, CUI_RES( BTN_CHAR_CANCEL ) ), - aHelpBtn ( this, CUI_RES( BTN_CHAR_HELP ) ), - aDeleteBtn ( this, CUI_RES( BTN_DELETE ) ), - aFontText ( this, CUI_RES( FT_FONT ) ), - aFontLB ( this, CUI_RES( LB_FONT ) ), - aSubsetText ( this, CUI_RES( FT_SUBSET ) ), - aSubsetLB ( this, CUI_RES( LB_SUBSET ) ), - aSymbolText ( this, CUI_RES( FT_SYMBOLE ) ), - aShowChar ( this, CUI_RES( CT_SHOWCHAR ), sal_True ), - aCharCodeText ( this, CUI_RES( FT_CHARCODE ) ), - bOne( bOne_ ), - pSubsetMap( NULL ) + : SfxModalDialog(pParent, "SpecialCharactersDialog", "cui/ui/specialcharacters.ui") + , bOne( bOne_ ) + , pSubsetMap( NULL ) { + get(m_pShowSet, "showcharset"); + get(m_pShowChar, "showchar"); + m_pShowChar->SetCentered(true); + get(m_pShowText, "showtext"); + get(m_pOKBtn, "ok"); + get(m_pDeleteBtn, "delete"); + get(m_pFontText, "fontft"); + get(m_pFontLB, "fontlb"); + get(m_pSubsetText, "subsetft"); + get(m_pSubsetLB, "subsetlb"); + get(m_pCharCodeText, "charcodeft"); + get(m_pSymbolText, "symboltext"); + SFX_ITEMSET_ARG( pSet, pItem, SfxBoolItem, FN_PARAM_1, sal_False ); if ( pItem ) bOne = pItem->GetValue(); @@ -101,7 +100,6 @@ SvxCharacterMap::SvxCharacterMap( Window* pParent, sal_Bool bOne_, const SfxItem SetCharFont( aTmpFont ); } - FreeResource(); CreateOutputItemSet( pSet ? *pSet->GetPool() : SFX_APP()->GetPool() ); } @@ -122,21 +120,21 @@ const Font& SvxCharacterMap::GetCharFont() const void SvxCharacterMap::SetChar( sal_UCS4 c ) { - aShowSet.SelectCharacter( c ); + m_pShowSet->SelectCharacter( c ); } // ----------------------------------------------------------------------- sal_UCS4 SvxCharacterMap::GetChar() const { - return aShowSet.GetSelectCharacter(); + return m_pShowSet->GetSelectCharacter(); } // ----------------------------------------------------------------------- String SvxCharacterMap::GetCharacters() const { - return aShowText.GetText(); + return m_pShowText->GetText(); } @@ -144,8 +142,8 @@ String SvxCharacterMap::GetCharacters() const void SvxCharacterMap::DisableFontSelection() { - aFontText.Disable(); - aFontLB.Disable(); + m_pFontText->Disable(); + m_pFontLB->Disable(); } short SvxCharacterMap::Execute() @@ -177,6 +175,16 @@ SvxShowText::SvxShowText( Window* pParent, const ResId& rResId, sal_Bool bCenter mbCenter( bCenter) {} +SvxShowText::SvxShowText( Window* pParent, sal_Bool bCenter ) +: Control( pParent ), + mbCenter( bCenter) +{} + +extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeSvxShowText(Window *pParent, VclBuilder::stringmap &) +{ + return new SvxShowText(pParent); +} + // ----------------------------------------------------------------------- void SvxShowText::Paint( const Rectangle& ) @@ -246,6 +254,12 @@ void SvxShowText::SetFont( const Font& rFont ) Invalidate(); } +void SvxShowText::Resize() +{ + Control::Resize(); + SetFont(GetFont()); //force recalculation of size +} + // ----------------------------------------------------------------------- void SvxShowText::SetText( const String& rText ) @@ -269,14 +283,11 @@ void SvxCharacterMap::init() aFont.SetPitch( PITCH_DONTKNOW ); aFont.SetCharSet( RTL_TEXTENCODING_DONTKNOW ); - if ( bOne ) + if (bOne) { - Size aDlgSize = GetSizePixel(); - SetSizePixel( Size( aDlgSize.Width(), - aDlgSize.Height()-aShowText.GetSizePixel().Height() ) ); - aSymbolText.Hide(); - aShowText.Hide(); - aDeleteBtn.Hide(); + m_pSymbolText->Hide(); + m_pShowText->Hide(); + m_pDeleteBtn->Hide(); } rtl::OUString aDefStr( aFont.GetName() ); @@ -288,21 +299,21 @@ void SvxCharacterMap::init() if ( aFontName != aLastName ) { aLastName = aFontName; - sal_uInt16 nPos = aFontLB.InsertEntry( aFontName ); - aFontLB.SetEntryData( nPos, (void*)(sal_uLong)i ); + sal_uInt16 nPos = m_pFontLB->InsertEntry( aFontName ); + m_pFontLB->SetEntryData( nPos, (void*)(sal_uLong)i ); } } // the font may not be in the list => // try to find a font name token in list and select found font, // else select topmost entry - bool bFound = (aFontLB.GetEntryPos( aDefStr ) == LISTBOX_ENTRY_NOTFOUND ); + bool bFound = (m_pFontLB->GetEntryPos( aDefStr ) == LISTBOX_ENTRY_NOTFOUND ); if( !bFound ) { sal_Int32 nIndex = 0; do { rtl::OUString aToken = aDefStr.getToken(0, ';', nIndex); - if ( aFontLB.GetEntryPos( aToken ) != LISTBOX_ENTRY_NOTFOUND ) + if ( m_pFontLB->GetEntryPos( aToken ) != LISTBOX_ENTRY_NOTFOUND ) { aDefStr = aToken; bFound = sal_True; @@ -313,29 +324,24 @@ void SvxCharacterMap::init() } if ( bFound ) - aFontLB.SelectEntry( aDefStr ); - else if ( aFontLB.GetEntryCount() ) - aFontLB.SelectEntryPos(0); - FontSelectHdl( &aFontLB ); - - aOKBtn.SetClickHdl( LINK( this, SvxCharacterMap, OKHdl ) ); - aFontLB.SetSelectHdl( LINK( this, SvxCharacterMap, FontSelectHdl ) ); - aSubsetLB.SetSelectHdl( LINK( this, SvxCharacterMap, SubsetSelectHdl ) ); - aShowSet.SetDoubleClickHdl( LINK( this, SvxCharacterMap, CharDoubleClickHdl ) ); - aShowSet.SetSelectHdl( LINK( this, SvxCharacterMap, CharSelectHdl ) ); - aShowSet.SetHighlightHdl( LINK( this, SvxCharacterMap, CharHighlightHdl ) ); - aShowSet.SetPreSelectHdl( LINK( this, SvxCharacterMap, CharPreSelectHdl ) ); - aDeleteBtn.SetClickHdl( LINK( this, SvxCharacterMap, DeleteHdl ) ); + m_pFontLB->SelectEntry( aDefStr ); + else if ( m_pFontLB->GetEntryCount() ) + m_pFontLB->SelectEntryPos(0); + FontSelectHdl(m_pFontLB); + + m_pOKBtn->SetClickHdl( LINK( this, SvxCharacterMap, OKHdl ) ); + m_pFontLB->SetSelectHdl( LINK( this, SvxCharacterMap, FontSelectHdl ) ); + m_pSubsetLB->SetSelectHdl( LINK( this, SvxCharacterMap, SubsetSelectHdl ) ); + m_pShowSet->SetDoubleClickHdl( LINK( this, SvxCharacterMap, CharDoubleClickHdl ) ); + m_pShowSet->SetSelectHdl( LINK( this, SvxCharacterMap, CharSelectHdl ) ); + m_pShowSet->SetHighlightHdl( LINK( this, SvxCharacterMap, CharHighlightHdl ) ); + m_pShowSet->SetPreSelectHdl( LINK( this, SvxCharacterMap, CharPreSelectHdl ) ); + m_pDeleteBtn->SetClickHdl( LINK( this, SvxCharacterMap, DeleteHdl ) ); if( SvxShowCharSet::getSelectedChar() == ' ') - aOKBtn.Disable(); + m_pOKBtn->Disable(); else - aOKBtn.Enable(); - - // left align aShowText field - int nLeftEdge = aSymbolText.GetPosPixel().X(); - nLeftEdge += aSymbolText.GetTextWidth( aSymbolText.GetText() ); - aShowText.SetPosPixel( Point( nLeftEdge+4, aShowText.GetPosPixel().Y() ) ); + m_pOKBtn->Enable(); } // ----------------------------------------------------------------------- @@ -346,12 +352,12 @@ void SvxCharacterMap::SetCharFont( const Font& rFont ) // like "Times New Roman;Times" resolved Font aTmp( GetFontMetric( rFont ) ); - if ( aFontLB.GetEntryPos( aTmp.GetName() ) == LISTBOX_ENTRY_NOTFOUND ) + if ( m_pFontLB->GetEntryPos( aTmp.GetName() ) == LISTBOX_ENTRY_NOTFOUND ) return; - aFontLB.SelectEntry( aTmp.GetName() ); + m_pFontLB->SelectEntry( aTmp.GetName() ); aFont = aTmp; - FontSelectHdl( &aFontLB ); + FontSelectHdl(m_pFontLB); // for compatibility reasons ModalDialog::SetFont( aFont ); @@ -361,14 +367,14 @@ void SvxCharacterMap::SetCharFont( const Font& rFont ) IMPL_LINK_NOARG(SvxCharacterMap, OKHdl) { - String aStr = aShowText.GetText(); + String aStr = m_pShowText->GetText(); if ( !aStr.Len() ) { - sal_UCS4 cChar = aShowSet.GetSelectCharacter(); + sal_UCS4 cChar = m_pShowSet->GetSelectCharacter(); // using the new UCS4 constructor rtl::OUString aOUStr( &cChar, 1 ); - aShowText.SetText( aOUStr ); + m_pShowText->SetText( aOUStr ); } EndDialog( sal_True ); return 0; @@ -378,8 +384,8 @@ IMPL_LINK_NOARG(SvxCharacterMap, OKHdl) IMPL_LINK_NOARG(SvxCharacterMap, FontSelectHdl) { - sal_uInt16 nPos = aFontLB.GetSelectEntryPos(), - nFont = (sal_uInt16)(sal_uLong)aFontLB.GetEntryData( nPos ); + sal_uInt16 nPos = m_pFontLB->GetSelectEntryPos(), + nFont = (sal_uInt16)(sal_uLong)m_pFontLB->GetEntryData( nPos ); aFont = GetDevFont( nFont ); aFont.SetWeight( WEIGHT_DONTKNOW ); aFont.SetItalic( ITALIC_NONE ); @@ -388,50 +394,43 @@ IMPL_LINK_NOARG(SvxCharacterMap, FontSelectHdl) aFont.SetFamily( FAMILY_DONTKNOW ); // notify children using this font - aShowSet.SetFont( aFont ); - aShowChar.SetFont( aFont ); - aShowText.SetFont( aFont ); - - // right align some fields to aShowSet - int nRightEdge = aShowSet.GetPosPixel().X() + aShowSet.GetOutputSizePixel().Width(); - Size aNewSize = aSubsetLB.GetOutputSizePixel(); - aNewSize.setWidth( nRightEdge - aSubsetLB.GetPosPixel().X() ); - aSubsetLB.SetOutputSizePixel( aNewSize ); + m_pShowSet->SetFont( aFont ); + m_pShowChar->SetFont( aFont ); + m_pShowText->SetFont( aFont ); // setup unicode subset listbar with font specific subsets, // hide unicode subset listbar for symbol fonts // TODO: get info from the Font once it provides it - if( pSubsetMap) - delete pSubsetMap; + delete pSubsetMap; pSubsetMap = NULL; sal_Bool bNeedSubset = (aFont.GetCharSet() != RTL_TEXTENCODING_SYMBOL); if( bNeedSubset ) { FontCharMap aFontCharMap; - aShowSet.GetFontCharMap( aFontCharMap ); + m_pShowSet->GetFontCharMap( aFontCharMap ); pSubsetMap = new SubsetMap( &aFontCharMap ); // update subset listbox for new font's unicode subsets - aSubsetLB.Clear(); + m_pSubsetLB->Clear(); // TODO: is it worth to improve the stupid linear search? bool bFirst = true; const Subset* s; while( NULL != (s = pSubsetMap->GetNextSubset( bFirst )) ) { - sal_uInt16 nPos_ = aSubsetLB.InsertEntry( s->GetName() ); - aSubsetLB.SetEntryData( nPos_, (void*)s ); + sal_uInt16 nPos_ = m_pSubsetLB->InsertEntry( s->GetName() ); + m_pSubsetLB->SetEntryData( nPos_, (void*)s ); // NOTE: subset must live at least as long as the selected font if( bFirst ) - aSubsetLB.SelectEntryPos( nPos_ ); + m_pSubsetLB->SelectEntryPos( nPos_ ); bFirst = false; } - if( aSubsetLB.GetEntryCount() <= 1 ) + if( m_pSubsetLB->GetEntryCount() <= 1 ) bNeedSubset = sal_False; } - aSubsetText.Show( bNeedSubset); - aSubsetLB.Show( bNeedSubset); + m_pSubsetText->Show( bNeedSubset); + m_pSubsetLB->Show( bNeedSubset); return 0; } @@ -440,14 +439,14 @@ IMPL_LINK_NOARG(SvxCharacterMap, FontSelectHdl) IMPL_LINK_NOARG(SvxCharacterMap, SubsetSelectHdl) { - sal_uInt16 nPos = aSubsetLB.GetSelectEntryPos(); - const Subset* pSubset = reinterpret_cast<const Subset*> (aSubsetLB.GetEntryData(nPos)); + sal_uInt16 nPos = m_pSubsetLB->GetSelectEntryPos(); + const Subset* pSubset = reinterpret_cast<const Subset*> (m_pSubsetLB->GetEntryData(nPos)); if( pSubset ) { sal_UCS4 cFirst = pSubset->GetRangeMin(); - aShowSet.SelectCharacter( cFirst ); + m_pShowSet->SelectCharacter( cFirst ); } - aSubsetLB.SelectEntryPos( nPos ); + m_pSubsetLB->SelectEntryPos( nPos ); return 0; } @@ -465,18 +464,18 @@ IMPL_LINK_NOARG(SvxCharacterMap, CharSelectHdl) { if ( !bOne ) { - String aText = aShowText.GetText(); + String aText = m_pShowText->GetText(); if ( aText.Len() != CHARMAP_MAXLEN ) { - sal_UCS4 cChar = aShowSet.GetSelectCharacter(); + sal_UCS4 cChar = m_pShowSet->GetSelectCharacter(); // using the new UCS4 constructor rtl::OUString aOUStr( &cChar, 1 ); - aShowText.SetText( aText + aOUStr ); + m_pShowText->SetText( aText + aOUStr ); } } - aOKBtn.Enable(); + m_pOKBtn->Enable(); return 0; } @@ -485,7 +484,7 @@ IMPL_LINK_NOARG(SvxCharacterMap, CharSelectHdl) IMPL_LINK_NOARG(SvxCharacterMap, CharHighlightHdl) { String aText; - sal_UCS4 cChar = aShowSet.GetSelectCharacter(); + sal_UCS4 cChar = m_pShowSet->GetSelectCharacter(); sal_Bool bSelect = (cChar > 0); // show char sample @@ -498,12 +497,12 @@ IMPL_LINK_NOARG(SvxCharacterMap, CharHighlightHdl) if( pSubsetMap ) pSubset = pSubsetMap->GetSubsetByUnicode( cChar ); if( pSubset ) - aSubsetLB.SelectEntry( pSubset->GetName() ); + m_pSubsetLB->SelectEntry( pSubset->GetName() ); else - aSubsetLB.SetNoSelection(); + m_pSubsetLB->SetNoSelection(); } - aShowChar.SetText( aText ); - aShowChar.Update(); + m_pShowChar->SetText( aText ); + m_pShowChar->Update(); // show char code if ( bSelect ) @@ -514,7 +513,7 @@ IMPL_LINK_NOARG(SvxCharacterMap, CharHighlightHdl) snprintf( aBuf+6, sizeof(aBuf)-6, " (%u)", static_cast<unsigned>(cChar) ); aText = rtl::OUString::createFromAscii(aBuf); } - aCharCodeText.SetText( aText ); + m_pCharCodeText->SetText( aText ); return 0; } @@ -526,13 +525,13 @@ IMPL_LINK_NOARG(SvxCharacterMap, CharPreSelectHdl) // adjust subset selection if( pSubsetMap ) { - sal_UCS4 cChar = aShowSet.GetSelectCharacter(); + sal_UCS4 cChar = m_pShowSet->GetSelectCharacter(); const Subset* pSubset = pSubsetMap->GetSubsetByUnicode( cChar ); if( pSubset ) - aSubsetLB.SelectEntry( pSubset->GetName() ); + m_pSubsetLB->SelectEntry( pSubset->GetName() ); } - aOKBtn.Enable(); + m_pOKBtn->Enable(); return 0; } @@ -540,8 +539,8 @@ IMPL_LINK_NOARG(SvxCharacterMap, CharPreSelectHdl) IMPL_LINK_NOARG(SvxCharacterMap, DeleteHdl) { - aShowText.SetText( String() ); - aOKBtn.Disable(); + m_pShowText->SetText( String() ); + m_pOKBtn->Disable(); return 0; } diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx index e65d314a5b6e..8c8900375032 100644 --- a/cui/source/factory/dlgfact.cxx +++ b/cui/source/factory/dlgfact.cxx @@ -1302,24 +1302,13 @@ AbstractSvxHlinkDlgMarkWnd* AbstractDialogFactory_Impl::CreateSvxHlinkDlgMarkWnd return 0; } -SfxAbstractDialog* AbstractDialogFactory_Impl::CreateSfxDialog( sal_uInt32 nResId, +SfxAbstractDialog* AbstractDialogFactory_Impl::CreateSfxDialog( sal_uInt32, Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& , const SfxItemSet* pAttrSet ) { - SfxModalDialog* pDlg=NULL; - switch ( nResId ) - { - case RID_SVXDLG_CHARMAP : - pDlg = new SvxCharacterMap( pParent, sal_True, pAttrSet ); - break; - default: - break; - } - - if ( pDlg ) - return new AbstractSfxDialog_Impl( pDlg ); - return 0; + SfxModalDialog* pDlg = new SvxCharacterMap( pParent, sal_True, pAttrSet ); + return new AbstractSfxDialog_Impl( pDlg ); } SfxAbstractTabDialog* AbstractDialogFactory_Impl::CreateTabItemDialog( Window* pParent, diff --git a/cui/source/inc/cuicharmap.hxx b/cui/source/inc/cuicharmap.hxx index f9628f1dc2ed..b556a4075389 100644 --- a/cui/source/inc/cuicharmap.hxx +++ b/cui/source/inc/cuicharmap.hxx @@ -51,10 +51,15 @@ public: SvxShowText( Window* pParent, const ResId& rResId, sal_Bool bCenter = sal_False ); + SvxShowText( Window* pParent, + sal_Bool bCenter = sal_False ); ~SvxShowText(); void SetFont( const Font& rFont ); void SetText( const String& rText ); + void SetCentered(bool bCenter) { mbCenter = bCenter; } + + virtual void Resize(); protected: virtual void Paint( const Rectangle& ); @@ -73,19 +78,17 @@ private: void init(); - SvxShowCharSet aShowSet; - SvxShowText aShowText; - OKButton aOKBtn; - CancelButton aCancelBtn; - HelpButton aHelpBtn; - PushButton aDeleteBtn; - FixedText aFontText; - ListBox aFontLB; - FixedText aSubsetText; - ListBox aSubsetLB; - FixedText aSymbolText; - SvxShowText aShowChar; - FixedText aCharCodeText; + SvxShowCharSet* m_pShowSet; + SvxShowText* m_pShowText; + OKButton* m_pOKBtn; + PushButton* m_pDeleteBtn; + FixedText* m_pFontText; + ListBox* m_pFontLB; + FixedText* m_pSubsetText; + ListBox* m_pSubsetLB; + FixedText* m_pSymbolText; + SvxShowText* m_pShowChar; + FixedText* m_pCharCodeText; Font aFont; sal_Bool bOne; const SubsetMap* pSubsetMap; diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx index a2ac623cfaab..c2a0228a6589 100644 --- a/cui/source/tabpages/chardlg.cxx +++ b/cui/source/tabpages/chardlg.cxx @@ -3338,26 +3338,20 @@ void SvxCharTwoLinesPage::Initialize() void SvxCharTwoLinesPage::SelectCharacter( ListBox* pBox ) { - bool bStart = pBox == m_pStartBracketLB; - //SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - //if(pFact) - { - //AbstractSvxCharacterMap* aDlg = pFact->CreateSvxCharacterMap( this, RID_SVXDLG_CHARMAP ); - SvxCharacterMap* aDlg = new SvxCharacterMap( this ); - aDlg->DisableFontSelection(); + SvxCharacterMap* aDlg = new SvxCharacterMap( this ); + aDlg->DisableFontSelection(); - if ( aDlg->Execute() == RET_OK ) - { - sal_Unicode cChar = (sal_Unicode) aDlg->GetChar(); - SetBracket( cChar, bStart ); - } - else - { - pBox->SelectEntryPos( bStart ? m_nStartBracketPosition : m_nEndBracketPosition ); - } - delete aDlg; + if ( aDlg->Execute() == RET_OK ) + { + sal_Unicode cChar = (sal_Unicode) aDlg->GetChar(); + SetBracket( cChar, bStart ); + } + else + { + pBox->SelectEntryPos( bStart ? m_nStartBracketPosition : m_nEndBracketPosition ); } + delete aDlg; } // ----------------------------------------------------------------------- diff --git a/svx/inc/svx/charmap.hxx b/svx/inc/svx/charmap.hxx index c3efd8ebbddd..9fe90497b3d6 100644 --- a/svx/inc/svx/charmap.hxx +++ b/svx/inc/svx/charmap.hxx @@ -53,6 +53,7 @@ class SVX_DLLPUBLIC SvxShowCharSet : public Control { public: SvxShowCharSet( Window* pParent, const ResId& rResId ); + SvxShowCharSet( Window* pParent ); ~SvxShowCharSet(); void SetFont( const Font& rFont ); @@ -87,6 +88,8 @@ public: sal_Int32 getMaxCharCount() const; #endif // _SVX_CHARMAP_CXX_ + virtual void Resize(); + protected: virtual void Paint( const Rectangle& ); virtual void MouseButtonDown( const MouseEvent& rMEvt ); @@ -130,6 +133,8 @@ private: // abstraction layers are: Unicode<->MapIndex<->Pixel Point MapIndexToPixel( int) const; DECL_LINK(VscrollHdl, void *); + + void init(); }; #endif diff --git a/svx/source/dialog/charmap.cxx b/svx/source/dialog/charmap.cxx index 409d5cba61af..45590db46dc4 100644 --- a/svx/source/dialog/charmap.cxx +++ b/svx/source/dialog/charmap.cxx @@ -65,10 +65,25 @@ sal_uInt32& SvxShowCharSet::getSelectedChar() #define SBWIDTH 16 -SvxShowCharSet::SvxShowCharSet( Window* pParent, const ResId& rResId ) : - Control( pParent, rResId ) - ,m_pAccessible(NULL) - ,aVscrollSB( this, WB_VERT) +SvxShowCharSet::SvxShowCharSet(Window* pParent, const ResId& rResId) + : Control(pParent, rResId) + , m_pAccessible(NULL) + , aVscrollSB(this, WB_VERT) +{ + init(); + InitSettings( sal_True, sal_True ); +} + +SvxShowCharSet::SvxShowCharSet(Window* pParent) + : Control(pParent) + , m_pAccessible(NULL) + , aVscrollSB( this, WB_VERT) +{ + init(); + InitSettings( sal_True, sal_True ); +} + +void SvxShowCharSet::init() { nSelectedIndex = -1; // TODO: move into init list when it is no longer static @@ -81,7 +96,21 @@ SvxShowCharSet::SvxShowCharSet( Window* pParent, const ResId& rResId ) : // other settings like aVscroll depend on selected font => see SetFont bDrag = sal_False; - InitSettings( sal_True, sal_True ); +} + +void SvxShowCharSet::Resize() +{ + aOrigSize = GetOutputSizePixel(); + aOrigPos = GetPosPixel(); + + Control::Resize(); + + SetFont(GetFont()); //force recalculation of correct fontsize +} + +extern "C" SAL_DLLPUBLIC_EXPORT Window* SAL_CALL makeSvxShowCharSet(Window *pParent, VclBuilder::stringmap &) +{ + return new SvxShowCharSet(pParent); } // ----------------------------------------------------------------------- |