summaryrefslogtreecommitdiff
path: root/cui/source/options/optcolor.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'cui/source/options/optcolor.cxx')
-rw-r--r--cui/source/options/optcolor.cxx1722
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()));
+}
+