diff options
author | Herbert Duerr <hdu@openoffice.org> | 2000-10-17 16:13:41 +0000 |
---|---|---|
committer | Herbert Duerr <hdu@openoffice.org> | 2000-10-17 16:13:41 +0000 |
commit | 0867501159846303335e85f2663bf0e8e96ea894 (patch) | |
tree | 90b3e00c6a6d1022df3ea09c8ae0bb187c2088cf /svx/source/dialog | |
parent | cfcd3757caf7d22b5ddd9b2550a41062dabec877 (diff) |
make charmap dialog unicode capable
Diffstat (limited to 'svx/source/dialog')
-rw-r--r-- | svx/source/dialog/charmap.cxx | 537 | ||||
-rw-r--r-- | svx/source/dialog/charmap.hrc | 9 | ||||
-rw-r--r-- | svx/source/dialog/charmap.src | 508 |
3 files changed, 952 insertions, 102 deletions
diff --git a/svx/source/dialog/charmap.cxx b/svx/source/dialog/charmap.cxx index 94eb6e60359a..a1aba7676f7e 100644 --- a/svx/source/dialog/charmap.cxx +++ b/svx/source/dialog/charmap.cxx @@ -2,9 +2,9 @@ * * $RCSfile: charmap.cxx,v $ * - * $Revision: 1.1.1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: hr $ $Date: 2000-09-18 17:01:07 $ + * last change: $Author: hdu $ $Date: 2000-10-17 17:12:59 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -64,6 +64,10 @@ #ifndef _SHL_HXX #include <tools/shl.hxx> #endif +#ifndef _TOOLS_DEBUG_HXX +#include <tools/debug.hxx> +#endif + #ifndef _SV_SOUND_HXX #include <vcl/sound.hxx> #endif @@ -81,19 +85,27 @@ #include "charmap.hxx" #include "dialmgr.hxx" +#include <rtl/textenc.h> + // class SvxShowCharSet -------------------------------------------------- -SvxShowCharSet::SvxShowCharSet( Window* pParent, const ResId& rResId ) : +#define SBWIDTH 16 - Control( pParent, rResId ) +SvxShowCharSet::SvxShowCharSet( Window* pParent, const ResId& rResId ) : + Control( pParent, rResId ), + aVscrollSB( this, WB_VERT), + selectedIndex( FirstInMap()) { - Size aOutputSize = GetOutputSizePixel(); - c = 32; - nX = aOutputSize.Width() / COLUMN_COUNT; - nY = aOutputSize.Height() / ROW_COUNT; + origSize = GetOutputSizePixel(); + origPos = GetPosPixel(); + + SetStyle( GetStyle() | WB_CLIPCHILDREN); + aVscrollSB.SetScrollHdl( LINK( this, SvxShowCharSet, VscrollHdl ) ); + aVscrollSB.EnableDrag( TRUE); + // other aVscroll settings depend on selected font => see SetFont + bDrag = FALSE; - SetOutputSizePixel( Size( nX * COLUMN_COUNT, nY * ROW_COUNT ) ); InitSettings( TRUE, TRUE ); } @@ -102,7 +114,7 @@ SvxShowCharSet::SvxShowCharSet( Window* pParent, const ResId& rResId ) : void SvxShowCharSet::GetFocus() { Control::GetFocus(); - SelectCharacter( c, TRUE ); + SelectIndex( selectedIndex, TRUE ); } // ----------------------------------------------------------------------- @@ -110,7 +122,7 @@ void SvxShowCharSet::GetFocus() void SvxShowCharSet::LoseFocus() { Control::LoseFocus(); - SelectCharacter( c, TRUE ); + SelectIndex( selectedIndex, TRUE ); } // ----------------------------------------------------------------------- @@ -129,7 +141,8 @@ void SvxShowCharSet::StateChanged( StateChangedType nType ) void SvxShowCharSet::DataChanged( const DataChangedEvent& rDCEvt ) { - if ( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) ) + if ( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) + && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) ) InitSettings( TRUE, TRUE ); else Control::DataChanged( rDCEvt ); @@ -147,9 +160,8 @@ void SvxShowCharSet::MouseButtonDown( const MouseEvent& rMEvt ) bDrag = TRUE; CaptureMouse(); - long n = (rMEvt.GetPosPixel().Y() / nY) * COLUMN_COUNT + - (rMEvt.GetPosPixel().X() / nX) + 32; - SelectCharacter( (sal_Unicode)Min( n, 255L ) ); + int index = PixelToMapIndex( rMEvt.GetPosPixel()); + SelectIndex( index); } if ( !(rMEvt.GetClicks() % 2) ) @@ -163,7 +175,7 @@ void SvxShowCharSet::MouseButtonUp( const MouseEvent& rMEvt ) { if ( bDrag && rMEvt.IsLeft() ) { - // Mouse ueber der Char-Auswahl losgelassen + // released mouse over character map if ( Rectangle(Point(), GetOutputSize()).IsInside(rMEvt.GetPosPixel())) aSelectHdl.Call( this ); ReleaseMouse(); @@ -189,14 +201,84 @@ void SvxShowCharSet::MouseMove( const MouseEvent& rMEvt ) else if ( aPos.Y() > aSize.Height()-5 ) aPos.Y() = aSize.Height()-5; - long n = (aPos.Y() / nY) * COLUMN_COUNT + - (aPos.X() / nX) + 32; - SelectCharacter( (sal_Unicode)Min( n, 255L ) ); + int index = PixelToMapIndex( aPos); + SelectIndex( index ); } } // ----------------------------------------------------------------------- +void SvxShowCharSet::Command( const CommandEvent& rCEvt ) +{ + if( !HandleScrollCommand( rCEvt, 0, &aVscrollSB ) ) + Control::Command( rCEvt ); +} + +// ----------------------------------------------------------------------- +// TODO: LastInMap(), UnicodeToMapIndex() and MapIndexToUnicode() should be in Font, +// we let them mature here though because it is currently the only use + +#define FIRST_UNICODE sal_Unicode(0x0020) // ASCII space code +#define LAST_UNICODE sal_Unicode(0xFFFF) // end of UCS-16 + +inline int SvxShowCharSet::FirstInMap( void) const +{ + return 0; +} + +inline int SvxShowCharSet::LastInMap( void) const +{ + if( GetFont().GetCharSet() == RTL_TEXTENCODING_SYMBOL) + return (0x0FF - 0x020); + return (LAST_UNICODE - FIRST_UNICODE); +} + +inline int SvxShowCharSet::FirstInView( void) const +{ + int idx = FirstInMap(); + if( aVscrollSB.IsVisible()) + idx += aVscrollSB.GetThumbPos() * COLUMN_COUNT; + return idx; +} + +inline int SvxShowCharSet::LastInView( void) const +{ + int idx = FirstInView(); + idx += ROW_COUNT * COLUMN_COUNT - 1; + return Min( idx, LastInMap()); +} + +inline int SvxShowCharSet::UnicodeToMapIndex( sal_Unicode c) const +{ + //TODO: should depend on font and encoding, change when Font can provide info + int mapIndex = c - FIRST_UNICODE; + if( mapIndex < FirstInMap() || mapIndex > LastInMap()) + mapIndex = FirstInMap(); + return mapIndex; +} + +inline Point SvxShowCharSet::MapIndexToPixel( int index) const +{ + int base = FirstInView(); + int x = ((index - base) % COLUMN_COUNT) * nX; + int y = ((index - base) / COLUMN_COUNT) * nY; + return Point( x, y); +} + +inline int SvxShowCharSet::PixelToMapIndex( const Point point) const +{ + int base = FirstInView(); + return (base + (point.X()/nX) + (point.Y()/nY) * COLUMN_COUNT); +} + +inline sal_Unicode SvxShowCharSet::MapIndexToUnicode( int index) const +{ + //TODO: should depend on font and encoding, change when Font can provide info + return (FIRST_UNICODE + index); +} + +// ----------------------------------------------------------------------- + void SvxShowCharSet::KeyInput( const KeyEvent& rKEvt ) { KeyCode aCode = rKEvt.GetKeyCode(); @@ -208,15 +290,15 @@ void SvxShowCharSet::KeyInput( const KeyEvent& rKEvt ) } sal_Unicode cChar = (sal_Unicode)rKEvt.GetCharCode(); - - if ( cChar > 32 ) + int mapIndex = UnicodeToMapIndex( cChar); + if ( mapIndex>FirstInMap() && mapIndex<=LastInMap()) { - SelectCharacter( cChar ); + SelectIndex( mapIndex ); aPreSelectHdl.Call( this ); return; } - FASTBOOL bPreSelect = TRUE; + int tmpSelected = selectedIndex; switch ( aCode.GetCode() ) { @@ -224,65 +306,70 @@ void SvxShowCharSet::KeyInput( const KeyEvent& rKEvt ) aSelectHdl.Call( this ); break; case KEY_LEFT: - if ( c > 32 ) - SelectCharacter( c-1 ); + --tmpSelected; break; case KEY_RIGHT: - if ( c < 255 ) - SelectCharacter( c+1 ); + ++tmpSelected; break; case KEY_UP: - if ( c-COLUMN_COUNT >= 32 ) - SelectCharacter( c-COLUMN_COUNT ); + tmpSelected -= COLUMN_COUNT; break; case KEY_DOWN: - if ( c+COLUMN_COUNT <= 255 ) - SelectCharacter( c+COLUMN_COUNT ); + tmpSelected += COLUMN_COUNT; + break; + case KEY_PAGEUP: + tmpSelected -= ROW_COUNT * COLUMN_COUNT; + break; + case KEY_PAGEDOWN: + tmpSelected += ROW_COUNT * COLUMN_COUNT; break; case KEY_HOME: - SelectCharacter( 32 ); + tmpSelected = FirstInMap(); break; case KEY_END: - SelectCharacter( 255 ); + tmpSelected = LastInMap(); break; default: - bPreSelect = FALSE; Control::KeyInput( rKEvt ); } - if ( bPreSelect ) + if ( tmpSelected >= FirstInMap() &&tmpSelected <= LastInMap() ) { + SelectIndex( tmpSelected, TRUE); aPreSelectHdl.Call( this ); + } } // ----------------------------------------------------------------------- void SvxShowCharSet::Paint( const Rectangle& ) { - DrawChars_Impl( 32, 256 ); + DrawChars_Impl( FirstInView(), LastInView()); } // ----------------------------------------------------------------------- -void SvxShowCharSet::DrawChars_Impl( USHORT n1, USHORT n2 ) +void SvxShowCharSet::DrawChars_Impl( int n1, int n2) { - USHORT i; - long x, y; - Size aOutputSize; - String aCharStr; + if( n1 > LastInView() || n2 < FirstInView()) + return; - aOutputSize = GetOutputSizePixel(); + Size aOutputSize = GetOutputSizePixel(); + if( aVscrollSB.IsVisible()) + aOutputSize.setWidth( aOutputSize.Width() - SBWIDTH); - for ( i = 1; i < COLUMN_COUNT; i++ ) + int i; + for ( i = 1; i < COLUMN_COUNT; ++i) DrawLine( Point( nX * i, 0 ), Point( nX * i, aOutputSize.Height() ) ); - for ( i = 1; i < ROW_COUNT; i++ ) + for ( i = 1; i < ROW_COUNT; ++i ) DrawLine( Point( 0, nY * i ), Point( aOutputSize.Width(), nY * i ) ); - for ( i = n1; i < n2; i++ ) + for ( i = n1; i <= n2; ++i) { - x = ((i-32) % COLUMN_COUNT) * nX; - y = ((i-32) / COLUMN_COUNT) * nY; + Point pix = MapIndexToPixel( i); + int x = pix.X(); + int y = pix.Y(); - if ( c == sal_Unicode(i) && HasFocus() ) + if ( i == selectedIndex && HasFocus() ) { const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings(); @@ -291,22 +378,20 @@ void SvxShowCharSet::DrawChars_Impl( USHORT n1, USHORT n2 ) Color aFillCol = GetFillColor(); SetLineColor(); SetFillColor( rStyleSettings.GetFaceColor() ); - DrawRect( Rectangle( Point( x + 1, y + 1), - Size( nX - 1, nY - 1 ) ) ); + DrawRect( Rectangle( Point( x+1, y+1), Size( nX-1, nY-1))); SetLineColor( rStyleSettings.GetLightColor() ); - DrawLine( Point( x + 1, y + 1 ), Point( x + nX - 1, y + 1 ) ); - DrawLine( Point( x + 1, y + 1 ), Point( x + 1, y + nY - 1 ) ); + DrawLine( Point( x+1, y+1 ), Point( x+nX-1, y+1)); + DrawLine( Point( x+1, y+1 ), Point( x+1, y+nY-1)); SetLineColor( rStyleSettings.GetShadowColor() ); - DrawLine( Point( x + 1, y + nY - 1 ), - Point( x + nX - 1, y + nY - 1 ) ); - DrawLine( Point( x + nX - 1, y + nY - 1 ), - Point( x + nX - 1, y + 1 ) ); + DrawLine( Point( x+1, y+nY-1), Point( x+nX-1, y+nY-1)); + DrawLine( Point( x+nX-1, y+nY-1), Point( x+nX-1, y+1)); SetLineColor( aLineCol ); SetFillColor( aFillCol ); } + String aCharStr; if ( i > 0 ) - aCharStr = String( (sal_Unicode)i ); + aCharStr = String( MapIndexToUnicode( i) ); else aCharStr.Erase(); @@ -339,53 +424,122 @@ void SvxShowCharSet::InitSettings( BOOL bForeground, BOOL bBackground ) else SetBackground( rStyleSettings.GetWindowColor() ); } + Invalidate(); } // ----------------------------------------------------------------------- +sal_Unicode SvxShowCharSet::GetSelectCharacter() const +{ + return MapIndexToUnicode( selectedIndex); +} + +// ----------------------------------------------------------------------- + void SvxShowCharSet::SetFont( const Font& rFont ) { - Font aFont = rFont; + sal_Unicode selectedChar = MapIndexToUnicode( selectedIndex); + if( selectedIndex < FirstInView() || selectedIndex > LastInView()) + selectedChar = MapIndexToUnicode( FirstInView()); - Invalidate(); + Font aFont = rFont; aFont.SetWeight( WEIGHT_LIGHT ); aFont.SetSize( Size( 0, 12 ) ); aFont.SetTransparent( TRUE ); Control::SetFont( aFont ); + + // hide scrollbar when there is nothing to scroll + BOOL needVscroll = (LastInMap()-FirstInMap()+1 > ROW_COUNT*COLUMN_COUNT); + + nX = (origSize.Width() - (needVscroll ? SBWIDTH : 0)) / COLUMN_COUNT; + nY = origSize.Height() / ROW_COUNT; + + if( needVscroll) { + aVscrollSB.SetPosSizePixel( nX * COLUMN_COUNT, 0, SBWIDTH, nY * ROW_COUNT); + int nVisible = ROW_COUNT; + int lastRow = (LastInMap() - FirstInMap() + COLUMN_COUNT) / COLUMN_COUNT; + aVscrollSB.SetRangeMin( 0); + aVscrollSB.SetRangeMax( lastRow); + aVscrollSB.SetVisibleSize( nVisible); + } + + // rearrange CharSet element in accordance with nX- and nY-multiples + Size newSize( nX * COLUMN_COUNT + (needVscroll ? SBWIDTH : 0), nY * ROW_COUNT); + Point newPos = origPos + Point( (origSize.Width() - newSize.Width()) / 2, 0); + SetPosPixel( newPos); + SetOutputSizePixel( newSize); + + int mapIndex = UnicodeToMapIndex( selectedChar); + SelectIndex( mapIndex); + aVscrollSB.Show( needVscroll); + + Invalidate(); } // ----------------------------------------------------------------------- -void SvxShowCharSet::SelectCharacter( sal_Unicode cNew, BOOL bFocus ) +void SvxShowCharSet::SelectIndex( int idxNew, BOOL bFocus ) { - if ( (c == cNew) && !bFocus ) + if ( (selectedIndex == idxNew) && !bFocus ) return; - USHORT n = c; + if( idxNew<FirstInView()) { + // need to scroll up to see selected item + int newPos = aVscrollSB.GetThumbPos(); + newPos -= (FirstInView() - idxNew + COLUMN_COUNT-1) / COLUMN_COUNT; + aVscrollSB.SetThumbPos( newPos); + selectedIndex = idxNew; + Invalidate(); + } + else if( idxNew>LastInView()) { + // need to scroll down to see selected item + int newPos = aVscrollSB.GetThumbPos(); + newPos += (idxNew - LastInView() + COLUMN_COUNT) / COLUMN_COUNT; + aVscrollSB.SetThumbPos( newPos); + selectedIndex = idxNew; + Invalidate(); + } else { + // remove highlighted view + Color aLineCol = GetLineColor(); + Color aFillCol = GetFillColor(); + SetLineColor(); + SetFillColor( GetBackground().GetColor() ); + + Point pixOld = MapIndexToPixel( selectedIndex); + pixOld.Move( +1, +1); + DrawRect( Rectangle( pixOld, Size( nX-1, nY-1))); + SetLineColor( aLineCol ); + SetFillColor( aFillCol ); + + int idxOld = selectedIndex; + selectedIndex = idxNew; + DrawChars_Impl( idxOld, idxOld ); + DrawChars_Impl( idxNew, idxNew ); + } - // Highlight-Darstellung entfernen - long x = ((n-32) % COLUMN_COUNT) * nX; - long y = ((n-32) / COLUMN_COUNT) * nY; + aHighHdl.Call( this ); +} - Color aLineCol = GetLineColor(); - Color aFillCol = GetFillColor(); - SetLineColor(); - SetFillColor( GetBackground().GetColor() ); - DrawRect( Rectangle( Point( x + 1, y + 1), Size( nX - 1, nY - 1 ) ) ); - SetLineColor( aLineCol ); - SetFillColor( aFillCol ); +// ----------------------------------------------------------------------- - c = cNew; +void SvxShowCharSet::SelectCharacter( sal_Unicode cNew, BOOL bFocus ) +{ + SelectIndex( UnicodeToMapIndex( cNew), bFocus); +} - DrawChars_Impl( n, n+1 ); +// ----------------------------------------------------------------------- - n = c; - DrawChars_Impl( n, n+1 ); +IMPL_LINK_INLINE_START( SvxShowCharSet, VscrollHdl, ScrollBar *, EMPTYARG ) +{ + if( selectedIndex < FirstInView() || selectedIndex > LastInView()) + SelectIndex( FirstInView()); - aHighHdl.Call( this ); + Invalidate(); + return 0; } +IMPL_LINK_INLINE_END( SvxShowCharSet, VscrollHdl, ScrollBar *, EMPTYARG ) // ----------------------------------------------------------------------- @@ -395,7 +549,7 @@ SvxShowCharSet::~SvxShowCharSet() // class SvxShowText ----------------------------------------------------- -SvxShowText::SvxShowText(Window* pParent, const ResId& rResId, BOOL bCenter) : +SvxShowText::SvxShowText( Window* pParent, const ResId& rResId, BOOL bCenter) : Control( pParent, rResId ) @@ -410,8 +564,7 @@ void SvxShowText::Paint( const Rectangle& ) if ( bCenter ) { String aText = GetText(); - DrawText( Point( (GetOutputSizePixel().Width() - GetTextWidth(aText)) / 2, - nY ), + DrawText( Point( (GetOutputSizePixel().Width() - GetTextWidth(aText))/2, nY), aText ); } else @@ -456,6 +609,8 @@ SvxCharacterMap::SvxCharacterMap( Window* pParent, BOOL bOne ) : aShowSet ( this, ResId( CT_SHOWSET ) ), aFontText ( this, ResId( FT_FONT ) ), aFontLB ( this, ResId( LB_FONT ) ), + aSubsetText ( this, ResId( FT_SUBSET ) ), + aSubsetLB ( this, ResId( LB_SUBSET ) ), aSymbolText ( this, ResId( FT_SYMBOLE ) ), aShowText ( this, ResId( CT_SHOWTEXT ) ), aShowChar ( this, ResId( CT_SHOWCHAR ), TRUE ), @@ -468,7 +623,6 @@ SvxCharacterMap::SvxCharacterMap( Window* pParent, BOOL bOne ) : { FreeResource(); - // SystemFont erst mal einstellen aFont = GetFont(); aFont.SetTransparent( TRUE ); aFont.SetFamily( FAMILY_DONTKNOW ); @@ -502,9 +656,9 @@ SvxCharacterMap::SvxCharacterMap( Window* pParent, BOOL bOne ) : } } FASTBOOL bFound = FALSE; - // ggf. ist der Name des Fonts in der Liste nicht enthalten -> - // dann versuchen einen Token des Namens zu selektieren oder sonst - // den ersten Eintrag. + // 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 if ( aFontLB.GetEntryPos( aDefStr ) == LISTBOX_ENTRY_NOTFOUND ) { for ( i = 0; i < aDefStr.GetTokenCount(); ++i ) @@ -530,13 +684,14 @@ SvxCharacterMap::SvxCharacterMap( Window* pParent, BOOL bOne ) : 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 ) ); - SetChar( 32 ); + SetChar( FIRST_UNICODE ); aOKBtn.Disable(); } @@ -549,11 +704,6 @@ void SvxCharacterMap::SetFont( const Font& rFont ) // ----------------------------------------------------------------------- -/* [Beschreibung] - - Diese Methode wird gerufen, um die Font-Auswahl zu disablen. -*/ - void SvxCharacterMap::DisableFontSelection() { aFontText.Disable(); @@ -576,7 +726,7 @@ void SvxCharacterMap::SetCharFont( const Font& rFont ) aFont = aTmp; FontSelectHdl( &aFontLB ); - // aus Kompatiblitaetsgruenden noch drin + // for compatibility reasons ModalDialog::SetFont( aFont ); } @@ -603,9 +753,47 @@ IMPL_LINK( SvxCharacterMap, FontSelectHdl, ListBox *, EMPTYARG ) USHORT nPos = aFontLB.GetSelectEntryPos(), nFont = (USHORT)(ULONG)aFontLB.GetEntryData( nPos ); aFont = GetDevFont( nFont ); + + // notify children using this font aShowSet.SetFont( aFont ); aShowText.SetFont( aFont ); aShowChar.SetFont( aFont ); + + // setup unicode subset listbar with font specific subsets, + // hide unicode subset listbar for symbol fonts + BOOL bNeedSubset = (aFont.GetCharSet() != RTL_TEXTENCODING_SYMBOL); + if( bNeedSubset) { + // update subset listbox for new font's unicode subsets + const SubsetMap dummyMap; // TODO: font should provide SubsetMap + aSubsetLB.Clear(); + const Subset* s = 0; + // TODO: is it worth to improve stupid linear search? + for( int i = 0; (s = dummyMap.GetSubsetByIndex( i)) != 0; ++i) { + USHORT nPos = aSubsetLB.InsertEntry( s->GetName()); + aSubsetLB.SetEntryData( nPos, (void*)s ); + // subset must live at least as long as the selected font !!! + if( i == 0) + aSubsetLB.SelectEntryPos( nPos); + } + if( aSubsetLB.GetEntryCount() <= 1) + bNeedSubset = FALSE; + } + aSubsetText.Show( bNeedSubset); + aSubsetLB.Show( bNeedSubset); + + return 0; +} + +// ----------------------------------------------------------------------- + +IMPL_LINK( SvxCharacterMap, SubsetSelectHdl, ListBox *, EMPTYARG ) +{ + USHORT nPos = aSubsetLB.GetSelectEntryPos(); + const Subset* s = reinterpret_cast<const Subset*> (aSubsetLB.GetEntryData(nPos)); + if( s) { + sal_Unicode c = s->GetRangeMin(); + aShowSet.SelectCharacter( c); + } return 0; } @@ -644,13 +832,19 @@ IMPL_LINK( SvxCharacterMap, CharSelectHdl, Control *, EMPTYARG ) IMPL_LINK( SvxCharacterMap, CharHighlightHdl, Control *, EMPTYARG ) { String aTemp; - sal_Bool bSelect = ( aShowSet.GetSelectCharacter() > 0 ); - if ( bSelect ) - aTemp = String( aShowSet.GetSelectCharacter() ); + sal_Unicode c = aShowSet.GetSelectCharacter(); + sal_Bool bSelect = ( c > 0 ); + if ( bSelect ) { + aTemp = String( c ); + const SubsetMap dummyMap; // TODO: font should provide SubsetMap + const Subset* subset = dummyMap.GetSubsetByUnicode( c); + if( subset) + aSubsetLB.SelectEntry( subset->GetName()); + } aShowChar.SetText( aTemp ); aShowChar.Update(); if ( bSelect ) - aTemp = String::CreateFromInt32( (USHORT)aShowSet.GetSelectCharacter() ); + aTemp = String::CreateFromInt32( (USHORT)c ); aCharCodeText.SetText( aTemp ); return 0; } @@ -681,3 +875,156 @@ SvxCharacterMap::~SvxCharacterMap() } +// class SubsetMap ------------------------------------------------------- +// TODO: should be moved into Font Attributes stuff +// we let the it mature here though because it is currently the only use + +const const Subset** SubsetMap::allSubsets = 0; +int SubsetMap::numAllSubsets = 0; + +SubsetMap::SubsetMap( /*TODO*/void) +{ + if( allSubsets == 0) + InitStatics(); +} + +SubsetMap::~SubsetMap( void) +{ +} + +const Subset* SubsetMap::GetSubsetByIndex( int index) const +{ + if( (index >= 0) && (index < numAllSubsets)) + return allSubsets[ index]; + return 0; +} + +const Subset* SubsetMap::GetSubsetByUnicode( sal_Unicode c) const +{ + const Subset* s = 0; + for( int i = 0; (s = GetSubsetByIndex( i)) != 0; ++i) + if( (c >= s->GetRangeMin()) && (c <= s->GetRangeMax())) + return s; + return 0; +} + +inline Subset::Subset( sal_Unicode _min, sal_Unicode _max, int resId) +: rangeMin(_min), rangeMax(_max), rangeName( ResId(SVX_RES(resId))) +{} + +void SubsetMap::InitStatics( void) +{ + DBG_ASSERT( allSubsets == 0, "Unicode Subset Information double init"); + + allSubsets = new const Subset*[ SVXCOUNT_CHARRANGE]; + int i = 0; + // TODO: eventually merge or split unicode subranges + // a "native writer" should decide for his subsets + allSubsets[ i++] = new Subset( 0x0041, 0x007A, RID_SVXSTR_BASIC_LATIN); + allSubsets[ i++] = new Subset( 0x00C0, 0x00FF, RID_SVXSTR_LATIN_1); + allSubsets[ i++] = new Subset( 0x0100, 0x017F, RID_SVXSTR_LATIN_EXTENDED_A); + allSubsets[ i++] = new Subset( 0x0180, 0x024F, RID_SVXSTR_LATIN_EXTENDED_B); + allSubsets[ i++] = new Subset( 0x0250, 0x02AF, RID_SVXSTR_IPA_EXTENSIONS); + allSubsets[ i++] = new Subset( 0x02B0, 0x02FF, RID_SVXSTR_SPACING_MODIFIERS); + allSubsets[ i++] = new Subset( 0x0300, 0x036F, RID_SVXSTR_COMB_DIACRITICAL); + allSubsets[ i++] = new Subset( 0x0370, 0x03FF, RID_SVXSTR_BASIC_GREEK); +// allSubsets[ i++] = new Subset( 0x03D0, 0x03F3, RID_SVXSTR_GREEK_SYMS_COPTIC); + allSubsets[ i++] = new Subset( 0x0400, 0x04FF, RID_SVXSTR_CYRILLIC); + allSubsets[ i++] = new Subset( 0x0530, 0x058F, RID_SVXSTR_ARMENIAN); + allSubsets[ i++] = new Subset( 0x0590, 0x05FF, RID_SVXSTR_BASIC_HEBREW); +// allSubsets[ i++] = new Subset( 0x0591, 0x05C4, RID_SVXSTR_HEBREW_EXTENDED); + allSubsets[ i++] = new Subset( 0x0600, 0x06FF, RID_SVXSTR_BASIC_ARABIC); +// allSubsets[ i++] = new Subset( 0x0660, 0x06FF, RID_SVXSTR_ARABIC_EXTENDED); + allSubsets[ i++] = new Subset( 0x0700, 0x074F, RID_SVXSTR_SYRIAC); + allSubsets[ i++] = new Subset( 0x0780, 0x07BF, RID_SVXSTR_THAANA); + + allSubsets[ i++] = new Subset( 0x0900, 0x097F, RID_SVXSTR_DEVANAGARI); + allSubsets[ i++] = new Subset( 0x0980, 0x09FF, RID_SVXSTR_BENGALI); + allSubsets[ i++] = new Subset( 0x0A00, 0x0A7F, RID_SVXSTR_GURMUKHI); + allSubsets[ i++] = new Subset( 0x0A80, 0x0AFF, RID_SVXSTR_GUJARATI); + allSubsets[ i++] = new Subset( 0x0B00, 0x0B7F, RID_SVXSTR_ORIYA); + allSubsets[ i++] = new Subset( 0x0B80, 0x0BFF, RID_SVXSTR_TAMIL); + allSubsets[ i++] = new Subset( 0x0C00, 0x0C7F, RID_SVXSTR_TELUGU); + allSubsets[ i++] = new Subset( 0x0C80, 0x0CFF, RID_SVXSTR_KANNADA); + allSubsets[ i++] = new Subset( 0x0D00, 0x0D7F, RID_SVXSTR_MALAYALAM); + allSubsets[ i++] = new Subset( 0x0D80, 0x0DFF, RID_SVXSTR_SINHALA); + allSubsets[ i++] = new Subset( 0x0E00, 0x0E7F, RID_SVXSTR_THAI); + allSubsets[ i++] = new Subset( 0x0E80, 0x0EFF, RID_SVXSTR_LAO); + allSubsets[ i++] = new Subset( 0x0F00, 0x0FBF, RID_SVXSTR_TIBETAN); + allSubsets[ i++] = new Subset( 0x1000, 0x109F, RID_SVXSTR_MYANMAR); + allSubsets[ i++] = new Subset( 0x10A0, 0x10FF, RID_SVXSTR_BASIC_GEORGIAN); +// allSubsets[ i++] = new Subset( 0x10A0, 0x10C5, RID_SVXSTR_GEORGIAN_EXTENDED); + + allSubsets[ i++] = new Subset( 0x1100, 0x11FF, RID_SVXSTR_HANGUL_JAMO); + allSubsets[ i++] = new Subset( 0x1200, 0x137F, RID_SVXSTR_ETHIOPIC); + allSubsets[ i++] = new Subset( 0x13A0, 0x13FF, RID_SVXSTR_CHEROKEE); + allSubsets[ i++] = new Subset( 0x1400, 0x167F, RID_SVXSTR_CANADIAN_ABORIGINAL); + allSubsets[ i++] = new Subset( 0x1680, 0x169F, RID_SVXSTR_OGHAM); + allSubsets[ i++] = new Subset( 0x16A0, 0x16F0, RID_SVXSTR_RUNIC); + + allSubsets[ i++] = new Subset( 0x1780, 0x17FF, RID_SVXSTR_KHMER); + allSubsets[ i++] = new Subset( 0x1800, 0x18AF, RID_SVXSTR_MONGOLIAN); + allSubsets[ i++] = new Subset( 0x1E00, 0x1EFF, RID_SVXSTR_LATIN_EXTENDED_ADDS); + allSubsets[ i++] = new Subset( 0x1F00, 0x1FFF, RID_SVXSTR_GREEK_EXTENDED); + + allSubsets[ i++] = new Subset( 0x2000, 0x206F, RID_SVXSTR_GENERAL_PUNCTUATION); + allSubsets[ i++] = new Subset( 0x2070, 0x209F, RID_SVXSTR_SUB_SUPER_SCRIPTS); + allSubsets[ i++] = new Subset( 0x20A0, 0x20CF, RID_SVXSTR_CURRENCY_SYMBOLS); + allSubsets[ i++] = new Subset( 0x20D0, 0x20FF, RID_SVXSTR_COMB_DIACRITIC_SYMS); + allSubsets[ i++] = new Subset( 0x2100, 0x214F, RID_SVXSTR_LETTERLIKE_SYMBOLS); + allSubsets[ i++] = new Subset( 0x2150, 0x218F, RID_SVXSTR_NUMBER_FORMS); + allSubsets[ i++] = new Subset( 0x2190, 0x21FF, RID_SVXSTR_ARROWS); + allSubsets[ i++] = new Subset( 0x2200, 0x22FF, RID_SVXSTR_MATH_OPERATORS); + allSubsets[ i++] = new Subset( 0x2300, 0x23FF, RID_SVXSTR_MISC_TECHNICAL); + allSubsets[ i++] = new Subset( 0x2400, 0x243F, RID_SVXSTR_CONTROL_PICTURES); + allSubsets[ i++] = new Subset( 0x2440, 0x245F, RID_SVXSTR_OPTICAL_CHAR_REC); + allSubsets[ i++] = new Subset( 0x2460, 0x24FF, RID_SVXSTR_ENCLOSED_ALPHANUM); + allSubsets[ i++] = new Subset( 0x2500, 0x257F, RID_SVXSTR_BOX_DRAWING); + allSubsets[ i++] = new Subset( 0x2580, 0x259F, RID_SVXSTR_BLOCK_ELEMENTS); + allSubsets[ i++] = new Subset( 0x25A0, 0x25FF, RID_SVXSTR_GEOMETRIC_SHAPES); + allSubsets[ i++] = new Subset( 0x2600, 0x26FF, RID_SVXSTR_MISC_DINGBATS); + allSubsets[ i++] = new Subset( 0x2700, 0x27BF, RID_SVXSTR_DINGBATS); + + allSubsets[ i++] = new Subset( 0x3000, 0x303F, RID_SVXSTR_CJK_SYMS_PUNCTUATION); + allSubsets[ i++] = new Subset( 0x3040, 0x309F, RID_SVXSTR_HIRAGANA); + allSubsets[ i++] = new Subset( 0x30A0, 0x30FF, RID_SVXSTR_KATAKANA); + allSubsets[ i++] = new Subset( 0x3100, 0x312F, RID_SVXSTR_BOPOMOFO); + allSubsets[ i++] = new Subset( 0x3130, 0x318F, RID_SVXSTR_HANGUL_COMPAT_JAMO); + allSubsets[ i++] = new Subset( 0x3190, 0x31FF, RID_SVXSTR_CJK_MISC); + allSubsets[ i++] = new Subset( 0x3200, 0x32FF, RID_SVXSTR_ENCLOSED_CJK_LETTERS); + allSubsets[ i++] = new Subset( 0x3300, 0x33FF, RID_SVXSTR_CJK_COMPATIBILITY); + + allSubsets[ i++] = new Subset( 0x3400, 0x4DFF, RID_SVXSTR_CJK_UNIFIED_IDGRAPH_EXT_A); + allSubsets[ i++] = new Subset( 0x4E00, 0x9FA5, RID_SVXSTR_CJK_UNIFIED_IDGRAPH); + allSubsets[ i++] = new Subset( 0xA000, 0xA4CF, RID_SVXSTR_YI); + allSubsets[ i++] = new Subset( 0xAC00, 0xB097, RID_SVXSTR_HANGUL_GA); + allSubsets[ i++] = new Subset( 0xB098, 0xB2E3, RID_SVXSTR_HANGUL_NA); + allSubsets[ i++] = new Subset( 0xB2E4, 0xB77B, RID_SVXSTR_HANGUL_DA); + allSubsets[ i++] = new Subset( 0xB77C, 0xB9C7, RID_SVXSTR_HANGUL_RA); + allSubsets[ i++] = new Subset( 0xB9C8, 0xBC13, RID_SVXSTR_HANGUL_MA); + allSubsets[ i++] = new Subset( 0xBC14, 0xC0AB, RID_SVXSTR_HANGUL_BA); + allSubsets[ i++] = new Subset( 0xC0AC, 0xC543, RID_SVXSTR_HANGUL_SA); + allSubsets[ i++] = new Subset( 0xC544, 0xC78F, RID_SVXSTR_HANGUL_AH); + allSubsets[ i++] = new Subset( 0xC790, 0xCC27, RID_SVXSTR_HANGUL_JA); + allSubsets[ i++] = new Subset( 0xCC28, 0xCE73, RID_SVXSTR_HANGUL_CHA); + allSubsets[ i++] = new Subset( 0xCE74, 0xD0BF, RID_SVXSTR_HANGUL_KA); + allSubsets[ i++] = new Subset( 0xD0C0, 0xD30B, RID_SVXSTR_HANGUL_TA); + allSubsets[ i++] = new Subset( 0xD30C, 0xD557, RID_SVXSTR_HANGUL_PA); + allSubsets[ i++] = new Subset( 0xD558, 0xD7A3, RID_SVXSTR_HANGUL_HA); +// allSubsets[ i++] = new Subset( 0xAC00, 0xD7A3, RID_SVXSTR_HANGUL); + + allSubsets[ i++] = new Subset( 0xE000, 0xF8FF, RID_SVXSTR_PRIVATE_USE_AREA); + allSubsets[ i++] = new Subset( 0xF900, 0xFAFF, RID_SVXSTR_CJK_COMPAT_IDGRAPHS); + allSubsets[ i++] = new Subset( 0xFB00, 0xFB4F, RID_SVXSTR_ALPHA_PRESENTATION); + allSubsets[ i++] = new Subset( 0xFB50, 0xFDFF, RID_SVXSTR_ARABIC_PRESENT_A); + allSubsets[ i++] = new Subset( 0xFE20, 0xFE2F, RID_SVXSTR_COMBINING_HALF_MARKS); + allSubsets[ i++] = new Subset( 0xFE30, 0xFE4F, RID_SVXSTR_CJK_COMPAT_FORMS); + allSubsets[ i++] = new Subset( 0xFE50, 0xFE6F, RID_SVXSTR_SMALL_FORM_VARIANTS); + allSubsets[ i++] = new Subset( 0xFE70, 0xFEFF, RID_SVXSTR_ARABIC_PRESENT_B); + allSubsets[ i++] = new Subset( 0xFF00, 0xFFEF, RID_SVXSTR_HALFW_FULLW_FORMS); + allSubsets[ i++] = new Subset( 0xFFF0, 0xFFFF, RID_SVXSTR_SPECIALS); + + numAllSubsets = i; + DBG_ASSERT( (numAllSubsets < SVXCOUNT_CHARRANGE), "SVXCOUNT_CHARRANGE too small"); + DBG_ASSERT( (2*numAllSubsets > SVXCOUNT_CHARRANGE), "SVXCOUNT_CHARRANGE way to big"); +} diff --git a/svx/source/dialog/charmap.hrc b/svx/source/dialog/charmap.hrc index edcb8c0cbe2c..c6db740f979f 100644 --- a/svx/source/dialog/charmap.hrc +++ b/svx/source/dialog/charmap.hrc @@ -2,9 +2,9 @@ * * $RCSfile: charmap.hrc,v $ * - * $Revision: 1.1.1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: hr $ $Date: 2000-09-18 17:01:07 $ + * last change: $Author: hdu $ $Date: 2000-10-17 17:13:27 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -42,7 +42,7 @@ * License at http://www.openoffice.org/license.html. * * Software provided under this License is provided on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. * See the License for the specific provisions governing your rights and @@ -74,7 +74,8 @@ #define BTN_CHAR_CANCEL 18 #define BTN_CHAR_HELP 19 #define BTN_DELETE 20 - +#define FT_SUBSET 30 +#define LB_SUBSET 31 #endif diff --git a/svx/source/dialog/charmap.src b/svx/source/dialog/charmap.src index 975e1cbd9c94..02829f3b72d7 100644 --- a/svx/source/dialog/charmap.src +++ b/svx/source/dialog/charmap.src @@ -2,9 +2,9 @@ * * $RCSfile: charmap.src,v $ * - * $Revision: 1.1.1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: hr $ $Date: 2000-09-18 17:01:07 $ + * last change: $Author: hdu $ $Date: 2000-10-17 17:13:41 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -136,6 +136,21 @@ ModalDialog RID_SVXDLG_CHARMAP TabStop = TRUE ; DropDown = TRUE ; }; + FixedText FT_SUBSET + { + Pos = MAP_APPFONT ( 150 , 8 ) ; + Size = MAP_APPFONT ( 28 , 8 ) ; + Text = "~Bereich" ; + Text [ ENGLISH ] = "~Subset" ; + }; + ListBox LB_SUBSET + { + Pos = MAP_APPFONT ( 180 , 6 ) ; + Size = MAP_APPFONT ( 104 , 68 ) ; + Sort = FALSE ; + TabStop = TRUE ; + DropDown = TRUE ; + }; FixedText FT_SYMBOLE { Pos = MAP_APPFONT ( 6 , 127 ) ; @@ -231,4 +246,491 @@ ModalDialog RID_SVXDLG_CHARMAP Text[ turkish ] = "zel karakter"; Text[ language_user1 ] = " "; }; - // ********************************************************************** EOF + +/* + * strings for unicode range descriptions (used e.g. by charmap) + * (see the Unicode Standard & TrueType::OS2.ulUnicodeRange description) + */ + +String RID_SVXSTR_BASIC_LATIN +{ + Text = "Basis Latein" ; + Text [ ENGLISH ] = "Basic Latin" ; +}; +String RID_SVXSTR_LATIN_1 +{ + Text = "Latein-1" ; + Text [ ENGLISH ] = "Latin-1" ; +}; +String RID_SVXSTR_LATIN_EXTENDED_A +{ + Text = "Latein Erweitert-A" ; + Text [ ENGLISH ] = "Latin Extended-A" ; +}; +String RID_SVXSTR_LATIN_EXTENDED_B +{ + Text = "Latein Erweitert-B" ; + Text [ ENGLISH ] = "Latin Extended-B" ; +}; +String RID_SVXSTR_IPA_EXTENSIONS +{ + Text = "Lautschrift Erweiterungen" ; + Text [ ENGLISH ] = "IPA Extensions" ; +}; +String RID_SVXSTR_SPACING_MODIFIERS +{ + Text = "Spacing Modifier Zeichen" ; + Text [ ENGLISH ] = "Spacing Modifier Letters" ; +}; +String RID_SVXSTR_COMB_DIACRITICAL +{ + Text = "Kombinierende diakritische Zeichen" ; + Text [ ENGLISH ] = "Combining Diacritical Marks" ; +}; +String RID_SVXSTR_BASIC_GREEK +{ + Text = "Basis Griechisch" ; + Text [ ENGLISH ] = "Basic Greek" ; +}; +String RID_SVXSTR_GREEK_SYMS_COPTIC +{ + Text = "Griechische Symbole und Koptisch" ; + Text [ ENGLISH ] = "Greek Symbols And Coptic" ; +}; +String RID_SVXSTR_CYRILLIC +{ + Text = "Kyrillisch" ; + Text [ ENGLISH ] = "Cyrillic" ; +}; +String RID_SVXSTR_ARMENIAN +{ + Text = "Armenisch" ; + Text [ ENGLISH ] = "Armenian" ; +}; +String RID_SVXSTR_HEBREW_EXTENDED +{ + Text = "Basis Hebrisch" ; + Text [ ENGLISH ] = "Basic Hebrew" ; +}; +String RID_SVXSTR_BASIC_HEBREW +{ + Text = "Erweitertes Hebrisch" ; + Text [ ENGLISH ] = "Hebrew Extended" ; +}; +String RID_SVXSTR_BASIC_ARABIC +{ + Text = "Basis Arabisch" ; + Text [ ENGLISH ] = "Basic Arabic" ; +}; +String RID_SVXSTR_ARABIC_EXTENDED +{ + Text = "Erweitertes Arabisch" ; + Text [ ENGLISH ] = "Arabic Extended" ; +}; +String RID_SVXSTR_DEVANAGARI +{ + Text = "Devanagari" ; + Text [ ENGLISH ] = "Devanagari" ; +}; +String RID_SVXSTR_BENGALI +{ + Text = "Bengalisch" ; + Text [ ENGLISH ] = "Bengali" ; +}; +String RID_SVXSTR_GURMUKHI +{ + Text = "Gurmukhi" ; + Text [ ENGLISH ] = "Gurmukhi" ; +}; +String RID_SVXSTR_GUJARATI +{ + Text = "Gujarati" ; + Text [ ENGLISH ] = "Gujarati" ; +}; +String RID_SVXSTR_ORIYA +{ + Text = "Oriya" ; + Text [ ENGLISH ] = "Oriya" ; +}; +String RID_SVXSTR_TAMIL +{ + Text = "Tamil" ; + Text [ ENGLISH ] = "Tamil" ; +}; +String RID_SVXSTR_TELUGU +{ + Text = "Telugu" ; + Text [ ENGLISH ] = "Telugu" ; +}; +String RID_SVXSTR_KANNADA +{ + Text = "Kannada" ; + Text [ ENGLISH ] = "Kannada" ; +}; +String RID_SVXSTR_MALAYALAM +{ + Text = "Malayisch" ; + Text [ ENGLISH ] = "Malayalam" ; +}; +String RID_SVXSTR_THAI +{ + Text = "Thailndisch" ; + Text [ ENGLISH ] = "Thai" ; +}; +String RID_SVXSTR_LAO +{ + Text = "Laotisch" ; + Text [ ENGLISH ] = "Lao" ; +}; +String RID_SVXSTR_BASIC_GEORGIAN +{ + Text = "Basis Georgisch" ; + Text [ ENGLISH ] = "Basic Georgian" ; +}; +String RID_SVXSTR_GEORGIAN_EXTENDED +{ + Text = "Erweitertes Georgisch" ; + Text [ ENGLISH ] = "Georgian Extended" ; +}; +String RID_SVXSTR_HANGUL_JAMO +{ + Text = "Hangul Jamo" ; + Text [ ENGLISH ] = "Hangul Jamo" ; +}; +String RID_SVXSTR_LATIN_EXTENDED_ADDS +{ + Text = "Latein Erweiterte Zufgungen" ; + Text [ ENGLISH ] = "Latin Extended Additional" ; +}; +String RID_SVXSTR_GREEK_EXTENDED +{ + Text = "Erweitertes Griechisch" ; + Text [ ENGLISH ] = "Greek Extended" ; +}; +String RID_SVXSTR_GENERAL_PUNCTUATION +{ + Text = "Allgemeine Punktuation" ; + Text [ ENGLISH ] = "General Punctuation" ; +}; +String RID_SVXSTR_SUB_SUPER_SCRIPTS +{ + Text = "Hoch- und Tiefstellungen" ; + Text [ ENGLISH ] = "Superscripts And Subscripts" ; +}; +String RID_SVXSTR_CURRENCY_SYMBOLS +{ + Text = "Whrungssymbole" ; + Text [ ENGLISH ] = "Currency Symbols" ; +}; +String RID_SVXSTR_COMB_DIACRITIC_SYMS +{ + Text = "Kombinierende diakritische Symbole" ; + Text [ ENGLISH ] = "Combining Diacritical Marks For Symbols" ; +}; +String RID_SVXSTR_LETTERLIKE_SYMBOLS +{ + Text = "Buchstabenhnliche Symbole" ; + Text [ ENGLISH ] = "Letterlike Symbols" ; +}; +String RID_SVXSTR_NUMBER_FORMS +{ + Text = "Zahlensymbole" ; + Text [ ENGLISH ] = "Number Forms" ; +}; +String RID_SVXSTR_ARROWS +{ + Text = "Pfeilsymbole" ; + Text [ ENGLISH ] = "Arrows" ; +}; +String RID_SVXSTR_MATH_OPERATORS +{ + Text = "Mathematische Operatoren" ; + Text [ ENGLISH ] = "Mathematical Operators" ; +}; +String RID_SVXSTR_MISC_TECHNICAL +{ + Text = "Verschiedene Technische Zeichen" ; + Text [ ENGLISH ] = "Miscellaneous Technical" ; +}; +String RID_SVXSTR_CONTROL_PICTURES +{ + Text = "Tastatursymbole" ; + Text [ ENGLISH ] = "Control Pictures" ; +}; +String RID_SVXSTR_OPTICAL_CHAR_REC +{ + Text = "Maschinenlesbare Zeichen" ; + Text [ ENGLISH ] = "Optical Character Recognition" ; +}; +String RID_SVXSTR_ENCLOSED_ALPHANUM +{ + Text = "Eingekreiste Zeichen" ; + Text [ ENGLISH ] = "Enclosed Alphanumerics" ; +}; +String RID_SVXSTR_BOX_DRAWING +{ + Text = "Rahmungssymbole" ; + Text [ ENGLISH ] = "Box Drawing" ; +}; +String RID_SVXSTR_BLOCK_ELEMENTS +{ + Text = "Blocksymbole" ; + Text [ ENGLISH ] = "Block Elements" ; +}; +String RID_SVXSTR_GEOMETRIC_SHAPES +{ + Text = "Geometrische Symbole" ; + Text [ ENGLISH ] = "Geometric Shapes" ; +}; +String RID_SVXSTR_MISC_DINGBATS +{ + Text = "Verschiedene Symbole" ; + Text [ ENGLISH ] = "Miscellaneous Symbols" ; +}; +String RID_SVXSTR_DINGBATS +{ + Text = "Dingbats" ; + Text [ ENGLISH ] = "Dingbats" ; +}; +String RID_SVXSTR_CJK_SYMS_PUNCTUATION +{ + Text = "CJK Symbole und Punktuation" ; + Text [ ENGLISH ] = "CJK Symbols And Punctuation" ; +}; +String RID_SVXSTR_HIRAGANA +{ + Text = "Hiragana" ; + Text [ ENGLISH ] = "Hiragana" ; +}; +String RID_SVXSTR_KATAKANA +{ + Text = "Katakana" ; + Text [ ENGLISH ] = "Katakana" ; +}; +String RID_SVXSTR_BOPOMOFO +{ + Text = "Bopomofo" ; + Text [ ENGLISH ] = "Bopomofo" ; +}; +String RID_SVXSTR_HANGUL_COMPAT_JAMO +{ + Text = "Hangul kompatibles Jamo" ; + Text [ ENGLISH ] = "Hangul Compatibility Jamo" ; +}; +String RID_SVXSTR_CJK_MISC +{ + Text = "Verschiedene CJK Zeichen" ; + Text [ ENGLISH ] = "CJK Miscellaneous" ; +}; +String RID_SVXSTR_ENCLOSED_CJK_LETTERS +{ + Text = "Eingekreiste CJK Zeichen und Monate" ; + Text [ ENGLISH ] = "Enclosed CJK Letters And Months" ; +}; +String RID_SVXSTR_CJK_COMPATIBILITY +{ + Text = "CJK Kompatibilitt" ; + Text [ ENGLISH ] = "CJK Compatibility" ; +}; +String RID_SVXSTR_HANGUL +{ + Text = "Hangul" ; + Text [ ENGLISH ] = "Hangul" ; +}; +String RID_SVXSTR_CJK_UNIFIED_IDGRAPH +{ + Text = "Vereinheitlichte CJK-Ideogramme" ; + Text [ ENGLISH ] = "CJK Unified Ideographs" ; +}; +String RID_SVXSTR_CJK_UNIFIED_IDGRAPH_EXT_A +{ + Text = "Vereinheitlichte CJK-Ideogramm Erweiterung-A" ; + Text [ ENGLISH ] = "CJK Unified Ideographs Extension-A" ; +}; +String RID_SVXSTR_PRIVATE_USE_AREA +{ + Text = "Zeichensatzspezifische Symbole" ; + Text [ ENGLISH ] = "Private Use Area" ; +}; +String RID_SVXSTR_CJK_COMPAT_IDGRAPHS +{ + Text = "CJK Kompatible Ideogramme" ; + Text [ ENGLISH ] = "CJK Compatibility Ideographs" ; +}; +String RID_SVXSTR_ALPHA_PRESENTATION +{ + Text = "Alphabetische Prsentations Formen" ; + Text [ ENGLISH ] = "Alphabetic Presentation Forms" ; +}; +String RID_SVXSTR_ARABIC_PRESENT_A +{ + Text = "Arabische Prsentations Formen-A" ; + Text [ ENGLISH ] = "Arabic Presentation Forms-A" ; +}; +String RID_SVXSTR_COMBINING_HALF_MARKS +{ + Text = "Kombinierende Halbmarken" ; + Text [ ENGLISH ] = "Combining Half Marks" ; +}; +String RID_SVXSTR_CJK_COMPAT_FORMS +{ + Text = "CJK Kompatibilitts-Formen" ; + Text [ ENGLISH ] = "CJK Compatibility Forms" ; +}; +String RID_SVXSTR_SMALL_FORM_VARIANTS +{ + Text = "Kleine Form Varianten" ; + Text [ ENGLISH ] = "Small Form Variants" ; +}; +String RID_SVXSTR_ARABIC_PRESENT_B +{ + Text = "Arabische Prsentationsformen-B" ; + Text [ ENGLISH ] = "Arabic Presentation Forms-B" ; +}; +String RID_SVXSTR_HALFW_FULLW_FORMS +{ + Text = "Halbbreite und breite Formen" ; + Text [ ENGLISH ] = "Halfwidth And Fullwidth Forms" ; +}; +String RID_SVXSTR_SPECIALS +{ + Text = "Spezielle Symbole" ; + Text [ ENGLISH ] = "Specials" ; +}; +String RID_SVXSTR_HANGUL_GA +{ + Text = "Hangul Ga" ; + Text [ ENGLISH ] = "Hangul Ga"; +}; +String RID_SVXSTR_HANGUL_NA +{ + Text = "Hangul Na" ; + Text [ ENGLISH ] = "Hangul Na" ; +}; +String RID_SVXSTR_HANGUL_DA +{ + Text = "Hangul Da" ; + Text [ ENGLISH ] = "Hangul Da" ; +}; +String RID_SVXSTR_HANGUL_RA +{ + Text = "Hangul Ra" ; + Text [ ENGLISH ] = "Hangul Ra" ; +}; +String RID_SVXSTR_HANGUL_MA +{ + Text = "Hangul Ma" ; + Text [ ENGLISH ] = "Hangul Ma" ; +}; +String RID_SVXSTR_HANGUL_BA +{ + Text = "Hangul Ba" ; + Text [ ENGLISH ] = "Hangul Ba" ; +}; +String RID_SVXSTR_HANGUL_SA +{ + Text = "Hangul Sa" ; + Text [ ENGLISH ] = "Hangul Sa" ; +}; +String RID_SVXSTR_HANGUL_AH +{ + Text = "Hangul Ah" ; + Text [ ENGLISH ] = "Hangul Ah" ; +}; +String RID_SVXSTR_HANGUL_JA +{ + Text = "Hangul Ja" ; + Text [ ENGLISH ] = "Hangul Ja" ; +}; +String RID_SVXSTR_HANGUL_CHA +{ + Text = "Hangul Cha" ; + Text [ ENGLISH ] = "Hangul Cha" ; +}; +String RID_SVXSTR_HANGUL_KA +{ + Text = "Hangul Ka" ; + Text [ ENGLISH ] = "Hangul Ka" ; +}; +String RID_SVXSTR_HANGUL_TA +{ + Text = "Hangul Ta" ; + Text [ ENGLISH ] = "Hangul Ta" ; +}; +String RID_SVXSTR_HANGUL_PA +{ + Text = "Hangul Pa" ; + Text [ ENGLISH ] = "Hangul Pa" ; +}; +String RID_SVXSTR_HANGUL_HA +{ + Text = "Hangul Ha" ; + Text [ ENGLISH ] = "Hangul Ha" ; +}; +String RID_SVXSTR_YI +{ + Text = "Yi" ; + Text [ ENGLISH ] = "Yi" ; +}; +String RID_SVXSTR_SINHALA +{ + Text = "Sinhala" ; + Text [ ENGLISH ] = "Sinhala" ; +}; +String RID_SVXSTR_TIBETAN +{ + Text = "Tibetisch" ; + Text [ ENGLISH ] = "Tibetan" ; +}; +String RID_SVXSTR_MYANMAR +{ + Text = "Myanmar" ; + Text [ ENGLISH ] = "Myanmar" ; +}; +String RID_SVXSTR_KHMER +{ + Text = "Khmer" ; + Text [ ENGLISH ] = "Khmer" ; +}; +String RID_SVXSTR_OGHAM +{ + Text = "Ogham" ; + Text [ ENGLISH ] = "Ogham" ; +}; +String RID_SVXSTR_RUNIC +{ + Text = "Runen" ; + Text [ ENGLISH ] = "Runic" ; +}; +String RID_SVXSTR_SYRIAC +{ + Text = "Syrisch" ; + Text [ ENGLISH ] = "Syriac" ; +}; +String RID_SVXSTR_THAANA +{ + Text = "Thaana" ; + Text [ ENGLISH ] = "Thaana" ; +}; +String RID_SVXSTR_ETHIOPIC +{ + Text = "thiopisch" ; + Text [ ENGLISH ] = "Ethiopic" ; +}; +String RID_SVXSTR_CHEROKEE +{ + Text = "Cherokee" ; + Text [ ENGLISH ] = "Cherokee" ; +}; +String RID_SVXSTR_CANADIAN_ABORIGINAL +{ + Text = "Kanadische Aborigin Silben" ; + Text [ ENGLISH ] = "Canadian Aboriginal Syllables" ; +}; +String RID_SVXSTR_MONGOLIAN +{ + Text = "Mongolisch" ; + Text [ ENGLISH ] = "Mongolian" ; +}; + +// ********************************************************************** EOF |