diff options
Diffstat (limited to 'cui/source/options/optcolor.cxx')
-rw-r--r-- | cui/source/options/optcolor.cxx | 1722 |
1 files changed, 1722 insertions, 0 deletions
diff --git a/cui/source/options/optcolor.cxx b/cui/source/options/optcolor.cxx new file mode 100644 index 000000000000..6105391a72fe --- /dev/null +++ b/cui/source/options/optcolor.cxx @@ -0,0 +1,1722 @@ +/************************************************************************* + * + * 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_cui.hxx" + +// include --------------------------------------------------------------- +#include <svtools/colorcfg.hxx> +#include <svtools/extcolorcfg.hxx> +#include <svtools/headbar.hxx> +#include <svtools/ctrlbox.hxx> +#include <vcl/scrbar.hxx> +#include <svx/xtable.hxx> +#include <unotools/moduleoptions.hxx> +#include <unotools/pathoptions.hxx> +#include <vcl/msgbox.hxx> +#include <boost/shared_ptr.hpp> +#include <svx/svxdlg.hxx> +#include <helpid.hrc> +#include <dialmgr.hxx> +#include "optcolor.hxx" +#include <cuires.hrc> +#include "optcolor.hrc" +#include <svx/dlgutil.hxx> + +using namespace ::com::sun::star; +using namespace ::svtools; + +#define GROUP_COUNT 7 +#define GROUP_UNKNOWN -1 +#define GROUP_GENERAL 0 +#define GROUP_WRITER 1 +#define GROUP_HTML 2 +#define GROUP_CALC 3 +#define GROUP_DRAW 4 +#define GROUP_BASIC 5 +#define GROUP_SQL 6 + +const char* aColorLBHids[] = +{ + HID_COLORPAGE_DOCCOLOR_LB, + HID_COLORPAGE_DOCBOUNDARIES_LB, + HID_COLORPAGE_APPBACKGROUND_LB, + HID_COLORPAGE_OBJECTBOUNDARIES_LB, + HID_COLORPAGE_TABLEBOUNDARIES_LB, + HID_COLORPAGE_FONTCOLOR_LB, + HID_COLORPAGE_LINKS_LB, + HID_COLORPAGE_LINKSVISITED_LB, + HID_COLORPAGE_ANCHOR_LB, + HID_COLORPAGE_SPELL_LB, + HID_COLORPAGE_WRITERTEXTGRID_LB, + HID_COLORPAGE_WRITERFIELDSHADINGS_LB, + HID_COLORPAGE_WRITERIDXSHADINGS_LB, + HID_COLORPAGE_WRITERDIRECTCURSOR_LB, + HID_COLORPAGE_WRITERNOTESINDICATOR_LB, + HID_COLORPAGE_WRITERSCRIPTINDICATOR_LB, + HID_COLORPAGE_WRITERSECTIONBOUNDARIES_LB, + HID_COLORPAGE_WRITERPAGEBREAKS_LB, + HID_COLORPAGE_HTMLSGML_LB, + HID_COLORPAGE_HTMLCOMMENT_LB, + HID_COLORPAGE_HTMLKEYWORD_LB, + HID_COLORPAGE_HTMLUNKNOWN_LB, + HID_COLORPAGE_CALCGRID_LB, + HID_COLORPAGE_CALCPAGEBREAK_LB, + HID_COLORPAGE_CALCPAGEBREAKMANUAL_LB, + HID_COLORPAGE_CALCPAGEBREAKAUTOMATIC_LB, + HID_COLORPAGE_CALCDETECTIVE_LB, + HID_COLORPAGE_CALCDETECTIVEERROR_LB, + HID_COLORPAGE_CALCREFERENCE_LB, + HID_COLORPAGE_CALCNOTESBACKGROUND_LB, + HID_COLORPAGE_DRAWGRID_LB, + HID_COLORPAGE_DRAWDRAWING_LB, + HID_COLORPAGE_DRAWFILL_LB, + HID_COLORPAGE_BASICIDENTIFIER_LB, + HID_COLORPAGE_BASICCOMMENT_LB, + HID_COLORPAGE_BASICNUMBER_LB, + HID_COLORPAGE_BASICSTRING_LB, + HID_COLORPAGE_BASICOPERATOR_LB, + HID_COLORPAGE_BASICKEYWORD_LB, + HID_COLORPAGE_BASICERROR_LB +}; + +const char* aColorCBHids[] = +{ + HID_COLORPAGE_DOCCOLOR_CB, + HID_COLORPAGE_DOCBOUNDARIES_CB, + HID_COLORPAGE_APPBACKGROUND_CB, + HID_COLORPAGE_OBJECTBOUNDARIES_CB, + HID_COLORPAGE_TABLEBOUNDARIES_CB, + HID_COLORPAGE_FONTCOLOR_CB, + HID_COLORPAGE_LINKS_CB, + HID_COLORPAGE_LINKSVISITED_CB, + HID_COLORPAGE_ANCHOR_CB, + HID_COLORPAGE_SPELL_CB, + HID_COLORPAGE_WRITERTEXTGRID_CB, + HID_COLORPAGE_WRITERFIELDSHADINGS_CB, + HID_COLORPAGE_WRITERIDXSHADINGS_CB, + HID_COLORPAGE_WRITERDIRECTCURSOR_CB, + HID_COLORPAGE_WRITERNOTESINDICATOR_CB, + HID_COLORPAGE_WRITERSCRIPTINDICATOR_CB, + HID_COLORPAGE_WRITERSECTIONBOUNDARIES_CB, + HID_COLORPAGE_WRITERPAGEBREAKS_CB, + HID_COLORPAGE_HTMLSGML_CB, + HID_COLORPAGE_HTMLCOMMENT_CB, + HID_COLORPAGE_HTMLKEYWORD_CB, + HID_COLORPAGE_HTMLUNKNOWN_CB, + HID_COLORPAGE_CALCGRID_CB, + HID_COLORPAGE_CALCPAGEBREAK_CB, + HID_COLORPAGE_CALCPAGEBREAKMANUAL_CB, + HID_COLORPAGE_CALCPAGEBREAKAUTOMATIC_CB, + HID_COLORPAGE_CALCDETECTIVE_CB, + HID_COLORPAGE_CALCDETECTIVEERROR_CB, + HID_COLORPAGE_CALCREFERENCE_CB, + HID_COLORPAGE_CALCNOTESBACKGROUND_CB, + HID_COLORPAGE_DRAWGRID_CB, + HID_COLORPAGE_DRAWDRAWING_CB, + HID_COLORPAGE_DRAWFILL_CB, + HID_COLORPAGE_BASICIDENTIFIER_CB, + HID_COLORPAGE_BASICCOMMENT_CB, + HID_COLORPAGE_BASICNUMBER_CB, + HID_COLORPAGE_BASICSTRING_CB, + HID_COLORPAGE_BASICOPERATOR_CB, + HID_COLORPAGE_BASICKEYWORD_CB, + HID_COLORPAGE_BASICERROR_CB +}; + +/* -----------------------------2002/06/26 10:48------------------------------ + + ---------------------------------------------------------------------------*/ + +class SvxExtFixedText_Impl : public FixedText +{ +private: + long m_nGroupHeight; + +protected: + virtual void DataChanged( const DataChangedEvent& rDCEvt ); + +public: + SvxExtFixedText_Impl(Window* pParent, const ResId& rResId) : + FixedText(pParent, rResId), m_nGroupHeight(0) {} + + inline long GetGroupHeight() { return m_nGroupHeight; } + inline void SetGroupHeight( long _nHeight ) { m_nGroupHeight = _nHeight; } +}; + +/* -----------------------------25.03.2002 15:48------------------------------ + + ---------------------------------------------------------------------------*/ +class ColorConfigCtrl_Impl; +class ColorConfigWindow_Impl : public Window +{ + friend class ColorConfigCtrl_Impl; + Window aGeneralBackWN; + SvxExtFixedText_Impl aGeneralFT; + FixedText aDocColorFT; + ColorListBox aDocColorLB; + Window aDocColorWN; + CheckBox aDocBoundCB; + ColorListBox aDocBoundLB; + Window aDocBoundWN; + FixedText aAppBackFT; + ColorListBox aAppBackLB; + Window aAppBackWN; + CheckBox aObjBoundCB; + ColorListBox aObjBoundLB; + Window aObjBoundWN; + CheckBox aTableBoundCB; + ColorListBox aTableBoundLB; + Window aTableBoundWN; + FixedText aFontColorFT; + ColorListBox aFontColorLB; + Window aFontColorWN; + CheckBox aLinksCB; + ColorListBox aLinksLB; + Window aLinksWN; + CheckBox aLinksVisitedCB; + ColorListBox aLinksVisitedLB; + Window aLinksVisitedWN; + FixedText aSpellFT; + ColorListBox aSpellLB; + Window aSpellWN; + FixedText aSmarttagsFT; + ColorListBox aSmarttagsLB; + Window aSmarttagsWN; + Window aWriterBackWN; + SvxExtFixedText_Impl aWriterFT; + FixedText aWrtTextGridFT; + ColorListBox aWrtTextGridLB; + Window aWrtTextGridWN; + CheckBox aWrtFieldCB; + ColorListBox aWrtFieldLB; + Window aWrtFieldWN; + CheckBox aWrtIdxShadingBackCB; + ColorListBox aWrtIdxShadingBackLB; + Window aWrtIdxShadingBackWN; + FixedText aWrtScriptIndicatorFT; + ColorListBox aWrtScriptIndicatorLB; + Window aWrtScriptIndicatorWN; + CheckBox aWrtSectionBoundCB; + ColorListBox aWrtSectionBoundLB; + Window aWrtSectionBoundWN; + FixedText aWrtPageBreaksFT; + ColorListBox aWrtPageBreaksLB; + Window aWrtPageBreaksWN; + FixedText aWrtDirectCrsrFT; + ColorListBox aWrtDirectCrsrLB; + Window aWrtDirectCrsrWN; + Window aHTMLBackWN; + SvxExtFixedText_Impl aHTMLFT; + FixedText aHTMLSGMLFT; + ColorListBox aHTMLSGMLLB; + Window aHTMLSGMLWN; + FixedText aHTMLCommentFT; + ColorListBox aHTMLCommentLB; + Window aHTMLCommentWN; + FixedText aHTMLKeywdFT; + ColorListBox aHTMLKeywdLB; + Window aHTMLKeywdWN; + FixedText aHTMLUnknownFT; + ColorListBox aHTMLUnknownLB; + Window aHTMLUnknownWN; + Window aCalcBackWN; + SvxExtFixedText_Impl aCalcFT; + FixedText aCalcGridFT; + ColorListBox aCalcGridLB; + Window aCalcGridWN; + FixedText aCalcPageBreakFT; + ColorListBox aCalcPageBreakLB; + Window aCalcPageBreakWN; + FixedText aCalcPageBreakManualFT; + ColorListBox aCalcPageBreakManualLB; + Window aCalcPageBreakManualWN; + FixedText aCalcPageBreakAutoFT; + ColorListBox aCalcPageBreakAutoLB; + Window aCalcPageBreakAutoWN; + FixedText aCalcDetectiveFT; + ColorListBox aCalcDetectiveLB; + Window aCalcDetectiveWN; + FixedText aCalcDetectiveErrorFT; + ColorListBox aCalcDetectiveErrorLB; + Window aCalcDetectiveErrorWN; + FixedText aCalcReferenceFT; + ColorListBox aCalcReferenceLB; + Window aCalcReferenceWN; + FixedText aCalcNotesBackFT; + ColorListBox aCalcNotesBackLB; + Window aCalcNotesBackWN; + Window aDrawBackWN; + SvxExtFixedText_Impl aDrawFT; + FixedText aDrawGridFT; + ColorListBox aDrawGridLB; + Window aDrawGridWN; + Window aBasicBackWN; + SvxExtFixedText_Impl aBasicFT; + FixedText aBasicIdentifierFT; + ColorListBox aBasicIdentifierLB; + Window aBasicIdentifierWN; + FixedText aBasicCommentFT; + ColorListBox aBasicCommentLB; + Window aBasicCommentWN; + FixedText aBasicNumberFT; + ColorListBox aBasicNumberLB; + Window aBasicNumberWN; + FixedText aBasicStringFT; + ColorListBox aBasicStringLB; + Window aBasicStringWN; + FixedText aBasicOperatorFT; + ColorListBox aBasicOperatorLB; + Window aBasicOperatorWN; + FixedText aBasicKeywordFT; + ColorListBox aBasicKeywordLB; + Window aBasicKeywordWN; + FixedText aBasicErrorFT; + ColorListBox aBasicErrorLB; + Window aBasicErrorWN; + Window aSQLBackWN; + SvxExtFixedText_Impl aSQLFT; + FixedText aSQLIdentifierFT; + ColorListBox aSQLIdentifierLB; + Window aSQLIdentifierWN; + FixedText aSQLNumberFT; + ColorListBox aSQLNumberLB; + Window aSQLNumberWN; + FixedText aSQLStringFT; + ColorListBox aSQLStringLB; + Window aSQLStringWN; + FixedText aSQLOperatorFT; + ColorListBox aSQLOperatorLB; + Window aSQLOperatorWN; + FixedText aSQLKeywordFT; + ColorListBox aSQLKeywordLB; + Window aSQLKeywordWN; + FixedText aSQLParameterFT; + ColorListBox aSQLParameterLB; + Window aSQLParameterWN; + FixedText aSQLCommentFT; + ColorListBox aSQLCommentLB; + Window aSQLCommentWN; + + ::std::vector< SvxExtFixedText_Impl*> aChapters; + ::std::vector< Window* > aChapterWins; + ::std::vector< FixedText* > aFixedTexts; + ::std::vector< CheckBox* > aCheckBoxes; + ::std::vector< ColorListBox* > aColorBoxes; + ::std::vector< Window* > aWindows; // [ColorConfigEntryCount] + ::std::vector< ::boost::shared_ptr<SvxExtFixedText_Impl> > m_aExtensionTitles; + + SvtModuleOptions m_aModuleOptions; + + void SetNewPosition( sal_Int32 _nFeature, Window* _pWin ); + + virtual void Command( const CommandEvent& rCEvt ); + virtual void DataChanged( const DataChangedEvent& rDCEvt ); + +public: + ColorConfigWindow_Impl(Window* pParent, const ResId& rResId); + ~ColorConfigWindow_Impl(); + + inline const SvtModuleOptions& GetModuleOptions() const { return m_aModuleOptions; } +}; + +sal_Bool lcl_isGroupVisible( sal_Int32 _nGroup, const SvtModuleOptions& _rModOptions ) +{ + sal_Bool bRet = sal_True; + + switch ( _nGroup ) + { + case GROUP_WRITER : + case GROUP_HTML : + { + bRet = _rModOptions.IsModuleInstalled( SvtModuleOptions::E_SWRITER ); + break; + } + + case GROUP_CALC : + { + bRet = _rModOptions.IsModuleInstalled( SvtModuleOptions::E_SCALC ); + break; + } + + case GROUP_DRAW : + { + bRet = ( _rModOptions.IsModuleInstalled( SvtModuleOptions::E_SDRAW ) || + _rModOptions.IsModuleInstalled( SvtModuleOptions::E_SIMPRESS ) ); + break; + } + case GROUP_SQL : + { + bRet = _rModOptions.IsModuleInstalled( SvtModuleOptions::E_SDATABASE ); + break; + } + } + + return bRet; +} + +sal_Int16 lcl_getGroup( sal_Int32 _nFeature ) +{ + if ( _nFeature >= ColorConfigEntryCount ) + return GROUP_COUNT; // feature of an extension + + sal_Int16 nRet = GROUP_UNKNOWN; + + switch ( _nFeature ) + { + case DOCCOLOR : + case DOCBOUNDARIES : + case APPBACKGROUND : + case OBJECTBOUNDARIES : + case TABLEBOUNDARIES : + case FONTCOLOR : + case LINKS : + case LINKSVISITED : + case ANCHOR : + case SPELL : + case SMARTTAGS : + { + nRet = GROUP_GENERAL; + break; + } + + case WRITERTEXTGRID : + case WRITERFIELDSHADINGS : + case WRITERIDXSHADINGS : + case WRITERDIRECTCURSOR : + case WRITERSCRIPTINDICATOR : + case WRITERSECTIONBOUNDARIES : + case WRITERPAGEBREAKS : + { + nRet = GROUP_WRITER; + break; + } + + case HTMLSGML : + case HTMLCOMMENT : + case HTMLKEYWORD : + case HTMLUNKNOWN : + { + nRet = GROUP_HTML; + break; + } + + case CALCGRID : + case CALCPAGEBREAK : + case CALCPAGEBREAKMANUAL : + case CALCPAGEBREAKAUTOMATIC : + case CALCDETECTIVE : + case CALCDETECTIVEERROR : + case CALCREFERENCE : + case CALCNOTESBACKGROUND : + { + nRet = GROUP_CALC; + break; + } + + case DRAWGRID : + case DRAWDRAWING : + case DRAWFILL : + { + nRet = GROUP_DRAW; + break; + } + + case BASICIDENTIFIER : + case BASICCOMMENT : + case BASICNUMBER : + case BASICSTRING : + case BASICOPERATOR : + case BASICKEYWORD : + case BASICERROR : + { + nRet = GROUP_BASIC; + break; + } + case SQLIDENTIFIER : + case SQLNUMBER: + case SQLSTRING: + case SQLOPERATOR: + case SQLKEYWORD: + case SQLPARAMETER: + case SQLCOMMENT: + { + nRet = GROUP_SQL; + break; + } + } + return nRet; +} + +/* -----------------------------25.03.2002 17:05------------------------------ + + ---------------------------------------------------------------------------*/ +ColorConfigWindow_Impl::ColorConfigWindow_Impl(Window* pParent, const ResId& rResId) : + Window(pParent, rResId), + aGeneralBackWN(this), + aGeneralFT(&aGeneralBackWN, ResId( FT_GENERAL, *rResId.GetResMgr() )), + aDocColorFT(this, ResId( FT_DOCCOLOR, *rResId.GetResMgr())), + aDocColorLB(this, ResId( LB_DOCCOLOR, *rResId.GetResMgr())), + aDocColorWN(this, ResId( WN_DOCCOLOR, *rResId.GetResMgr())), + aDocBoundCB(this, ResId( CB_DOCBOUND, *rResId.GetResMgr())), + aDocBoundLB(this, ResId( LB_DOCBOUND, *rResId.GetResMgr())), + aDocBoundWN(this, ResId( WN_DOCBOUND, *rResId.GetResMgr())), + aAppBackFT(this, ResId( FT_APPBACKGROUND, *rResId.GetResMgr())), + aAppBackLB(this, ResId( LB_APPBACKGROUND, *rResId.GetResMgr())), + aAppBackWN(this, ResId( WN_APPBACKGROUND, *rResId.GetResMgr())), + aObjBoundCB(this, ResId( CB_OBJECTBOUNDARIES, *rResId.GetResMgr())), + aObjBoundLB(this, ResId( LB_OBJECTBOUNDARIES, *rResId.GetResMgr())), + aObjBoundWN(this, ResId( WN_OBJECTBOUNDARIES, *rResId.GetResMgr())), + aTableBoundCB(this, ResId( CB_TABLEBOUNDARIES, *rResId.GetResMgr())), + aTableBoundLB(this, ResId( LB_TABLEBOUNDARIES, *rResId.GetResMgr())), + aTableBoundWN(this, ResId( WN_TABLEBOUNDARIES, *rResId.GetResMgr())), + aFontColorFT(this, ResId( FT_FONTCOLOR, *rResId.GetResMgr())), + aFontColorLB(this, ResId( LB_FONTCOLOR, *rResId.GetResMgr())), + aFontColorWN(this, ResId( WN_FONTCOLOR, *rResId.GetResMgr())), + aLinksCB(this, ResId( CB_LINKS, *rResId.GetResMgr())), + aLinksLB(this, ResId( LB_LINKS, *rResId.GetResMgr())), + aLinksWN(this, ResId( WN_LINKS, *rResId.GetResMgr())), + aLinksVisitedCB(this, ResId( CB_LINKSVISITED, *rResId.GetResMgr())), + aLinksVisitedLB(this, ResId( LB_LINKSVISITED, *rResId.GetResMgr())), + aLinksVisitedWN(this, ResId( WN_LINKSVISITED, *rResId.GetResMgr())), + aSpellFT(this, ResId( FT_SPELL, *rResId.GetResMgr())), + aSpellLB(this, ResId( LB_SPELL, *rResId.GetResMgr())), + aSpellWN(this, ResId( WN_SPELL, *rResId.GetResMgr())), + aSmarttagsFT(this, ResId( FT_SMARTTAGS, *rResId.GetResMgr() )), + aSmarttagsLB(this, ResId( LB_SMARTTAGS, *rResId.GetResMgr() )), + aSmarttagsWN(this, ResId( WN_SMARTTAGS, *rResId.GetResMgr() )), + aWriterBackWN(this), + aWriterFT(this, ResId(FT_WRITER, *rResId.GetResMgr())), + aWrtTextGridFT(this, ResId( FT_WRITERTEXTGRID, *rResId.GetResMgr())), + aWrtTextGridLB(this, ResId( LB_WRITERTEXTGRID, *rResId.GetResMgr())), + aWrtTextGridWN(this, ResId( WN_WRITERTEXTGRID, *rResId.GetResMgr())), + aWrtFieldCB(this, ResId( CB_WRITERFIELDSHADINGS, *rResId.GetResMgr())), + aWrtFieldLB(this, ResId( LB_WRITERFIELDSHADINGS, *rResId.GetResMgr())), + aWrtFieldWN(this, ResId( WN_WRITERFIELDSHADINGS, *rResId.GetResMgr())), + aWrtIdxShadingBackCB(this, ResId( CB_WRITERIDXSHADINGS, *rResId.GetResMgr())), + aWrtIdxShadingBackLB(this, ResId( LB_WRITERIDXSHADINGS, *rResId.GetResMgr())), + aWrtIdxShadingBackWN(this, ResId( WN_WRITERIDXSHADINGS, *rResId.GetResMgr())), + aWrtScriptIndicatorFT(this, ResId( FT_WRITERSCRIPTINDICATOR, *rResId.GetResMgr())), + aWrtScriptIndicatorLB(this, ResId( LB_WRITERSCRIPTINDICATOR, *rResId.GetResMgr())), + aWrtScriptIndicatorWN(this, ResId( WN_WRITERSCRIPTINDICATOR, *rResId.GetResMgr())), + aWrtSectionBoundCB(this, ResId( CB_WRITERSECTIONBOUNDARIES, *rResId.GetResMgr())), + aWrtSectionBoundLB(this, ResId( LB_WRITERSECTIONBOUNDARIES, *rResId.GetResMgr())), + aWrtSectionBoundWN(this, ResId( WN_WRITERSECTIONBOUNDARIES, *rResId.GetResMgr())), + aWrtPageBreaksFT(this, ResId( FT_WRITERPAGEBREAKS, *rResId.GetResMgr())), + aWrtPageBreaksLB(this, ResId( LB_WRITERPAGEBREAKS, *rResId.GetResMgr())), + aWrtPageBreaksWN(this, ResId( WN_WRITERPAGEBREAKS, *rResId.GetResMgr())), + aWrtDirectCrsrFT(this, ResId( FT_WRITERDIRECTCURSOR, *rResId.GetResMgr())), + aWrtDirectCrsrLB(this, ResId( LB_WRITERDIRECTCURSOR, *rResId.GetResMgr())), + aWrtDirectCrsrWN(this, ResId( WN_WRITERDIRECTCURSOR, *rResId.GetResMgr())), + aHTMLBackWN(this), + aHTMLFT(this, ResId( FT_HTML, *rResId.GetResMgr())), + aHTMLSGMLFT(this, ResId( FT_HTMLSGML, *rResId.GetResMgr())), + aHTMLSGMLLB(this, ResId( LB_HTMLSGML, *rResId.GetResMgr())), + aHTMLSGMLWN(this, ResId( WN_HTMLSGML, *rResId.GetResMgr())), + aHTMLCommentFT(this, ResId( FT_HTMLCOMMENT, *rResId.GetResMgr())), + aHTMLCommentLB(this, ResId( LB_HTMLCOMMENT, *rResId.GetResMgr())), + aHTMLCommentWN(this, ResId( WN_HTMLCOMMENT, *rResId.GetResMgr())), + aHTMLKeywdFT(this, ResId( FT_HTMLKEYWORD, *rResId.GetResMgr())), + aHTMLKeywdLB(this, ResId( LB_HTMLKEYWORD, *rResId.GetResMgr())), + aHTMLKeywdWN(this, ResId( WN_HTMLKEYWORD, *rResId.GetResMgr())), + aHTMLUnknownFT(this, ResId( FT_HTMLUNKNOWN, *rResId.GetResMgr())), + aHTMLUnknownLB(this, ResId( LB_HTMLUNKNOWN, *rResId.GetResMgr())), + aHTMLUnknownWN(this, ResId( WN_HTMLUNKNOWN, *rResId.GetResMgr())), + aCalcBackWN(this), + aCalcFT(this, ResId( FT_CALC, *rResId.GetResMgr())), + aCalcGridFT(this, ResId( FT_CALCGRID, *rResId.GetResMgr())), + aCalcGridLB(this, ResId( LB_CALCGRID, *rResId.GetResMgr())), + aCalcGridWN(this, ResId( WN_CALCGRID, *rResId.GetResMgr())), + aCalcPageBreakFT(this, ResId( FT_CALCPAGEBREAK, *rResId.GetResMgr())), + aCalcPageBreakLB(this, ResId( LB_CALCPAGEBREAK, *rResId.GetResMgr())), + aCalcPageBreakWN(this, ResId( WN_CALCPAGEBREAK, *rResId.GetResMgr())), + aCalcPageBreakManualFT(this, ResId( FT_CALCPAGEBREAKMANUAL, *rResId.GetResMgr())), + aCalcPageBreakManualLB(this, ResId( LB_CALCPAGEBREAKMANUAL, *rResId.GetResMgr())), + aCalcPageBreakManualWN(this, ResId( WN_CALCPAGEBREAKMANUAL, *rResId.GetResMgr())), + aCalcPageBreakAutoFT(this, ResId( FT_CALCPAGEBREAKAUTO, *rResId.GetResMgr())), + aCalcPageBreakAutoLB(this, ResId( LB_CALCPAGEBREAKAUTO, *rResId.GetResMgr())), + aCalcPageBreakAutoWN(this, ResId( WN_CALCPAGEBREAKAUTO, *rResId.GetResMgr())), + aCalcDetectiveFT(this, ResId( FT_CALCDETECTIVE, *rResId.GetResMgr())), + aCalcDetectiveLB(this, ResId( LB_CALCDETECTIVE, *rResId.GetResMgr())), + aCalcDetectiveWN(this, ResId( WN_CALCDETECTIVE, *rResId.GetResMgr())), + aCalcDetectiveErrorFT(this, ResId( FT_CALCDETECTIVEERROR, *rResId.GetResMgr())), + aCalcDetectiveErrorLB(this, ResId( LB_CALCDETECTIVEERROR, *rResId.GetResMgr())), + aCalcDetectiveErrorWN(this, ResId( WN_CALCDETECTIVEERROR, *rResId.GetResMgr())), + aCalcReferenceFT(this, ResId( FT_CALCREFERENCE, *rResId.GetResMgr())), + aCalcReferenceLB(this, ResId( LB_CALCREFERENCE, *rResId.GetResMgr())), + aCalcReferenceWN(this, ResId( WN_CALCREFERENCE, *rResId.GetResMgr())), + aCalcNotesBackFT(this, ResId( FT_CALCNOTESBACKGROUND, *rResId.GetResMgr())), + aCalcNotesBackLB(this, ResId( LB_CALCNOTESBACKGROUND, *rResId.GetResMgr())), + aCalcNotesBackWN(this, ResId( WN_CALCNOTESBACKGROUND, *rResId.GetResMgr())), + aDrawBackWN(this), + aDrawFT(this, ResId( FT_DRAW, *rResId.GetResMgr())), + aDrawGridFT(this, ResId( FT_DRAWGRID, *rResId.GetResMgr())), + aDrawGridLB(this, ResId( LB_DRAWGRID, *rResId.GetResMgr())), + aDrawGridWN(this, ResId( WN_DRAWGRID, *rResId.GetResMgr())), + aBasicBackWN(this), + aBasicFT(this, ResId( FT_BASIC, *rResId.GetResMgr())), + aBasicIdentifierFT(this, ResId( FT_BASICIDENTIFIER, *rResId.GetResMgr())), + aBasicIdentifierLB(this, ResId( LB_BASICIDENTIFIER, *rResId.GetResMgr())), + aBasicIdentifierWN(this, ResId( WN_BASICIDENTIFIER, *rResId.GetResMgr())), + aBasicCommentFT(this, ResId( FT_BASICCOMMENT, *rResId.GetResMgr())), + aBasicCommentLB(this, ResId( LB_BASICCOMMENT, *rResId.GetResMgr())), + aBasicCommentWN(this, ResId( WN_BASICCOMMENT, *rResId.GetResMgr())), + aBasicNumberFT(this, ResId( FT_BASICNUMBER, *rResId.GetResMgr())), + aBasicNumberLB(this, ResId( LB_BASICNUMBER, *rResId.GetResMgr())), + aBasicNumberWN(this, ResId( WN_BASICNUMBER, *rResId.GetResMgr())), + aBasicStringFT(this, ResId( FT_BASICSTRING, *rResId.GetResMgr())), + aBasicStringLB(this, ResId( LB_BASICSTRING, *rResId.GetResMgr())), + aBasicStringWN(this, ResId( WN_BASICSTRING, *rResId.GetResMgr())), + aBasicOperatorFT(this, ResId( FT_BASICOPERATOR, *rResId.GetResMgr())), + aBasicOperatorLB(this, ResId( LB_BASICOPERATOR, *rResId.GetResMgr())), + aBasicOperatorWN(this, ResId( WN_BASICOPERATOR, *rResId.GetResMgr())), + aBasicKeywordFT(this, ResId( FT_BASICKEYWORD, *rResId.GetResMgr())), + aBasicKeywordLB(this, ResId( LB_BASICKEYWORD, *rResId.GetResMgr())), + aBasicKeywordWN(this, ResId( WN_BASICKEYWORD, *rResId.GetResMgr())), + aBasicErrorFT(this, ResId( FT_BASICERROR, *rResId.GetResMgr())), + aBasicErrorLB(this, ResId( LB_BASICERROR, *rResId.GetResMgr())), + aBasicErrorWN(this, ResId( WN_BASICERROR, *rResId.GetResMgr())), + + aSQLBackWN(this), + aSQLFT(this, ResId( FT_SQL_COMMAND, *rResId.GetResMgr())), + aSQLIdentifierFT(this, ResId( FT_SQLIDENTIFIER, *rResId.GetResMgr())), + aSQLIdentifierLB(this, ResId( LB_SQLIDENTIFIER, *rResId.GetResMgr())), + aSQLIdentifierWN(this, ResId( WN_SQLIDENTIFIER, *rResId.GetResMgr())), + + aSQLNumberFT(this, ResId( FT_SQLNUMBER, *rResId.GetResMgr())), + aSQLNumberLB(this, ResId( LB_SQLNUMBER, *rResId.GetResMgr())), + aSQLNumberWN(this, ResId( WN_SQLNUMBER, *rResId.GetResMgr())), + + aSQLStringFT(this, ResId( FT_SQLSTRING, *rResId.GetResMgr())), + aSQLStringLB(this, ResId( LB_SQLSTRING, *rResId.GetResMgr())), + aSQLStringWN(this, ResId( WN_SQLSTRING, *rResId.GetResMgr())), + + aSQLOperatorFT(this, ResId( FT_SQLOPERATOR, *rResId.GetResMgr())), + aSQLOperatorLB(this, ResId( LB_SQLOPERATOR, *rResId.GetResMgr())), + aSQLOperatorWN(this, ResId( WN_SQLOPERATOR, *rResId.GetResMgr())), + + aSQLKeywordFT(this, ResId( FT_SQLKEYWORD, *rResId.GetResMgr())), + aSQLKeywordLB(this, ResId( LB_SQLKEYWORD, *rResId.GetResMgr())), + aSQLKeywordWN(this, ResId( WN_SQLKEYWORD, *rResId.GetResMgr())), + + aSQLParameterFT(this, ResId( FT_SQLPARAMETER, *rResId.GetResMgr())), + aSQLParameterLB(this, ResId( LB_SQLPARAMETER, *rResId.GetResMgr())), + aSQLParameterWN(this, ResId( WN_SQLPARAMETER, *rResId.GetResMgr())), + + aSQLCommentFT(this, ResId( FT_SQLCOMMENT, *rResId.GetResMgr())), + aSQLCommentLB(this, ResId( LB_SQLCOMMENT, *rResId.GetResMgr())), + aSQLCommentWN(this, ResId( WN_SQLCOMMENT, *rResId.GetResMgr())) +{ + aFixedTexts.resize(ColorConfigEntryCount); + aCheckBoxes.resize(ColorConfigEntryCount); + aColorBoxes.resize(ColorConfigEntryCount); + aWindows.resize(ColorConfigEntryCount); + + aFixedTexts[DOCCOLOR ] = &aDocColorFT; + aCheckBoxes[DOCBOUNDARIES ] = &aDocBoundCB ; + aFixedTexts[APPBACKGROUND ] = &aAppBackFT; + aCheckBoxes[OBJECTBOUNDARIES ] = &aObjBoundCB ; + aCheckBoxes[TABLEBOUNDARIES ] = &aTableBoundCB ; + aFixedTexts[FONTCOLOR ] = &aFontColorFT ; + aCheckBoxes[LINKS ] = &aLinksCB ; + aCheckBoxes[LINKSVISITED ] = &aLinksVisitedCB ; + aFixedTexts[SPELL ]=& aSpellFT; + aFixedTexts[SMARTTAGS ]=& aSmarttagsFT; + aFixedTexts[WRITERTEXTGRID ]=& aWrtTextGridFT; + aCheckBoxes[WRITERFIELDSHADINGS ] = &aWrtFieldCB ; + aCheckBoxes[WRITERIDXSHADINGS ] = &aWrtIdxShadingBackCB ; + aFixedTexts[WRITERDIRECTCURSOR ]=& aWrtDirectCrsrFT; + aFixedTexts[WRITERSCRIPTINDICATOR ]=& aWrtScriptIndicatorFT; + aCheckBoxes[WRITERSECTIONBOUNDARIES ]=& aWrtSectionBoundCB; + aFixedTexts[HTMLSGML ]=& aHTMLSGMLFT; + aFixedTexts[HTMLCOMMENT ]=& aHTMLCommentFT; + aFixedTexts[HTMLKEYWORD ]=& aHTMLKeywdFT; + aFixedTexts[HTMLUNKNOWN ]=& aHTMLUnknownFT; + aFixedTexts[CALCGRID ] = &aCalcGridFT ; + aFixedTexts[CALCPAGEBREAK ] = &aCalcPageBreakFT; + aFixedTexts[CALCPAGEBREAKMANUAL ] = &aCalcPageBreakManualFT; + aFixedTexts[CALCPAGEBREAKAUTOMATIC ] = &aCalcPageBreakAutoFT; + aFixedTexts[CALCDETECTIVE ]=& aCalcDetectiveFT; + aFixedTexts[CALCDETECTIVEERROR ]=& aCalcDetectiveErrorFT; + aFixedTexts[CALCREFERENCE ]=& aCalcReferenceFT; + aFixedTexts[CALCNOTESBACKGROUND ]=& aCalcNotesBackFT; + aFixedTexts[WRITERPAGEBREAKS] = &aWrtPageBreaksFT; + aFixedTexts[DRAWGRID ] = &aDrawGridFT ; + aFixedTexts[BASICIDENTIFIER ] = &aBasicIdentifierFT; + aFixedTexts[BASICCOMMENT ] = &aBasicCommentFT; + aFixedTexts[BASICNUMBER ] = &aBasicNumberFT; + aFixedTexts[BASICSTRING ] = &aBasicStringFT; + aFixedTexts[BASICOPERATOR ] = &aBasicOperatorFT; + aFixedTexts[BASICKEYWORD ] = &aBasicKeywordFT; + aFixedTexts[BASICERROR ] = &aBasicErrorFT; + aFixedTexts[SQLIDENTIFIER ] = &aSQLIdentifierFT; + aFixedTexts[SQLNUMBER ] = &aSQLNumberFT; + aFixedTexts[SQLSTRING ] = &aSQLStringFT; + aFixedTexts[SQLOPERATOR ] = &aSQLOperatorFT; + aFixedTexts[SQLKEYWORD ] = &aSQLKeywordFT; + aFixedTexts[SQLPARAMETER ] = &aSQLParameterFT; + aFixedTexts[SQLCOMMENT ] = &aSQLCommentFT; + + aColorBoxes[DOCCOLOR ] = &aDocColorLB ; + aColorBoxes[DOCBOUNDARIES ] = &aDocBoundLB ; + aColorBoxes[APPBACKGROUND ] = &aAppBackLB ; + aColorBoxes[OBJECTBOUNDARIES ] = &aObjBoundLB ; + aColorBoxes[TABLEBOUNDARIES ] = &aTableBoundLB ; + aColorBoxes[FONTCOLOR ] = &aFontColorLB ; + aColorBoxes[LINKS ] = &aLinksLB ; + aColorBoxes[LINKSVISITED ] = &aLinksVisitedLB ; + aColorBoxes[SPELL ] = &aSpellLB ; + aColorBoxes[SMARTTAGS ] = &aSmarttagsLB ; + aColorBoxes[WRITERTEXTGRID ] = &aWrtTextGridLB ; + aColorBoxes[WRITERFIELDSHADINGS ] = &aWrtFieldLB ; + aColorBoxes[WRITERIDXSHADINGS ] = &aWrtIdxShadingBackLB ; + aColorBoxes[WRITERDIRECTCURSOR ] = &aWrtDirectCrsrLB ; + aColorBoxes[WRITERSCRIPTINDICATOR ] = &aWrtScriptIndicatorLB ; + aColorBoxes[WRITERSECTIONBOUNDARIES ] = &aWrtSectionBoundLB ; + aColorBoxes[WRITERPAGEBREAKS] = &aWrtPageBreaksLB; + aColorBoxes[HTMLSGML ] = &aHTMLSGMLLB ; + aColorBoxes[HTMLCOMMENT ] = &aHTMLCommentLB ; + aColorBoxes[HTMLKEYWORD ] = &aHTMLKeywdLB ; + aColorBoxes[HTMLUNKNOWN ] = &aHTMLUnknownLB ; + aColorBoxes[CALCGRID ] = &aCalcGridLB ; + aColorBoxes[CALCPAGEBREAK ] = &aCalcPageBreakLB ; + aColorBoxes[CALCPAGEBREAKMANUAL ] = &aCalcPageBreakManualLB ; + aColorBoxes[CALCPAGEBREAKAUTOMATIC]= &aCalcPageBreakAutoLB ; + aColorBoxes[CALCDETECTIVE ] = &aCalcDetectiveLB ; + aColorBoxes[CALCDETECTIVEERROR ] = &aCalcDetectiveErrorLB ; + aColorBoxes[CALCREFERENCE ] = &aCalcReferenceLB ; + aColorBoxes[CALCNOTESBACKGROUND ] = &aCalcNotesBackLB ; + aColorBoxes[DRAWGRID ] = &aDrawGridLB ; + aColorBoxes[BASICIDENTIFIER ] = &aBasicIdentifierLB; + aColorBoxes[BASICCOMMENT ] = &aBasicCommentLB; + aColorBoxes[BASICNUMBER ] = &aBasicNumberLB; + aColorBoxes[BASICSTRING ] = &aBasicStringLB; + aColorBoxes[BASICOPERATOR ] = &aBasicOperatorLB; + aColorBoxes[BASICKEYWORD ] = &aBasicKeywordLB; + aColorBoxes[BASICERROR ] = &aBasicErrorLB; + aColorBoxes[SQLIDENTIFIER ] = &aSQLIdentifierLB; + aColorBoxes[SQLNUMBER ] = &aSQLNumberLB; + aColorBoxes[SQLSTRING ] = &aSQLStringLB; + aColorBoxes[SQLOPERATOR ] = &aSQLOperatorLB; + aColorBoxes[SQLKEYWORD ] = &aSQLKeywordLB; + aColorBoxes[SQLPARAMETER ] = &aSQLParameterLB; + aColorBoxes[SQLCOMMENT ] = &aSQLCommentLB; + + aWindows[DOCCOLOR ] = &aDocColorWN ; + aWindows[DOCBOUNDARIES ] = &aDocBoundWN ; + aWindows[APPBACKGROUND ] = &aAppBackWN ; + aWindows[OBJECTBOUNDARIES ] = &aObjBoundWN ; + aWindows[TABLEBOUNDARIES ] = &aTableBoundWN ; + aWindows[FONTCOLOR ] = &aFontColorWN ; + aWindows[LINKS ] = &aLinksWN ; + aWindows[LINKSVISITED ] = &aLinksVisitedWN ; + aWindows[SPELL ] = &aSpellWN ; + aWindows[SMARTTAGS ] = &aSmarttagsWN ; + aWindows[WRITERTEXTGRID ] = &aWrtTextGridWN ; + aWindows[WRITERFIELDSHADINGS ] = &aWrtFieldWN ; + aWindows[WRITERIDXSHADINGS ] = &aWrtIdxShadingBackWN ; + aWindows[WRITERDIRECTCURSOR ] = &aWrtDirectCrsrWN ; + aWindows[WRITERSCRIPTINDICATOR ] = &aWrtScriptIndicatorWN ; + aWindows[WRITERSECTIONBOUNDARIES ] = &aWrtSectionBoundWN ; + aWindows[WRITERPAGEBREAKS] = &aWrtPageBreaksWN; + aWindows[HTMLSGML ] = &aHTMLSGMLWN ; + aWindows[HTMLCOMMENT ] = &aHTMLCommentWN ; + aWindows[HTMLKEYWORD ] = &aHTMLKeywdWN ; + aWindows[HTMLUNKNOWN ] = &aHTMLUnknownWN ; + aWindows[CALCGRID ] = &aCalcGridWN ; + aWindows[CALCPAGEBREAK ] = &aCalcPageBreakWN ; + aWindows[CALCPAGEBREAKMANUAL ] = &aCalcPageBreakManualWN ; + aWindows[CALCPAGEBREAKAUTOMATIC] = &aCalcPageBreakAutoWN ; + aWindows[CALCDETECTIVE ] = &aCalcDetectiveWN ; + aWindows[CALCDETECTIVEERROR ] = &aCalcDetectiveErrorWN ; + aWindows[CALCREFERENCE ] = &aCalcReferenceWN ; + aWindows[CALCNOTESBACKGROUND ] = &aCalcNotesBackWN ; + aWindows[DRAWGRID ] = &aDrawGridWN ; + aWindows[BASICIDENTIFIER ] = &aBasicIdentifierWN; + aWindows[BASICCOMMENT ] = &aBasicCommentWN; + aWindows[BASICNUMBER ] = &aBasicNumberWN; + aWindows[BASICSTRING ] = &aBasicStringWN; + aWindows[BASICOPERATOR ] = &aBasicOperatorWN; + aWindows[BASICKEYWORD ] = &aBasicKeywordWN; + aWindows[BASICERROR ] = &aBasicErrorWN; + aWindows[SQLIDENTIFIER ] = &aSQLIdentifierWN; + aWindows[SQLNUMBER ] = &aSQLNumberWN; + aWindows[SQLSTRING ] = &aSQLStringWN; + aWindows[SQLOPERATOR ] = &aSQLOperatorWN; + aWindows[SQLKEYWORD ] = &aSQLKeywordWN; + aWindows[SQLPARAMETER ] = &aSQLParameterWN; + aWindows[SQLCOMMENT ] = &aSQLCommentWN; + + aChapters.push_back(&aGeneralFT); aChapterWins.push_back(&aGeneralBackWN); + aChapters.push_back(&aWriterFT); aChapterWins.push_back(&aWriterBackWN); + aChapters.push_back(&aHTMLFT); aChapterWins.push_back(&aHTMLBackWN); + aChapters.push_back(&aCalcFT); aChapterWins.push_back(&aCalcBackWN); + aChapters.push_back(&aDrawFT); aChapterWins.push_back(&aDrawBackWN); + aChapters.push_back(&aBasicFT); aChapterWins.push_back(&aBasicBackWN); + aChapters.push_back(&aSQLFT); aChapterWins.push_back(&aSQLBackWN); + + // calculate heights of groups which can be hidden + aChapters[GROUP_WRITER ]->SetGroupHeight( aChapters[GROUP_HTML]->GetPosPixel().Y() - aChapters[GROUP_WRITER]->GetPosPixel().Y() ); + aChapters[GROUP_HTML ]->SetGroupHeight( aChapters[GROUP_CALC]->GetPosPixel().Y() - aChapters[GROUP_HTML]->GetPosPixel().Y() ); + aChapters[GROUP_CALC ]->SetGroupHeight( aChapters[GROUP_DRAW]->GetPosPixel().Y() - aChapters[GROUP_CALC]->GetPosPixel().Y() ); + aChapters[GROUP_DRAW ]->SetGroupHeight( aChapters[GROUP_BASIC]->GetPosPixel().Y() - aChapters[GROUP_DRAW]->GetPosPixel().Y() ); + aChapters[GROUP_BASIC ]->SetGroupHeight( aChapters[GROUP_SQL]->GetPosPixel().Y() - aChapters[GROUP_BASIC]->GetPosPixel().Y() ); + + ExtendedColorConfig aExtConfig; + sal_Int32 nExtCount = aExtConfig.GetComponentCount(); + if ( nExtCount ) + { + // calculate position behind last chapter + sal_Int32 nLastY = aSQLCommentWN.GetPosPixel().Y() + aSQLCommentWN.GetSizePixel().Height(); + nLastY = nLastY + LogicToPixel( Size( 0, 3 ), MAP_APPFONT ).Height(); + // to calculate the number of lines + sal_Int32 nHeight = LogicToPixel( Size( 0, _LINE_HEIGHT ), MAP_APPFONT ).Height(); + sal_Int32 nLineNum = nLastY / nHeight; + + Point aFixedPos = LogicToPixel( Point( _FT_XPOS, nLineNum * _LINE_HEIGHT ), MAP_APPFONT ); + Point aLBPos = LogicToPixel( Point( _LB_XPOS, nLineNum * _LINE_HEIGHT ), MAP_APPFONT ); + Size aFixedSize = LogicToPixel( Size( _FT_WIDTH , _FT_HEIGHT ), MAP_APPFONT ); + Size aLBSize = LogicToPixel( Size( _LB_WIDTH , _LB_HEIGHT ), MAP_APPFONT ); + Size aWinSize = LogicToPixel( Size( _WN_WIDTH , _WN_HEIGHT ), MAP_APPFONT ); + + for (sal_Int32 j = 0; j < nExtCount; ++j) + { + ::rtl::OUString sComponentName = aExtConfig.GetComponentName(j); + aChapterWins.push_back(new Window(this)); + ::boost::shared_ptr<SvxExtFixedText_Impl> pTitle(new SvxExtFixedText_Impl(this,ResId(FT_SQL_COMMAND, *rResId.GetResMgr()))); + m_aExtensionTitles.push_back(pTitle); + pTitle->SetPosSizePixel(LogicToPixel( Point( _FT_XPOS, nLineNum * _LINE_HEIGHT ), MAP_APPFONT ),aFixedSize); + pTitle->SetText(aExtConfig.GetComponentDisplayName(sComponentName)); + aChapters.push_back(pTitle.get()); + ++nLineNum; + sal_Int32 nColorCount = aExtConfig.GetComponentColorCount(sComponentName); + for (sal_Int32 i = 0; i < nColorCount; ++i,++nLineNum) + { + ExtendedColorConfigValue aColorEntry = aExtConfig.GetComponentColorConfigValue(sComponentName,i); + FixedText* pFixedText = new FixedText(this,ResId(FT_BASICERROR, *rResId.GetResMgr())); + pFixedText->SetPosSizePixel(LogicToPixel( Point( _FT_XPOS, nLineNum * _LINE_HEIGHT ), MAP_APPFONT ),aFixedSize); + pFixedText->SetText(aColorEntry.getDisplayName()); + aFixedTexts.push_back(pFixedText); + aCheckBoxes.push_back(NULL); // no checkboxes + ColorListBox* pColorBox = new ColorListBox(this,ResId(LB_BASICERROR, *rResId.GetResMgr())); + pColorBox->SetPosSizePixel(LogicToPixel( Point( _LB_XPOS, nLineNum * _LINE_HEIGHT ), MAP_APPFONT ),aLBSize); + aColorBoxes.push_back(pColorBox); + Window* pWin = new Window(this,ResId(WN_BASICERROR, *rResId.GetResMgr())); + pWin->SetPosSizePixel(LogicToPixel( Point( _WN_XPOS, nLineNum * _LINE_HEIGHT ), MAP_APPFONT ),aWinSize); + aWindows.push_back(pWin); + } // for (sal_Int32 i = 0; i < nExtCount; ++i,++nLineNum) + } + } + + FreeResource(); + + Color TempColor(COL_TRANSPARENT); + Wallpaper aTransparentWall(TempColor); + sal_Int32 nWinWidth = GetSizePixel().Width(); + sal_Int32 nFTHeight = aChapters[0]->GetSizePixel().Height(); + Color aBackColor; + const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); + sal_Bool bHighContrast = rStyleSettings.GetHighContrastMode(); + if ( bHighContrast ) + aBackColor = rStyleSettings.GetShadowColor(); + else + aBackColor = Color( COL_LIGHTGRAY); + sal_Int32 nCount = aChapterWins.size(); + for(sal_Int32 i = 0; i < nCount; ++i) + { + if ( lcl_isGroupVisible( i, m_aModuleOptions ) ) + { + Font aFont = aChapters[i]->GetFont(); + aFont.SetWeight(WEIGHT_BOLD); + aChapters[i]->SetFont(aFont); + aChapters[i]->SetBackground(aTransparentWall); + aChapterWins[i]->SetPosSizePixel( Point(0, aChapters[i]->GetPosPixel().Y()), + Size(nWinWidth, nFTHeight)); + aChapterWins[i]->SetBackground(Wallpaper(aBackColor)); + aChapterWins[i]->Show(); + } + else + { + aChapters[i]->Hide(); + aChapterWins[i]->Hide(); + } + } + Color aTextColor; + sal_Bool bSetTextColor = sal_False; + //#104195# when the window color is the same as the text color it has to be changed + Color aWinCol = rStyleSettings.GetWindowColor(); + Color aRCheckCol = rStyleSettings.GetRadioCheckTextColor(); + if(aWinCol == aRCheckCol ) + { + bSetTextColor = sal_True; + aRCheckCol.Invert(); + //if inversion didn't work (gray) then it's set to black + if(aRCheckCol == aWinCol) + aRCheckCol = Color(COL_BLACK); + } // if(aWinCol == aRCheckCol ) + nCount = aFixedTexts.size(); + sal_Int16 nGroup = GROUP_UNKNOWN; + for( sal_Int32 i = 0; i < nCount; i++ ) + { + if(ANCHOR == i) + continue; + sal_Int16 nNewGroup = lcl_getGroup(i); + sal_Bool bShow = lcl_isGroupVisible( nNewGroup, m_aModuleOptions ); + + if ( nNewGroup > nGroup ) + { + nGroup = nNewGroup; + if ( bShow && nGroup >= GROUP_CALC ) + { + SetNewPosition( i, aChapters[nGroup] ); + SetNewPosition( i, aChapterWins[nGroup] ); + } + } + if(aCheckBoxes[i]) + { + if ( bShow ) + SetNewPosition( i, aCheckBoxes[i] ); + else + aCheckBoxes[i]->Hide(); + aCheckBoxes[i]->SetBackground(aTransparentWall); + aCheckBoxes[i]->SetHelpId( aColorCBHids[i] ); + if(bSetTextColor) + aCheckBoxes[i]->SetTextColor(aRCheckCol); + } + if(aFixedTexts[i]) + { + if ( bShow ) + SetNewPosition( i, aFixedTexts[i] ); + else + aFixedTexts[i]->Hide(); + aFixedTexts[i]->SetBackground(aTransparentWall); + if(bSetTextColor) + aFixedTexts[i]->SetTextColor(aRCheckCol); + } + if(aWindows[i]) + { + if ( bShow ) + SetNewPosition( i, aWindows[i] ); + else + aWindows[i]->Hide(); + aWindows[i]->SetBorderStyle(WINDOW_BORDER_MONO); + } + + if ( aColorBoxes[i] ) + { + if ( bShow ) + SetNewPosition( i, aColorBoxes[i] ); + else + aColorBoxes[i]->Hide(); + } + } + + XColorTable aColorTable( SvtPathOptions().GetPalettePath() ); + aColorBoxes[0]->InsertAutomaticEntry(); + for( sal_Int32 i = 0; i < aColorTable.Count(); i++ ) + { + XColorEntry* pEntry = aColorTable.GetColor(i); + aColorBoxes[0]->InsertEntry( pEntry->GetColor(), pEntry->GetName() ); + } + + aColorBoxes[0]->SetHelpId( aColorLBHids[0] ); + + OSL_ENSURE( nCount < sal_Int32(sizeof(aColorLBHids)/sizeof(aColorLBHids[0])), "too few helpIDs for color listboxes" ); + for( sal_Int32 i = 1; i < nCount; i++ ) + { + if(aColorBoxes[i]) + { + aColorBoxes[i]->CopyEntries( *aColorBoxes[0] ); + if( i < sal_Int32(sizeof(aColorLBHids)/sizeof(aColorLBHids[0])) ) + aColorBoxes[i]->SetHelpId( aColorLBHids[i] ); + } + } +} +/* -----------------------------27.03.2002 11:04------------------------------ + + ---------------------------------------------------------------------------*/ +ColorConfigWindow_Impl::~ColorConfigWindow_Impl() +{ + aChapters.clear(); + ::std::vector< SvxExtFixedText_Impl*>().swap(aChapters); + + + sal_Int32 nCount = aFixedTexts.size(); + for (sal_Int32 i = ColorConfigEntryCount; i < nCount; ++i) + { + delete aFixedTexts[i]; + delete aCheckBoxes[i]; + delete aColorBoxes[i]; + delete aWindows[i]; + } + for (sal_uInt32 i = GROUP_COUNT; i < aChapterWins.size(); ++i) + delete aChapterWins[i]; + aChapterWins.clear(); + ::std::vector< Window*>().swap(aChapterWins); +} +/* -----------------------------2002/06/20 12:48------------------------------ + + ---------------------------------------------------------------------------*/ +void ColorConfigWindow_Impl::DataChanged( const DataChangedEvent& rDCEvt ) +{ + Window::DataChanged( rDCEvt ); + if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && + (rDCEvt.GetFlags() & SETTINGS_STYLE) ) + { + const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); + sal_Bool bHighContrast = rStyleSettings.GetHighContrastMode(); + Color aBackColor( bHighContrast ? COL_TRANSPARENT : COL_LIGHTGRAY); + ::std::vector< Window* >::iterator aIter = aChapterWins.begin(); + ::std::vector< Window* >::iterator aEnd = aChapterWins.end(); + for(;aIter != aEnd; ++aIter ) + (*aIter)->SetBackground(Wallpaper(aBackColor)); + SetBackground(Wallpaper(rStyleSettings.GetWindowColor())); + } +} +/* -----------------------------2002/06/26 10:49------------------------------ + + ---------------------------------------------------------------------------*/ +void SvxExtFixedText_Impl::DataChanged(const DataChangedEvent& rDCEvt) +{ + FixedText::DataChanged(rDCEvt); + Color TempColor(COL_TRANSPARENT); + Wallpaper aTransparentWall(TempColor); + if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && + (rDCEvt.GetFlags() & SETTINGS_STYLE) ) + { + Font aFont = GetFont(); + aFont.SetWeight(WEIGHT_BOLD); + SetFont(aFont); + SetBackground(aTransparentWall); + } +} + +void ColorConfigWindow_Impl::SetNewPosition( sal_Int32 _nFeature, Window* _pWin ) +{ + DBG_ASSERT( _pWin, "ColorConfigWindow_Impl::SetNewPosition(): no window" ); + + // calculate the overall height of the invisible groups + long nDelta = 0; + sal_Int16 nGroup = lcl_getGroup( _nFeature ) - 1; + while ( nGroup > 0 ) // GROUP_GENERAL (0) is always visible + { + if ( !lcl_isGroupVisible( nGroup, m_aModuleOptions ) ) + nDelta += aChapters[nGroup]->GetGroupHeight(); + nGroup--; + } + + // move this window to its new position + if ( nDelta > 0 ) + { + Point aPos = _pWin->GetPosPixel(); + aPos.Y() -= nDelta; + _pWin->SetPosPixel( aPos ); + } +} + +/* -----------------------------08.04.2002 17:10------------------------------ + + ---------------------------------------------------------------------------*/ +void ColorConfigWindow_Impl::Command( const CommandEvent& rCEvt ) +{ + GetParent()->Command(rCEvt); +} +/* -----------------------------25.03.2002 10:44------------------------------ + + ---------------------------------------------------------------------------*/ +class ColorConfigCtrl_Impl : public Control +{ + HeaderBar aHeaderHB; + ScrollBar aVScroll; + + String sOn; + String sUIElem; + String sColSetting; + String sPreview; + ColorConfigWindow_Impl aScrollWindow; + + EditableColorConfig* pColorConfig; + EditableExtendedColorConfig* pExtColorConfig; + + long nScrollPos; + + DECL_LINK(ScrollHdl, ScrollBar*); + DECL_LINK(ClickHdl, CheckBox*); + DECL_LINK(ColorHdl, ColorListBox*); + DECL_LINK(ControlFocusHdl, Control*); + + virtual long PreNotify( NotifyEvent& rNEvt ); + virtual void Command( const CommandEvent& rCEvt ); + virtual void DataChanged( const DataChangedEvent& rDCEvt ); +public: + ColorConfigCtrl_Impl(Window* pParent, const ResId& rResId ); + ~ColorConfigCtrl_Impl(); + + void SetConfig(EditableColorConfig& rConfig) {pColorConfig = &rConfig;} + void SetExtendedConfig(EditableExtendedColorConfig& rConfig) {pExtColorConfig = &rConfig;} + void Update(); + sal_Int32 GetScrollPosition() {return aVScroll.GetThumbPos();} + void SetScrollPosition(sal_Int32 nSet) + { + aVScroll.SetThumbPos(nSet); + ScrollHdl(&aVScroll); + } +}; +/* -----------------------------25.03.2002 17:09------------------------------ + + ---------------------------------------------------------------------------*/ +ColorConfigCtrl_Impl::ColorConfigCtrl_Impl( + Window* pParent, const ResId& rResId) : + Control(pParent, rResId), + + + aHeaderHB(this, WB_BUTTONSTYLE | WB_BOTTOMBORDER), + aVScroll(this, ResId(VB_VSCROLL, *rResId.GetResMgr())), + sOn( ResId(ST_ON, *rResId.GetResMgr())), + sUIElem( ResId(ST_UIELEM, *rResId.GetResMgr())), + sColSetting( ResId(ST_COLSET, *rResId.GetResMgr())), + sPreview( ResId(ST_PREVIEW, *rResId.GetResMgr())), + aScrollWindow(this, ResId(WN_SCROLL, *rResId.GetResMgr())), + + pColorConfig(0), + pExtColorConfig(0), + nScrollPos(0) +{ + FreeResource(); + + const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); + aScrollWindow.SetBackground(Wallpaper(rStyleSettings.GetFieldColor())); + aScrollWindow.SetHelpId( HID_OPTIONS_COLORCONFIG_COLORLIST_WIN ); + aVScroll.EnableDrag(); + aVScroll.Show(); + aHeaderHB.SetPosSizePixel( + Point(0,0), + Size(GetOutputSizePixel().Width(), aVScroll.GetPosPixel().Y())); + sal_Int32 nFirstWidth = aScrollWindow.aGeneralFT.GetPosPixel().X(); + sal_Int32 nSecondWidth = aScrollWindow.aColorBoxes[0]->GetPosPixel().X() - nFirstWidth; + sal_Int32 nThirdWidth = aScrollWindow.aWindows[0]->GetPosPixel().X() - nFirstWidth - nSecondWidth; + + const WinBits nHeadBits = HIB_VCENTER | HIB_FIXED| HIB_FIXEDPOS; + aHeaderHB.InsertItem( 1, sOn, nFirstWidth, (sal_uInt16)nHeadBits|HIB_CENTER); + aHeaderHB.InsertItem( 2, sUIElem, nSecondWidth, (sal_uInt16)nHeadBits|HIB_LEFT); + aHeaderHB.InsertItem( 3, sColSetting, nThirdWidth, (sal_uInt16)nHeadBits|HIB_LEFT); + aHeaderHB.InsertItem( 4, sPreview, + aHeaderHB.GetSizePixel().Width() - nFirstWidth - nSecondWidth - nThirdWidth, (sal_uInt16)nHeadBits|HIB_LEFT); + aHeaderHB.Show(); + + aVScroll.SetRangeMin(0); + sal_Int32 nScrollOffset = aScrollWindow.aColorBoxes[1]->GetPosPixel().Y() - aScrollWindow.aColorBoxes[0]->GetPosPixel().Y(); + sal_Int32 nVisibleEntries = aScrollWindow.GetSizePixel().Height() / nScrollOffset; + + aVScroll.SetRangeMax(aScrollWindow.aCheckBoxes.size() + aScrollWindow.aChapters.size() ); + // static: minus three for ANCHOR, DRAWFILL and DRAWDRAWING + aVScroll.SetRangeMax( aVScroll.GetRangeMax() - 3 ); + // dynamic: calculate the hidden lines + long nInvisibleLines = 0; + sal_Int16 nGroup = GROUP_UNKNOWN; + sal_Int32 nCount = aScrollWindow.aCheckBoxes.size(); + for ( sal_Int32 i = 0; i < nCount; i++ ) + { + if ( ANCHOR == i || DRAWFILL == i || DRAWDRAWING == i ) // not used at the moment + continue; + sal_Int16 nNewGroup = lcl_getGroup(i); + sal_Bool bVisible = lcl_isGroupVisible( nNewGroup, aScrollWindow.GetModuleOptions() ); + if ( !bVisible ) + nInvisibleLines++; + if ( nNewGroup > nGroup ) + { + nGroup = nNewGroup; + if ( !bVisible ) + nInvisibleLines++; + } + } + aVScroll.SetRangeMax( aVScroll.GetRangeMax() - nInvisibleLines ); + + aVScroll.SetPageSize( nVisibleEntries - 1 ); + aVScroll.SetVisibleSize(nVisibleEntries); + Link aScrollLink = LINK(this, ColorConfigCtrl_Impl, ScrollHdl); + aVScroll.SetScrollHdl(aScrollLink); + aVScroll.SetEndScrollHdl(aScrollLink); + + Link aCheckLink = LINK(this, ColorConfigCtrl_Impl, ClickHdl); + Link aColorLink = LINK(this, ColorConfigCtrl_Impl, ColorHdl); + Link aGetFocusLink = LINK(this, ColorConfigCtrl_Impl, ControlFocusHdl); + for( sal_Int16 i = 0; i < nCount; i++ ) + { + if(aScrollWindow.aColorBoxes[i]) + { + aScrollWindow.aColorBoxes[i]->SetSelectHdl(aColorLink); + aScrollWindow.aColorBoxes[i]->SetGetFocusHdl(aGetFocusLink); + } + if(aScrollWindow.aCheckBoxes[i]) + { + aScrollWindow.aCheckBoxes[i]->SetClickHdl(aCheckLink); + aScrollWindow.aCheckBoxes[i]->SetGetFocusHdl(aGetFocusLink); + } + } +} +/* -----------------------------27.03.2002 10:46------------------------------ + + ---------------------------------------------------------------------------*/ +ColorConfigCtrl_Impl::~ColorConfigCtrl_Impl() +{ +} +/* -----------------------------25.03.2002 17:19------------------------------ + + ---------------------------------------------------------------------------*/ +void ColorConfigCtrl_Impl::Update() +{ + DBG_ASSERT(pColorConfig, "Configuration not set" ); + sal_Int32 i; + for( i = 0; i < ColorConfigEntryCount; i++ ) + { + if(ANCHOR == i) + continue; + const ColorConfigValue& rColorEntry = pColorConfig->GetColorValue(ColorConfigEntry(i)); + if(COL_AUTO == (sal_uInt32)rColorEntry.nColor) + { + if(aScrollWindow.aColorBoxes[i]) + aScrollWindow.aColorBoxes[i]->SelectEntryPos(0); + if(aScrollWindow.aWindows[i]) + aScrollWindow.aWindows[i]->SetBackground( + Wallpaper(ColorConfig::GetDefaultColor((ColorConfigEntry) i))); + } + else + { + Color aColor(rColorEntry.nColor); + if(aScrollWindow.aColorBoxes[i]) + aScrollWindow.aColorBoxes[i]->SelectEntry( aColor ); + if(aScrollWindow.aWindows[i]) + aScrollWindow.aWindows[i]->SetBackground(Wallpaper(aColor)); + } + if(aScrollWindow.aWindows[i]) + aScrollWindow.aWindows[i]->Invalidate(); + if(aScrollWindow.aCheckBoxes[i]) + aScrollWindow.aCheckBoxes[i]->Check(rColorEntry.bIsVisible); + } // for( i = 0; i < ColorConfigEntryCount; i++ ) + + + sal_Int32 nExtCount = pExtColorConfig->GetComponentCount(); + sal_Int32 nCount = aScrollWindow.aCheckBoxes.size(); + sal_Int32 nPos = 0; + i = ColorConfigEntryCount; + for (sal_Int32 j = 0; j < nExtCount; ++j) + { + ::rtl::OUString sComponentName = pExtColorConfig->GetComponentName(j); + sal_Int32 nColorCount = pExtColorConfig->GetComponentColorCount(sComponentName); + + for( sal_Int32 k = 0; i < nCount && k < nColorCount; ++i ,++nPos,++k) + { + if(aScrollWindow.aColorBoxes[i]) + { + ExtendedColorConfigValue aColorEntry = pExtColorConfig->GetComponentColorConfigValue(sComponentName,k); + Color aColor(aColorEntry.getColor()); + if(aColorEntry.getDefaultColor() == aColorEntry.getColor() ) + { + aScrollWindow.aColorBoxes[i]->SelectEntryPos(0); + } + else + { + aScrollWindow.aColorBoxes[i]->SelectEntry( aColor ); + } + if(aScrollWindow.aWindows[i]) + aScrollWindow.aWindows[i]->SetBackground(Wallpaper(aColor)); + + if(aScrollWindow.aWindows[i]) + aScrollWindow.aWindows[i]->Invalidate(); + } + } + } +} +/* -----------------------------26.03.2002 12:55------------------------------ + + ---------------------------------------------------------------------------*/ +sal_Bool lcl_MoveAndShow(Window* pWindow, long nOffset, long nMaxVisible, bool _bShow) +{ + sal_Bool bHide = sal_True; + if(pWindow) + { + Point aPos = pWindow->GetPosPixel(); + aPos.Y() += nOffset; + pWindow->SetPosPixel(aPos); + if ( _bShow ) + bHide = aPos.Y() > nMaxVisible || (aPos.Y() + pWindow->GetSizePixel().Height()) < 0; + pWindow->Show(!bHide); + } + return !bHide; +} +IMPL_LINK(ColorConfigCtrl_Impl, ScrollHdl, ScrollBar*, pScrollBar) +{ + aScrollWindow.SetUpdateMode(sal_True); + sal_Int16 i; + long nOffset = aScrollWindow.aColorBoxes[1]->GetPosPixel().Y() - aScrollWindow.aColorBoxes[0]->GetPosPixel().Y(); + nOffset *= (nScrollPos - pScrollBar->GetThumbPos()); + nScrollPos = pScrollBar->GetThumbPos(); + const long nWindowHeight = aScrollWindow.GetSizePixel().Height(); + sal_Int16 nFirstVisible = -1; + sal_Int16 nLastVisible = -1; + sal_Int32 nCount = aScrollWindow.aFixedTexts.size(); + for( i = 0; i < nCount; i++ ) + { + if(ANCHOR == i) + continue; + Point aPos; + //controls outside of the view need to be hidden to speed up accessibility tools + bool bShowCtrl = ( lcl_isGroupVisible( + lcl_getGroup(i), aScrollWindow.GetModuleOptions() ) != sal_False ); + lcl_MoveAndShow(aScrollWindow.aCheckBoxes[i], nOffset, nWindowHeight, bShowCtrl); + lcl_MoveAndShow(aScrollWindow.aFixedTexts[i], nOffset, nWindowHeight, bShowCtrl); + lcl_MoveAndShow(aScrollWindow.aWindows[i] , nOffset, nWindowHeight, bShowCtrl); + sal_Bool bShow = lcl_MoveAndShow(aScrollWindow.aColorBoxes[i], nOffset, nWindowHeight, bShowCtrl); + if(bShow) + { + if(nFirstVisible == -1) + nFirstVisible = i; + else + nLastVisible = i; + } + } + //show the one prior to the first visible and the first after the last visble control + //to enable KEY_TAB travelling + + if(nFirstVisible) + { + //skip gaps where no controls exist for the related ColorConfigEntry + do + --nFirstVisible; + while(!aScrollWindow.aCheckBoxes[nFirstVisible] && !aScrollWindow.aColorBoxes[nFirstVisible] && nFirstVisible >= 0); + + if ( lcl_isGroupVisible( + lcl_getGroup( nFirstVisible ), aScrollWindow.GetModuleOptions() ) != sal_False ) + { + if(aScrollWindow.aCheckBoxes[nFirstVisible]) + aScrollWindow.aCheckBoxes[nFirstVisible]->Show(); + if(aScrollWindow.aColorBoxes[nFirstVisible]) + aScrollWindow.aColorBoxes[nFirstVisible]->Show(); + } + } + + if(nLastVisible < nCount - 1) + { + nLastVisible++; + //skip gaps where no controls exist for the related ColorConfigEntry + while(!aScrollWindow.aCheckBoxes[nLastVisible] && !aScrollWindow.aColorBoxes[nLastVisible] && + nLastVisible < nCount - 1 ) + nLastVisible++; + if ( nLastVisible < nCount ) + { + if ( lcl_isGroupVisible( + lcl_getGroup( nLastVisible ), aScrollWindow.GetModuleOptions() ) != sal_False ) + { + if(aScrollWindow.aCheckBoxes[nLastVisible]) + aScrollWindow.aCheckBoxes[nLastVisible]->Show(); + if(aScrollWindow.aColorBoxes[nLastVisible]) + aScrollWindow.aColorBoxes[nLastVisible]->Show(); + } + } + } // if(nLastVisible < nCount - 1) + sal_Int32 nChapterCount = aScrollWindow.aChapters.size(); + for( i = 0; i < nChapterCount; i++ ) + { + Point aPos = aScrollWindow.aChapters[i]->GetPosPixel(); aPos.Y() += nOffset; aScrollWindow.aChapters[i]->SetPosPixel(aPos); + aPos = aScrollWindow.aChapterWins[i]->GetPosPixel(); aPos.Y() += nOffset; aScrollWindow.aChapterWins[i]->SetPosPixel(aPos); + } + aScrollWindow.SetUpdateMode(sal_True); + return 0; +} +/* -----------------------------29.04.2002 17:02------------------------------ + + ---------------------------------------------------------------------------*/ +long ColorConfigCtrl_Impl::PreNotify( NotifyEvent& rNEvt ) +{ + if(rNEvt.GetType() == EVENT_COMMAND) + { + const CommandEvent* pCEvt = rNEvt.GetCommandEvent(); + sal_uInt16 nCmd = pCEvt->GetCommand(); + if( COMMAND_WHEEL == nCmd ) + { + Command(*pCEvt); + return 1; + } + } + return Control::PreNotify(rNEvt); +} +/* -----------------------------08.04.2002 16:37------------------------------ + + ---------------------------------------------------------------------------*/ +void ColorConfigCtrl_Impl::Command( const CommandEvent& rCEvt ) +{ + switch ( rCEvt.GetCommand() ) + { + + case COMMAND_WHEEL: + case COMMAND_STARTAUTOSCROLL: + case COMMAND_AUTOSCROLL: + { + const CommandWheelData* pWheelData = rCEvt.GetWheelData(); + if(pWheelData && !pWheelData->IsHorz() && COMMAND_WHEEL_ZOOM != pWheelData->GetMode()) + { + HandleScrollCommand( rCEvt, 0, &aVScroll ); + } + } + break; + default: + Control::Command(rCEvt); + } +} + +/* -----------------------------14.12.2005 12:37------------------------------ + + ---------------------------------------------------------------------------*/ +void ColorConfigCtrl_Impl::DataChanged( const DataChangedEvent& rDCEvt ) +{ + Window::DataChanged( rDCEvt ); + if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && + (rDCEvt.GetFlags() & SETTINGS_STYLE) ) + { + const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); + SetBackground(Wallpaper(rStyleSettings.GetFieldColor())); + } +} + + +/* -----------------------------27.03.2002 11:43------------------------------ + + ---------------------------------------------------------------------------*/ +IMPL_LINK(ColorConfigCtrl_Impl, ClickHdl, CheckBox*, pBox) +{ + DBG_ASSERT(pColorConfig, "Configuration not set" ); + + for( sal_Int32 i = 0; i < ColorConfigEntryCount; i++ ) + { + if(ANCHOR == i) + continue; + if(aScrollWindow.aCheckBoxes[i] == pBox ) + { + ColorConfigValue aBoundCol = pColorConfig->GetColorValue(ColorConfigEntry(i)); + aBoundCol.bIsVisible = pBox->IsChecked(); + pColorConfig->SetColorValue(ColorConfigEntry(i), aBoundCol); + break; + } + } // for( sal_Int32 i = 0; i < ColorConfigEntryCount; i++ ) + return 0; +} +/* -----------------------------27.03.2002 11:43------------------------------ + + ---------------------------------------------------------------------------*/ +IMPL_LINK(ColorConfigCtrl_Impl, ColorHdl, ColorListBox*, pBox) +{ + DBG_ASSERT(pColorConfig, "Configuration not set" ); + sal_Int32 i = 0; + for( ; i < ColorConfigEntryCount; i++ ) + { + if(pBox && aScrollWindow.aColorBoxes[i] == pBox) + { + ColorConfigValue aColorEntry = pColorConfig->GetColorValue(ColorConfigEntry(i)); + if(!pBox->GetSelectEntryPos()) + { + aColorEntry.nColor = COL_AUTO; + if(aScrollWindow.aWindows[i]) + aScrollWindow.aWindows[i]->SetBackground( + Wallpaper(ColorConfig::GetDefaultColor((ColorConfigEntry) i))); + } + else + { + Color aColor = pBox->GetSelectEntryColor(); // #i14869# no Color&, 'cause it's a ref to a temp object on the stack! + aColorEntry.nColor = aColor.GetColor(); + if(aScrollWindow.aWindows[i]) + aScrollWindow.aWindows[i]->SetBackground(Wallpaper(aColor)); + } + if(aScrollWindow.aWindows[i]) + aScrollWindow.aWindows[i]->Invalidate(); + pColorConfig->SetColorValue(ColorConfigEntry(i), aColorEntry); + break; + } + } // for( sal_Int32 i = 0; i < ColorConfigEntryCount; i++ ) + sal_Int32 nExtCount = pExtColorConfig->GetComponentCount(); + sal_Int32 nCount = aScrollWindow.aCheckBoxes.size(); + sal_Int32 nPos = 0; + i = ColorConfigEntryCount; + for (sal_Int32 j = 0; j < nExtCount; ++j) + { + ::rtl::OUString sComponentName = pExtColorConfig->GetComponentName(j); + sal_Int32 nColorCount = pExtColorConfig->GetComponentColorCount(sComponentName); + + for( sal_Int32 k = 0; i < nCount && k < nColorCount; ++i ,++nPos,++k) + { + if(pBox && aScrollWindow.aColorBoxes[i] == pBox) + { + ExtendedColorConfigValue aColorEntry = pExtColorConfig->GetComponentColorConfigValue(sComponentName,k); + Color aColor = pBox->GetSelectEntryColor(); // #i14869# no Color&, 'cause it's a ref to a temp object on the stack! + aColorEntry.setColor(aColor.GetColor()); + if( !pBox->GetSelectEntryPos() ) // auto color + { + aColorEntry.setColor(aColorEntry.getDefaultColor()); + aColor.SetColor(aColorEntry.getColor()); + } + if ( aScrollWindow.aWindows[i] ) + { + aScrollWindow.aWindows[i]->SetBackground(Wallpaper(aColor)); + aScrollWindow.aWindows[i]->Invalidate(); + } + pExtColorConfig->SetColorValue(sComponentName,aColorEntry); + break; + } + } + } + return 0; +} +IMPL_LINK(ColorConfigCtrl_Impl, ControlFocusHdl, Control*, pCtrl) +{ + //determine whether a control is completely visible + //and make it visible + Point aCtrlPos(pCtrl->GetPosPixel()); + sal_Int32 nWinHeight = aScrollWindow.GetSizePixel().Height(); + if(0 != (GETFOCUS_TAB & pCtrl->GetGetFocusFlags() && + (aCtrlPos.Y() < 0 || + nWinHeight < aCtrlPos.Y() + aScrollWindow.aColorBoxes[0]->GetSizePixel().Height()))) + { + long nThumbPos = aVScroll.GetThumbPos(); + if(nWinHeight < aCtrlPos.Y() + aScrollWindow.aColorBoxes[0]->GetSizePixel().Height()) + { + //scroll down + nThumbPos +=2; + } + else + { + //scroll up + nThumbPos -= 2; + if(nThumbPos < 0) + nThumbPos = 0; + } + aVScroll.SetThumbPos(nThumbPos); + ScrollHdl(&aVScroll); + } + return 0; +}; +/* -----------------------------25.03.2002 10:47------------------------------ + + ---------------------------------------------------------------------------*/ +SvxColorOptionsTabPage::SvxColorOptionsTabPage( + Window* pParent, const SfxItemSet& rCoreSet) : + SfxTabPage( pParent, CUI_RES( RID_SVXPAGE_COLORCONFIG ), rCoreSet ), + aColorSchemeFL( this, CUI_RES( FL_COLORSCHEME ) ), + aColorSchemeFT( this, CUI_RES( FT_COLORSCHEME ) ), + aColorSchemeLB( this, CUI_RES( LB_COLORSCHEME ) ), + aSaveSchemePB( this, CUI_RES( PB_SAVESCHEME) ), + aDeleteSchemePB( this, CUI_RES( PB_DELETESCHEME ) ), + aCustomColorsFL( this, CUI_RES( FL_CUSTOMCOLORS ) ), + bFillItemSetCalled(sal_False), + pColorConfig(0), + pExtColorConfig(0), + pColorConfigCT( new ColorConfigCtrl_Impl(this, CUI_RES( CT_COLORCONFIG ) )) +{ + FreeResource(); + aColorSchemeLB.SetSelectHdl(LINK(this, SvxColorOptionsTabPage, SchemeChangedHdl_Impl)); + Link aLk = LINK(this, SvxColorOptionsTabPage, SaveDeleteHdl_Impl ); + aSaveSchemePB.SetClickHdl(aLk); + aDeleteSchemePB.SetClickHdl(aLk); +} +/* -----------------------------25.03.2002 10:47------------------------------ + + ---------------------------------------------------------------------------*/ +SvxColorOptionsTabPage::~SvxColorOptionsTabPage() +{ + //when the dialog is cancelled but the color scheme ListBox has been changed these + //changes need to be undone + if(!bFillItemSetCalled && aColorSchemeLB.GetSavedValue() != aColorSchemeLB.GetSelectEntryPos()) + { + rtl::OUString sOldScheme = aColorSchemeLB.GetEntry(aColorSchemeLB.GetSavedValue()); + if(sOldScheme.getLength()) + { + pColorConfig->SetCurrentSchemeName(sOldScheme); + pExtColorConfig->SetCurrentSchemeName(sOldScheme); + } + } + delete pColorConfigCT; + pColorConfig->ClearModified(); + pColorConfig->EnableBroadcast(); + delete pColorConfig; + pExtColorConfig->ClearModified(); + pExtColorConfig->EnableBroadcast(); + delete pExtColorConfig; +} +/* -----------------------------25.03.2002 10:47------------------------------ + + ---------------------------------------------------------------------------*/ +SfxTabPage* SvxColorOptionsTabPage::Create( Window* pParent, const SfxItemSet& rAttrSet ) +{ + return ( new SvxColorOptionsTabPage( pParent, rAttrSet ) ); +} +/* -----------------------------25.03.2002 10:47------------------------------ + + ---------------------------------------------------------------------------*/ +sal_Bool SvxColorOptionsTabPage::FillItemSet( SfxItemSet& ) +{ + bFillItemSetCalled = sal_True; + if(aColorSchemeLB.GetSavedValue() != aColorSchemeLB.GetSelectEntryPos()) + { + pColorConfig->SetModified(); + pExtColorConfig->SetModified(); + } + if(pColorConfig->IsModified()) + pColorConfig->Commit(); + if(pExtColorConfig->IsModified()) + pExtColorConfig->Commit(); + return sal_True; +} +/* -----------------------------25.03.2002 10:47------------------------------ + + ---------------------------------------------------------------------------*/ +void SvxColorOptionsTabPage::Reset( const SfxItemSet& ) +{ + if(pColorConfig) + { + pColorConfig->ClearModified(); + pColorConfig->DisableBroadcast(); + delete pColorConfig; + } + pColorConfig = new EditableColorConfig; + pColorConfigCT->SetConfig(*pColorConfig); + + if(pExtColorConfig) + { + pExtColorConfig->ClearModified(); + pExtColorConfig->DisableBroadcast(); + delete pExtColorConfig; + } + pExtColorConfig = new EditableExtendedColorConfig; + pColorConfigCT->SetExtendedConfig(*pExtColorConfig); + + String sUser = GetUserData(); + //has to be called always to speed up accessibility tools + pColorConfigCT->SetScrollPosition(sUser.ToInt32()); + aColorSchemeLB.Clear(); + uno::Sequence< ::rtl::OUString > aSchemes = pColorConfig->GetSchemeNames(); + const rtl::OUString* pSchemes = aSchemes.getConstArray(); + for(sal_Int32 i = 0; i < aSchemes.getLength(); i++) + aColorSchemeLB.InsertEntry(pSchemes[i]); + aColorSchemeLB.SelectEntry(pColorConfig->GetCurrentSchemeName()); + aColorSchemeLB.SaveValue(); + aDeleteSchemePB.Enable( aSchemes.getLength() > 1 ); + UpdateColorConfig(); +} +/* -----------------------------25.03.2002 10:47------------------------------ + + ---------------------------------------------------------------------------*/ +int SvxColorOptionsTabPage::DeactivatePage( SfxItemSet* _pSet ) +{ + if ( _pSet ) + FillItemSet( *_pSet ); + return( LEAVE_PAGE ); +} +/* -----------------------------25.03.2002 15:32------------------------------ + + ---------------------------------------------------------------------------*/ +void SvxColorOptionsTabPage::UpdateColorConfig() +{ + //update the color config control + pColorConfigCT->Update(); +} +/* -----------------------------25.03.2002 15:30------------------------------ + + ---------------------------------------------------------------------------*/ +IMPL_LINK(SvxColorOptionsTabPage, SchemeChangedHdl_Impl, ListBox*, pBox) +{ + pColorConfig->LoadScheme(pBox->GetSelectEntry()); + pExtColorConfig->LoadScheme(pBox->GetSelectEntry()); + UpdateColorConfig(); + return 0; +} +/* -----------------------------09.04.2002 15:21------------------------------ + + ---------------------------------------------------------------------------*/ +IMPL_LINK(SvxColorOptionsTabPage, SaveDeleteHdl_Impl, PushButton*, pButton ) +{ + if(&aSaveSchemePB == pButton) + { + String sName; + //CHINA001 SvxNameDialog aNameDlg(pButton, + //CHINA001 sName, + //CHINA001 String(CUI_RES(RID_SVXSTR_COLOR_CONFIG_SAVE2))); + SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); + DBG_ASSERT(pFact, "Dialogdiet fail!");//CHINA001 + AbstractSvxNameDialog* aNameDlg = pFact->CreateSvxNameDialog( pButton, + sName, String(CUI_RES(RID_SVXSTR_COLOR_CONFIG_SAVE2)) ); + DBG_ASSERT(aNameDlg, "Dialogdiet fail!");//CHINA001 + aNameDlg->SetCheckNameHdl( LINK(this, SvxColorOptionsTabPage, CheckNameHdl_Impl)); + aNameDlg->SetText(String(CUI_RES(RID_SVXSTR_COLOR_CONFIG_SAVE1))); + aNameDlg->SetHelpId(HID_OPTIONS_COLORCONFIG_SAVE_SCHEME); + aNameDlg->SetEditHelpId(HID_OPTIONS_COLORCONFIG_NAME_SCHEME); + aNameDlg->SetCheckNameHdl( LINK(this, SvxColorOptionsTabPage, CheckNameHdl_Impl)); + if(RET_OK == aNameDlg->Execute()) //CHINA001 if(RET_OK == aNameDlg.Execute()) + { + aNameDlg->GetName(sName); //CHINA001 aNameDlg.GetName(sName); + pColorConfig->AddScheme(sName); + pExtColorConfig->AddScheme(sName); + aColorSchemeLB.InsertEntry(sName); + aColorSchemeLB.SelectEntry(sName); + aColorSchemeLB.GetSelectHdl().Call(&aColorSchemeLB); + } + delete aNameDlg; //add by CHINA001 + } + else + { + DBG_ASSERT(aColorSchemeLB.GetEntryCount() > 1, "don't delete the last scheme"); + QueryBox aQuery(pButton, CUI_RES(RID_SVXQB_DELETE_COLOR_CONFIG)); + aQuery.SetText(String(CUI_RES(RID_SVXSTR_COLOR_CONFIG_DELETE))); + if(RET_YES == aQuery.Execute()) + { + rtl::OUString sDeleteScheme(aColorSchemeLB.GetSelectEntry()); + aColorSchemeLB.RemoveEntry(aColorSchemeLB.GetSelectEntryPos()); + aColorSchemeLB.SelectEntryPos(0); + aColorSchemeLB.GetSelectHdl().Call(&aColorSchemeLB); + //first select the new scheme and then delete the old one + pColorConfig->DeleteScheme(sDeleteScheme); + pExtColorConfig->DeleteScheme(sDeleteScheme); + } + } + aDeleteSchemePB.Enable( aColorSchemeLB.GetEntryCount() > 1 ); + return 0; +} +/* -----------------------------09.04.2002 15:47------------------------------ + + ---------------------------------------------------------------------------*/ +IMPL_LINK(SvxColorOptionsTabPage, CheckNameHdl_Impl, AbstractSvxNameDialog*, pDialog ) +{ + String sName; + pDialog->GetName(sName); + return sName.Len() && LISTBOX_ENTRY_NOTFOUND == aColorSchemeLB.GetEntryPos( sName ); +} +/* -----------------------------25.04.2002 15:12------------------------------ + + ---------------------------------------------------------------------------*/ +void SvxColorOptionsTabPage::FillUserData() +{ + SetUserData(String::CreateFromInt32(pColorConfigCT->GetScrollPosition())); +} + |