summaryrefslogtreecommitdiff
path: root/starmath/source/dialog.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'starmath/source/dialog.cxx')
-rw-r--r--starmath/source/dialog.cxx2441
1 files changed, 0 insertions, 2441 deletions
diff --git a/starmath/source/dialog.cxx b/starmath/source/dialog.cxx
deleted file mode 100644
index e25d3f216b..0000000000
--- a/starmath/source/dialog.cxx
+++ /dev/null
@@ -1,2441 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_starmath.hxx"
-
-
-#define SMDLL 1
-#include "tools/rcid.h"
-#include <svl/eitem.hxx>
-#include <svl/intitem.hxx>
-#include <svl/stritem.hxx>
-#include <sfx2/app.hxx>
-#include <vcl/msgbox.hxx>
-#include <svtools/ctrltool.hxx>
-#include <sfx2/printer.hxx>
-#include <vcl/sound.hxx>
-#include <vcl/sndstyle.hxx>
-#include <vcl/waitobj.hxx>
-#include <vcl/settings.hxx>
-#include <vcl/wall.hxx>
-#include <sfx2/dispatch.hxx>
-#include <sfx2/sfx.hrc>
-#include <tools/string.hxx>
-#include <osl/diagnose.h>
-#include <svx/ucsubset.hxx>
-
-
-#include "dialog.hxx"
-#include "starmath.hrc"
-#include "config.hxx"
-#include "dialog.hrc"
-#include "smmod.hxx"
-#include "symbol.hxx"
-#include "view.hxx"
-#include "document.hxx"
-#include "unomodel.hxx"
-
-
-using ::rtl::OUString;
-
-////////////////////////////////////////
-//
-// Da der FontStyle besser ueber die Attribute gesetzt/abgefragt wird als ueber
-// den StyleName bauen wir uns hier unsere eigene Uebersetzung
-// Attribute <-> StyleName
-//
-
-class SmFontStyles
-{
- String aNormal;
- String aBold;
- String aItalic;
- String aBoldItalic;
- String aEmpty;
-
-public:
- SmFontStyles();
-
- sal_uInt16 GetCount() const { return 4; }
- const String & GetStyleName( const Font &rFont ) const;
- const String & GetStyleName( sal_uInt16 nIdx ) const;
-};
-
-
-SmFontStyles::SmFontStyles() :
- aNormal ( ResId( RID_FONTREGULAR, *SM_MOD()->GetResMgr() ) ),
- aBold ( ResId( RID_FONTBOLD, *SM_MOD()->GetResMgr() ) ),
- aItalic ( ResId( RID_FONTITALIC, *SM_MOD()->GetResMgr() ) )
-{
-
- aBoldItalic = aBold;
- aBoldItalic.AppendAscii( ", " );
- aBoldItalic += aItalic;
-}
-
-
-const String & SmFontStyles::GetStyleName( const Font &rFont ) const
-{
- //! compare also SmSpecialNode::Prepare
- bool bBold = IsBold( rFont ),
- bItalic = IsItalic( rFont );
-
- if (bBold && bItalic)
- return aBoldItalic;
- else if (bItalic)
- return aItalic;
- else if (bBold)
- return aBold;
- else
- return aNormal;
-}
-
-
-const String & SmFontStyles::GetStyleName( sal_uInt16 nIdx ) const
-{
- // 0 = "normal", 1 = "italic",
- // 2 = "bold", 3 = "bold italic"
-
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE( nIdx < GetCount(), "index out of range" );
-#endif
- switch (nIdx)
- {
- case 0 : return aNormal;
- case 1 : return aItalic;
- case 2 : return aBold;
- case 3 : return aBoldItalic;
- }
- return aEmpty;
-}
-
-
-const SmFontStyles & GetFontStyles()
-{
- static const SmFontStyles aImpl;
- return aImpl;
-}
-
-/////////////////////////////////////////////////////////////////
-
-void SetFontStyle(const XubString &rStyleName, Font &rFont)
-{
- // finden des Index passend zum StyleName fuer den leeren StyleName wird
- // 0 (nicht bold nicht italic) angenommen.
- sal_uInt16 nIndex = 0;
- if (rStyleName.Len())
- {
- sal_uInt16 i;
- const SmFontStyles &rStyles = GetFontStyles();
- for (i = 0; i < rStyles.GetCount(); i++)
- if (rStyleName.CompareTo( rStyles.GetStyleName(i) ) == COMPARE_EQUAL)
- break;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(i < rStyles.GetCount(), "style-name unknown");
-#endif
- nIndex = i;
- }
-
- rFont.SetItalic((nIndex & 0x1) ? ITALIC_NORMAL : ITALIC_NONE);
- rFont.SetWeight((nIndex & 0x2) ? WEIGHT_BOLD : WEIGHT_NORMAL);
-}
-
-
-/**************************************************************************/
-
-IMPL_LINK_INLINE_START( SmPrintOptionsTabPage, SizeButtonClickHdl, Button *, EMPTYARG/*pButton*/ )
-{
- aZoom.Enable(aSizeZoomed.IsChecked());
- return 0;
-}
-IMPL_LINK_INLINE_END( SmPrintOptionsTabPage, SizeButtonClickHdl, Button *, pButton )
-
-
-SmPrintOptionsTabPage::SmPrintOptionsTabPage(Window *pParent, const SfxItemSet &rOptions)
- : SfxTabPage(pParent, SmResId(RID_PRINTOPTIONPAGE), rOptions),
- aFixedLine1 (this, SmResId( FL_PRINTOPTIONS )),
- aTitle (this, SmResId( CB_TITLEROW )),
- aText (this, SmResId( CB_EQUATION_TEXT )),
- aFrame (this, SmResId( CB_FRAME )),
- aFixedLine2 (this, SmResId( FL_PRINT_FORMAT )),
- aSizeNormal (this, SmResId( RB_ORIGINAL_SIZE )),
- aSizeScaled (this, SmResId( RB_FIT_TO_PAGE )),
- aSizeZoomed (this, SmResId( RB_ZOOM )),
- aZoom (this, SmResId( MF_ZOOM )),
- aFixedLine3 (this, SmResId( FL_MISC_OPTIONS )),
- aNoRightSpaces (this, SmResId( CB_IGNORE_SPACING )),
- aSaveOnlyUsedSymbols (this, SmResId( CB_SAVE_ONLY_USED_SYMBOLS ))
-{
- FreeResource();
-
- aSizeNormal.SetClickHdl(LINK(this, SmPrintOptionsTabPage, SizeButtonClickHdl));
- aSizeScaled.SetClickHdl(LINK(this, SmPrintOptionsTabPage, SizeButtonClickHdl));
- aSizeZoomed.SetClickHdl(LINK(this, SmPrintOptionsTabPage, SizeButtonClickHdl));
-
- Reset(rOptions);
-}
-
-
-sal_Bool SmPrintOptionsTabPage::FillItemSet(SfxItemSet& rSet)
-{
- sal_uInt16 nPrintSize;
- if (aSizeNormal.IsChecked())
- nPrintSize = PRINT_SIZE_NORMAL;
- else if (aSizeScaled.IsChecked())
- nPrintSize = PRINT_SIZE_SCALED;
- else
- nPrintSize = PRINT_SIZE_ZOOMED;
-
- rSet.Put(SfxUInt16Item(GetWhich(SID_PRINTSIZE), (sal_uInt16) nPrintSize));
- rSet.Put(SfxUInt16Item(GetWhich(SID_PRINTZOOM), (sal_uInt16) aZoom.GetValue()));
- rSet.Put(SfxBoolItem(GetWhich(SID_PRINTTITLE), aTitle.IsChecked()));
- rSet.Put(SfxBoolItem(GetWhich(SID_PRINTTEXT), aText.IsChecked()));
- rSet.Put(SfxBoolItem(GetWhich(SID_PRINTFRAME), aFrame.IsChecked()));
- rSet.Put(SfxBoolItem(GetWhich(SID_NO_RIGHT_SPACES), aNoRightSpaces.IsChecked()));
- rSet.Put(SfxBoolItem(GetWhich(SID_SAVE_ONLY_USED_SYMBOLS), aSaveOnlyUsedSymbols.IsChecked()));
-
- return true;
-}
-
-
-void SmPrintOptionsTabPage::Reset(const SfxItemSet& rSet)
-{
- SmPrintSize ePrintSize = (SmPrintSize)((const SfxUInt16Item &)rSet.Get(GetWhich(SID_PRINTSIZE))).GetValue();
-
- aSizeNormal.Check(ePrintSize == PRINT_SIZE_NORMAL);
- aSizeScaled.Check(ePrintSize == PRINT_SIZE_SCALED);
- aSizeZoomed.Check(ePrintSize == PRINT_SIZE_ZOOMED);
-
- aZoom.Enable(aSizeZoomed.IsChecked());
-
- aZoom.SetValue(((const SfxUInt16Item &)rSet.Get(GetWhich(SID_PRINTZOOM))).GetValue());
-
- aTitle.Check(((const SfxBoolItem &)rSet.Get(GetWhich(SID_PRINTTITLE))).GetValue());
- aText.Check(((const SfxBoolItem &)rSet.Get(GetWhich(SID_PRINTTEXT))).GetValue());
- aFrame.Check(((const SfxBoolItem &)rSet.Get(GetWhich(SID_PRINTFRAME))).GetValue());
- aNoRightSpaces.Check(((const SfxBoolItem &)rSet.Get(GetWhich(SID_NO_RIGHT_SPACES))).GetValue());
- aSaveOnlyUsedSymbols.Check(((const SfxBoolItem &)rSet.Get(GetWhich(SID_SAVE_ONLY_USED_SYMBOLS))).GetValue());
-}
-
-
-SfxTabPage* SmPrintOptionsTabPage::Create(Window* pWindow, const SfxItemSet& rSet)
-{
- return (new SmPrintOptionsTabPage(pWindow, rSet));
-}
-
-/**************************************************************************/
-
-
-void SmShowFont::Paint(const Rectangle& rRect )
-{
- Control::Paint( rRect );
-
- XubString Text (GetFont().GetName());
- Size TextSize(GetTextWidth(Text), GetTextHeight());
-
- DrawText(Point((GetOutputSize().Width() - TextSize.Width()) / 2,
- (GetOutputSize().Height() - TextSize.Height()) / 2), Text);
-}
-
-
-void SmShowFont::SetFont(const Font& rFont)
-{
- Color aTxtColor( GetTextColor() );
- Font aFont (rFont);
-
- Invalidate();
- aFont.SetSize(Size(0, 24));
- aFont.SetAlign(ALIGN_TOP);
- Control::SetFont(aFont);
-
- // keep old text color (new font may have different color)
- SetTextColor( aTxtColor );
-}
-
-
-IMPL_LINK_INLINE_START( SmFontDialog, FontSelectHdl, ComboBox *, pComboBox )
-{
- Face.SetName(pComboBox->GetText());
- aShowFont.SetFont(Face);
- return 0;
-}
-IMPL_LINK_INLINE_END( SmFontDialog, FontSelectHdl, ComboBox *, pComboBox )
-
-
-IMPL_LINK( SmFontDialog, FontModifyHdl, ComboBox *, pComboBox )
-{
- // if font is available in list then use it
- sal_uInt16 nPos = pComboBox->GetEntryPos( pComboBox->GetText() );
- if (COMBOBOX_ENTRY_NOTFOUND != nPos)
- {
- FontSelectHdl( pComboBox );
- }
- return 0;
-}
-
-
-IMPL_LINK( SmFontDialog, AttrChangeHdl, CheckBox *, EMPTYARG /*pCheckBox*/ )
-{
- if (aBoldCheckBox.IsChecked())
- Face.SetWeight(FontWeight(WEIGHT_BOLD));
- else
- Face.SetWeight(FontWeight(WEIGHT_NORMAL));
-
- if (aItalicCheckBox.IsChecked())
- Face.SetItalic(ITALIC_NORMAL);
- else
- Face.SetItalic(ITALIC_NONE);
-
- aShowFont.SetFont(Face);
- return 0;
-}
-
-
-void SmFontDialog::SetFont(const Font &rFont)
-{
- Face = rFont;
-
- aFontBox.SetText( Face.GetName() );
- aBoldCheckBox.Check( IsBold( Face ) );
- aItalicCheckBox.Check( IsItalic( Face ) );
-
- aShowFont.SetFont(Face);
-}
-
-
-SmFontDialog::SmFontDialog(Window * pParent,
- OutputDevice *pFntListDevice, bool bHideCheckboxes, bool bFreeRes)
- : ModalDialog(pParent,SmResId(RID_FONTDIALOG)),
- aFixedText1 (this, SmResId(1)),
- aFontBox (this, SmResId(1)),
- aBoldCheckBox (this, SmResId(1)),
- aItalicCheckBox (this, SmResId(2)),
- aOKButton1 (this, SmResId(1)),
- aCancelButton1 (this, SmResId(1)),
- aShowFont (this, SmResId(1)),
- aFixedText2 (this, SmResId(2))
-{
- if (bFreeRes)
- FreeResource();
-
- {
- WaitObject( this );
-
- FontList aFontList( pFntListDevice );
-
- sal_uInt16 nCount = aFontList.GetFontNameCount();
- for (sal_uInt16 i = 0; i < nCount; i++)
- aFontBox.InsertEntry( aFontList.GetFontName(i).GetName() );
-
- Face.SetSize(Size(0, 24));
- Face.SetWeight(WEIGHT_NORMAL);
- Face.SetItalic(ITALIC_NONE);
- Face.SetFamily(FAMILY_DONTKNOW);
- Face.SetPitch(PITCH_DONTKNOW);
- Face.SetCharSet(RTL_TEXTENCODING_DONTKNOW);
- Face.SetTransparent(true);
-
- InitColor_Impl();
-
- // preview like controls should have a 2D look
- aShowFont.SetBorderStyle( WINDOW_BORDER_MONO );
- }
-
- aFontBox.SetSelectHdl(LINK(this, SmFontDialog, FontSelectHdl));
- aFontBox.SetModifyHdl(LINK(this, SmFontDialog, FontModifyHdl));
- aBoldCheckBox.SetClickHdl(LINK(this, SmFontDialog, AttrChangeHdl));
- aItalicCheckBox.SetClickHdl(LINK(this, SmFontDialog, AttrChangeHdl));
-
- if (bHideCheckboxes)
- {
- aBoldCheckBox.Check( false );
- aBoldCheckBox.Enable( false );
- aBoldCheckBox.Show( false );
- aItalicCheckBox.Check( false );
- aItalicCheckBox.Enable( false );
- aItalicCheckBox.Show( false );
- aFixedText2.Show( false );
-
- Size aSize( aFontBox.GetSizePixel() );
- long nComboBoxBottom = aFontBox.GetPosPixel().Y() + aFontBox.GetSizePixel().Height();
- long nCheckBoxBottom = aItalicCheckBox.GetPosPixel().Y() + aItalicCheckBox.GetSizePixel().Height();
- aSize.Height() += nCheckBoxBottom - nComboBoxBottom;
- aFontBox.SetSizePixel( aSize );
- }
-}
-
-void SmFontDialog::InitColor_Impl()
-{
-#if OSL_DEBUG_LEVEL > 1
- Color aBC( GetDisplayBackground().GetColor() );
-#endif
- ColorData nBgCol = COL_WHITE,
- nTxtCol = COL_BLACK;
- const StyleSettings &rS = GetSettings().GetStyleSettings();
- if (rS.GetHighContrastMode())
- {
- nBgCol = rS.GetFieldColor().GetColor();
- nTxtCol = rS.GetFieldTextColor().GetColor();
- }
-
- Color aTmpColor( nBgCol );
- Wallpaper aWall( aTmpColor );
- Color aTxtColor( nTxtCol );
- aShowFont.SetBackground( aWall );
- aShowFont.SetTextColor( aTxtColor );
-}
-
-
-void SmFontDialog::DataChanged( const DataChangedEvent& rDCEvt )
-{
- if ( rDCEvt.GetType() == DATACHANGED_SETTINGS &&
- (rDCEvt.GetFlags() & SETTINGS_STYLE) )
- InitColor_Impl();
-
- ModalDialog::DataChanged( rDCEvt );
-}
-
-/**************************************************************************/
-
-
-IMPL_LINK( SmFontSizeDialog, DefaultButtonClickHdl, Button *, EMPTYARG /*pButton*/ )
-{
- QueryBox *pQueryBox = new QueryBox(this, SmResId(RID_DEFAULTSAVEQUERY));
-
- if (pQueryBox->Execute() == RET_YES)
- {
- SmModule *pp = SM_MOD();
- SmFormat aFmt( pp->GetConfig()->GetStandardFormat() );
- WriteTo( aFmt );
- pp->GetConfig()->SetStandardFormat( aFmt );
- }
-
- delete pQueryBox;
- return 0;
-}
-
-
-SmFontSizeDialog::SmFontSizeDialog(Window * pParent, bool bFreeRes)
- : ModalDialog(pParent, SmResId(RID_FONTSIZEDIALOG)),
- aFixedText1(this, SmResId(1)),
- aBaseSize(this, SmResId(1)),
- aFixedText4(this, SmResId(4)),
- aTextSize(this, SmResId(4)),
- aFixedText5(this, SmResId(5)),
- aIndexSize(this, SmResId(5)),
- aFixedText6(this, SmResId(6)),
- aFunctionSize(this, SmResId(6)),
- aFixedText7(this, SmResId(7)),
- aOperatorSize(this, SmResId(7)),
- aFixedText8(this, SmResId(8)),
- aBorderSize(this, SmResId(8)),
- aFixedLine1(this, SmResId(1)),
- aOKButton1(this, SmResId(1)),
- aCancelButton1(this, SmResId(1)),
- aDefaultButton(this, SmResId(1))
-{
- if (bFreeRes)
- FreeResource();
-
- aDefaultButton.SetClickHdl(LINK(this, SmFontSizeDialog, DefaultButtonClickHdl));
-}
-
-
-void SmFontSizeDialog::ReadFrom(const SmFormat &rFormat)
-{
- //! aufpassen: richtig runden!
- aBaseSize.SetValue( SmRoundFraction(
- Sm100th_mmToPts( rFormat.GetBaseSize().Height() ) ) );
-
- aTextSize .SetValue( rFormat.GetRelSize(SIZ_TEXT) );
- aIndexSize .SetValue( rFormat.GetRelSize(SIZ_INDEX) );
- aFunctionSize.SetValue( rFormat.GetRelSize(SIZ_FUNCTION) );
- aOperatorSize.SetValue( rFormat.GetRelSize(SIZ_OPERATOR) );
- aBorderSize .SetValue( rFormat.GetRelSize(SIZ_LIMITS) );
-}
-
-
-void SmFontSizeDialog::WriteTo(SmFormat &rFormat) const
-{
- rFormat.SetBaseSize( Size(0, SmPtsTo100th_mm( static_cast< long >(aBaseSize.GetValue()))) );
-
- rFormat.SetRelSize(SIZ_TEXT, (sal_uInt16) aTextSize .GetValue());
- rFormat.SetRelSize(SIZ_INDEX, (sal_uInt16) aIndexSize .GetValue());
- rFormat.SetRelSize(SIZ_FUNCTION, (sal_uInt16) aFunctionSize.GetValue());
- rFormat.SetRelSize(SIZ_OPERATOR, (sal_uInt16) aOperatorSize.GetValue());
- rFormat.SetRelSize(SIZ_LIMITS, (sal_uInt16) aBorderSize .GetValue());
-
- const Size aTmp (rFormat.GetBaseSize());
- for (sal_uInt16 i = FNT_BEGIN; i <= FNT_END; i++)
- rFormat.SetFontSize(i, aTmp);
-
- rFormat.RequestApplyChanges();
-}
-
-
-/**************************************************************************/
-
-
-IMPL_LINK( SmFontTypeDialog, MenuSelectHdl, Menu *, pMenu )
-{
- SmFontPickListBox *pActiveListBox;
-
- bool bHideCheckboxes = false;
- switch (pMenu->GetCurItemId())
- {
- case 1: pActiveListBox = &aVariableFont; break;
- case 2: pActiveListBox = &aFunctionFont; break;
- case 3: pActiveListBox = &aNumberFont; break;
- case 4: pActiveListBox = &aTextFont; break;
- case 5: pActiveListBox = &aSerifFont; bHideCheckboxes = true; break;
- case 6: pActiveListBox = &aSansFont; bHideCheckboxes = true; break;
- case 7: pActiveListBox = &aFixedFont; bHideCheckboxes = true; break;
- default:pActiveListBox = NULL;
- }
-
- if (pActiveListBox)
- {
- SmFontDialog *pFontDialog = new SmFontDialog(this, pFontListDev, bHideCheckboxes);
-
- pActiveListBox->WriteTo(*pFontDialog);
- if (pFontDialog->Execute() == RET_OK)
- pActiveListBox->ReadFrom(*pFontDialog);
- delete pFontDialog;
- }
- return 0;
-}
-
-
-IMPL_LINK_INLINE_START( SmFontTypeDialog, DefaultButtonClickHdl, Button *, EMPTYARG /*pButton*/ )
-{
- QueryBox *pQueryBox = new QueryBox(this, SmResId(RID_DEFAULTSAVEQUERY));
- if (pQueryBox->Execute() == RET_YES)
- {
- SmModule *pp = SM_MOD();
- SmFormat aFmt( pp->GetConfig()->GetStandardFormat() );
- WriteTo( aFmt );
- pp->GetConfig()->SetStandardFormat( aFmt, true );
- }
-
- delete pQueryBox;
- return 0;
-}
-IMPL_LINK_INLINE_END( SmFontTypeDialog, DefaultButtonClickHdl, Button *, pButton )
-
-
-SmFontTypeDialog::SmFontTypeDialog(Window * pParent, OutputDevice *pFntListDevice, bool bFreeRes)
- : ModalDialog(pParent, SmResId(RID_FONTTYPEDIALOG)),
- aFixedText1 (this, SmResId(1)),
- aVariableFont (this, SmResId(1)),
- aFixedText2 (this, SmResId(2)),
- aFunctionFont (this, SmResId(2)),
- aFixedText3 (this, SmResId(3)),
- aNumberFont (this, SmResId(3)),
- aFixedText4 (this, SmResId(4)),
- aTextFont (this, SmResId(4)),
- aFixedText5 (this, SmResId(5)),
- aSerifFont (this, SmResId(5)),
- aFixedText6 (this, SmResId(6)),
- aSansFont (this, SmResId(6)),
- aFixedText7 (this, SmResId(7)),
- aFixedFont (this, SmResId(7)),
- aFixedLine1 (this, SmResId(1)),
- aFixedLine2 (this, SmResId(2)),
- aOKButton1 (this, SmResId(1)),
- aCancelButton1 (this, SmResId(1)),
- aMenuButton (this, SmResId(1)),
- aDefaultButton (this, SmResId(2)),
- pFontListDev (pFntListDevice)
-{
- if (bFreeRes)
- FreeResource();
-
- aDefaultButton.SetClickHdl(LINK(this, SmFontTypeDialog, DefaultButtonClickHdl));
-
- aMenuButton.GetPopupMenu()->SetSelectHdl(LINK(this, SmFontTypeDialog, MenuSelectHdl));
-}
-
-void SmFontTypeDialog::ReadFrom(const SmFormat &rFormat)
-{
- SmModule *pp = SM_MOD();
-
- aVariableFont = pp->GetConfig()->GetFontPickList(FNT_VARIABLE);
- aFunctionFont = pp->GetConfig()->GetFontPickList(FNT_FUNCTION);
- aNumberFont = pp->GetConfig()->GetFontPickList(FNT_NUMBER);
- aTextFont = pp->GetConfig()->GetFontPickList(FNT_TEXT);
- aSerifFont = pp->GetConfig()->GetFontPickList(FNT_SERIF);
- aSansFont = pp->GetConfig()->GetFontPickList(FNT_SANS);
- aFixedFont = pp->GetConfig()->GetFontPickList(FNT_FIXED);
-
- aVariableFont.Insert( rFormat.GetFont(FNT_VARIABLE) );
- aFunctionFont.Insert( rFormat.GetFont(FNT_FUNCTION) );
- aNumberFont .Insert( rFormat.GetFont(FNT_NUMBER) );
- aTextFont .Insert( rFormat.GetFont(FNT_TEXT) );
- aSerifFont .Insert( rFormat.GetFont(FNT_SERIF) );
- aSansFont .Insert( rFormat.GetFont(FNT_SANS) );
- aFixedFont .Insert( rFormat.GetFont(FNT_FIXED) );
-}
-
-
-void SmFontTypeDialog::WriteTo(SmFormat &rFormat) const
-{
- SmModule *pp = SM_MOD();
-
- pp->GetConfig()->GetFontPickList(FNT_VARIABLE) = aVariableFont;
- pp->GetConfig()->GetFontPickList(FNT_FUNCTION) = aFunctionFont;
- pp->GetConfig()->GetFontPickList(FNT_NUMBER) = aNumberFont;
- pp->GetConfig()->GetFontPickList(FNT_TEXT) = aTextFont;
- pp->GetConfig()->GetFontPickList(FNT_SERIF) = aSerifFont;
- pp->GetConfig()->GetFontPickList(FNT_SANS) = aSansFont;
- pp->GetConfig()->GetFontPickList(FNT_FIXED) = aFixedFont;
-
- rFormat.SetFont( FNT_VARIABLE, aVariableFont.Get(0) );
- rFormat.SetFont( FNT_FUNCTION, aFunctionFont.Get(0) );
- rFormat.SetFont( FNT_NUMBER, aNumberFont .Get(0) );
- rFormat.SetFont( FNT_TEXT, aTextFont .Get(0) );
- rFormat.SetFont( FNT_SERIF, aSerifFont .Get(0) );
- rFormat.SetFont( FNT_SANS, aSansFont .Get(0) );
- rFormat.SetFont( FNT_FIXED, aFixedFont .Get(0) );
-
- rFormat.RequestApplyChanges();
-}
-
-/**************************************************************************/
-
-struct FieldMinMax
-{
- sal_uInt16 nMin, nMax;
-};
-
-// Data for min and max values of the 4 metric fields
-// for each of the 10 categories
-static const FieldMinMax pMinMaxData[10][4] =
-{
- // 0
- {{ 0, 200 }, { 0, 200 }, { 0, 100 }, { 0, 0 }},
- // 1
- {{ 0, 100 }, { 0, 100 }, { 0, 0 }, { 0, 0 }},
- // 2
- {{ 0, 100 }, { 0, 100 }, { 0, 0 }, { 0, 0 }},
- // 3
- {{ 0, 100 }, { 1, 100 }, { 0, 0 }, { 0, 0 }},
- // 4
- {{ 0, 100 }, { 0, 100 }, { 0, 0 }, { 0, 0 }},
- // 5
- {{ 0, 100 }, { 0, 100 }, { 0, 0 }, { 0, 100 }},
- // 6
- {{ 0, 300 }, { 0, 300 }, { 0, 0 }, { 0, 0 }},
- // 7
- {{ 0, 100 }, { 0, 100 }, { 0, 0 }, { 0, 0 }},
- // 8
- {{ 0, 100 }, { 0, 100 }, { 0, 0 }, { 0, 0 }},
- // 9
- {{ 0, 10000 }, { 0, 10000 }, { 0, 10000 }, { 0, 10000 }}
-};
-
-SmCategoryDesc::SmCategoryDesc(const ResId& rResId, sal_uInt16 nCategoryIdx) :
- Resource(rResId)
-{
- if (IsAvailableRes(ResId(1,*rResId.GetResMgr()).SetRT(RSC_STRING)))
- {
- Name = XubString(ResId(1,*rResId.GetResMgr()));
-
- int i;
- for (i = 0; i < 4; i++)
- {
- int nI2 = i + 2;
-
- if (IsAvailableRes(ResId(nI2,*rResId.GetResMgr()).SetRT(RSC_STRING)))
- {
- Strings [i] = new XubString(ResId(nI2,*rResId.GetResMgr()));
- Graphics [i] = new Bitmap(ResId(10*nI2,*rResId.GetResMgr()));
- }
- else
- {
- Strings [i] = 0;
- Graphics [i] = 0;
- }
- }
-
- for (i = 0; i < 4; i++)
- {
- const FieldMinMax &rMinMax = pMinMaxData[ nCategoryIdx ][i];
- Value[i] = Minimum[i] = rMinMax.nMin;
- Maximum[i] = rMinMax.nMax;
- }
- }
-
- FreeResource();
-}
-
-
-SmCategoryDesc::~SmCategoryDesc()
-{
- for (int i = 0; i < 4; i++)
- {
- delete Strings [i];
- delete Graphics [i];
- }
-}
-
-/**************************************************************************/
-
-IMPL_LINK( SmDistanceDialog, GetFocusHdl, Control *, pControl )
-{
- if (Categories[nActiveCategory])
- {
- sal_uInt16 i;
-
- if (pControl == &aMetricField1)
- i = 0;
- else if (pControl == &aMetricField2)
- i = 1;
- else if (pControl == &aMetricField3)
- i = 2;
- else if (pControl == &aMetricField4)
- i = 3;
- else
- return 0;
- aBitmap.SetBitmap(*(Categories[nActiveCategory]->GetGraphic(i)));
- }
- return 0;
-}
-
-IMPL_LINK( SmDistanceDialog, MenuSelectHdl, Menu *, pMenu )
-{
- SetCategory(pMenu->GetCurItemId() - 1);
- return 0;
-}
-
-
-IMPL_LINK( SmDistanceDialog, DefaultButtonClickHdl, Button *, EMPTYARG /*pButton*/ )
-{
- QueryBox *pQueryBox = new QueryBox(this, SmResId(RID_DEFAULTSAVEQUERY));
-
- if (pQueryBox->Execute() == RET_YES)
- {
- SmModule *pp = SM_MOD();
- SmFormat aFmt( pp->GetConfig()->GetStandardFormat() );
- WriteTo( aFmt );
- pp->GetConfig()->SetStandardFormat( aFmt );
- }
- delete pQueryBox;
- return 0;
-}
-
-
-IMPL_LINK( SmDistanceDialog, CheckBoxClickHdl, CheckBox *, pCheckBox )
-{
- if (pCheckBox == &aCheckBox1)
- {
- aCheckBox1.Toggle();
-
- bool bChecked = aCheckBox1.IsChecked();
- aFixedText4 .Enable( bChecked );
- aMetricField4.Enable( bChecked );
- }
- return 0;
-}
-
-
-void SmDistanceDialog::SetHelpId(MetricField &rField, const rtl::OString& sHelpId)
-{
- //! HelpID's die auf diese Weise explizit gesetzt werden, muessen im
- //! util Verzeichnis im File "hidother.src" mit Hilfe von "hidspecial"
- //! definiert werden!
-
- const XubString aEmptyText;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(aEmptyText.Len() == 0, "Sm: Ooops...");
-#endif
-
- rField.SetHelpId(sHelpId);
- rField.SetHelpText(aEmptyText);
-
- // since MetricField inherits from SpinField which has a sub Edit field
- // (which is actually the one we modify) we have to set the help-id
- // for it too.
- Edit *pSubEdit = rField.GetSubEdit();
- if (pSubEdit)
- {
- pSubEdit->SetHelpId(sHelpId);
- pSubEdit->SetHelpText(aEmptyText);
- }
-}
-
-
-void SmDistanceDialog::SetCategory(sal_uInt16 nCategory)
-{
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(/*0 <= nCategory &&*/ nCategory < NOCATEGORIES,
- "Sm: wrong category number in SmDistanceDialog");
-#endif
-
- // array to convert category- and metricfield-number in help ids.
- // 0 is used in case of unused combinations.
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(NOCATEGORIES == 10, "Sm : array doesn't fit into the number of categories");
-#endif
- static const char * aCatMf2Hid[10][4] =
- {
- { HID_SMA_DEFAULT_DIST, HID_SMA_LINE_DIST, HID_SMA_ROOT_DIST, 0 },
- { HID_SMA_SUP_DIST, HID_SMA_SUB_DIST , 0, 0 },
- { HID_SMA_NUMERATOR_DIST, HID_SMA_DENOMINATOR_DIST, 0, 0 },
- { HID_SMA_FRACLINE_EXCWIDTH, HID_SMA_FRACLINE_LINEWIDTH, 0, 0 },
- { HID_SMA_UPPERLIMIT_DIST, HID_SMA_LOWERLIMIT_DIST, 0, 0 },
- { HID_SMA_BRACKET_EXCHEIGHT, HID_SMA_BRACKET_DIST, 0, HID_SMA_BRACKET_EXCHEIGHT2 },
- { HID_SMA_MATRIXROW_DIST, HID_SMA_MATRIXCOL_DIST, 0, 0 },
- { HID_SMA_ATTRIBUT_DIST, HID_SMA_INTERATTRIBUT_DIST, 0, 0 },
- { HID_SMA_OPERATOR_EXCHEIGHT, HID_SMA_OPERATOR_DIST, 0, 0 },
- { HID_SMA_LEFTBORDER_DIST, HID_SMA_RIGHTBORDER_DIST, HID_SMA_UPPERBORDER_DIST, HID_SMA_LOWERBORDER_DIST }
- };
-
- // array to help iterate over the controls
- Window * const aWin[4][2] =
- {
- { &aFixedText1, &aMetricField1 },
- { &aFixedText2, &aMetricField2 },
- { &aFixedText3, &aMetricField3 },
- { &aFixedText4, &aMetricField4 }
- };
-
- SmCategoryDesc *pCat;
-
- // merken der (evtl neuen) Einstellungen der aktiven SmCategoryDesc
- // bevor zu der neuen gewechselt wird.
- if (nActiveCategory != CATEGORY_NONE)
- {
- pCat = Categories[nActiveCategory];
- pCat->SetValue(0, (sal_uInt16) aMetricField1.GetValue());
- pCat->SetValue(1, (sal_uInt16) aMetricField2.GetValue());
- pCat->SetValue(2, (sal_uInt16) aMetricField3.GetValue());
- pCat->SetValue(3, (sal_uInt16) aMetricField4.GetValue());
-
- if (nActiveCategory == 5)
- bScaleAllBrackets = aCheckBox1.IsChecked();
-
- aMenuButton.GetPopupMenu()->CheckItem(nActiveCategory + 1, false);
- }
-
- // aktivieren/deaktivieren der zugehoerigen Controls in Abhaengigkeit von der
- // gewaehlten Kategorie.
- bool bActive;
- for (sal_uInt16 i = 0; i < 4; i++)
- {
- FixedText *pFT = (FixedText * const) aWin[i][0];
- MetricField *pMF = (MetricField * const) aWin[i][1];
-
- // Um feststellen welche Controls aktiv sein sollen wird das
- // vorhandensein einer zugehoerigen HelpID ueberprueft.
- bActive = aCatMf2Hid[nCategory][i] != 0;
-
- pFT->Show(bActive);
- pFT->Enable(bActive);
- pMF->Show(bActive);
- pMF->Enable(bActive);
-
- // setzen von Masseinheit und Anzahl der Nachkommastellen
- FieldUnit eUnit;
- sal_uInt16 nDigits;
- if (nCategory < 9)
- {
- eUnit = FUNIT_CUSTOM;
- nDigits = 0;
- pMF->SetCustomUnitText( '%' );
- }
- else
- {
- eUnit = FUNIT_100TH_MM;
- nDigits = 2;
- }
- pMF->SetUnit(eUnit); //! veraendert den Wert
- pMF->SetDecimalDigits(nDigits);
-
- if (bActive)
- {
- pCat = Categories[nCategory];
- pFT->SetText(*pCat->GetString(i));
-
- pMF->SetMin(pCat->GetMinimum(i));
- pMF->SetMax(pCat->GetMaximum(i));
- pMF->SetValue(pCat->GetValue(i));
-
- SetHelpId(*pMF, aCatMf2Hid[nCategory][i]);
- }
- }
- // nun noch die CheckBox und das zugehoerige MetricField genau dann aktivieren,
- // falls es sich um das Klammer Menu handelt.
- bActive = nCategory == 5;
- aCheckBox1.Show(bActive);
- aCheckBox1.Enable(bActive);
- if (bActive)
- {
- aCheckBox1.Check( bScaleAllBrackets );
-
- bool bChecked = aCheckBox1.IsChecked();
- aFixedText4 .Enable( bChecked );
- aMetricField4.Enable( bChecked );
- }
-
- aMenuButton.GetPopupMenu()->CheckItem(nCategory + 1, true);
- aFixedLine.SetText(Categories[nCategory]->GetName());
-
- nActiveCategory = nCategory;
-
- aMetricField1.GrabFocus();
- Invalidate();
- Update();
-}
-
-
-SmDistanceDialog::SmDistanceDialog(Window *pParent, bool bFreeRes)
- : ModalDialog(pParent, SmResId(RID_DISTANCEDIALOG)),
- aFixedText1 (this, SmResId(1)),
- aMetricField1 (this, SmResId(1)),
- aFixedText2 (this, SmResId(2)),
- aMetricField2 (this, SmResId(2)),
- aFixedText3 (this, SmResId(3)),
- aMetricField3 (this, SmResId(3)),
- aCheckBox1 (this, SmResId(1)),
- aFixedText4 (this, SmResId(4)),
- aMetricField4 (this, SmResId(4)),
- aOKButton1 (this, SmResId(1)),
- aCancelButton1 (this, SmResId(1)),
- aMenuButton (this, SmResId(1)),
- aDefaultButton (this, SmResId(1)),
- aBitmap (this, SmResId(1)),
- aFixedLine (this, SmResId(1))
-{
- for (sal_uInt16 i = 0; i < NOCATEGORIES; i++)
- Categories[i] = new SmCategoryDesc(SmResId(i + 1), i);
- nActiveCategory = CATEGORY_NONE;
- bScaleAllBrackets = false;
-
- if (bFreeRes)
- FreeResource();
-
- // preview like controls should have a 2D look
- aBitmap.SetBorderStyle( WINDOW_BORDER_MONO );
-
- aMetricField1.SetGetFocusHdl(LINK(this, SmDistanceDialog, GetFocusHdl));
- aMetricField2.SetGetFocusHdl(LINK(this, SmDistanceDialog, GetFocusHdl));
- aMetricField3.SetGetFocusHdl(LINK(this, SmDistanceDialog, GetFocusHdl));
- aMetricField4.SetGetFocusHdl(LINK(this, SmDistanceDialog, GetFocusHdl));
- aCheckBox1.SetClickHdl(LINK(this, SmDistanceDialog, CheckBoxClickHdl));
-
- aMenuButton.GetPopupMenu()->SetSelectHdl(LINK(this, SmDistanceDialog, MenuSelectHdl));
-
- aDefaultButton.SetClickHdl(LINK(this, SmDistanceDialog, DefaultButtonClickHdl));
-}
-
-
-SmDistanceDialog::~SmDistanceDialog()
-{
- for (int i = 0; i < NOCATEGORIES; i++)
- DELETEZ(Categories[i]);
-}
-
-void SmDistanceDialog::DataChanged( const DataChangedEvent &rEvt )
-{
- ModalDialog::DataChanged( rEvt );
-}
-
-void SmDistanceDialog::ReadFrom(const SmFormat &rFormat)
-{
- Categories[0]->SetValue(0, rFormat.GetDistance(DIS_HORIZONTAL));
- Categories[0]->SetValue(1, rFormat.GetDistance(DIS_VERTICAL));
- Categories[0]->SetValue(2, rFormat.GetDistance(DIS_ROOT));
- Categories[1]->SetValue(0, rFormat.GetDistance(DIS_SUPERSCRIPT));
- Categories[1]->SetValue(1, rFormat.GetDistance(DIS_SUBSCRIPT));
- Categories[2]->SetValue(0, rFormat.GetDistance(DIS_NUMERATOR));
- Categories[2]->SetValue(1, rFormat.GetDistance(DIS_DENOMINATOR));
- Categories[3]->SetValue(0, rFormat.GetDistance(DIS_FRACTION));
- Categories[3]->SetValue(1, rFormat.GetDistance(DIS_STROKEWIDTH));
- Categories[4]->SetValue(0, rFormat.GetDistance(DIS_UPPERLIMIT));
- Categories[4]->SetValue(1, rFormat.GetDistance(DIS_LOWERLIMIT));
- Categories[5]->SetValue(0, rFormat.GetDistance(DIS_BRACKETSIZE));
- Categories[5]->SetValue(1, rFormat.GetDistance(DIS_BRACKETSPACE));
- Categories[5]->SetValue(3, rFormat.GetDistance(DIS_NORMALBRACKETSIZE));
- Categories[6]->SetValue(0, rFormat.GetDistance(DIS_MATRIXROW));
- Categories[6]->SetValue(1, rFormat.GetDistance(DIS_MATRIXCOL));
- Categories[7]->SetValue(0, rFormat.GetDistance(DIS_ORNAMENTSIZE));
- Categories[7]->SetValue(1, rFormat.GetDistance(DIS_ORNAMENTSPACE));
- Categories[8]->SetValue(0, rFormat.GetDistance(DIS_OPERATORSIZE));
- Categories[8]->SetValue(1, rFormat.GetDistance(DIS_OPERATORSPACE));
- Categories[9]->SetValue(0, rFormat.GetDistance(DIS_LEFTSPACE));
- Categories[9]->SetValue(1, rFormat.GetDistance(DIS_RIGHTSPACE));
- Categories[9]->SetValue(2, rFormat.GetDistance(DIS_TOPSPACE));
- Categories[9]->SetValue(3, rFormat.GetDistance(DIS_BOTTOMSPACE));
-
- bScaleAllBrackets = rFormat.IsScaleNormalBrackets();
-
- // force update (even of category 0) by setting nActiveCategory to a
- // non-existent category number
- nActiveCategory = CATEGORY_NONE;
- SetCategory(0);
-}
-
-
-void SmDistanceDialog::WriteTo(SmFormat &rFormat) /*const*/
-{
- // hmm... koennen die tatsaechlich unterschiedlich sein?
- // wenn nicht kann oben naemlich das const stehen!
- SetCategory(nActiveCategory);
-
- rFormat.SetDistance( DIS_HORIZONTAL, Categories[0]->GetValue(0) );
- rFormat.SetDistance( DIS_VERTICAL, Categories[0]->GetValue(1) );
- rFormat.SetDistance( DIS_ROOT, Categories[0]->GetValue(2) );
- rFormat.SetDistance( DIS_SUPERSCRIPT, Categories[1]->GetValue(0) );
- rFormat.SetDistance( DIS_SUBSCRIPT, Categories[1]->GetValue(1) );
- rFormat.SetDistance( DIS_NUMERATOR, Categories[2]->GetValue(0) );
- rFormat.SetDistance( DIS_DENOMINATOR, Categories[2]->GetValue(1) );
- rFormat.SetDistance( DIS_FRACTION, Categories[3]->GetValue(0) );
- rFormat.SetDistance( DIS_STROKEWIDTH, Categories[3]->GetValue(1) );
- rFormat.SetDistance( DIS_UPPERLIMIT, Categories[4]->GetValue(0) );
- rFormat.SetDistance( DIS_LOWERLIMIT, Categories[4]->GetValue(1) );
- rFormat.SetDistance( DIS_BRACKETSIZE, Categories[5]->GetValue(0) );
- rFormat.SetDistance( DIS_BRACKETSPACE, Categories[5]->GetValue(1) );
- rFormat.SetDistance( DIS_MATRIXROW, Categories[6]->GetValue(0) );
- rFormat.SetDistance( DIS_MATRIXCOL, Categories[6]->GetValue(1) );
- rFormat.SetDistance( DIS_ORNAMENTSIZE, Categories[7]->GetValue(0) );
- rFormat.SetDistance( DIS_ORNAMENTSPACE, Categories[7]->GetValue(1) );
- rFormat.SetDistance( DIS_OPERATORSIZE, Categories[8]->GetValue(0) );
- rFormat.SetDistance( DIS_OPERATORSPACE, Categories[8]->GetValue(1) );
- rFormat.SetDistance( DIS_LEFTSPACE, Categories[9]->GetValue(0) );
- rFormat.SetDistance( DIS_RIGHTSPACE, Categories[9]->GetValue(1) );
- rFormat.SetDistance( DIS_TOPSPACE, Categories[9]->GetValue(2) );
- rFormat.SetDistance( DIS_BOTTOMSPACE, Categories[9]->GetValue(3) );
- rFormat.SetDistance( DIS_NORMALBRACKETSIZE, Categories[5]->GetValue(3) );
-
- rFormat.SetScaleNormalBrackets( bScaleAllBrackets );
-
- rFormat.RequestApplyChanges();
-}
-
-
-/**************************************************************************/
-
-
-IMPL_LINK( SmAlignDialog, DefaultButtonClickHdl, Button *, EMPTYARG /*pButton*/ )
-{
- QueryBox *pQueryBox = new QueryBox(this, SmResId(RID_DEFAULTSAVEQUERY));
-
- if (pQueryBox->Execute() == RET_YES)
- {
- SmModule *pp = SM_MOD();
- SmFormat aFmt( pp->GetConfig()->GetStandardFormat() );
- WriteTo( aFmt );
- pp->GetConfig()->SetStandardFormat( aFmt );
- }
-
- delete pQueryBox;
- return 0;
-}
-
-
-SmAlignDialog::SmAlignDialog(Window * pParent, bool bFreeRes)
- : ModalDialog(pParent, SmResId(RID_ALIGNDIALOG)),
- aLeft (this, SmResId(1)),
- aCenter (this, SmResId(2)),
- aRight (this, SmResId(3)),
- aFixedLine1 (this, SmResId(1)),
- aOKButton1 (this, SmResId(1)),
- aCancelButton1 (this, SmResId(1)),
- aDefaultButton (this, SmResId(1))
-{
- if (bFreeRes)
- FreeResource();
-
- aDefaultButton.SetClickHdl(LINK(this, SmAlignDialog, DefaultButtonClickHdl));
-}
-
-
-void SmAlignDialog::ReadFrom(const SmFormat &rFormat)
-{
- switch (rFormat.GetHorAlign())
- {
- case AlignLeft:
- aLeft .Check(true);
- aCenter.Check(false);
- aRight .Check(false);
- break;
-
- case AlignCenter:
- aLeft .Check(false);
- aCenter.Check(true);
- aRight .Check(false);
- break;
-
- case AlignRight:
- aLeft .Check(false);
- aCenter.Check(false);
- aRight .Check(true);
- break;
- }
-}
-
-
-void SmAlignDialog::WriteTo(SmFormat &rFormat) const
-{
- if (aLeft.IsChecked())
- rFormat.SetHorAlign(AlignLeft);
- else if (aRight.IsChecked())
- rFormat.SetHorAlign(AlignRight);
- else
- rFormat.SetHorAlign(AlignCenter);
-
- rFormat.RequestApplyChanges();
-}
-
-
-/**************************************************************************/
-
-
-void SmShowSymbolSet::Paint(const Rectangle&)
-{
- Push(PUSH_MAPMODE);
-
- // MapUnit einstellen fuer die 'nLen' berechnet wurde
- SetMapMode(MapMode(MAP_PIXEL));
-
- sal_uInt16 v = sal::static_int_cast< sal_uInt16 >((aVScrollBar.GetThumbPos() * nColumns));
- size_t nSymbols = aSymbolSet.size();
-
- Color aTxtColor( GetTextColor() );
- for (sal_uInt16 i = v; i < nSymbols ; i++)
- {
- SmSym aSymbol (*aSymbolSet[i]);
- Font aFont (aSymbol.GetFace());
- aFont.SetAlign(ALIGN_TOP);
-
- // etwas kleinere FontSize nehmen (als nLen) um etwas Luft zu haben
- // (hoffentlich auch genug fuer links und rechts!)
- aFont.SetSize(Size(0, nLen - (nLen / 3)));
- SetFont(aFont);
- // keep text color
- SetTextColor( aTxtColor );
-
- int nIV = i - v;
- sal_UCS4 cChar = aSymbol.GetCharacter();
- String aText( OUString( &cChar, 1 ) );
- Size aSize( GetTextWidth( aText ), GetTextHeight());
-
- DrawText(Point((nIV % nColumns) * nLen + (nLen - aSize.Width()) / 2,
- (nIV / nColumns) * nLen + (nLen - aSize.Height()) / 2),
- aText);
- }
-
- if (nSelectSymbol != SYMBOL_NONE)
- {
- Invert(Rectangle(Point(((nSelectSymbol - v) % nColumns) * nLen,
- ((nSelectSymbol - v) / nColumns) * nLen),
- Size(nLen, nLen)));
- }
-
- Pop();
-}
-
-
-void SmShowSymbolSet::MouseButtonDown(const MouseEvent& rMEvt)
-{
- GrabFocus();
-
- if (rMEvt.IsLeft() && Rectangle(Point(0, 0), aOutputSize).IsInside(rMEvt.GetPosPixel()))
- {
- long nPos = (rMEvt.GetPosPixel().Y() / nLen) * nColumns + (rMEvt.GetPosPixel().X() / nLen) +
- aVScrollBar.GetThumbPos() * nColumns;
- SelectSymbol( sal::static_int_cast< sal_uInt16 >(nPos) );
-
- aSelectHdlLink.Call(this);
-
- if (rMEvt.GetClicks() > 1) aDblClickHdlLink.Call(this);
- }
- else Control::MouseButtonDown (rMEvt);
-}
-
-
-void SmShowSymbolSet::KeyInput(const KeyEvent& rKEvt)
-{
- sal_uInt16 n = nSelectSymbol;
-
- if (n != SYMBOL_NONE)
- {
- switch (rKEvt.GetKeyCode().GetCode())
- {
- case KEY_DOWN: n = n + nColumns; break;
- case KEY_UP: n = n - nColumns; break;
- case KEY_LEFT: n -= 1; break;
- case KEY_RIGHT: n += 1; break;
- case KEY_HOME: n = 0; break;
- case KEY_END: n = static_cast< sal_uInt16 >(aSymbolSet.size() - 1); break;
- case KEY_PAGEUP: n -= nColumns * nRows; break;
- case KEY_PAGEDOWN: n += nColumns * nRows; break;
-
- default:
- Control::KeyInput(rKEvt);
- return;
- }
- }
- else
- n = 0;
-
- if (n >= aSymbolSet.size())
- n = nSelectSymbol;
-
- // adjust scrollbar
- if ((n < (sal_uInt16) (aVScrollBar.GetThumbPos() * nColumns)) ||
- (n >= (sal_uInt16) ((aVScrollBar.GetThumbPos() + nRows) * nColumns)))
- {
- aVScrollBar.SetThumbPos(n / nColumns);
- Invalidate();
- Update();
- }
-
- SelectSymbol(n);
- aSelectHdlLink.Call(this);
-}
-
-
-SmShowSymbolSet::SmShowSymbolSet(Window *pParent, const ResId& rResId) :
- Control(pParent, rResId),
- aVScrollBar(this, WinBits(WB_VSCROLL))
-{
- nSelectSymbol = SYMBOL_NONE;
-
- aOutputSize = GetOutputSizePixel();
- long nScrollBarWidth = aVScrollBar.GetSizePixel().Width(),
- nUseableWidth = aOutputSize.Width() - nScrollBarWidth;
-
- // Hoehe von 16pt in Pixeln (passend zu 'aOutputSize')
- nLen = (sal_uInt16) LogicToPixel(Size(0, 16), MapMode(MAP_POINT)).Height();
-
- nColumns = sal::static_int_cast< sal_uInt16 >(nUseableWidth / nLen);
- if (nColumns > 2 && nColumns % 2 != 0)
- nColumns--;
- nRows = sal::static_int_cast< sal_uInt16 >(aOutputSize.Height() / nLen);
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(nColumns > 0, "Sm : no columns");
- OSL_ENSURE(nRows > 0, "Sm : no rows");
-#endif
-
- // genau passend machen
- aOutputSize.Width() = nColumns * nLen;
- aOutputSize.Height() = nRows * nLen;
-
- aVScrollBar.SetPosSizePixel(Point(aOutputSize.Width() + 1, -1),
- Size(nScrollBarWidth, aOutputSize.Height() + 2));
- aVScrollBar.Enable(false);
- aVScrollBar.Show();
- aVScrollBar.SetScrollHdl(LINK(this, SmShowSymbolSet, ScrollHdl));
-
- Size WindowSize (aOutputSize);
- WindowSize.Width() += nScrollBarWidth;
- SetOutputSizePixel(WindowSize);
-
-}
-
-
-void SmShowSymbolSet::SetSymbolSet(const SymbolPtrVec_t& rSymbolSet)
-{
- aSymbolSet = rSymbolSet;
-
- if (static_cast< sal_uInt16 >(aSymbolSet.size()) > (nColumns * nRows))
- {
- aVScrollBar.SetRange(Range(0, ((aSymbolSet.size() + (nColumns - 1)) / nColumns) - nRows));
- aVScrollBar.Enable(true);
- }
- else
- {
- aVScrollBar.SetRange(Range(0,0));
- aVScrollBar.Enable (false);
- }
-
- Invalidate();
-}
-
-
-void SmShowSymbolSet::SelectSymbol(sal_uInt16 nSymbol)
-{
- int v = (int) (aVScrollBar.GetThumbPos() * nColumns);
-
- if (nSelectSymbol != SYMBOL_NONE)
- Invalidate(Rectangle(Point(((nSelectSymbol - v) % nColumns) * nLen,
- ((nSelectSymbol - v) / nColumns) * nLen),
- Size(nLen, nLen)));
-
- if (nSymbol < aSymbolSet.size())
- nSelectSymbol = nSymbol;
-
- if (aSymbolSet.size() == 0)
- nSelectSymbol = SYMBOL_NONE;
-
- if (nSelectSymbol != SYMBOL_NONE)
- Invalidate(Rectangle(Point(((nSelectSymbol - v) % nColumns) * nLen,
- ((nSelectSymbol - v) / nColumns) * nLen),
- Size(nLen, nLen)));
-
- Update();
-}
-
-
-IMPL_LINK( SmShowSymbolSet, ScrollHdl, ScrollBar*, EMPTYARG /*pScrollBar*/)
-{
- Invalidate();
- return 0;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-void SmShowSymbol::Paint(const Rectangle &rRect)
-{
- Control::Paint( rRect );
-
- const XubString &rText = GetText();
- Size aTextSize(GetTextWidth(rText), GetTextHeight());
-
- DrawText(Point((GetOutputSize().Width() - aTextSize.Width()) / 2,
- (GetOutputSize().Height() * 7/10)), rText);
-}
-
-
-void SmShowSymbol::MouseButtonDown(const MouseEvent& rMEvt)
-{
- if (rMEvt.GetClicks() > 1)
- aDblClickHdlLink.Call(this);
- else
- Control::MouseButtonDown (rMEvt);
-}
-
-
-void SmShowSymbol::SetSymbol(const SmSym *pSymbol)
-{
- if (pSymbol)
- {
- Font aFont (pSymbol->GetFace());
- aFont.SetSize(Size(0, GetOutputSize().Height() - GetOutputSize().Height() / 3));
- aFont.SetAlign(ALIGN_BASELINE);
- SetFont(aFont);
-
- sal_UCS4 cChar = pSymbol->GetCharacter();
- String aText( OUString( &cChar, 1 ) );
- SetText( aText );
- }
-
- // 'Invalidate' fuellt den background mit der background-Farbe.
- // Falls der NULL pointer uebergeben wurde reicht dies also zum loeschen
- // der Anzeige
- Invalidate();
-}
-
-
-////////////////////////////////////////////////////////////////////////////////
-
-void SmSymbolDialog::FillSymbolSets(bool bDeleteText)
- // fuellt die Eintraege der moeglichen 'SymbolsSet's im Dialog mit den
- // aktuellen Werten des SymbolSet Managers, selektiert aber keinen.
-{
- aSymbolSets.Clear();
- if (bDeleteText)
- aSymbolSets.SetNoSelection();
-
- std::set< String > aSybolSetNames( rSymbolMgr.GetSymbolSetNames() );
- std::set< String >::const_iterator aIt( aSybolSetNames.begin() );
- for ( ; aIt != aSybolSetNames.end(); ++aIt)
- aSymbolSets.InsertEntry( *aIt );
-}
-
-
-IMPL_LINK( SmSymbolDialog, SymbolSetChangeHdl, ListBox *, EMPTYARG pListBox )
-{
- (void) pListBox;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(pListBox == &aSymbolSets, "Sm : wrong argument");
-#endif
-
- SelectSymbolSet(aSymbolSets.GetSelectEntry());
- return 0;
-}
-
-
-IMPL_LINK( SmSymbolDialog, SymbolChangeHdl, SmShowSymbolSet *, EMPTYARG pShowSymbolSet )
-{
- (void) pShowSymbolSet;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(pShowSymbolSet == &aSymbolSetDisplay, "Sm : wrong argument");
-#endif
-
- SelectSymbol(aSymbolSetDisplay.GetSelectSymbol());
- return 0;
-}
-
-IMPL_LINK( SmSymbolDialog, EditClickHdl, Button *, EMPTYARG pButton )
-{
- (void) pButton;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(pButton == &aEditBtn, "Sm : wrong argument");
-#endif
-
- SmSymDefineDialog *pDialog = new SmSymDefineDialog(this, pFontListDev, rSymbolMgr);
-
- // aktuelles Symbol und SymbolSet am neuen Dialog setzen
- const XubString aSymSetName (aSymbolSets.GetSelectEntry()),
- aSymName (aSymbolName.GetText());
- pDialog->SelectOldSymbolSet(aSymSetName);
- pDialog->SelectOldSymbol(aSymName);
- pDialog->SelectSymbolSet(aSymSetName);
- pDialog->SelectSymbol(aSymName);
-
- // altes SymbolSet merken
- XubString aOldSymbolSet (aSymbolSets.GetSelectEntry());
-
- sal_uInt16 nSymPos = GetSelectedSymbol();
-
- // Dialog an evtl geaenderte Daten des SymbolSet Manager anpassen
- if (pDialog->Execute() == RET_OK && rSymbolMgr.IsModified())
- {
- rSymbolMgr.Save();
- FillSymbolSets();
- }
-
- // wenn das alte SymbolSet nicht mehr existiert zum ersten gehen
- // (soweit eines vorhanden ist)
- if (!SelectSymbolSet(aOldSymbolSet) && aSymbolSets.GetEntryCount() > 0)
- SelectSymbolSet(aSymbolSets.GetEntry(0));
- else
- {
- // just update display of current symbol set
- OSL_ENSURE( aSymSetName == aSymSetName, "unexpected change in symbol set name" );
- aSymbolSet = rSymbolMgr.GetSymbolSet( aSymbolSetName );
- aSymbolSetDisplay.SetSymbolSet( aSymbolSet );
- }
-
- if (nSymPos >= aSymbolSet.size())
- nSymPos = static_cast< sal_uInt16 >(aSymbolSet.size()) - 1;
- SelectSymbol( nSymPos );
-
- delete pDialog;
- return 0;
-}
-
-
-IMPL_LINK( SmSymbolDialog, SymbolDblClickHdl, SmShowSymbolSet *, EMPTYARG pShowSymbolSet )
-{
- (void) pShowSymbolSet;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(pShowSymbolSet == &aSymbolSetDisplay, "Sm : wrong argument");
-#endif
-
- GetClickHdl(&aGetBtn);
- EndDialog(RET_OK);
- return 0;
-}
-
-
-IMPL_LINK( SmSymbolDialog, GetClickHdl, Button *, EMPTYARG pButton )
-{
- (void) pButton;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(pButton == &aGetBtn, "Sm : wrong button");
-#endif
-
- const SmSym *pSym = GetSymbol();
- if (pSym)
- {
- String aText ('%');
- aText += pSym->GetName();
- aText += (sal_Unicode)' ';
-
- rViewSh.GetViewFrame()->GetDispatcher()->Execute(
- SID_INSERTSYMBOL, SFX_CALLMODE_STANDARD,
- new SfxStringItem(SID_INSERTSYMBOL, aText), 0L);
- }
-
- return 0;
-}
-
-
-IMPL_LINK_INLINE_START( SmSymbolDialog, CloseClickHdl, Button *, EMPTYARG pButton )
-{
- (void) pButton;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(pButton == &aCloseBtn, "Sm : wrong button");
-#endif
-
- EndDialog(true);
- return 0;
-}
-IMPL_LINK_INLINE_END( SmSymbolDialog, CloseClickHdl, Button *, pButton )
-
-
-SmSymbolDialog::SmSymbolDialog(Window *pParent, OutputDevice *pFntListDevice,
- SmSymbolManager &rMgr, SmViewShell &rViewShell, bool bFreeRes) :
- ModalDialog (pParent, SmResId(RID_SYMBOLDIALOG)),
- aSymbolSetText (this, SmResId(1)),
- aSymbolSets (this, SmResId(1)),
- aSymbolSetDisplay (this, SmResId(1)),
- aSymbolName (this, SmResId(2)),
- aSymbolDisplay (this, SmResId(2)),
- aGetBtn (this, SmResId(2)),
- aCloseBtn (this, SmResId(3)),
- aEditBtn (this, SmResId(1)),
- rViewSh (rViewShell),
- rSymbolMgr (rMgr),
- pFontListDev (pFntListDevice)
-{
- if (bFreeRes)
- FreeResource();
-
- aSymbolSetName = String();
- aSymbolSet.clear();
- FillSymbolSets();
- if (aSymbolSets.GetEntryCount() > 0)
- SelectSymbolSet(aSymbolSets.GetEntry(0));
-
- InitColor_Impl();
-
- // preview like controls should have a 2D look
- aSymbolDisplay.SetBorderStyle( WINDOW_BORDER_MONO );
-
- aSymbolSets .SetSelectHdl (LINK(this, SmSymbolDialog, SymbolSetChangeHdl));
- aSymbolSetDisplay.SetSelectHdl (LINK(this, SmSymbolDialog, SymbolChangeHdl));
- aSymbolSetDisplay.SetDblClickHdl(LINK(this, SmSymbolDialog, SymbolDblClickHdl));
- aSymbolDisplay .SetDblClickHdl(LINK(this, SmSymbolDialog, SymbolDblClickHdl));
- aCloseBtn .SetClickHdl (LINK(this, SmSymbolDialog, CloseClickHdl));
- aEditBtn .SetClickHdl (LINK(this, SmSymbolDialog, EditClickHdl));
- aGetBtn .SetClickHdl (LINK(this, SmSymbolDialog, GetClickHdl));
-}
-
-
-SmSymbolDialog::~SmSymbolDialog()
-{
-}
-
-
-void SmSymbolDialog::InitColor_Impl()
-{
-#if OSL_DEBUG_LEVEL > 1
- Color aBC( GetDisplayBackground().GetColor() );
-#endif
- ColorData nBgCol = COL_WHITE,
- nTxtCol = COL_BLACK;
- const StyleSettings &rS = GetSettings().GetStyleSettings();
- if (rS.GetHighContrastMode())
- {
- nBgCol = rS.GetFieldColor().GetColor();
- nTxtCol = rS.GetFieldTextColor().GetColor();
- }
-
- Color aTmpColor( nBgCol );
- Wallpaper aWall( aTmpColor );
- Color aTxtColor( nTxtCol );
- aSymbolDisplay .SetBackground( aWall );
- aSymbolDisplay .SetTextColor( aTxtColor );
- aSymbolSetDisplay.SetBackground( aWall );
- aSymbolSetDisplay.SetTextColor( aTxtColor );
-}
-
-
-void SmSymbolDialog::DataChanged( const DataChangedEvent& rDCEvt )
-{
- if ( rDCEvt.GetType() == DATACHANGED_SETTINGS &&
- (rDCEvt.GetFlags() & SETTINGS_STYLE) )
- InitColor_Impl();
-
- ModalDialog::DataChanged( rDCEvt );
-}
-
-
-bool SmSymbolDialog::SelectSymbolSet(const XubString &rSymbolSetName)
-{
- bool bRet = false;
- sal_uInt16 nPos = aSymbolSets.GetEntryPos(rSymbolSetName);
-
- aSymbolSetName = String();
- aSymbolSet.clear();
- if (nPos != LISTBOX_ENTRY_NOTFOUND)
- {
- aSymbolSets.SelectEntryPos(nPos);
-
- aSymbolSetName = rSymbolSetName;
- aSymbolSet = rSymbolMgr.GetSymbolSet( aSymbolSetName );
-
- // sort symbols by Unicode position (useful for displaying Greek characters alphabetically)
- std::sort( aSymbolSet.begin(), aSymbolSet.end(), lt_SmSymPtr() );
-
- aSymbolSetDisplay.SetSymbolSet( aSymbolSet );
- if (aSymbolSet.size() > 0)
- SelectSymbol(0);
-
- bRet = true;
- }
- else
- aSymbolSets.SetNoSelection();
-
- return bRet;
-}
-
-
-void SmSymbolDialog::SelectSymbol(sal_uInt16 nSymbolNo)
-{
- const SmSym *pSym = NULL;
- if (aSymbolSetName.Len() > 0 && nSymbolNo < static_cast< sal_uInt16 >(aSymbolSet.size()))
- pSym = aSymbolSet[ nSymbolNo ];
-
- aSymbolSetDisplay.SelectSymbol(nSymbolNo);
- aSymbolDisplay.SetSymbol(pSym);
- aSymbolName.SetText(pSym ? pSym->GetName() : XubString());
-}
-
-
-const SmSym * SmSymbolDialog::GetSymbol() const
-{
- sal_uInt16 nSymbolNo = aSymbolSetDisplay.GetSelectSymbol();
- bool bValid = aSymbolSetName.Len() > 0 && nSymbolNo < static_cast< sal_uInt16 >(aSymbolSet.size());
- return bValid ? aSymbolSet[ nSymbolNo ] : NULL;
-}
-
-
-////////////////////////////////////////////////////////////////////////////////
-
-
-void SmShowChar::Paint(const Rectangle &rRect)
-{
- Control::Paint( rRect );
-
- OUString aText( GetText() );
- if (aText.getLength() > 0)
- {
-#if OSL_DEBUG_LEVEL > 1
- sal_Int32 nPos = 0;
- sal_UCS4 cChar = aText.iterateCodePoints( &nPos );
- (void) cChar;
-#endif
- Size aTextSize(GetTextWidth(aText), GetTextHeight());
-
- DrawText(Point((GetOutputSize().Width() - aTextSize.Width()) / 2,
- (GetOutputSize().Height() * 7/10)), aText);
- }
-}
-
-
-void SmShowChar::SetSymbol( const SmSym *pSym )
-{
- if (pSym)
- SetSymbol( pSym->GetCharacter(), pSym->GetFace() );
-}
-
-
-void SmShowChar::SetSymbol( sal_UCS4 cChar, const Font &rFont )
-{
- Font aFont( rFont );
- aFont.SetSize( Size(0, GetOutputSize().Height() - GetOutputSize().Height() / 3) );
- aFont.SetAlign(ALIGN_BASELINE);
- SetFont(aFont);
- aFont.SetTransparent(true);
-
- String aText( OUString( &cChar, 1) );
- SetText( aText );
-
- Invalidate();
-}
-
-
-////////////////////////////////////////////////////////////////////////////////
-
-void SmSymDefineDialog::FillSymbols(ComboBox &rComboBox, bool bDeleteText)
-{
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(&rComboBox == &aOldSymbols || &rComboBox == &aSymbols,
- "Sm : wrong ComboBox");
-#endif
-
- rComboBox.Clear();
- if (bDeleteText)
- rComboBox.SetText(XubString());
-
- ComboBox &rBox = &rComboBox == &aOldSymbols ? aOldSymbolSets : aSymbolSets;
- SymbolPtrVec_t aSymSet( aSymbolMgrCopy.GetSymbolSet( rBox.GetText() ) );
- for (size_t i = 0; i < aSymSet.size(); ++i)
- rComboBox.InsertEntry( aSymSet[i]->GetName() );
-}
-
-
-void SmSymDefineDialog::FillSymbolSets(ComboBox &rComboBox, bool bDeleteText)
-{
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(&rComboBox == &aOldSymbolSets || &rComboBox == &aSymbolSets,
- "Sm : falsche ComboBox");
-#endif
-
- rComboBox.Clear();
- if (bDeleteText)
- rComboBox.SetText(XubString());
-
- const std::set< String > aSymbolSetNames( aSymbolMgrCopy.GetSymbolSetNames() );
- std::set< String >::const_iterator aIt( aSymbolSetNames.begin() );
- for ( ; aIt != aSymbolSetNames.end(); ++aIt)
- rComboBox.InsertEntry( *aIt );
-}
-
-
-void SmSymDefineDialog::FillFonts(bool bDelete)
-{
- aFonts.Clear();
- if (bDelete)
- aFonts.SetNoSelection();
-
- // alle Fonts der 'FontList' in die Fontliste aufnehmen
- // von denen mit gleichen Namen jedoch nur einen (denn der Style wird
- // ueber die 'FontStyleBox' gewaehlt und nicht auch noch hier)
- if (pFontList)
- {
- sal_uInt16 nCount = pFontList->GetFontNameCount();
- for (sal_uInt16 i = 0; i < nCount; i++)
- aFonts.InsertEntry( pFontList->GetFontName(i).GetName() );
- }
-}
-
-
-void SmSymDefineDialog::FillStyles(bool bDeleteText)
-{
- aStyles.Clear();
- if (bDeleteText)
- aStyles.SetText(XubString());
-
- XubString aText (aFonts.GetSelectEntry());
- if (aText.Len() != 0)
- {
- // eigene StyleName's verwenden
- const SmFontStyles &rStyles = GetFontStyles();
- for (sal_uInt16 i = 0; i < rStyles.GetCount(); i++)
- aStyles.InsertEntry( rStyles.GetStyleName(i) );
-
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(aStyles.GetEntryCount() > 0, "Sm : no styles available");
-#endif
- aStyles.SetText( aStyles.GetEntry(0) );
- }
-}
-
-
-SmSym * SmSymDefineDialog::GetSymbol(const ComboBox &rComboBox)
-{
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(&rComboBox == &aOldSymbols || &rComboBox == &aSymbols,
- "Sm : wrong combobox");
-#endif
- return aSymbolMgrCopy.GetSymbolByName(rComboBox.GetText());
-}
-
-
-IMPL_LINK( SmSymDefineDialog, OldSymbolChangeHdl, ComboBox *, EMPTYARG pComboBox )
-{
- (void) pComboBox;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(pComboBox == &aOldSymbols, "Sm : wrong argument");
-#endif
- SelectSymbol(aOldSymbols, aOldSymbols.GetText(), false);
- return 0;
-}
-
-
-IMPL_LINK( SmSymDefineDialog, OldSymbolSetChangeHdl, ComboBox *, EMPTYARG pComboBox )
-{
- (void) pComboBox;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(pComboBox == &aOldSymbolSets, "Sm : wrong argument");
-#endif
- SelectSymbolSet(aOldSymbolSets, aOldSymbolSets.GetText(), false);
- return 0;
-}
-
-
-IMPL_LINK( SmSymDefineDialog, ModifyHdl, ComboBox *, pComboBox )
-{
- // merken der Cursorposition zum wiederherstellen derselben
- Selection aSelection (pComboBox->GetSelection());
-
- if (pComboBox == &aSymbols)
- SelectSymbol(aSymbols, aSymbols.GetText(), false);
- else if (pComboBox == &aSymbolSets)
- SelectSymbolSet(aSymbolSets, aSymbolSets.GetText(), false);
- else if (pComboBox == &aOldSymbols)
- // nur Namen aus der Liste erlauben
- SelectSymbol(aOldSymbols, aOldSymbols.GetText(), true);
- else if (pComboBox == &aOldSymbolSets)
- // nur Namen aus der Liste erlauben
- SelectSymbolSet(aOldSymbolSets, aOldSymbolSets.GetText(), true);
- else if (pComboBox == &aStyles)
- // nur Namen aus der Liste erlauben (ist hier eh immer der Fall)
- SelectStyle(aStyles.GetText(), true);
- else
- {
-#if OSL_DEBUG_LEVEL > 1
- OSL_FAIL("Sm : wrong combobox argument");
-#endif
- }
-
- pComboBox->SetSelection(aSelection);
-
- UpdateButtons();
-
- return 0;
-}
-
-
-IMPL_LINK( SmSymDefineDialog, FontChangeHdl, ListBox *, EMPTYARG pListBox )
-{
- (void) pListBox;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(pListBox == &aFonts, "Sm : wrong argument");
-#endif
-
- SelectFont(aFonts.GetSelectEntry());
- return 0;
-}
-
-
-IMPL_LINK( SmSymDefineDialog, SubsetChangeHdl, ListBox *, EMPTYARG pListBox )
-{
- (void) pListBox;
- sal_uInt16 nPos = aFontsSubsetLB.GetSelectEntryPos();
- if (LISTBOX_ENTRY_NOTFOUND != nPos)
- {
- const Subset* pSubset = reinterpret_cast<const Subset*> (aFontsSubsetLB.GetEntryData( nPos ));
- if (pSubset)
- {
- aCharsetDisplay.SelectCharacter( pSubset->GetRangeMin() );
- }
- }
- return 0;
-}
-
-
-IMPL_LINK( SmSymDefineDialog, StyleChangeHdl, ComboBox *, EMPTYARG pComboBox )
-{
- (void) pComboBox;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(pComboBox == &aStyles, "Sm : falsches Argument");
-#endif
-
- SelectStyle(aStyles.GetText());
- return 0;
-}
-
-
-IMPL_LINK( SmSymDefineDialog, CharHighlightHdl, Control *, EMPTYARG )
-{
- sal_UCS4 cChar = aCharsetDisplay.GetSelectCharacter();
-
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE( pSubsetMap, "SubsetMap missing" );
-#endif
- if (pSubsetMap)
- {
- const Subset* pSubset = pSubsetMap->GetSubsetByUnicode( cChar );
- if (pSubset)
- aFontsSubsetLB.SelectEntry( pSubset->GetName() );
- else
- aFontsSubsetLB.SetNoSelection();
- }
-
- aSymbolDisplay.SetSymbol( cChar, aCharsetDisplay.GetFont() );
-
- UpdateButtons();
-
- // display Unicode position as symbol name while iterating over characters
- const String aHex( String::CreateFromInt64( cChar, 16 ).ToUpperAscii() );
- const String aPattern( A2OU( aHex.Len() > 4 ? "Ux000000" : "Ux0000" ) );
- String aUnicodePos( aPattern.Copy( 0, aPattern.Len() - aHex.Len() ) );
- aUnicodePos += aHex;
- aSymbols.SetText( aUnicodePos );
- aSymbolName.SetText( aUnicodePos );
-
- return 0;
-}
-
-
-IMPL_LINK( SmSymDefineDialog, AddClickHdl, Button *, EMPTYARG pButton )
-{
- (void) pButton;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(pButton == &aAddBtn, "Sm : wrong argument");
- OSL_ENSURE(aAddBtn.IsEnabled(), "Sm : requirements met ??");
-#endif
-
- // add symbol
- const SmSym aNewSymbol( aSymbols.GetText(), aCharsetDisplay.GetFont(),
- aCharsetDisplay.GetSelectCharacter(), aSymbolSets.GetText() );
- //OSL_ENSURE( aSymbolMgrCopy.GetSymbolByName(aTmpSymbolName) == NULL, "symbol already exists" );
- aSymbolMgrCopy.AddOrReplaceSymbol( aNewSymbol );
-
- // update display of new symbol
- aSymbolDisplay.SetSymbol( &aNewSymbol );
- aSymbolName.SetText( aNewSymbol.GetName() );
- aSymbolSetName.SetText( aNewSymbol.GetSymbolSetName() );
-
- // update list box entries
- FillSymbolSets(aOldSymbolSets, false);
- FillSymbolSets(aSymbolSets, false);
- FillSymbols(aOldSymbols ,false);
- FillSymbols(aSymbols ,false);
-
- UpdateButtons();
-
- return 0;
-}
-
-
-IMPL_LINK( SmSymDefineDialog, ChangeClickHdl, Button *, EMPTYARG pButton )
-{
- (void) pButton;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(pButton == &aChangeBtn, "Sm : wrong argument");
- OSL_ENSURE(aChangeBtn.IsEnabled(), "Sm : requirements met ??");
-#endif
-
- // get new Sybol to use
- //! get font from symbol-disp lay since charset-display does not keep
- //! the bold attribut.
- const SmSym aNewSymbol( aSymbols.GetText(), aCharsetDisplay.GetFont(),
- aCharsetDisplay.GetSelectCharacter(), aSymbolSets.GetText() );
-
- // remove old symbol if the name was changed then add new one
- const bool bNameChanged = aOldSymbols.GetText() != aSymbols.GetText();
- if (bNameChanged)
- aSymbolMgrCopy.RemoveSymbol( aOldSymbols.GetText() );
- aSymbolMgrCopy.AddOrReplaceSymbol( aNewSymbol, true );
-
- // clear display for original symbol if necessary
- if (bNameChanged)
- SetOrigSymbol(NULL, XubString());
-
- // update display of new symbol
- aSymbolDisplay.SetSymbol( &aNewSymbol );
- aSymbolName.SetText( aNewSymbol.GetName() );
- aSymbolSetName.SetText( aNewSymbol.GetSymbolSetName() );
-
- // update list box entries
- FillSymbolSets(aOldSymbolSets, false);
- FillSymbolSets(aSymbolSets, false);
- FillSymbols(aOldSymbols ,false);
- FillSymbols(aSymbols ,false);
-
- UpdateButtons();
-
- return 0;
-}
-
-
-IMPL_LINK( SmSymDefineDialog, DeleteClickHdl, Button *, EMPTYARG pButton )
-{
- (void) pButton;
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(pButton == &aDeleteBtn, "Sm : wrong argument");
- OSL_ENSURE(aDeleteBtn.IsEnabled(), "Sm : requirements met ??");
-#endif
-
- if (pOrigSymbol)
- {
- aSymbolMgrCopy.RemoveSymbol( pOrigSymbol->GetName() );
-
- // clear display for original symbol
- SetOrigSymbol(NULL, XubString());
-
- // update list box entries
- FillSymbolSets(aOldSymbolSets, false);
- FillSymbolSets(aSymbolSets, false);
- FillSymbols(aOldSymbols ,false);
- FillSymbols(aSymbols ,false);
- }
-
- UpdateButtons();
-
- return 0;
-}
-
-
-void SmSymDefineDialog::UpdateButtons()
-{
- bool bAdd = false,
- bChange = false,
- bDelete = false;
- XubString aTmpSymbolName (aSymbols.GetText()),
- aTmpSymbolSetName (aSymbolSets.GetText());
-
- if (aTmpSymbolName.Len() > 0 && aTmpSymbolSetName.Len() > 0)
- {
- // alle Einstellungen gleich?
- //! (Font-, Style- und SymbolSet Name werden nicht case sensitiv verglichen)
- bool bEqual = pOrigSymbol
- && aTmpSymbolSetName.EqualsIgnoreCaseAscii(aOldSymbolSetName.GetText())
- && aTmpSymbolName.Equals(pOrigSymbol->GetName())
- && aFonts.GetSelectEntry().EqualsIgnoreCaseAscii(
- pOrigSymbol->GetFace().GetName())
- && aStyles.GetText().EqualsIgnoreCaseAscii(
- GetFontStyles().GetStyleName(pOrigSymbol->GetFace()))
- && aCharsetDisplay.GetSelectCharacter() == pOrigSymbol->GetCharacter();
-
- // hinzufuegen nur wenn es noch kein Symbol desgleichen Namens gibt
- bAdd = aSymbolMgrCopy.GetSymbolByName(aTmpSymbolName) == NULL;
-
- // loeschen nur wenn alle Einstellungen gleich sind
- bDelete = pOrigSymbol != NULL;
-
- // aendern nur falls altes Symbol vorhanden und am neuen etwas anders ist
- bChange = pOrigSymbol && !bEqual;
- }
-
- aAddBtn .Enable(bAdd);
- aChangeBtn.Enable(bChange);
- aDeleteBtn.Enable(bDelete);
-}
-
-
-SmSymDefineDialog::SmSymDefineDialog(Window * pParent,
- OutputDevice *pFntListDevice, SmSymbolManager &rMgr, bool bFreeRes) :
- ModalDialog (pParent, SmResId(RID_SYMDEFINEDIALOG)),
- aOldSymbolText (this, SmResId(1)),
- aOldSymbols (this, SmResId(1)),
- aOldSymbolSetText (this, SmResId(2)),
- aOldSymbolSets (this, SmResId(2)),
- aCharsetDisplay (this, SmResId(1)),
- aSymbolText (this, SmResId(9)),
- aSymbols (this, SmResId(4)),
- aSymbolSetText (this, SmResId(10)),
- aSymbolSets (this, SmResId(5)),
- aFontText (this, SmResId(3)),
- aFonts (this, SmResId(1)),
- aFontsSubsetFT (this, SmResId( FT_FONTS_SUBSET )),
- aFontsSubsetLB (this, SmResId( LB_FONTS_SUBSET )),
- aStyleText (this, SmResId(4)),
- aStyles (this, SmResId(3)),
- aOldSymbolName (this, SmResId(7)),
- aOldSymbolDisplay (this, SmResId(3)),
- aOldSymbolSetName (this, SmResId(8)),
- aSymbolName (this, SmResId(5)),
- aSymbolDisplay (this, SmResId(2)),
- aSymbolSetName (this, SmResId(6)),
- aOkBtn (this, SmResId(1)),
- aCancelBtn (this, SmResId(1)),
- aAddBtn (this, SmResId(1)),
- aChangeBtn (this, SmResId(2)),
- aDeleteBtn (this, SmResId(3)),
- aRightArrow (this, SmResId(1)),
- aRigthArrow_Im (SmResId(1)),
- rSymbolMgr (rMgr),
- pSubsetMap (NULL),
- pFontList (NULL)
-{
- if (bFreeRes)
- FreeResource();
-
- pFontList = new FontList( pFntListDevice );
-
- pOrigSymbol = 0;
-
- // auto completion is troublesome since that symbols character also gets automatically selected in the
- // display and if the user previously selected a character to define/redefine that one this is bad
- aOldSymbols.EnableAutocomplete( false, true );
- aSymbols .EnableAutocomplete( false, true );
-
- FillFonts();
- if (aFonts.GetEntryCount() > 0)
- SelectFont(aFonts.GetEntry(0));
-
- InitColor_Impl();
-
- SetSymbolSetManager(rSymbolMgr);
-
- aOldSymbols .SetSelectHdl(LINK(this, SmSymDefineDialog, OldSymbolChangeHdl));
- aOldSymbolSets .SetSelectHdl(LINK(this, SmSymDefineDialog, OldSymbolSetChangeHdl));
- aSymbolSets .SetModifyHdl(LINK(this, SmSymDefineDialog, ModifyHdl));
- aOldSymbolSets .SetModifyHdl(LINK(this, SmSymDefineDialog, ModifyHdl));
- aSymbols .SetModifyHdl(LINK(this, SmSymDefineDialog, ModifyHdl));
- aOldSymbols .SetModifyHdl(LINK(this, SmSymDefineDialog, ModifyHdl));
- aStyles .SetModifyHdl(LINK(this, SmSymDefineDialog, ModifyHdl));
- aFonts .SetSelectHdl(LINK(this, SmSymDefineDialog, FontChangeHdl));
- aFontsSubsetLB .SetSelectHdl(LINK(this, SmSymDefineDialog, SubsetChangeHdl));
- aStyles .SetSelectHdl(LINK(this, SmSymDefineDialog, StyleChangeHdl));
- aAddBtn .SetClickHdl (LINK(this, SmSymDefineDialog, AddClickHdl));
- aChangeBtn .SetClickHdl (LINK(this, SmSymDefineDialog, ChangeClickHdl));
- aDeleteBtn .SetClickHdl (LINK(this, SmSymDefineDialog, DeleteClickHdl));
- aCharsetDisplay.SetHighlightHdl( LINK( this, SmSymDefineDialog, CharHighlightHdl ) );
-
- // preview like controls should have a 2D look
- aOldSymbolDisplay.SetBorderStyle( WINDOW_BORDER_MONO );
- aSymbolDisplay .SetBorderStyle( WINDOW_BORDER_MONO );
-}
-
-
-SmSymDefineDialog::~SmSymDefineDialog()
-{
- delete pSubsetMap;
- delete pOrigSymbol;
-}
-
-void SmSymDefineDialog::InitColor_Impl()
-{
-#if OSL_DEBUG_LEVEL > 1
- Color aBC( GetDisplayBackground().GetColor() );
-#endif
- ColorData nBgCol = COL_WHITE,
- nTxtCol = COL_BLACK;
- bool bHighContrast = GetSettings().GetStyleSettings().GetHighContrastMode();
- if (bHighContrast)
- {
- const StyleSettings &rS = GetSettings().GetStyleSettings();
- nBgCol = rS.GetFieldColor().GetColor();
- nTxtCol = rS.GetFieldTextColor().GetColor();
- }
-
- Color aTmpColor( nBgCol );
- Wallpaper aWall( aTmpColor );
- Color aTxtColor( nTxtCol );
- aCharsetDisplay .SetBackground( aWall );
- aCharsetDisplay .SetTextColor( aTxtColor );
- aOldSymbolDisplay.SetBackground( aWall );
- aOldSymbolDisplay.SetTextColor( aTxtColor );
- aSymbolDisplay .SetBackground( aWall );
- aSymbolDisplay .SetTextColor( aTxtColor );
-
- const Image &rArrowRight = aRigthArrow_Im;
- aRightArrow.SetImage( rArrowRight );
-}
-
-
-void SmSymDefineDialog::DataChanged( const DataChangedEvent& rDCEvt )
-{
- if ( rDCEvt.GetType() == DATACHANGED_SETTINGS &&
- (rDCEvt.GetFlags() & SETTINGS_STYLE) )
- InitColor_Impl();
-
- ModalDialog::DataChanged( rDCEvt );
-}
-
-
-short SmSymDefineDialog::Execute()
-{
- short nResult = ModalDialog::Execute();
-
- // Aenderungen uebernehmen falls Dialog mit OK beendet wurde
- if (aSymbolMgrCopy.IsModified() && nResult == RET_OK)
- rSymbolMgr = aSymbolMgrCopy;
-
- return nResult;
-}
-
-
-void SmSymDefineDialog::SetSymbolSetManager(const SmSymbolManager &rMgr)
-{
- aSymbolMgrCopy = rMgr;
-
- // Das modified Flag der Kopie auf false setzen, damit man spaeter damit
- // testen kann ob sich was geaendert hat.
- aSymbolMgrCopy.SetModified(false);
-
- FillSymbolSets(aOldSymbolSets);
- if (aOldSymbolSets.GetEntryCount() > 0)
- SelectSymbolSet(aOldSymbolSets.GetEntry(0));
- FillSymbolSets(aSymbolSets);
- if (aSymbolSets.GetEntryCount() > 0)
- SelectSymbolSet(aSymbolSets.GetEntry(0));
- FillSymbols(aOldSymbols);
- if (aOldSymbols.GetEntryCount() > 0)
- SelectSymbol(aOldSymbols.GetEntry(0));
- FillSymbols(aSymbols);
- if (aSymbols.GetEntryCount() > 0)
- SelectSymbol(aSymbols.GetEntry(0));
-
- UpdateButtons();
-}
-
-
-bool SmSymDefineDialog::SelectSymbolSet(ComboBox &rComboBox,
- const XubString &rSymbolSetName, bool bDeleteText)
-{
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(&rComboBox == &aOldSymbolSets || &rComboBox == &aSymbolSets,
- "Sm : wrong ComboBox");
-#endif
-
- // 'Normalisieren' des SymbolNamens (ohne leading und trailing Leerzeichen)
- XubString aNormName (rSymbolSetName);
- aNormName.EraseLeadingChars(' ');
- aNormName.EraseTrailingChars(' ');
- // und evtl Abweichungen in der Eingabe beseitigen
- rComboBox.SetText(aNormName);
-
- bool bRet = false;
- sal_uInt16 nPos = rComboBox.GetEntryPos(aNormName);
-
- if (nPos != COMBOBOX_ENTRY_NOTFOUND)
- {
- rComboBox.SetText(rComboBox.GetEntry(nPos));
- bRet = true;
- }
- else if (bDeleteText)
- rComboBox.SetText(XubString());
-
- bool bIsOld = &rComboBox == &aOldSymbolSets;
-
- // setzen des SymbolSet Namens an der zugehoerigen Darstellung
- FixedText &rFT = bIsOld ? aOldSymbolSetName : aSymbolSetName;
- rFT.SetText(rComboBox.GetText());
-
- // setzen der zum SymbolSet gehoerenden Symbol Namen an der zugehoerigen
- // Auswahbox
- ComboBox &rCB = bIsOld ? aOldSymbols : aSymbols;
- FillSymbols(rCB, false);
-
- // bei Wechsel des SymbolSets fuer das alte Zeichen ein gueltiges
- // Symbol bzw keins zur Anzeige bringen
- if (bIsOld)
- {
- XubString aTmpOldSymbolName;
- if (aOldSymbols.GetEntryCount() > 0)
- aTmpOldSymbolName = aOldSymbols.GetEntry(0);
- SelectSymbol(aOldSymbols, aTmpOldSymbolName, true);
- }
-
- UpdateButtons();
-
- return bRet;
-}
-
-
-void SmSymDefineDialog::SetOrigSymbol(const SmSym *pSymbol,
- const XubString &rSymbolSetName)
-{
- // clear old symbol
- delete pOrigSymbol;
- pOrigSymbol = 0;
-
- XubString aSymName,
- aSymSetName;
- if (pSymbol)
- {
- // set new symbol
- pOrigSymbol = new SmSym( *pSymbol );
-
- aSymName = pSymbol->GetName();
- aSymSetName = rSymbolSetName;
- aOldSymbolDisplay.SetSymbol( pSymbol );
- }
- else
- { // loeschen des angezeigten Symbols
- aOldSymbolDisplay.SetText(XubString());
- aOldSymbolDisplay.Invalidate();
- }
- aOldSymbolName .SetText(aSymName);
- aOldSymbolSetName.SetText(aSymSetName);
-}
-
-
-bool SmSymDefineDialog::SelectSymbol(ComboBox &rComboBox,
- const XubString &rSymbolName, bool bDeleteText)
-{
-#if OSL_DEBUG_LEVEL > 1
- OSL_ENSURE(&rComboBox == &aOldSymbols || &rComboBox == &aSymbols,
- "Sm : wrong ComboBox");
-#endif
-
- // 'Normalisieren' des SymbolNamens (ohne Leerzeichen)
- XubString aNormName (rSymbolName);
- aNormName.EraseAllChars(' ');
- // und evtl Abweichungen in der Eingabe beseitigen
- rComboBox.SetText(aNormName);
-
- bool bRet = false;
- sal_uInt16 nPos = rComboBox.GetEntryPos(aNormName);
-
- bool bIsOld = &rComboBox == &aOldSymbols;
-
- if (nPos != COMBOBOX_ENTRY_NOTFOUND)
- {
- rComboBox.SetText(rComboBox.GetEntry(nPos));
-
- if (!bIsOld)
- {
- const SmSym *pSymbol = GetSymbol(aSymbols);
- if (pSymbol)
- {
- // Font und Style entsprechend waehlen
- const Font &rFont = pSymbol->GetFace();
- SelectFont(rFont.GetName(), false);
- SelectStyle(GetFontStyles().GetStyleName(rFont), false);
-
- // da das setzen des Fonts ueber den Style Namen des SymbolsFonts nicht
- // so gut klappt (er kann zB leer sein obwohl der Font selbst 'bold' und
- // 'italic' ist!). Setzen wir hier den Font wie er zum Symbol gehoert
- // zu Fuss.
- aCharsetDisplay.SetFont(rFont);
- aSymbolDisplay.SetFont(rFont);
-
- // das zugehoerige Zeichen auswaehlen
- SelectChar(pSymbol->GetCharacter());
-
- // since SelectChar will also set the unicode point as text in the
- // symbols box, we have to set the symbol name again to get that one displayed
- aSymbols.SetText( pSymbol->GetName() );
- }
- }
-
- bRet = true;
- }
- else if (bDeleteText)
- rComboBox.SetText(XubString());
-
- if (bIsOld)
- {
- // bei Wechsel des alten Symbols nur vorhandene anzeigen sonst keins
- const SmSym *pOldSymbol = NULL;
- XubString aTmpOldSymbolSetName;
- if (nPos != COMBOBOX_ENTRY_NOTFOUND)
- {
- pOldSymbol = aSymbolMgrCopy.GetSymbolByName(aNormName);
- aTmpOldSymbolSetName = aOldSymbolSets.GetText();
- }
- SetOrigSymbol(pOldSymbol, aTmpOldSymbolSetName);
- }
- else
- aSymbolName.SetText(rComboBox.GetText());
-
- UpdateButtons();
-
- return bRet;
-}
-
-
-void SmSymDefineDialog::SetFont(const XubString &rFontName, const XubString &rStyleName)
-{
- // Font (FontInfo) passend zu Namen und Style holen
- FontInfo aFI;
- if (pFontList)
- aFI = pFontList->Get(rFontName, WEIGHT_NORMAL, ITALIC_NONE);
- SetFontStyle(rStyleName, aFI);
-
- aCharsetDisplay.SetFont(aFI);
- aSymbolDisplay.SetFont(aFI);
-
- // update subset listbox for new font's unicode subsets
- FontCharMap aFontCharMap;
- aCharsetDisplay.GetFontCharMap( aFontCharMap );
- if (pSubsetMap)
- delete pSubsetMap;
- pSubsetMap = new SubsetMap( &aFontCharMap );
-
- aFontsSubsetLB.Clear();
- bool bFirst = true;
- const Subset* pSubset;
- while( NULL != (pSubset = pSubsetMap->GetNextSubset( bFirst )) )
- {
- sal_uInt16 nPos = aFontsSubsetLB.InsertEntry( pSubset->GetName());
- aFontsSubsetLB.SetEntryData( nPos, (void *) pSubset );
- // subset must live at least as long as the selected font !!!
- if( bFirst )
- aFontsSubsetLB.SelectEntryPos( nPos );
- bFirst = false;
- }
- if( bFirst )
- aFontsSubsetLB.SetNoSelection();
- aFontsSubsetLB.Enable( !bFirst );
-}
-
-
-bool SmSymDefineDialog::SelectFont(const XubString &rFontName, bool bApplyFont)
-{
- bool bRet = false;
- sal_uInt16 nPos = aFonts.GetEntryPos(rFontName);
-
- if (nPos != LISTBOX_ENTRY_NOTFOUND)
- {
- aFonts.SelectEntryPos(nPos);
- if (aStyles.GetEntryCount() > 0)
- SelectStyle(aStyles.GetEntry(0));
- if (bApplyFont)
- {
- SetFont(aFonts.GetSelectEntry(), aStyles.GetText());
- bRet = true;
- aSymbolDisplay.SetSymbol( aCharsetDisplay.GetSelectCharacter(), aCharsetDisplay.GetFont() );
- }
- bRet = sal_True;
- }
- else
- aFonts.SetNoSelection();
- FillStyles();
-
- UpdateButtons();
-
- return bRet;
-}
-
-
-bool SmSymDefineDialog::SelectStyle(const XubString &rStyleName, bool bApplyFont)
-{
- bool bRet = false;
- sal_uInt16 nPos = aStyles.GetEntryPos(rStyleName);
-
- // falls der Style nicht zur Auswahl steht nehmen wir den erst moeglichen
- // (sofern vorhanden)
- if (nPos == COMBOBOX_ENTRY_NOTFOUND && aStyles.GetEntryCount() > 0)
- nPos = 0;
-
- if (nPos != COMBOBOX_ENTRY_NOTFOUND)
- {
- aStyles.SetText(aStyles.GetEntry(nPos));
- if (bApplyFont)
- {
- SetFont(aFonts.GetSelectEntry(), aStyles.GetText());
- bRet = true;
- aSymbolDisplay.SetSymbol( aCharsetDisplay.GetSelectCharacter(), aCharsetDisplay.GetFont() );
- }
- bRet = sal_True;
- }
- else
- aStyles.SetText(XubString());
-
- UpdateButtons();
-
- return bRet;
-}
-
-
-void SmSymDefineDialog::SelectChar(xub_Unicode cChar)
-{
- aCharsetDisplay.SelectCharacter( cChar );
- aSymbolDisplay.SetSymbol( cChar, aCharsetDisplay.GetFont() );
-
- UpdateButtons();
-}
-
-
-/**************************************************************************/
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */