diff options
author | Daniel Rentz <dr@openoffice.org> | 2001-06-15 11:20:46 +0000 |
---|---|---|
committer | Daniel Rentz <dr@openoffice.org> | 2001-06-15 11:20:46 +0000 |
commit | a2bdd929da5955d64d25a40788a919b4890a305a (patch) | |
tree | 9f94009cbbe7d17106f9804ae312b11911b538cb /svx/source/dialog/chardlg.cxx | |
parent | e271a32522a8189644ccb2ba94e41f9941baecb2 (diff) |
#86988# dialog redesign
Diffstat (limited to 'svx/source/dialog/chardlg.cxx')
-rw-r--r-- | svx/source/dialog/chardlg.cxx | 2665 |
1 files changed, 2 insertions, 2663 deletions
diff --git a/svx/source/dialog/chardlg.cxx b/svx/source/dialog/chardlg.cxx index fec57b5a26b5..b5a20d6db214 100644 --- a/svx/source/dialog/chardlg.cxx +++ b/svx/source/dialog/chardlg.cxx @@ -2,9 +2,9 @@ * * $RCSfile: chardlg.cxx,v $ * - * $Revision: 1.46 $ + * $Revision: 1.47 $ * - * last change: $Author: tl $ $Date: 2001-06-13 12:27:44 $ + * last change: $Author: dr $ $Date: 2001-06-15 12:17:19 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -260,2667 +260,6 @@ inline BOOL StateToAttr( TriState aState ) return ( STATE_CHECK == aState ); } -// class SvxCharStdPage -------------------------------------------------- - -SfxTabPage* SvxCharStdPage::Create( Window* pParent, const SfxItemSet& rSet ) -{ - return new SvxCharStdPage( pParent, rSet ); -} - -// ----------------------------------------------------------------------- - -BOOL SvxCharStdPage::FillItemSet( SfxItemSet& rSet ) -{ - const SfxPoolItem* pOld = 0, *pItem; - const SfxItemSet& rOldSet = GetItemSet(); - BOOL bModified = FALSE; - const SfxItemSet* pExampleSet = GetTabDialog() ? GetTabDialog()->GetExampleSet() : NULL; - - // "Anderungen beim Font? - FASTBOOL bChanged = TRUE; - USHORT nWhich = GetWhich( SID_ATTR_CHAR_FONT ); - const String& rFntName = aFontBox.GetText(); - const FontList* pFontList = GetFontList(); - String aStyleBoxText = aStyleBox.GetText(); - USHORT nEntryPos = aStyleBox.GetEntryPos( aStyleBoxText ); - if ( nEntryPos >= nExtraEntryPos ) - aStyleBoxText.Erase(); - FontInfo aInfo( pFontList->Get( rFntName, aStyleBoxText ) ); - - SvxFontItem aFmtFont( aInfo.GetFamily(), aInfo.GetName(), - aInfo.GetStyleName(), aInfo.GetPitch(), - aInfo.GetCharSet(), nWhich ); - pOld = GetOldItem( rSet, SID_ATTR_CHAR_FONT ); - - if ( pOld ) - { - const SvxFontItem& rItem = *( (const SvxFontItem*)pOld ); - - if ( rItem.GetFamilyName() == aFmtFont.GetFamilyName() ) - bChanged = FALSE; - } - - if ( !bChanged ) - bChanged = !aFontBox.GetSavedValue().Len(); - - if( !bChanged && pExampleSet && - pExampleSet->GetItemState(nWhich, FALSE, &pItem) == SFX_ITEM_SET && - ((SvxFontItem*)pItem)->GetFamilyName() != aFmtFont.GetFamilyName() ) - bChanged = TRUE; - - if ( bChanged && rFntName.Len() ) - { - rSet.Put( aFmtFont ); - bModified |= TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - - bChanged = TRUE; - nWhich = GetWhich( SID_ATTR_CHAR_WEIGHT ); - FontWeight eWeight = aInfo.GetWeight(); - if ( nEntryPos >= nExtraEntryPos ) - eWeight = WEIGHT_NORMAL; - SvxWeightItem aFmtWeight( eWeight, nWhich ); - pOld = GetOldItem( rSet, SID_ATTR_CHAR_WEIGHT ); - - if ( pOld ) - { - const SvxWeightItem& rItem = *( (const SvxWeightItem*)pOld ); - - if ( rItem.GetValue() == aFmtWeight.GetValue() ) - bChanged = FALSE; - } - - if ( !bChanged ) - { - bChanged = !aStyleBox.GetSavedValue().Len(); - - if ( bInSearchMode && bChanged && - aInfo.GetWeight() == WEIGHT_NORMAL && aInfo.GetItalic() != ITALIC_NONE ) - bChanged = FALSE; - } - - if ( !bChanged && pExampleSet && - pExampleSet->GetItemState(nWhich, FALSE, &pItem) == SFX_ITEM_SET && - ((SvxWeightItem*)pItem)->GetValue() != aFmtWeight.GetValue() ) - bChanged = TRUE; - - if ( nEntryPos >= nExtraEntryPos ) - bChanged = ( nEntryPos == nExtraEntryPos ); - - String aText( aStyleBox.GetText() ); // Tristate, dann Text leer - - if ( bChanged && aText.Len() ) - { - rSet.Put( aFmtWeight ); - bModified |= TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - - bChanged = TRUE; - nWhich = GetWhich( SID_ATTR_CHAR_POSTURE ); - FontItalic eItalic = aInfo.GetItalic(); - if ( nEntryPos >= nExtraEntryPos ) - eItalic = ITALIC_NONE; - SvxPostureItem aFmtPosture( eItalic, nWhich ); - pOld = GetOldItem( rSet, SID_ATTR_CHAR_POSTURE ); - - if ( pOld ) - { - const SvxPostureItem& rItem = *( (const SvxPostureItem*)pOld ); - - if ( rItem.GetValue() == aFmtPosture.GetValue() ) - bChanged = FALSE; - } - - if ( !bChanged ) - { - bChanged = !aStyleBox.GetSavedValue().Len(); - - if ( bInSearchMode && bChanged && - aInfo.GetItalic() == ITALIC_NONE && aInfo.GetWeight() != WEIGHT_NORMAL ) - bChanged = FALSE; - } - - if ( !bChanged && pExampleSet && - pExampleSet->GetItemState(nWhich, FALSE, &pItem) == SFX_ITEM_SET && - ((SvxPostureItem*)pItem)->GetValue() != aFmtPosture.GetValue() ) - bChanged = TRUE; - - if ( nEntryPos >= nExtraEntryPos ) - bChanged = ( nEntryPos == ( nExtraEntryPos + 1 ) ); - - if ( bChanged && aText.Len() ) - { - rSet.Put( aFmtPosture ); - bModified |= TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - - // FontSize - long nSize = aSizeBox.GetValue(); - - if ( !aSizeBox.GetText().Len() ) // GetValue() gibt dann Min-Wert zurueck - nSize = 0; - long nSavedSize = (long)aSizeBox.GetSavedValue().ToInt32(); - FASTBOOL bRel = TRUE; - - if ( !aSizeBox.IsRelative() ) - { - nSavedSize *= 10; - bRel = FALSE; - } - - nWhich = GetWhich( SID_ATTR_CHAR_FONTHEIGHT ); - const SvxFontHeightItem* pOldHeight = - (const SvxFontHeightItem*)GetOldItem( rSet, SID_ATTR_CHAR_FONTHEIGHT ); - bChanged = ( nSize != nSavedSize ); - - if ( !bChanged && pExampleSet && - pExampleSet->GetItemState(nWhich, FALSE, &pItem) == SFX_ITEM_SET ) - { - float fSize = (float)nSize / 10; - long nVal = CalcToUnit( fSize, rSet.GetPool()->GetMetric( nWhich ) ); - if ( ( (SvxFontHeightItem*)pItem)->GetHeight() != (UINT32)nVal ) - bChanged = TRUE; - } - - if( bChanged || !pOldHeight || - bRel != ( SFX_MAPUNIT_RELATIVE != pOldHeight->GetPropUnit() || - 100 != pOldHeight->GetProp() ) ) - { - SfxMapUnit eUnit = rSet.GetPool()->GetMetric( nWhich ); - if( aSizeBox.IsRelative() ) - { - DBG_ASSERT( GetItemSet().GetParent(), "No parent set" ); - const SvxFontHeightItem& rOldItem = (const SvxFontHeightItem&) - GetItemSet().GetParent()->Get( nWhich ); - - SvxFontHeightItem aHeight( 240, 100, nWhich ); - if( aSizeBox.IsPtRelative() ) - aHeight.SetHeight( rOldItem.GetHeight(), - (USHORT)( nSize / 10 ), - SFX_MAPUNIT_POINT, eUnit ); - - else - aHeight.SetHeight( rOldItem.GetHeight(), - (USHORT)nSize, SFX_MAPUNIT_RELATIVE ); - rSet.Put( aHeight ); - } - else - { - float fSize = (float)nSize / 10; - SvxFontHeightItem aFmtSize( - CalcToUnit( fSize, eUnit ), 100, nWhich ); - rSet.Put( aFmtSize ); - } - bModified |= TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - - // Farbe - bModified |= FillItemSet_Impl( aColorBox, rSet, SID_ATTR_CHAR_COLOR ); - if ( aFillColorBox.IsVisible() ) - bModified |= FillItemSet_Impl( aFillColorBox, rSet, SID_ATTR_CHAR_FILLCOLOR ); - - bChanged = TRUE; - // Unterstreichen - nWhich = GetWhich( SID_ATTR_CHAR_UNDERLINE ); - pOld = GetOldItem( rSet, SID_ATTR_CHAR_UNDERLINE ); - TriState eState = aUnderlineBtn.GetState(); - - if ( pOld ) - { - const SvxUnderlineItem& rItem = *( (const SvxUnderlineItem*)pOld ); - - if ( (FontUnderline)rItem.GetValue() == eUnderline && - aUnderlineBtn.GetSavedValue() == eState ) - bChanged = FALSE; - } - - if ( !bChanged && pExampleSet && - pExampleSet->GetItemState(nWhich, FALSE, &pItem) == SFX_ITEM_SET && - !StateToAttr( eState ) && - ((SvxUnderlineItem*)pItem)->GetUnderline() != UNDERLINE_NONE ) - bChanged = TRUE; - - if ( bChanged && eState != STATE_DONTKNOW ) - { - SvxUnderlineItem aFmtUnderl( - StateToAttr( eState ) ? eUnderline : UNDERLINE_NONE, nWhich ); - rSet.Put( aFmtUnderl ); - bModified |= TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - bChanged = TRUE; - - // Durchstreichen - nWhich = GetWhich( SID_ATTR_CHAR_STRIKEOUT ); - pOld = GetOldItem( rSet, SID_ATTR_CHAR_STRIKEOUT ); - eState = aStrikeoutBtn.GetState(); - - if ( pOld ) - { - const SvxCrossedOutItem& rItem = *( (const SvxCrossedOutItem*)pOld ); - - if ( (FontStrikeout)rItem.GetValue() == eStrikeout && - aStrikeoutBtn.GetSavedValue() == eState ) - bChanged = FALSE; - } - - if ( !bChanged && pExampleSet && - pExampleSet->GetItemState(nWhich, FALSE, &pItem) == SFX_ITEM_SET && - !StateToAttr( eState ) && - ((SvxCrossedOutItem*)pItem)->GetStrikeout() != STRIKEOUT_NONE ) - bChanged = TRUE; - - if ( bChanged && eState != STATE_DONTKNOW ) - { - SvxCrossedOutItem aFmtCrossedOut( - StateToAttr( eState ) ? eStrikeout : STRIKEOUT_NONE, nWhich ); - rSet.Put( aFmtCrossedOut ); - bModified |= TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - bChanged = TRUE; - - // Kontour - nWhich = GetWhich( SID_ATTR_CHAR_CONTOUR ); - pOld = GetOldItem( rSet, SID_ATTR_CHAR_CONTOUR ); - eState = aOutlineBtn.GetState(); - - if ( pOld ) - { - const SvxContourItem& rItem = *( (const SvxContourItem*)pOld ); - - if ( rItem.GetValue() == StateToAttr( eState ) && - aOutlineBtn.GetSavedValue() == eState ) - bChanged = FALSE; - } - - if ( !bChanged && pExampleSet && - pExampleSet->GetItemState(nWhich, FALSE, &pItem) == SFX_ITEM_SET && - !StateToAttr( eState ) && ((SvxContourItem*)pItem)->GetValue() ) - bChanged = TRUE; - - if ( bChanged && eState != STATE_DONTKNOW ) - { - rSet.Put( SvxContourItem( StateToAttr( eState ), nWhich ) ); - bModified |= TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - bChanged = TRUE; - - // Schatten - nWhich = GetWhich( SID_ATTR_CHAR_SHADOWED ); - pOld = GetOldItem( rSet, SID_ATTR_CHAR_SHADOWED ); - eState = aShadowBtn.GetState(); - - if ( pOld ) - { - const SvxShadowedItem& rItem = *( (const SvxShadowedItem*)pOld ); - - if ( rItem.GetValue() == StateToAttr( eState ) && - aShadowBtn.GetSavedValue() == eState ) - bChanged = FALSE; - } - - if ( !bChanged && pExampleSet && - pExampleSet->GetItemState(nWhich, FALSE, &pItem) == SFX_ITEM_SET && - !StateToAttr( eState ) && ((SvxShadowedItem*)pItem)->GetValue() ) - bChanged = TRUE; - - if ( bChanged && eState != STATE_DONTKNOW ) - { - rSet.Put( SvxShadowedItem( StateToAttr( eState ), nWhich ) ); - bModified |= TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - bChanged = TRUE; - - // Sprache - if( aLanguageBox.IsVisible() ) - { - nWhich = GetWhich( SID_ATTR_CHAR_LANGUAGE ); - pOld = GetOldItem( rSet, SID_ATTR_CHAR_LANGUAGE ); - USHORT nLPos = aLanguageBox.GetSelectEntryPos(); - USHORT nLang = (USHORT)(ULONG)aLanguageBox.GetEntryData(nLPos); -// util::Language nLanguage = SvxGetSelectableLanguages().getConstArray()[ nLang ]; - util::Language nLanguage = LANGUAGE_NONE; - - if ( pOld ) - { - const SvxLanguageItem& rItem = *( (const SvxLanguageItem*)pOld ); - - if ( nLPos == LISTBOX_ENTRY_NOTFOUND || - rItem.GetValue() == nLanguage ) - bChanged = FALSE; - } - - if ( !bChanged ) - bChanged = ( aLanguageBox.GetSavedValue() == LISTBOX_ENTRY_NOTFOUND ); - - if ( bChanged && nLPos != LISTBOX_ENTRY_NOTFOUND ) - { - rSet.Put( SvxLanguageItem( (LanguageType) nLanguage, nWhich ) ); - bModified |= TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - } - - return bModified; -} - -// ----------------------------------------------------------------------- - -void SvxCharStdPage::Reset( const SfxItemSet& rSet ) -{ - // die FontListBox fuellen - const FontList* pFontList = GetFontList(); - aFontBox.Fill( pFontList ); - - // Font ermitteln - const SvxFontItem* pFontItem = 0; - USHORT nWhich = GetWhich( SID_ATTR_CHAR_FONT ); - SfxItemState eState = rSet.GetItemState( nWhich ); - - if ( eState >= SFX_ITEM_DEFAULT ) - { - pFontItem = (const SvxFontItem*)&( rSet.Get( nWhich ) ); - aFontBox.SetText( pFontItem->GetFamilyName() ); - } - else - aFontBox.SetText( String() ); - - // Alle Styles zu einem selektierten Font - FillStyleBox_Impl(); - - FASTBOOL bStyle = FALSE; - FontItalic eItalic = ITALIC_NONE; - FontWeight eWeight = WEIGHT_NORMAL; - nWhich = GetWhich( SID_ATTR_CHAR_POSTURE ); - eState = rSet.GetItemState( nWhich ); - - if ( eState >= SFX_ITEM_DEFAULT ) - { - const SvxPostureItem& rItem = (SvxPostureItem&)rSet.Get( nWhich ); - eItalic = (FontItalic)rItem.GetValue(); - bStyle = TRUE; - } - - nWhich = GetWhich( SID_ATTR_CHAR_WEIGHT ); - eState = rSet.GetItemState( nWhich ); - - if ( eState >= SFX_ITEM_DEFAULT ) - { - SvxWeightItem& rItem = (SvxWeightItem&)rSet.Get( nWhich ); - eWeight = (FontWeight)rItem.GetValue(); - } - else if ( bStyle ) - bStyle = FALSE; - - // Aktuell eingestellter Font - if ( bStyle && pFontItem ) - { -/*!!! - String aStyleStr( pFontItem->GetStyleName() ); - - if ( aStyleStr.Len() ) - aStyleBox.SetText( aStyleStr ); - else - { - FontInfo aInfo = pFontList->Get( pFontItem->GetFamilyName(), eWeight, eItalic ); - aStyleBox.SetText( pFontList->GetStyleName( aInfo ) ); - } -*/ - FontInfo aInfo = pFontList->Get( pFontItem->GetFamilyName(), - eWeight, eItalic ); - aStyleBox.SetText( pFontList->GetStyleName( aInfo ) ); - } - else if ( !bInSearchMode || !bStyle ) - aStyleBox.SetText( String() ); - else if ( bStyle ) - { - FontInfo aInfo = pFontList->Get( String(), eWeight, eItalic ); - aStyleBox.SetText( pFontList->GetStyleName( aInfo ) ); - } - - // SizeBox fuellen - FillSizeBox_Impl(); - nWhich = GetWhich( SID_ATTR_CHAR_FONTHEIGHT ); - eState = rSet.GetItemState( nWhich ); - - if ( aSizeBox.IsRelativeMode() ) - { - SfxMapUnit eUnit = rSet.GetPool()->GetMetric( nWhich ); - const SvxFontHeightItem& rItem = - (SvxFontHeightItem&)rSet.Get( nWhich ); - - if( rItem.GetProp() != 100 || - SFX_MAPUNIT_RELATIVE != rItem.GetPropUnit() ) - { - BOOL bPtRel = SFX_MAPUNIT_POINT == rItem.GetPropUnit(); - aSizeBox.SetPtRelative( bPtRel ); - aSizeBox.SetValue( bPtRel ? ((short)rItem.GetProp()) * 10 - : rItem.GetProp() ); - } - else - { - aSizeBox.SetRelative(); - aSizeBox.SetValue( (long)CalcToPoint( rItem.GetHeight(), eUnit, 10 ) ); - } - } - else if ( eState >= SFX_ITEM_DEFAULT ) - { - SfxMapUnit eUnit = rSet.GetPool()->GetMetric( nWhich ); - const SvxFontHeightItem& rItem = - (SvxFontHeightItem&)rSet.Get( nWhich ); - aSizeBox.SetValue( - (long)CalcToPoint( rItem.GetHeight(), eUnit, 10 ) ); - } - else - aSizeBox.SetText( String() ); - - // Schattiert - nWhich = GetWhich( SID_ATTR_CHAR_SHADOWED ); - eState = rSet.GetItemState( nWhich ); - - switch ( eState ) - { - case SFX_ITEM_UNKNOWN: - aShadowBtn.Hide(); - break; - - case SFX_ITEM_DISABLED: - case SFX_ITEM_READONLY: - aShadowBtn.Disable(); - break; - - case SFX_ITEM_DONTCARE: - aShadowBtn.SetState( STATE_DONTKNOW ); - break; - - case SFX_ITEM_DEFAULT: - case SFX_ITEM_SET: - { - const SvxShadowedItem& rItem = - (SvxShadowedItem&)rSet.Get( nWhich ); - aShadowBtn.SetState( (TriState)rItem.GetValue() ); - aShadowBtn.EnableTriState( FALSE ); - break; - } - } - - // Kontour - nWhich = GetWhich( SID_ATTR_CHAR_CONTOUR ); - eState = rSet.GetItemState( nWhich ); - - switch ( eState ) - { - case SFX_ITEM_UNKNOWN: - aOutlineBtn.Hide(); - break; - - case SFX_ITEM_DISABLED: - case SFX_ITEM_READONLY: - aOutlineBtn.Disable(); - break; - - case SFX_ITEM_DONTCARE: - aOutlineBtn.SetState( STATE_DONTKNOW ); - break; - - case SFX_ITEM_DEFAULT: - case SFX_ITEM_SET: - { - const SvxContourItem& rItem = (SvxContourItem&)rSet.Get( nWhich ); - aOutlineBtn.SetState( (TriState)rItem.GetValue() ); - aOutlineBtn.EnableTriState( FALSE ); - break; - } - } - - // Underline - nWhich = GetWhich( SID_ATTR_CHAR_UNDERLINE ); - eState = rSet.GetItemState( nWhich ); - - switch ( eState ) - { - case SFX_ITEM_UNKNOWN: - aUnderlineBtn.Hide(); - break; - - case SFX_ITEM_DISABLED: - case SFX_ITEM_READONLY: - aUnderlineBtn.Disable(); - break; - - case SFX_ITEM_DONTCARE: - aUnderlineBtn.SetState( STATE_DONTKNOW ); - break; - - case SFX_ITEM_DEFAULT: - case SFX_ITEM_SET: - { - const SvxUnderlineItem& rItem = - (SvxUnderlineItem&)rSet.Get( nWhich ); - eUnderline = (FontUnderline)rItem.GetValue(); - - if ( eUnderline == UNDERLINE_NONE ) - aUnderlineBtn.SetState( STATE_NOCHECK ); - else - aUnderlineBtn.SetState( STATE_CHECK ); - aUnderlineBtn.EnableTriState( FALSE ); - break; - } - } - - // Strikeout - nWhich = GetWhich( SID_ATTR_CHAR_STRIKEOUT ); - eState = rSet.GetItemState( nWhich ); - - switch ( eState ) - { - case SFX_ITEM_UNKNOWN: - aStrikeoutBtn.Hide(); - break; - - case SFX_ITEM_DISABLED: - case SFX_ITEM_READONLY: - aStrikeoutBtn.Disable(); - break; - - case SFX_ITEM_DONTCARE: - aStrikeoutBtn.SetState( STATE_DONTKNOW ); - break; - - case SFX_ITEM_DEFAULT: - case SFX_ITEM_SET: - { - const SvxCrossedOutItem& rItem = - (SvxCrossedOutItem&)rSet.Get( nWhich ); - eStrikeout = (FontStrikeout)rItem.GetValue(); - - if ( eStrikeout == STRIKEOUT_NONE ) - aStrikeoutBtn.SetState( STATE_NOCHECK ); - else - aStrikeoutBtn.SetState( STATE_CHECK ); - aStrikeoutBtn.EnableTriState( FALSE ); - break; - } - } - - // Farbe - Reset_Impl( aColorBox, aColorText, rSet, SID_ATTR_CHAR_COLOR); - if( aFillColorBox.IsVisible() ) - Reset_Impl( aFillColorBox, aFillColorText, rSet, SID_ATTR_CHAR_FILLCOLOR); - - // Sprache - if( aLanguageBox.IsVisible() ) - { - nWhich = GetWhich( SID_ATTR_CHAR_LANGUAGE ); - aLanguageBox.SetNoSelection(); - eState = rSet.GetItemState( nWhich ); - - switch ( eState ) - { - case SFX_ITEM_UNKNOWN: - aLanguageText.Hide(); - aLanguageBox.Hide(); - break; - - case SFX_ITEM_DISABLED: - case SFX_ITEM_READONLY: - aLanguageText.Disable(); - aLanguageBox.Disable(); - break; - - case SFX_ITEM_DONTCARE: - aLanguageBox.SetNoSelection(); - break; - - case SFX_ITEM_DEFAULT: - case SFX_ITEM_SET: - { - const SvxLanguageItem& rItem = - (SvxLanguageItem&)rSet.Get( nWhich ); - DBG_ASSERT( (LanguageType)rItem.GetValue() != LANGUAGE_SYSTEM, - "LANGUAGE_SYSTEM nicht erlaubt!" ); - if ( (LanguageType)rItem.GetValue() != LANGUAGE_DONTKNOW ) - { -// USHORT nLang = (USHORT)SvxGetLanguagePos( SvxGetSelectableLanguages(), rItem.GetValue() ); - USHORT nLang = LANGUAGE_NONE; - for ( USHORT i = 0; i < aLanguageBox.GetEntryCount(); ++i ) - { - if ( (USHORT)(ULONG)aLanguageBox.GetEntryData(i) == nLang ) - { - aLanguageBox.SelectEntryPos(i); - break; - } - } - } - break; - } - } - } - - - // alle Attribute des Beispiel-Window-Fonts einstellen - short nEsc = 0; - BYTE nEscProp = 100; - BYTE nProp = 100; - SvxCaseMap eCaseMap = SVX_CASEMAP_NOT_MAPPED; - - // HochTief-Stellung - nWhich = GetWhich( SID_ATTR_CHAR_ESCAPEMENT ); - eState = rSet.GetItemState( nWhich ); - - if ( eState >= SFX_ITEM_DEFAULT ) - { - const SvxEscapementItem& rItem = - (SvxEscapementItem&)rSet.Get( nWhich ); - nEsc = rItem.GetEsc(); - nEscProp = rItem.GetProp(); - } - - nWhich = GetWhich( SID_ATTR_CHAR_PROPSIZE ); - eState = rSet.GetItemState( nWhich ); - - if ( eState >= SFX_ITEM_DEFAULT ) - { - const SvxPropSizeItem& rItem = (SvxPropSizeItem&)rSet.Get( nWhich ); - nProp = (BYTE)rItem.GetValue(); - } - - // Auszeichnung - nWhich = GetWhich( SID_ATTR_CHAR_CASEMAP ); - eState = rSet.GetItemState( nWhich ); - - if ( eState >= SFX_ITEM_DEFAULT ) - { - const SvxCaseMapItem& rItem = (const SvxCaseMapItem&)rSet.Get( nWhich ); - eCaseMap = (SvxCaseMap)rItem.GetValue(); - } - - SvxFont& rFont = aExampleWin.GetFont(); - nWhich = GetWhich( SID_ATTR_CHAR_KERNING ); - eState = rSet.GetItemState( nWhich ); - - if ( eState >= SFX_ITEM_DEFAULT ) - { - MapUnit eUnit = (MapUnit)rSet.GetPool()->GetMetric( nWhich ); - const SvxKerningItem& rItem = (SvxKerningItem&)rSet.Get( nWhich ); - long nKern = LogicToLogic( rItem.GetValue(), eUnit, MAP_TWIP ); - rFont.SetFixKerning( (short)nKern ); - } - else - rFont.SetFixKerning( 0 ); - - /* - * Fontattribute aus den Attr-Controls - * ExampleFont in Klammern, damit diese Variable nicht mehr - * verwendet wird. Update() und andere holen sich den Font - * aus dem Beispielcontrol; das gibt nette Seiteneffekte, wenn - * dann mit diesem Font(aExampleFont) weitergearbeitet wird und - * dieser anschliessend in das Beispielcontrol selektiert wird. - */ - if ( pFontItem ) - { - rFont.SetFamily( pFontItem->GetFamily() ); - rFont.SetName( pFontItem->GetFamilyName() ); - rFont.SetPitch( pFontItem->GetPitch() ); - rFont.SetCharSet( pFontItem->GetCharSet() ); - } - - nWhich = GetWhich( SID_ATTR_CHAR_FONTHEIGHT ); - eState = rSet.GetItemState( nWhich ); - - if ( aSizeBox.IsRelativeMode() ) - { - DBG_ASSERT( rSet.GetParent(), "No parent set" ); - - // SetValue wuerde nur einen Prozent-Wert zurueckgeben, deshalb - // den Wert vom Parent des Items abholen - SfxMapUnit eUnit = rSet.GetPool()->GetMetric( nWhich ); - const SvxFontHeightItem& rItem = - (SvxFontHeightItem&)rSet.GetParent()->Get( nWhich ); - rFont.SetSize( Size( 0, PointToTwips( - (long)CalcToPoint( rItem.GetHeight(), eUnit, 1 ) ) ) ); - } - else if ( aSizeBox.GetText().Len() ) - rFont.SetSize( Size( 0, PointToTwips( aSizeBox.GetValue() ) / 10 ) ); - else - // als Default 10pt - rFont.SetSize( Size( 0, 200 ) ); - - rFont.SetWeight( - eWeight != WEIGHT_NORMAL ? WEIGHT_BOLD : WEIGHT_NORMAL ); - - rFont.SetItalic( - eItalic != ITALIC_NONE ? ITALIC_NORMAL : ITALIC_NONE ); - - rFont.SetUnderline( - StateToAttr( aUnderlineBtn.GetState() ) ? eUnderline : UNDERLINE_NONE ); - - rFont.SetStrikeout( - StateToAttr( aStrikeoutBtn.GetState() ) ? eStrikeout : STRIKEOUT_NONE ); - - // Outline Shadow - rFont.SetOutline( StateToAttr( aOutlineBtn.GetState() ) ); - rFont.SetShadow( StateToAttr( aShadowBtn.GetState() ) ); - - // Color - { - Color aCol( aColorBox.GetSelectEntryColor() ); - rFont.SetColor( COL_AUTO == aCol.GetColor() ? Color(COL_BLACK) : aCol); - } - - if( aFillColorBox.IsVisible() ) - { - Color aSelectedColor; - if( aFillColorBox.GetSelectEntry() == aStrTransparent ) - aSelectedColor = Color( COL_TRANSPARENT ); - else - aSelectedColor = aFillColorBox.GetSelectEntryColor(); - rFont.SetFillColor( aSelectedColor ); - } - - // Kapitaelchen - rFont.SetCaseMap( eCaseMap ); - - // erst Relative Groesse dann Escapement - rFont.SetPropr( nProp ); - rFont.SetProprRel( nEscProp ); - rFont.SetEscapement( nEsc ); - - // WordLineMode - nWhich = GetWhich( SID_ATTR_CHAR_WORDLINEMODE ); - eState = rSet.GetItemState( nWhich ); - - if ( eState >= SFX_ITEM_DEFAULT ) - { - const SvxWordLineModeItem& rItem = - (SvxWordLineModeItem&)rSet.Get( nWhich ); - rFont.SetWordLineMode( rItem.GetValue() ); - } - - // Hintergrund umstellen - aExampleWin.Invalidate(); - - // Hilfetext - aFontTypeText.SetText( pFontList->GetFontMapText( - pFontList->Get( aFontBox.GetText(), aStyleBox.GetText() ) ) ); - - // alte Einstellungen merken - aFontBox.SaveValue(); - aStyleBox.SaveValue(); - aSizeBox.SaveValue(); - aOutlineBtn.SaveValue(); - aShadowBtn.SaveValue(); - aUnderlineBtn.SaveValue(); - aStrikeoutBtn.SaveValue(); - aColorBox.SaveValue(); - aFillColorBox.SaveValue(); - aLanguageBox.SaveValue(); -} - -// ----------------------------------------------------------------------- - -void SvxCharStdPage::DataChanged( const DataChangedEvent& rDCEvt ) -{ - SfxTabPage::DataChanged( rDCEvt ); - if ( bDeleteFontList ) - delete (FontList*)_pFontList; - _pFontList = NULL; -} - -// ----------------------------------------------------------------------- - -void SvxCharStdPage::EnableRelativeMode() -{ - DBG_ASSERT( GetItemSet().GetParent(), "RelativeMode, but no ParentSet!" ); - aSizeBox.EnableRelativeMode( 0, 999 ); // min 0%, max 999%, step 5 - - USHORT nWhich = GetWhich( SID_ATTR_CHAR_FONTHEIGHT ); - const SvxFontHeightItem& rItem = - (SvxFontHeightItem&)GetItemSet().GetParent()->Get( nWhich ); - SfxMapUnit eUnit = GetItemSet().GetPool()->GetMetric( nWhich ); - short nCurHeight = CalcToPoint( rItem.GetHeight(), eUnit, 1 ) * 10; - - // ausgehend von der akt. Hoehe: - // - neagtiv bis minimal 2 pt - // - positiv bis maximal 999 pt - aSizeBox.EnablePtRelativeMode( -(nCurHeight - 20), - (9999 - nCurHeight), 10 ); -} - -// ----------------------------------------------------------------------- - -void SvxCharStdPage::SetInfoItem( const SvxFontListItem& rItem ) -{ - if( bDeleteFontList ) - { - delete (FontList*)_pFontList; - bDeleteFontList = FALSE; - } - _pFontList = rItem.GetFontList(); -} - -// ----------------------------------------------------------------------- - -const FontList* SvxCharStdPage::GetFontList() const -{ - if ( !_pFontList ) - { - SfxObjectShell* pDocSh = SfxObjectShell::Current(); - const SfxPoolItem* pItem; - - if ( pDocSh && ( pItem = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST ) ) ) - ((SvxCharStdPage*)this)->_pFontList = ( (SvxFontListItem*)pItem )->GetFontList(); - else - { - ((SvxCharStdPage*)this)->_pFontList = new FontList( Application::GetDefaultDevice() ); - ((SvxCharStdPage*)this)->bDeleteFontList = TRUE; - } - } - return _pFontList; -} - -// ----------------------------------------------------------------------- - -SvxCharStdPage::SvxCharStdPage( Window* pParent, - const SfxItemSet& rAttr ) : - - SfxTabPage( pParent, SVX_RES( RID_SVXPAGE_CHAR_STD ), rAttr ), - - aFontText ( this, ResId( FT_FONT ) ), - aFontBox ( this, ResId( LB_FONT ) ), - aStyleText ( this, ResId( FT_STYLE ) ), - aStyleBox ( this, ResId( LB_STYLE ) ), - aSizeText ( this, ResId( FT_SIZE ) ), - aSizeBox ( this, ResId( LB_SIZE ) ), - aOutlineBtn ( this, ResId( BTN_OUTLINE ) ), - aShadowBtn ( this, ResId( BTN_SHADOW ) ), - aUnderlineBtn ( this, ResId( BTN_UNDERLINE ) ), - aStrikeoutBtn ( this, ResId( BTN_STRIKEOUT ) ), - aCasemapBox ( this, ResId( GB_CASEMAP ) ), - aColorText ( this, ResId( FT_COLOR ) ), - aColorBox ( this, ResId( LB_COLOR ) ), - aFillColorText ( this, ResId( FT_FILLCOLOR ) ), - aFillColorBox ( this, ResId( LB_FILLCOLOR ) ), - aLanguageText ( this, ResId( FT_LANGUAGE ) ), - aLanguageBox ( this, ResId( LB_LANGUAGE ) ), - aFontTypeText ( this, ResId( FT_FONTTYPE ) ), - aExampleWin ( this, ResId( WIN_EXAMPLE ) ), - aExampleBox ( this, ResId( GB_EXAMPLE ) ), - aStrTransparent ( ResId( STR_TRANSPARENT ) ), - aNoStyleStr ( ResId( STR_NOSTYLE ) ), - _pFontList ( NULL ), - eUnderline ( UNDERLINE_NONE ), - eStrikeout ( STRIKEOUT_NONE ), - bDeleteFontList ( FALSE ), - bInSearchMode ( FALSE ), - nExtraEntryPos ( LISTBOX_ENTRY_NOTFOUND ) - -{ - FreeResource(); - - const SfxPoolItem* pItem; - SfxObjectShell* pShell; - if(SFX_ITEM_SET == rAttr.GetItemState(SID_HTML_MODE, FALSE, &pItem) || - ( 0 != ( pShell = SfxObjectShell::Current()) && - 0 != (pItem = pShell->GetItem(SID_HTML_MODE)))) - { - USHORT nHtmlMode = ((const SfxUInt16Item*)pItem)->GetValue(); - if(nHtmlMode & HTMLMODE_ON) - { - aOutlineBtn .Hide(); - aShadowBtn .Hide(); - aUnderlineBtn .SetPosPixel(aOutlineBtn .GetPosPixel()); - aStrikeoutBtn .SetPosPixel(aShadowBtn .GetPosPixel()); - } - } - - // diese Page braucht ExchangeSupport - SetExchangeSupport(); - - SetHandler_Impl(); - - // ColorBox aus der XColorTable fuellen. - SfxObjectShell* pDocSh = SfxObjectShell::Current(); - DBG_ASSERT( pDocSh, "DocShell not found!" ); - XColorTable* pColorTable = NULL; - FASTBOOL bKillTable = FALSE; - - if ( pDocSh && ( pItem = pDocSh->GetItem( SID_COLOR_TABLE ) ) ) - pColorTable = ( (SvxColorTableItem*)pItem )->GetColorTable(); - - if ( !pColorTable ) - { - pColorTable = new XColorTable( SvtPathOptions().GetPalettePath() ); - bKillTable = TRUE; - } - - aColorBox.SetUpdateMode( FALSE ); - aColorBox.InsertAutomaticEntry(); - for ( long i = 0; i < pColorTable->Count(); i++ ) - { - XColorEntry* pEntry = pColorTable->Get(i); - aColorBox.InsertEntry( pEntry->GetColor(), pEntry->GetName() ); - } - aColorBox.SetUpdateMode( TRUE ); - - if( SFX_ITEM_SET == rAttr.GetItemState(SID_ATTR_CHAR_FILLCOLOR, FALSE ) ) - { - aFillColorBox.SetUpdateMode( FALSE ); - aFillColorBox.CopyEntries( aColorBox ); - aFillColorBox.RemoveEntry(0); - aFillColorBox.InsertEntry( aStrTransparent, 0 ); - aFillColorBox.SetUpdateMode( TRUE ); - aLanguageBox.Hide(); - aLanguageText.Hide(); - aFillColorBox.Show(); - aFillColorText.Show(); - } - - if ( bKillTable ) - delete pColorTable; - - aTimer.Start(); -} - -// ----------------------------------------------------------------------- - -SvxCharStdPage::~SvxCharStdPage() -{ - if( bDeleteFontList ) - delete (FontList*)_pFontList; -} - -// ----------------------------------------------------------------------- - -USHORT* SvxCharStdPage::GetRanges() -{ - return pStdRanges; -} - -// ----------------------------------------------------------------------- - -void SvxCharStdPage::Reset_Impl( ColorListBox& rColorBox, - FixedText& rColorText, const SfxItemSet& rSet, USHORT nSlot ) -{ - USHORT nWhich = GetWhich( nSlot ); - SfxItemState eState = rSet.GetItemState( nWhich ); - - switch ( eState ) - { - case SFX_ITEM_UNKNOWN: - rColorText.Hide(); - rColorBox.Hide(); - break; - - case SFX_ITEM_DISABLED: - case SFX_ITEM_READONLY: - rColorText.Disable(); - rColorBox.Disable(); - break; - - case SFX_ITEM_DONTCARE: - rColorBox.SetNoSelection(); - break; - - case SFX_ITEM_DEFAULT: - case SFX_ITEM_SET: - { - const SvxColorItem& rItem = (SvxColorItem&)rSet.Get( nWhich ); - Color aColor = rItem.GetValue(); - USHORT nSelPos = rColorBox.GetEntryPos( aColor ); - if( nSelPos == LISTBOX_ENTRY_NOTFOUND && - aColor == Color(COL_TRANSPARENT) ) - nSelPos = rColorBox.GetEntryPos( aStrTransparent ); - - if ( LISTBOX_ENTRY_NOTFOUND != nSelPos ) - rColorBox.SelectEntryPos( nSelPos ); - else - { - nSelPos = rColorBox.GetEntryPos( aColor ); - if ( LISTBOX_ENTRY_NOTFOUND != nSelPos ) - rColorBox.SelectEntryPos( nSelPos ); - else - rColorBox.SelectEntryPos( rColorBox.InsertEntry( - aColor, String( SVX_RES( RID_SVXSTR_COLOR_USER ) ) ) ); - } - break; - } - } -} - -// ----------------------------------------------------------------------- - -BOOL SvxCharStdPage::FillItemSet_Impl( const ColorListBox& rColorBox, - SfxItemSet& rSet, USHORT nSlot ) -{ - USHORT nWhich = GetWhich( nSlot ); - const SvxColorItem* pOld = (const SvxColorItem*)GetOldItem( rSet, nSlot ); - const SvxColorItem* pItem = 0; - BOOL bChanged = TRUE; - const SfxItemSet* pExampleSet = - GetTabDialog() ? GetTabDialog()->GetExampleSet() : NULL; - const SfxItemSet& rOldSet = GetItemSet(); - - Color aSelectedColor; - if( rColorBox.GetSelectEntry() == aStrTransparent ) - aSelectedColor = Color( COL_TRANSPARENT ); - else - aSelectedColor = rColorBox.GetSelectEntryColor(); - - if ( pOld && pOld->GetValue() == aSelectedColor ) - bChanged = FALSE; - - if ( !bChanged ) - bChanged = ( rColorBox.GetSavedValue() == LISTBOX_ENTRY_NOTFOUND ); - - if ( !bChanged && pExampleSet && - pExampleSet->GetItemState(nWhich, FALSE, (const SfxPoolItem**)&pItem) == SFX_ITEM_SET && - ( (SvxColorItem*)pItem)->GetValue() != aSelectedColor ) - bChanged = TRUE; - - BOOL bModified = FALSE; - - if ( bChanged && rColorBox.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND ) - { - rSet.Put( SvxColorItem( aSelectedColor, nWhich ) ); - bModified = TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - - return bModified; -} - - -// ----------------------------------------------------------------------- - -void SvxCharStdPage::ActivatePage( const SfxItemSet& rSet ) -{ - SvxFont& rFont = aExampleWin.GetFont(); - - // WordLineMode - USHORT nWhich = GetWhich( SID_ATTR_CHAR_WORDLINEMODE ); - - if ( rSet.GetItemState( nWhich ) == SFX_ITEM_SET ) - { - const SvxWordLineModeItem& rItem = - (SvxWordLineModeItem&)rSet.Get( nWhich ); - rFont.SetWordLineMode( rItem.GetValue() ); - } - - short nEsc = 0; - BYTE nEscProp = 100; - BYTE nProp = 100; - SvxCaseMap eCaseMap = SVX_CASEMAP_NOT_MAPPED; - - // Proportionale Textgroesse - nWhich = GetWhich( SID_ATTR_CHAR_PROPSIZE ); - - if ( rSet.GetItemState( nWhich ) == SFX_ITEM_SET ) - { - const SvxPropSizeItem& rItem = (SvxPropSizeItem&)rSet.Get( nWhich ); - nProp = (BYTE)rItem.GetValue(); - } - - // HochTief-Stellung - nWhich = GetWhich( SID_ATTR_CHAR_ESCAPEMENT ); - - if ( rSet.GetItemState( nWhich ) == SFX_ITEM_SET ) - { - const SvxEscapementItem& rItem = (SvxEscapementItem&)rSet.Get( nWhich ); - nEsc = rItem.GetEsc(); - nEscProp = rItem.GetProp(); - } - - // BspFont setzen - rFont.SetPropr( nProp ); - rFont.SetProprRel( nEscProp ); - rFont.SetEscapement( nEsc ); - - // Auszeichnung - nWhich = GetWhich( SID_ATTR_CHAR_CASEMAP ); - - if ( rSet.GetItemState( nWhich ) == SFX_ITEM_SET ) - { - const SvxCaseMapItem& rItem = (const SvxCaseMapItem&)rSet.Get( nWhich ); - eCaseMap = (SvxCaseMap)rItem.GetValue(); - } - rFont.SetCaseMap( eCaseMap ); - - // Kerning - nWhich = GetWhich( SID_ATTR_CHAR_KERNING ); - - if ( rSet.GetItemState( nWhich ) == SFX_ITEM_SET ) - { - const SvxKerningItem& rItem = (SvxKerningItem&)rSet.Get( nWhich ); - MapUnit eUnit = (MapUnit)rSet.GetPool()->GetMetric( nWhich ); - long nKern = LogicToLogic( rItem.GetValue(), eUnit, MAP_TWIP ); - rFont.SetFixKerning( (short)nKern ); - } - - // Unterstrichen - nWhich = GetWhich( SID_ATTR_CHAR_UNDERLINE ); - - if ( rSet.GetItemState( nWhich ) == SFX_ITEM_SET ) - { - const SvxUnderlineItem& rItem = (SvxUnderlineItem&)rSet.Get( nWhich ); - eUnderline = (FontUnderline)rItem.GetValue(); - rFont.SetUnderline( eUnderline ); - if ( eUnderline == UNDERLINE_NONE ) - aUnderlineBtn.SetState( STATE_NOCHECK ); - } - - // Durchgestrichen - nWhich = GetWhich( SID_ATTR_CHAR_STRIKEOUT ); - - if ( rSet.GetItemState( nWhich ) == SFX_ITEM_SET ) - { - const SvxCrossedOutItem& rItem = (SvxCrossedOutItem&)rSet.Get( nWhich ); - eStrikeout = (FontStrikeout)rItem.GetValue(); - rFont.SetStrikeout( eStrikeout ); - if ( eStrikeout == STRIKEOUT_NONE ) - aStrikeoutBtn.SetState( STATE_NOCHECK ); - } - - // Hintergrundbrush - nWhich = GetWhich( SID_ATTR_BRUSH ); - - if ( rSet.GetItemState( nWhich ) == SFX_ITEM_SET ) - { - const SvxBrushItem& rItem = (SvxBrushItem&)rSet.Get( nWhich ); - aExampleWin.SetColor( rItem.GetColor() ); - } - - UpdateExample_Impl(); -} - -// ----------------------------------------------------------------------- - -int SvxCharStdPage::DeactivatePage( SfxItemSet* pSet ) -{ - if ( pSet ) - FillItemSet( *pSet ); - return LEAVE_PAGE; -} - -// ----------------------------------------------------------------------- - -void SvxCharStdPage::SetHandler_Impl() -{ - // Handler jeweils fuer Update der Beispielbox - aTimer.SetTimeout( 350 ); - aTimer.SetTimeoutHdl( LINK( this, SvxCharStdPage, TimeoutHdl_Impl ) ); - - Link aModLink = LINK( this, SvxCharStdPage, BoxModifyHdl_Impl ); - aFontBox.SetModifyHdl( aModLink ); - aStyleBox.SetModifyHdl( aModLink ); - aSizeBox.SetModifyHdl( aModLink ); - - aOutlineBtn.SetClickHdl( - LINK( this, SvxCharStdPage, OutlineClickHdl_Impl ) ); - aShadowBtn.SetClickHdl( - LINK( this, SvxCharStdPage, ShadowClickHdl_Impl ) ); - aUnderlineBtn.SetClickHdl( - LINK( this, SvxCharStdPage, UnderlineClickHdl_Impl ) ); - aStrikeoutBtn.SetClickHdl( - LINK( this, SvxCharStdPage, StrikeoutClickHdl_Impl ) ); - - aColorBox.SetSelectHdl( - LINK( this, SvxCharStdPage, ColorBoxSelectHdl_Impl ) ); - aFillColorBox.SetSelectHdl( - LINK( this, SvxCharStdPage, ColorBoxSelectHdl_Impl ) ); - - // initialisieren Sprachen -// const sal_Int32 nLanguageCount = SvxGetSelectableLanguages().getLength(); -// const util::Language *pLang = SvxGetSelectableLanguages().getConstArray(); - const sal_Int32 nLanguageCount = 0; - const util::Language *pLang = NULL; - for ( sal_Int32 i = 0; i < nLanguageCount; ++i ) - { - LanguageType eType = pLang[i]; - USHORT nPos; - - nPos = aLanguageBox.InsertEntry( ::GetLanguageString( eType ) ); - aLanguageBox.SetEntryData( nPos, (void*)(ULONG)i ); - } - } - -// ----------------------------------------------------------------------- - -void SvxCharStdPage::UpdateExample_Impl() -{ - SvxFont& rFont = aExampleWin.GetFont(); - Size aSize = rFont.GetSize(); - aSize.Width() = 0; - - // Font - const FontList* pFontList = GetFontList(); - FontInfo aFontInfo( pFontList->Get( aFontBox.GetText(), - aStyleBox.GetText() ) ); - // Size - if ( aSizeBox.IsRelative() ) - { - DBG_ASSERT( GetItemSet().GetParent(), "No parent set" ); - - USHORT nWhich = GetWhich( SID_ATTR_CHAR_FONTHEIGHT ); - const SvxFontHeightItem& rOldItem = - (SvxFontHeightItem&)GetItemSet().GetParent()->Get( nWhich ); - - // alter Wert, skaliert - long nHeight; - if( aSizeBox.IsPtRelative() ) - nHeight = rOldItem.GetHeight() + - PointToTwips( aSizeBox.GetValue() / 10 ); - else - nHeight = rOldItem.GetHeight() * aSizeBox.GetValue() / 100; - - // Umrechnung in twips fuer das Beispiel-Window - aSize.Height() = ItemToControl( nHeight, - GetItemSet().GetPool()->GetMetric( nWhich ), SFX_FUNIT_TWIP ); - } - else if ( aSizeBox.GetText().Len() ) - aSize.Height() = PointToTwips( aSizeBox.GetValue() / 10 ); - else - aSize.Height() = 200; // als Default 10pt - aFontInfo.SetSize( aSize ); - - rFont.SetFamily( aFontInfo.GetFamily() ); - rFont.SetName( aFontInfo.GetName() ); - rFont.SetStyleName( aFontInfo.GetStyleName() ); - rFont.SetPitch( aFontInfo.GetPitch() ); - rFont.SetCharSet( aFontInfo.GetCharSet() ); - rFont.SetWeight( aFontInfo.GetWeight() ); - rFont.SetItalic( aFontInfo.GetItalic() ); - rFont.SetSize( aFontInfo.GetSize() ); - - aExampleWin.Invalidate(); - aFontTypeText.SetText( pFontList->GetFontMapText( aFontInfo ) ); -} - -// ----------------------------------------------------------------------- - -void SvxCharStdPage::FillStyleBox_Impl() -{ - const FontList* pFontList = GetFontList(); - DBG_ASSERT( pFontList, "no fontlist" ); - // "Uber FontInfo und Fontlist die StyleBox f"ullen - aStyleBox.Fill( aFontBox.GetText(), pFontList ); - - if ( bInSearchMode ) - { - // Bei der Suche zus"atzliche Eintr"age: - // "Nicht Fett" und "Nicht Kursiv" - String aEntry = aNoStyleStr; - const sal_Char sS[] = "%s"; - aEntry.SearchAndReplaceAscii( sS, pFontList->GetBoldStr() ); - nExtraEntryPos = aStyleBox.InsertEntry( aEntry ); - aEntry = aNoStyleStr; - aEntry.SearchAndReplaceAscii( sS, pFontList->GetItalicStr() ); - aStyleBox.InsertEntry( aEntry ); - } -} - -// ----------------------------------------------------------------------- - -void SvxCharStdPage::FillSizeBox_Impl() -{ - const FontList* pFontList = GetFontList(); - // Ueber FontInfo und Fontlist Size fuellen - aSizeBox.Fill( pFontList->Get( aFontBox.GetText(), aStyleBox.GetText() ), - pFontList ); -} - -// ----------------------------------------------------------------------- - -IMPL_LINK_INLINE_START( SvxCharStdPage, TimeoutHdl_Impl, Timer *, EMPTYARG ) -{ - UpdateExample_Impl(); - return 0; -} -IMPL_LINK_INLINE_END( SvxCharStdPage, TimeoutHdl_Impl, Timer *, EMPTYARG ) - -// ----------------------------------------------------------------------- - -IMPL_LINK( SvxCharStdPage, BoxModifyHdl_Impl, void *, pBox ) -{ - aTimer.Start(); - - if ( &aFontBox == pBox ) - { - FillStyleBox_Impl(); - FillSizeBox_Impl(); - } - return 0; -} - -// ----------------------------------------------------------------------- - -IMPL_LINK_INLINE_START( SvxCharStdPage, OutlineClickHdl_Impl, TriStateBox *, pBtn ) -{ - pBtn->EnableTriState( FALSE ); - SvxFont& rFont = aExampleWin.GetFont(); - rFont.SetOutline( StateToAttr( pBtn->GetState() ) ); - aExampleWin.Invalidate(); - return 0; -} -IMPL_LINK_INLINE_END( SvxCharStdPage, OutlineClickHdl_Impl, TriStateBox *, pBtn ) - -// ----------------------------------------------------------------------- - -IMPL_LINK_INLINE_START( SvxCharStdPage, ShadowClickHdl_Impl, TriStateBox *, pBtn ) -{ - pBtn->EnableTriState( FALSE ); - SvxFont& rFont = aExampleWin.GetFont(); - rFont.SetShadow( StateToAttr( pBtn->GetState() ) ); - aExampleWin.Invalidate(); - return 0; -} -IMPL_LINK_INLINE_END( SvxCharStdPage, ShadowClickHdl_Impl, TriStateBox *, pBtn ) - -// ----------------------------------------------------------------------- - -IMPL_LINK( SvxCharStdPage, UnderlineClickHdl_Impl, TriStateBox *, pBtn ) -{ - pBtn->EnableTriState( FALSE ); - SvxFont& rFont = aExampleWin.GetFont(); - eUnderline = StateToAttr( pBtn->GetState() ) == TRUE ? UNDERLINE_SINGLE - : UNDERLINE_NONE; - rFont.SetUnderline( eUnderline ); - UpdateExample_Impl(); - return 0; -} - -// ----------------------------------------------------------------------- - -IMPL_LINK( SvxCharStdPage, StrikeoutClickHdl_Impl, TriStateBox *, pBtn ) -{ - pBtn->EnableTriState( FALSE ); - SvxFont& rFont = aExampleWin.GetFont(); - eStrikeout = StateToAttr( pBtn->GetState() ) == TRUE ? STRIKEOUT_SINGLE - : STRIKEOUT_NONE; - rFont.SetStrikeout( eStrikeout ); - UpdateExample_Impl(); - return 0; -} - -// ----------------------------------------------------------------------- - -IMPL_LINK_INLINE_START( SvxCharStdPage, ColorBoxSelectHdl_Impl, ColorListBox *, pBox ) -{ - SvxFont& rFont = aExampleWin.GetFont(); - Color aSelectedColor; - if( pBox->GetSelectEntry() == aStrTransparent ) - aSelectedColor = Color( COL_TRANSPARENT ); - else - aSelectedColor = pBox->GetSelectEntryColor(); - - if( pBox == &aColorBox ) - { - rFont.SetColor( COL_AUTO == aSelectedColor.GetColor() - ? Color(COL_BLACK) : aSelectedColor ); - } - else - rFont.SetFillColor( aSelectedColor ); - UpdateExample_Impl(); - return 0; -} -IMPL_LINK_INLINE_END( SvxCharStdPage, ColorBoxSelectHdl_Impl, ColorListBox *, pBox ) - -// class SvxCharExtPage -------------------------------------------------- - -SfxTabPage* SvxCharExtPage::Create( Window* pParent, const SfxItemSet& rSet ) -{ - return new SvxCharExtPage( pParent, rSet ); -} - -// ----------------------------------------------------------------------- - -BOOL SvxCharExtPage::FillItemSet( SfxItemSet& rSet ) -{ - const SfxPoolItem* pOld = 0; - const SfxItemSet& rOldSet = GetItemSet(); - BOOL bModified = FALSE; - FASTBOOL bChanged = TRUE; - - // Wortweise - USHORT nWhich = GetWhich( SID_ATTR_CHAR_WORDLINEMODE ); - pOld = GetOldItem( rSet, SID_ATTR_CHAR_WORDLINEMODE ); - - if ( pOld ) - { - const SvxWordLineModeItem& rItem = *( (const SvxWordLineModeItem*)pOld ); - - if ( rItem.GetValue() == aWordBox.IsChecked() ) - bChanged = FALSE; - } - - if ( rOldSet.GetItemState( nWhich ) == SFX_ITEM_DONTCARE && - aWordBox.IsChecked() == aWordBox.GetSavedValue() ) - bChanged = FALSE; - - if ( bChanged ) - { - rSet.Put( SvxWordLineModeItem( aWordBox.IsChecked(), nWhich ) ); - bModified |= TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - bChanged = TRUE; - - // Auszeichnung - nWhich = GetWhich( SID_ATTR_CHAR_CASEMAP ); - pOld = GetOldItem( rSet, SID_ATTR_CHAR_CASEMAP ); - SvxCaseMap eCaseMap = SVX_CASEMAP_NOT_MAPPED; - FASTBOOL bChecked = FALSE; - - USHORT nCapsPos = aCapsLB.GetSelectEntryPos(); - if ( nCapsPos != LISTBOX_ENTRY_NOTFOUND ) - { - eCaseMap = (SvxCaseMap)nCapsPos; - bChecked = TRUE; - } - - if ( pOld ) - { - const SvxCaseMapItem& rItem = *( (const SvxCaseMapItem*)pOld ); - - if ( (SvxCaseMap)rItem.GetValue() == eCaseMap ) - bChanged = FALSE; - } - - if ( bChanged && bChecked ) - { - rSet.Put( SvxCaseMapItem( eCaseMap, nWhich ) ); - bModified |= TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - bChanged = TRUE; - - // Position (hoch, normal oder tief) - nWhich = GetWhich( SID_ATTR_CHAR_ESCAPEMENT ); - pOld = GetOldItem( rSet, SID_ATTR_CHAR_ESCAPEMENT ); - const FASTBOOL bHigh = aHighBtn.IsChecked(); - short nEsc; - BYTE nEscProp; - - if ( bHigh || aDeepBtn.IsChecked() ) - { - if(aAutoPosBox.IsChecked()) - { - nEsc = bHigh ? DFLT_ESC_AUTO_SUPER : DFLT_ESC_AUTO_SUB; - } - else - { - nEsc = (short)aEscRelPosEdit.Denormalize( aEscRelPosEdit.GetValue() ); - nEsc *= bHigh ? 1 : -1; - } - nEscProp = (BYTE)aEscRelSizeEdit.Denormalize( - aEscRelSizeEdit.GetValue() ); - } - else - { - nEsc = 0; - nEscProp = 100; - } - - if ( pOld ) - { - const SvxEscapementItem& rItem = *( (const SvxEscapementItem*)pOld ); - - // Wert gleich geblieben oder kein Button gecheckt? - if ( rItem.GetEsc() == nEsc && rItem.GetProp() == nEscProp ) - bChanged = FALSE; - } - - if ( !bChanged && !aHighBtn.GetSavedValue() && - !aNormalBtn.GetSavedValue() && !aDeepBtn.GetSavedValue() ) - bChanged = TRUE; - - if ( bChanged && - ( aHighBtn.IsChecked() || - aNormalBtn.IsChecked() || - aDeepBtn.IsChecked() ) ) - { - rSet.Put( SvxEscapementItem( nEsc, nEscProp, nWhich ) ); - bModified |= TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - bChanged = TRUE; - - // Kerning - nWhich = GetWhich( SID_ATTR_CHAR_KERNING ); - pOld = GetOldItem( rSet, SID_ATTR_CHAR_KERNING ); - USHORT nPos = aKerningListBox.GetSelectEntryPos(); - short nKerning = 0; - SfxMapUnit eUnit = rSet.GetPool()->GetMetric( nWhich ); - - if ( nPos == LW_GESPERRT || nPos == LW_SCHMAL ) - { - long nTmp = aKerningEdit.GetValue(); - long nVal = LogicToLogic( nTmp, MAP_POINT, (MapUnit)eUnit ); - nKerning = (short)aKerningEdit.Denormalize( nVal ); - - if ( nPos == LW_SCHMAL ) - nKerning *= - 1; - } - - if ( pOld ) - { - const SvxKerningItem& rItem = *( (const SvxKerningItem*)pOld ); - - if ( rItem.GetValue() == nKerning ) - bChanged = FALSE; - } - - if ( !bChanged && - ( aKerningListBox.GetSavedValue() == LISTBOX_ENTRY_NOTFOUND || - !aKerningEdit.GetSavedValue().Len() ) ) - bChanged = TRUE; - - if ( bChanged && nPos != LISTBOX_ENTRY_NOTFOUND ) - { - rSet.Put( SvxKerningItem( nKerning, nWhich ) ); - bModified |= TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - bChanged = TRUE; - - // Pair-Kerning - nWhich = GetWhich( SID_ATTR_CHAR_AUTOKERN ); - - if ( aAutoKernBtn.IsChecked() != aAutoKernBtn.GetSavedValue() ) - { - rSet.Put( SvxAutoKernItem( aAutoKernBtn.IsChecked(), nWhich ) ); - bModified |= TRUE; - } - else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - - // Unterstrichen - nWhich = GetWhich( SID_ATTR_CHAR_UNDERLINE ); - pOld = GetOldItem( rSet, SID_ATTR_CHAR_UNDERLINE ); - nPos = aUnderlineBox.GetSelectEntryPos(); - FontUnderline eUnder = (FontUnderline)(ULONG)aUnderlineBox.GetEntryData( nPos ); - - if ( pOld ) - { - const SvxUnderlineItem& rItem = *( (const SvxUnderlineItem*)pOld ); - - if ( !aUnderlineBox.IsEnabled() || - (FontUnderline)rItem.GetValue() == eUnder ) - bChanged = FALSE; - } - - FASTBOOL bTmp = FALSE; - SfxTabDialog* pDlg = GetTabDialog(); - const SfxItemSet* pExSet = NULL; - - if ( pDlg ) - pExSet = pDlg->GetExampleSet(); - - if ( aUnderlineBox.IsEnabled() ) - { - if ( bChanged ) - { - const SvxUnderlineItem* pTmp = NULL; - SfxItemState eState = SFX_ITEM_UNKNOWN; - - if ( pExSet ) - eState = pExSet->GetItemState( nWhich, TRUE, (const SfxPoolItem**)&pTmp ); - - if ( pTmp && pTmp->GetUnderline() != UNDERLINE_NONE ) - bTmp = TRUE; - else if ( !pTmp ) - { - pTmp = (SvxUnderlineItem*)GetItem( rOldSet, SID_ATTR_CHAR_UNDERLINE ); - if ( pTmp && pTmp->GetUnderline() != UNDERLINE_NONE ) - bTmp = TRUE; - } - - if ( bTmp || SFX_ITEM_DONTCARE == eState ) - { - rSet.Put( SvxUnderlineItem( eUnder, nWhich ) ); - bModified |= TRUE; - } - } - - if ( ( !bChanged || !bTmp ) && - SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - } - bChanged = TRUE; - - // Durchgestrichen - nWhich = GetWhich( SID_ATTR_CHAR_STRIKEOUT ); - pOld = GetOldItem( rSet, SID_ATTR_CHAR_UNDERLINE ); - nPos = aStrikeoutBox.GetSelectEntryPos(); - FontStrikeout eStrike = (FontStrikeout)(ULONG)aStrikeoutBox.GetEntryData( nPos ); - - if ( pOld ) - { - const SvxCrossedOutItem& rItem = *( (const SvxCrossedOutItem*)pOld ); - - if ( !aStrikeoutBox.IsEnabled() || (FontStrikeout)rItem.GetValue() == eStrike ) - bChanged = FALSE; - } - - bTmp = FALSE; - - if ( aStrikeoutBox.IsEnabled() ) - { - if ( bChanged ) - { - const SvxCrossedOutItem* pTmp = NULL; - SfxItemState eState = SFX_ITEM_UNKNOWN; - - if ( pExSet ) - eState = pExSet->GetItemState( nWhich, TRUE, (const SfxPoolItem**)&pTmp ); - - if ( pTmp && pTmp->GetStrikeout() != STRIKEOUT_NONE ) - bTmp = TRUE; - else if ( !pTmp ) - { - pTmp = (SvxCrossedOutItem*)GetItem( rOldSet, SID_ATTR_CHAR_STRIKEOUT ); - if ( pTmp && pTmp->GetStrikeout() != STRIKEOUT_NONE ) - bTmp = TRUE; - } - - if ( bTmp || SFX_ITEM_DONTCARE == eState ) - { - rSet.Put( SvxCrossedOutItem( eStrike, nWhich ) ); - bModified |= TRUE; - } - } - - if ( ( !bChanged || !bTmp ) && - SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, FALSE ) ) - rSet.ClearItem( nWhich ); - } - - //blinken - - if ( aFlashBox.IsChecked() != aFlashBox.GetSavedValue()) - { - nWhich = GetWhich( SID_ATTR_FLASH ); - rSet.Put(SvxBlinkItem(aFlashBox.IsChecked(), nWhich)); - bModified |= TRUE; - } - - return bModified; -} - -// ----------------------------------------------------------------------- - -void SvxCharExtPage::Reset( const SfxItemSet& rSet ) -{ - bInReset = TRUE; - String sUser = GetUserData(); - - if ( sUser.Len() ) - { - nSuperEsc = (short)sUser.GetToken( 0 ).ToInt32(); - nSubEsc = (short)sUser.GetToken( 1 ).ToInt32(); - nSuperProp = (BYTE)sUser.GetToken( 2 ).ToInt32(); - nSubProp = (BYTE)sUser.GetToken( 3 ).ToInt32(); - } - ActivatePage( rSet ); - - SvxFont& rFont = aExampleWin.GetFont(); - USHORT nWhich; - - // WordLineMode - nWhich = GetWhich( SID_ATTR_CHAR_WORDLINEMODE ); - - if ( rSet.GetItemState( nWhich ) >= SFX_ITEM_DEFAULT ) - { - const SvxWordLineModeItem& rItem = - (SvxWordLineModeItem&)rSet.Get( nWhich ); - rFont.SetWordLineMode( rItem.GetValue() ); - aWordBox.Check( rItem.GetValue() ); - } - - short nEsc = 0; - BYTE nEscProp = 100; - BYTE nProp = 100; - - aEscRelPosEdit.Disable(); - aEscRelPosText.Disable(); - aEscRelSizeEdit.Disable(); - aEscRelSizeText.Disable(); - - // HochTief-Stellung - nWhich = GetWhich( SID_ATTR_CHAR_ESCAPEMENT ); - - if ( rSet.GetItemState( nWhich ) >= SFX_ITEM_DEFAULT ) - { - const SvxEscapementItem& rItem = (SvxEscapementItem&)rSet.Get( nWhich ); - nEsc = rItem.GetEsc(); - nEscProp = rItem.GetProp(); - - if ( nEsc != 0 ) - { - aEscRelPosEdit.Enable(); - aEscRelPosText.Enable(); - aEscRelSizeEdit.Enable(); - aEscRelSizeText.Enable(); - - short nFac; - - if ( nEsc > 0 ) - { - nFac = 1; - aHighBtn.Check( TRUE ); - if(nEsc == DFLT_ESC_AUTO_SUPER) - { - aAutoPosBox.Check(TRUE); - nEsc = DFLT_ESC_SUPER; - } - } - else - { - nFac = -1; - aDeepBtn.Check( TRUE ); - if(nEsc == DFLT_ESC_AUTO_SUB) - { - aAutoPosBox.Check(TRUE); - nEsc = DFLT_ESC_SUB; - - } - } - if(aAutoPosBox.IsChecked()) - { - aEscRelPosText .Disable(); - aEscRelPosEdit .Disable(); - } - aEscRelPosEdit.SetValue( aEscRelPosEdit.Normalize( nFac * nEsc ) ); - aEscRelSizeEdit.SetValue( aEscRelSizeEdit.Normalize( nEscProp ) ); - } - else - { - aNormalBtn.Check( TRUE ); - aAutoPosBox.Check( TRUE ); - EscapementHdl_Impl( 0 ); - } - } - else - { - aHighBtn.Check( FALSE ); - aNormalBtn.Check( FALSE ); - aDeepBtn.Check( FALSE ); - } - - // BspFont setzen - rFont.SetPropr(nProp); - rFont.SetProprRel(nEscProp); - rFont.SetEscapement(nEsc); - - // Auszeichnung - // - nWhich = GetWhich( SID_ATTR_CHAR_CASEMAP ); - SvxCaseMap eCaseMap = SVX_CASEMAP_END; // dont care - - if ( rSet.GetItemState( nWhich ) >= SFX_ITEM_DEFAULT ) - { - const SvxCaseMapItem& rItem = (const SvxCaseMapItem&)rSet.Get( nWhich ); - eCaseMap = (SvxCaseMap)rItem.GetValue(); - } - SetCaseMap_Impl( eCaseMap ); - - // Kerning - // - nWhich = GetWhich( SID_ATTR_CHAR_KERNING ); - - if ( rSet.GetItemState( nWhich ) >= SFX_ITEM_DEFAULT ) - { - const SvxKerningItem& rItem = (SvxKerningItem&)rSet.Get( nWhich ); - SfxMapUnit eUnit = rSet.GetPool()->GetMetric( nWhich ); - MapUnit eOrgUnit = (MapUnit)eUnit; - MapUnit ePntUnit( MAP_POINT ); - long nBig = aKerningEdit.Normalize( (long)rItem.GetValue() ); - long nKerning = LogicToLogic( nBig, eOrgUnit, ePntUnit ); - - // Kerning am Font setzen, vorher in Twips umrechnen - long nKern = - LogicToLogic( rItem.GetValue(), (MapUnit)eUnit, MAP_TWIP ); - rFont.SetFixKerning( (short)nKern ); - - if ( nKerning > 0 ) - { - aKerningEdit.Enable(); - aKerningEdit.SetValue( nKerning ); - aKerningListBox.SelectEntryPos( LW_GESPERRT ); - } - else if ( nKerning < 0 ) - { - aKerningText.Enable(); - aKerningEdit.Enable(); - aKerningEdit.SetValue( -nKerning ); - aKerningListBox.SelectEntryPos( LW_SCHMAL ); - // beim schmalen Kerning den Maximal-Wert auf - // 1/6 der Font-Hoehe setzen - long nMax = rFont.GetSize().Height() / 6; - aKerningEdit.SetMax( aKerningEdit.Normalize( nMax ), FUNIT_TWIP ); - aKerningEdit.SetLast( - aKerningEdit.GetMax( aKerningEdit.GetUnit() ) ); - } - else - { - aKerningText.Disable(); - aKerningEdit.Disable(); - aKerningEdit.SetValue( 0 ); - aKerningListBox.SelectEntryPos( LW_NORMAL ); - aKerningEdit.SetMax( 9999 ); - aKerningEdit.SetLast( 9999 ); - } - } - else - aKerningEdit.SetText( String() ); - - nWhich = GetWhich( SID_ATTR_CHAR_AUTOKERN ); - - if ( rSet.GetItemState( nWhich ) >= SFX_ITEM_DEFAULT ) - { - const SvxAutoKernItem& rItem = (SvxAutoKernItem&)rSet.Get( nWhich ); - aAutoKernBtn.Check( rItem.GetValue() ); - } - else - aAutoKernBtn.Check( FALSE ); - - FASTBOOL bWord = FALSE; - - // Underline - nWhich = GetWhich( SID_ATTR_CHAR_UNDERLINE ); - - rFont.SetUnderline( UNDERLINE_NONE ); - aUnderlineBox.SelectEntryPos( 0 ); - aUnderlineBox.Disable(); - aUnderlineText.Disable(); - SfxItemState eState = rSet.GetItemState( nWhich ); - - if ( eState >= SFX_ITEM_DONTCARE ) - { - if ( eState == SFX_ITEM_DONTCARE ) - { - aUnderlineBox.Enable(); - aUnderlineBox.SetNoSelection(); - aUnderlineText.Enable(); - } - else - { - const SvxUnderlineItem& rItem = (SvxUnderlineItem&)rSet.Get( nWhich ); - FontUnderline eUnderline = (FontUnderline)rItem.GetValue(); - rFont.SetUnderline( eUnderline ); - - if ( eUnderline != UNDERLINE_NONE ) - { - aUnderlineBox.Enable(); - aUnderlineText.Enable(); - - for ( USHORT i = 0; i < aUnderlineBox.GetEntryCount(); ++i ) - { - if ( (FontUnderline)(ULONG)aUnderlineBox.GetEntryData(i) == eUnderline ) - { - aUnderlineBox.SelectEntryPos(i); - break; - } - } - bWord |= TRUE; - } - } - } - - // Strikeout - nWhich = GetWhich( SID_ATTR_CHAR_STRIKEOUT ); - - rFont.SetStrikeout( STRIKEOUT_NONE ); - aStrikeoutBox.SelectEntryPos( 0 ); - aStrikeoutBox.Disable(); - aStrikeoutText.Disable(); - eState = rSet.GetItemState( nWhich ); - - if ( eState >= SFX_ITEM_DONTCARE ) - { - if ( eState == SFX_ITEM_DONTCARE ) - { - aStrikeoutBox.Enable(); - aStrikeoutBox.SetNoSelection(); - aStrikeoutText.Enable(); - } - else - { - const SvxCrossedOutItem& rItem = (SvxCrossedOutItem&)rSet.Get( nWhich ); - FontStrikeout eStrikeout = (FontStrikeout)rItem.GetValue(); - rFont.SetStrikeout( eStrikeout ); - - if ( eStrikeout != STRIKEOUT_NONE ) - { - aStrikeoutBox.Enable(); - aStrikeoutText.Enable(); - - for ( USHORT i = 0; i < aStrikeoutBox.GetEntryCount(); ++i ) - { - if ( (FontStrikeout)(ULONG)aStrikeoutBox.GetEntryData(i) == eStrikeout ) - { - aStrikeoutBox.SelectEntryPos(i); - break; - } - } - bWord |= TRUE; - } - } - } - - if ( !bWord ) - aWordBox.Disable(); - else - aWordBox.Enable(); - - //blinken - nWhich = GetWhich( SID_ATTR_FLASH ); - if ( rSet.GetItemState( nWhich ) >= SFX_ITEM_DEFAULT ) - { - const SvxBlinkItem& rItem = (SvxBlinkItem&)rSet.Get(nWhich); - aFlashBox.Check(rItem.GetValue()); - } - - aExampleWin.Invalidate(); - - // Alte Einstellungen merken - aCapsLB.SaveValue(); - aHighBtn.SaveValue(); - aNormalBtn.SaveValue(); - aDeepBtn.SaveValue(); - aEscRelPosEdit.SaveValue(); - aEscRelSizeEdit.SaveValue(); - aKerningListBox.SaveValue(); - aKerningEdit.SaveValue(); - aAutoKernBtn.SaveValue(); - aUnderlineBox.SaveValue(); - aStrikeoutBox.SaveValue(); - aWordBox.SaveValue(); - aFlashBox.SaveValue(); - bInReset = FALSE; -} - -// ----------------------------------------------------------------------- - -void SvxCharExtPage::FillUserData() -{ - const sal_Unicode cTok = ';'; - - String sUser( UniString::CreateFromInt32( nSuperEsc ) ); - sUser.Append( cTok ); - sUser.Append( UniString::CreateFromInt32( nSubEsc ) ); - sUser.Append( cTok ); - sUser.Append( UniString::CreateFromInt32( nSuperProp ) ); - sUser.Append( cTok ); - sUser.Append( UniString::CreateFromInt32( nSubProp ) ); - SetUserData( sUser ); -} - -// ----------------------------------------------------------------------- - -void SvxCharExtPage::DisableControls( USHORT nDisable ) -{ - if ( DISABLE_CASEMAP & nDisable ) - { - aCapsLB.Disable(); - } - - if ( DISABLE_WORDLINE & nDisable ) - aWordBox.Hide(); - - if ( DISABLE_BLINK & nDisable ) - aFlashBox.Disable(); -} -// ----------------------------------------------------------------------- - -void SvxCharExtPage::EnableFlash() -{ - if(!((nHtmlMode & HTMLMODE_ON) && !(nHtmlMode & HTMLMODE_BLINK))) - aFlashBox.Show(); -} - -// ----------------------------------------------------------------------- - -SvxCharExtPage::SvxCharExtPage( Window* pParent, const SfxItemSet& rAttr ): - - SfxTabPage( pParent, SVX_RES( RID_SVXPAGE_CHAR_EXT ), rAttr ), - - aCapsLB ( this, ResId( LB_CAPS ) ), - aFlashBox ( this, ResId( CB_FLASH ) ), - aEffectBox ( this, ResId( GB_EFFECT ) ), - aHighBtn ( this, ResId( BTN_HIGH ) ), - aNormalBtn ( this, ResId( BTN_NORMAL ) ), - aDeepBtn ( this, ResId( BTN_DEEP ) ), - aPositionBox ( this, ResId( GB_POSITION ) ), - aEscRelPosText ( this, ResId( FT_ESCDEEPHIGH ) ), - aEscRelPosEdit ( this, ResId( ED_ESCDEEPHIGH ) ), - aEscRelSizeText ( this, ResId( FT_ESCRELSIZE ) ), - aEscRelSizeEdit ( this, ResId( ED_ESCRELSIZE ) ), - aAutoPosBox ( this, ResId( CB_AUTOPOS ) ), - aPosExtBox ( this, ResId( GB_POSEXT ) ), - aKerningListBox ( this, ResId( LB_KERNING ) ), - aKerningText ( this, ResId( FT_KERNING ) ), - aKerningEdit ( this, ResId( ED_KERNING ) ), - aAutoKernBtn ( this, ResId( BTN_AUTOKERN ) ), - aKerningBox ( this, ResId( GB_KERNING ) ), - aUnderlineText ( this, ResId( FT_UNDERLINECNT ) ), - aUnderlineBox ( this, ResId( LB_UNDERLINECNT ) ), - aStrikeoutText ( this, ResId( FT_STRIKEOUTCNT ) ), - aStrikeoutBox ( this, ResId( LB_STRIKEOUTCNT ) ), - aWordBox ( this, ResId( CB_WORD ) ), - aExampleWin ( this, ResId( WIN_EXAMPLE ) ), - aExampleBox ( this, ResId( GB_EXAMPLE ) ), - - bInReset ( FALSE ), - nSuperEsc ( (short)DFLT_ESC_SUPER ), - nSubEsc ( (short)DFLT_ESC_SUB ), - nSuperProp ( (BYTE)DFLT_ESC_PROP ), - nSubProp ( (BYTE)DFLT_ESC_PROP ), - nHtmlMode (0) - -{ - FreeResource(); - - const SfxPoolItem* pItem; - SfxObjectShell* pShell; - if ( SFX_ITEM_SET == rAttr.GetItemState( SID_HTML_MODE, FALSE, &pItem ) || - ( 0 != ( pShell = SfxObjectShell::Current() ) && - 0 != ( pItem = pShell->GetItem( SID_HTML_MODE ) ) ) ) - { - nHtmlMode = (BOOL)( (const SfxUInt16Item*)pItem )->GetValue(); - if ( nHtmlMode & HTMLMODE_ON ) - { - aStrikeoutText .Hide(); - aStrikeoutBox .Hide(); - aPosExtBox .Hide(); - aAutoPosBox .Hide(); - aEscRelPosText .Hide(); - aEscRelPosEdit .Hide(); - aEscRelSizeText .Hide(); - aEscRelSizeEdit .Hide(); - aUnderlineText .Hide(); - aUnderlineBox .Hide(); - aWordBox .Hide(); - - if ( !( nHtmlMode & HTMLMODE_FULL_STYLES ) ) - { - aKerningListBox.Hide(); - aKerningText .Hide(); - aKerningEdit .Hide(); - aAutoKernBtn .Hide(); - aKerningBox .Hide(); - } - if ( !( nHtmlMode & HTMLMODE_BLINK ) ) - aFlashBox.Hide(); - Point aPos = aPosExtBox.GetPosPixel(); - Point aXPos = aExampleBox.GetPosPixel(); - int nYDiff = aXPos.Y() - aPos.Y(); - aExampleBox.SetPosPixel(aPos); - aXPos = aExampleWin.GetPosPixel(); - aXPos.Y() -= nYDiff; - aExampleWin.SetPosPixel(aXPos); - } - } - - // diese Page braucht ExchangeSupport - SetExchangeSupport(); - - SetHandler_Impl(); -} - -// ----------------------------------------------------------------------- - -USHORT* SvxCharExtPage::GetRanges() -{ - return pExtRanges; -} - -// ----------------------------------------------------------------------- - -void SvxCharExtPage::ActivatePage( const SfxItemSet& rSet ) -{ - SfxItemState eState = bInReset ? SFX_ITEM_DEFAULT : SFX_ITEM_SET; - SvxFont& rFont = aExampleWin.GetFont(); - const SvxFontItem* pFontItem = 0; - USHORT nWhich = GetWhich( SID_ATTR_CHAR_FONT ); - - if ( rSet.GetItemState( nWhich ) >= eState ) - { - pFontItem = (const SvxFontItem*)&rSet.Get( nWhich ); - rFont.SetFamily( pFontItem->GetFamily() ); - rFont.SetName( pFontItem->GetFamilyName() ); - rFont.SetPitch( pFontItem->GetPitch() ); - rFont.SetCharSet( pFontItem->GetCharSet() ); - rFont.SetStyleName( pFontItem->GetStyleName() ); - } - - nWhich = GetWhich( SID_ATTR_CHAR_POSTURE ); - - if ( rSet.GetItemState( nWhich ) >= eState ) - { - const SvxPostureItem& rItem = (SvxPostureItem&)rSet.Get( nWhich ); - rFont.SetItalic( (FontItalic)rItem.GetValue() != ITALIC_NONE ? - ITALIC_NORMAL : ITALIC_NONE ); - } - - nWhich = GetWhich( SID_ATTR_CHAR_WEIGHT ); - - if ( rSet.GetItemState( nWhich ) >= eState ) - { - SvxWeightItem& rItem = (SvxWeightItem&)rSet.Get( nWhich ); - rFont.SetWeight( (FontWeight)rItem.GetValue() != WEIGHT_NORMAL ? - WEIGHT_BOLD : WEIGHT_NORMAL ); - } - - nWhich = GetWhich( SID_ATTR_CHAR_FONTHEIGHT ); - - if ( rSet.GetItemState( nWhich ) >= eState ) - { - MapUnit eUnit = (MapUnit)rSet.GetPool()->GetMetric( nWhich ); - SvxFontHeightItem& rItem = (SvxFontHeightItem&)rSet.Get( nWhich ); - - Size aSize( rFont.GetSize() ); - long nH = LogicToLogic( rItem.GetHeight(), eUnit, MAP_TWIP ); - aSize.Height() = nH; - aSize.Width() = 0; //!!! - rFont.SetSize( aSize ); - } - else - // als Default 12pt - rFont.SetSize( Size( 0, 240 ) ); - - // Schattiert - nWhich = GetWhich( SID_ATTR_CHAR_SHADOWED ); - - if ( rSet.GetItemState( nWhich ) >= eState ) - { - const SvxShadowedItem& rItem = (SvxShadowedItem&)rSet.Get( nWhich ); - rFont.SetShadow(rItem.GetValue()); - } - - // Kontour - nWhich = GetWhich( SID_ATTR_CHAR_CONTOUR ); - - if ( rSet.GetItemState( nWhich ) >= eState ) - { - const SvxContourItem& rItem = (SvxContourItem&)rSet.Get( nWhich ); - rFont.SetOutline( rItem.GetValue() ); - } - - // Farbe - nWhich = GetWhich( SID_ATTR_CHAR_COLOR ); - if ( rSet.GetItemState( nWhich ) >= eState ) - { - const SvxColorItem& rItem = (SvxColorItem&)rSet.Get( nWhich ); - Color aCol( rItem.GetValue() ); - rFont.SetColor( COL_AUTO == aCol.GetColor() ? Color(COL_BLACK) : aCol); - } - nWhich = GetWhich( SID_ATTR_CHAR_FILLCOLOR ); - if ( rSet.GetItemState( nWhich ) >= eState ) - { - const SvxColorItem& rItem = (SvxColorItem&)rSet.Get( nWhich ); - rFont.SetFillColor( rItem.GetValue() ); - } - - FASTBOOL bWord = FALSE; - - // Durchstreichen - nWhich = GetWhich( SID_ATTR_CHAR_STRIKEOUT ); - - if ( rSet.GetItemState( nWhich ) >= eState ) - { - const SvxCrossedOutItem& rItem = - (SvxCrossedOutItem&)rSet.Get( nWhich ); - FontStrikeout eStrikeout = (FontStrikeout)rItem.GetValue(); - rFont.SetStrikeout( eStrikeout ); - - if ( eStrikeout == STRIKEOUT_NONE ) - { - aStrikeoutText.Disable(); - aStrikeoutBox.Disable(); - aStrikeoutBox.SelectEntryPos( 0 ); - } - else - { - aStrikeoutText.Enable(); - aStrikeoutBox.Enable(); - - for ( USHORT i = 0; i < aStrikeoutBox.GetEntryCount(); ++i ) - { - if ( (FontStrikeout)(ULONG)aStrikeoutBox.GetEntryData(i) == eStrikeout ) - { - aStrikeoutBox.SelectEntryPos(i); - break; - } - } - bWord |= TRUE; - } - } - - // Underline - nWhich = GetWhich( SID_ATTR_CHAR_UNDERLINE ); - - if ( rSet.GetItemState( nWhich ) >= eState ) - { - const SvxUnderlineItem& rItem = (SvxUnderlineItem&)rSet.Get( nWhich ); - FontUnderline eUnderline = (FontUnderline)rItem.GetValue(); - rFont.SetUnderline( eUnderline ); - - if ( eUnderline == UNDERLINE_NONE ) - { - aUnderlineBox.SelectEntryPos( 0 ); - aUnderlineBox.Disable(); - aUnderlineText.Disable(); - } - else - { - for ( USHORT i = 0; i < aUnderlineBox.GetEntryCount(); ++i ) - { - if ( (FontUnderline)(ULONG)aUnderlineBox.GetEntryData(i) == eUnderline ) - { - aUnderlineBox.SelectEntryPos(i); - break; - } - } - aUnderlineBox.Enable(); - aUnderlineText.Enable(); - bWord |= TRUE; - } - } - - if ( !bWord ) - aWordBox.Disable(); - else - aWordBox.Enable(); - - // Hintergrundfarbe - nWhich = GetWhich( SID_ATTR_BRUSH ); - - if ( rSet.GetItemState( nWhich ) >= eState ) - { - const SvxBrushItem& rItem = (SvxBrushItem&)rSet.Get( nWhich ); - aExampleWin.SetColor( rItem.GetColor() ); - } - - aExampleWin.Invalidate(); - KerningSelectHdl_Impl( 0 ); - aDelayTimer.Start(); -} - -// ----------------------------------------------------------------------- - -int SvxCharExtPage::DeactivatePage( SfxItemSet* pSet ) -{ - if ( pSet ) - FillItemSet( *pSet ); - return LEAVE_PAGE; -} - -// ----------------------------------------------------------------------- - -void SvxCharExtPage::SetHandler_Impl() -{ - Link aLink = LINK( this, SvxCharExtPage, CaseMapHdl_Impl ); - aCapsLB.SetSelectHdl( aLink ); - - aLink = LINK( this, SvxCharExtPage, EscapementHdl_Impl ); - aHighBtn.SetClickHdl( aLink ); - aNormalBtn.SetClickHdl( aLink ); - aDeepBtn.SetClickHdl( aLink ); - aAutoKernBtn.SetClickHdl( LINK( this, SvxCharExtPage, AutoKernHdl_Impl ) ); - aKerningListBox.SetSelectHdl( - LINK( this, SvxCharExtPage, KerningSelectHdl_Impl ) ); - aUnderlineBox.SetSelectHdl( - LINK( this, SvxCharExtPage, UnderlineSelectHdl_Impl ) ); - aStrikeoutBox.SetSelectHdl( - LINK( this, SvxCharExtPage, StrikeoutSelectHdl_Impl ) ); - - aUnderlineBox.SelectEntryPos( 0 ); - aStrikeoutBox.SelectEntryPos( 0 ); - - aEscRelPosEdit.SetModifyHdl( - LINK( this, SvxCharExtPage, FontExtModifyHdl_Impl ) ); - aEscRelSizeEdit.SetModifyHdl( - LINK( this, SvxCharExtPage, FontExtModifyHdl_Impl ) ); - - aEscRelPosEdit.SetLoseFocusHdl( - LINK( this, SvxCharExtPage, LoseFocusHdl_Impl ) ); - aEscRelSizeEdit.SetLoseFocusHdl( - LINK( this, SvxCharExtPage, LoseFocusHdl_Impl ) ); - - aKerningEdit.SetModifyHdl( - LINK( this, SvxCharExtPage, KerningModifyHdl_Impl ) ); - aWordBox.SetClickHdl( - LINK( this, SvxCharExtPage, WordLineClickHdl_Impl ) ); - - aAutoPosBox.SetClickHdl( - LINK( this, SvxCharExtPage, AutoPosHdl_Impl ) ); - - aDelayTimer.SetTimeout( 300 ); - aDelayTimer.SetTimeoutHdl( LINK( this, SvxCharExtPage, TimeoutHdl_Impl ) ); -} - - -// ----------------------------------------------------------------------- - -IMPL_LINK( SvxCharExtPage, CaseMapHdl_Impl, ListBox *, EMPTYARG ) -{ - SvxCaseMap eMap = SVX_CASEMAP_NOT_MAPPED; - - USHORT nCapsPos = aCapsLB.GetSelectEntryPos(); - if ( nCapsPos != LISTBOX_ENTRY_NOTFOUND ) - eMap = (SvxCaseMap)nCapsPos; - - SetCaseMap_Impl( eMap ); - return 0; -} - -// ----------------------------------------------------------------------- - -void SvxCharExtPage::SetCaseMap_Impl( USHORT eMap ) -{ - if ( SVX_CASEMAP_END > (SvxCaseMap)eMap ) - aCapsLB.SelectEntryPos( eMap ); - else - { - aCapsLB.SetNoSelection(); - eMap = SVX_CASEMAP_NOT_MAPPED; - } - - aExampleWin.GetFont().SetCaseMap( (SvxCaseMap)eMap ); - aExampleWin.Invalidate(); -} - -// ----------------------------------------------------------------------- - -void SvxCharExtPage::EnablePairKerning_Impl() -{ - SvxFont& rFont = aExampleWin.GetFont(); -} - -// ----------------------------------------------------------------------- - -IMPL_LINK( SvxCharExtPage, EscapementHdl_Impl, RadioButton *, pBtn ) -{ - USHORT nEsc = SVX_ESCAPEMENT_OFF; // auch wenn pBtn == 0 - - if ( &aHighBtn == pBtn ) - nEsc = SVX_ESCAPEMENT_SUPERSCRIPT; - else if ( &aDeepBtn == pBtn ) - nEsc = SVX_ESCAPEMENT_SUBSCRIPT; - - SetEscapement_Impl( nEsc ); - return 0; -} - -// ----------------------------------------------------------------------- - -void SvxCharExtPage::SetEscapement_Impl( USHORT eEsc ) -{ - SvxEscapementItem aEsc( (SvxEscapement)eEsc ); - - if ( SVX_ESCAPEMENT_SUPERSCRIPT == eEsc ) - { - aEsc.GetEsc() = nSuperEsc; - aEsc.GetProp() = nSuperProp; - } - else if ( SVX_ESCAPEMENT_SUBSCRIPT == eEsc ) - { - aEsc.GetEsc() = nSubEsc; - aEsc.GetProp() = nSubProp; - } - - short nFac = aEsc.GetEsc() < 0 ? -1 : 1; - - aEscRelPosEdit.SetValue( aEsc.GetEsc() * nFac ); - aEscRelSizeEdit.SetValue( aEsc.GetProp() ); - - if ( eEsc == SVX_ESCAPEMENT_OFF ) - { - aEscRelSizeText.Disable(); - aEscRelSizeEdit.Disable(); - aEscRelPosEdit.Disable(); - aEscRelPosText.Disable(); - aAutoPosBox.Disable(); - } - else - { - aEscRelSizeText.Enable(); - aEscRelSizeEdit.Enable(); - aAutoPosBox.Enable(); - if(!aAutoPosBox.IsChecked()) - { - aEscRelPosEdit.Enable(); - aEscRelPosText.Enable(); - } - else - { - AutoPosHdl_Impl(&aAutoPosBox); - } - } - UpdatePos_Impl( 100, aEsc.GetEsc(), aEsc.GetProp() ); -} - -// ----------------------------------------------------------------------- - -IMPL_LINK_INLINE_START( SvxCharExtPage, FontExtModifyHdl_Impl, MetricField *, EMPTYARG ) -{ - short nEsc = (short)aEscRelPosEdit.GetValue(); - BYTE nEscProp = (BYTE)aEscRelSizeEdit.GetValue(); - nEsc *= aDeepBtn.IsChecked() ? -1 : 1; - UpdatePos_Impl( 100, nEsc, nEscProp ); - return 0; -} -IMPL_LINK_INLINE_END( SvxCharExtPage, FontExtModifyHdl_Impl, MetricField *, EMPTYARG ) - -// ----------------------------------------------------------------------- - -void SvxCharExtPage::UpdatePos_Impl( BYTE nProp, short nEsc, BYTE nEscProp ) -{ - SvxFont& rFont = aExampleWin.GetFont(); - - rFont.SetPropr( nProp ); - rFont.SetProprRel( nEscProp ); - rFont.SetEscapement( nEsc ); - aExampleWin.Invalidate(); -} - -// ----------------------------------------------------------------------- - -IMPL_LINK( SvxCharExtPage, KerningModifyHdl_Impl, MetricField *, EMPTYARG ) -{ - long nTmp = aKerningEdit.GetValue(); - long nVal = LogicToLogic( nTmp, MAP_POINT, MAP_TWIP ); - long nKern = (short)aKerningEdit.Denormalize( nVal ); - - // Schmal?, dann negativ - if ( aKerningListBox.GetSelectEntryPos() == 2 ) - nKern *= -1; - - SvxFont& rFont = aExampleWin.GetFont(); - rFont.SetFixKerning( (short)nKern ); - aExampleWin.Invalidate(); - return 0; -} - -// ----------------------------------------------------------------------- - -IMPL_LINK( SvxCharExtPage, KerningSelectHdl_Impl, ListBox *, EMPTYARG ) -{ - if ( aKerningListBox.GetSelectEntryPos() > 0 ) - { - aKerningText.Enable(); - aKerningEdit.Enable(); - - if ( aKerningListBox.GetSelectEntryPos() == 2 ) - { - // beim schmalen Kerning den Maximal-Wert auf - // 1/6 der Font-Hoehe setzen - SvxFont& rFont = aExampleWin.GetFont(); - long nMax = rFont.GetSize().Height() / 6; - aKerningEdit.SetMax( aKerningEdit.Normalize( nMax ), FUNIT_TWIP ); - aKerningEdit.SetLast( - aKerningEdit.GetMax( aKerningEdit.GetUnit() ) ); - } - else - { - aKerningEdit.SetMax( 9999 ); - aKerningEdit.SetLast( 9999 ); - } - } - else - { - aKerningEdit.SetValue(0); - aKerningText.Disable(); - aKerningEdit.Disable(); - } - KerningModifyHdl_Impl(0); - return 0; -} - -// ----------------------------------------------------------------------- - -IMPL_LINK( SvxCharExtPage, StrikeoutSelectHdl_Impl, ListBox *, EMPTYARG ) -{ - if ( aStrikeoutBox.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND ) - { - USHORT nPos = aStrikeoutBox.GetSelectEntryPos(); - FontStrikeout eStrikeout = (FontStrikeout)(ULONG)aStrikeoutBox.GetEntryData( nPos ); - aExampleWin.GetFont().SetStrikeout(eStrikeout); - aExampleWin.Invalidate(); - } - return 0; -} - -// ----------------------------------------------------------------------- - -IMPL_LINK( SvxCharExtPage, UnderlineSelectHdl_Impl, ListBox *, EMPTYARG ) -{ - if ( aUnderlineBox.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND ) - { - USHORT nPos = aUnderlineBox.GetSelectEntryPos(); - FontUnderline eUnderline = (FontUnderline)(ULONG)aUnderlineBox.GetEntryData( nPos ); - aExampleWin.GetFont().SetUnderline(eUnderline); - aExampleWin.Invalidate(); - } - return 0; -} - -// ----------------------------------------------------------------------- - -IMPL_LINK_INLINE_START( SvxCharExtPage, WordLineClickHdl_Impl, CheckBox *, pBox ) -{ - aExampleWin.GetFont().SetWordLineMode( pBox->IsChecked() ); - aExampleWin.Invalidate(); - return 0; -} -IMPL_LINK_INLINE_END( SvxCharExtPage, WordLineClickHdl_Impl, CheckBox *, pBox ) - -// ----------------------------------------------------------------------- - -IMPL_LINK( SvxCharExtPage, TimeoutHdl_Impl, Timer *, EMPTYARG ) -{ - // "Uberpr"ufung, ob Pairkerning am eingestellten Font m"oglich ist. - - if ( aAutoKernBtn.IsChecked() ) - return 0; - - SfxViewShell* pSh = SfxViewShell::Current(); - Printer* pPrinter = pSh ? pSh->GetPrinter() : 0; - - if ( pPrinter ) - { - Font aOldFont = pPrinter->GetFont(); - Font aTestFont = aExampleWin.GetFont(); - aTestFont.SetKerning( TRUE ); - pPrinter->SetFont( aTestFont ); - FontMetric aMetric = pPrinter->GetFontMetric(); - pPrinter->SetFont( aOldFont ); - - if ( aMetric.IsKerning() ) - aAutoKernBtn.Enable(); - else - aAutoKernBtn.Disable(); - } - return 0; -} - -// ----------------------------------------------------------------------- - -IMPL_LINK( SvxCharExtPage, LoseFocusHdl_Impl, MetricField *, pField ) -{ - FASTBOOL bDeep = aDeepBtn.IsChecked(), - bHigh = aHighBtn.IsChecked(); - - DBG_ASSERT( !( bDeep && bHigh ), "das kann nicht sein" ); - - if ( &aEscRelPosEdit == pField && ( bDeep || bHigh ) ) - { - if ( bDeep ) - nSubEsc = (short)aEscRelPosEdit.GetValue() * -1; - else - nSuperEsc = (short)aEscRelPosEdit.GetValue(); - } - else if ( &aEscRelSizeEdit == pField && ( bDeep || bHigh ) ) - { - if ( bDeep ) - nSubProp = (BYTE)aEscRelSizeEdit.GetValue(); - else - nSuperProp = (BYTE)aEscRelSizeEdit.GetValue(); - } - return 0; -} - -// ----------------------------------------------------------------------- - -IMPL_LINK_INLINE_START(SvxCharExtPage, AutoKernHdl_Impl, CheckBox*, EMTPYARG ) -{ - if ( !aAutoKernBtn.IsChecked() ) - TimeoutHdl_Impl( 0 ); - return 0; -} -IMPL_LINK_INLINE_END(SvxCharExtPage, AutoKernHdl_Impl, CheckBox*, EMPTYARG ) - -// ----------------------------------------------------------------------- - -IMPL_LINK( SvxCharExtPage, AutoPosHdl_Impl, CheckBox*, pBox) -{ - if(pBox->IsChecked()) - { - aEscRelPosText .Disable(); - aEscRelPosEdit .Disable(); - } - else - { - RadioButton* pRadio = aHighBtn.IsChecked() ? &aHighBtn : - aDeepBtn.IsChecked() ? &aDeepBtn : - &aNormalBtn; - EscapementHdl_Impl(pRadio); - } - return 0; -} - // SvxCharNamePage_Impl -------------------------------------------------- struct SvxCharNamePage_Impl |