summaryrefslogtreecommitdiff
path: root/starmath/source/config.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'starmath/source/config.cxx')
-rw-r--r--starmath/source/config.cxx381
1 files changed, 381 insertions, 0 deletions
diff --git a/starmath/source/config.cxx b/starmath/source/config.cxx
new file mode 100644
index 000000000000..2a26b23275c3
--- /dev/null
+++ b/starmath/source/config.cxx
@@ -0,0 +1,381 @@
+/*************************************************************************
+ *
+ * $RCSfile: config.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+#ifndef _SFXHINT_HXX //autogen
+#include <svtools/hint.hxx>
+#endif
+#ifndef _SFXSMPLHINT_HXX //autogen
+#include <svtools/smplhint.hxx>
+#endif
+#ifndef _SFX_INIMGR_HXX //autogen
+#include <sfx2/inimgr.hxx>
+#endif
+#ifndef _SFXSIDS_HRC //autogen
+#include <sfx2/sfxsids.hrc>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXITEMPOOL_HXX //autogen
+#include <svtools/itempool.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+
+
+#ifndef CONFIG_HXX
+#include "config.hxx"
+#endif
+#ifndef FORMAT_HXX
+#include "format.hxx"
+#endif
+#ifndef _SMMOD_HXX
+#include "smmod.hxx"
+#endif
+#ifndef _STARMATH_HRC
+#include "starmath.hrc"
+#endif
+
+#define DEFSYMFILE "starmath$(lang).sms"
+#define CONFIGVERSION (INT16)0x0001;
+
+
+SmConfig::SmConfig() :
+ SfxConfigItem(SMCONFIGITEM)
+{
+ UseDefault();
+ StartListening(aStandardFormat);
+}
+
+
+SmConfig::~SmConfig()
+{
+ EndListening(aStandardFormat);
+}
+
+
+void SmConfig::SFX_NOTIFY(SfxBroadcaster &, const TypeId &,
+ const SfxHint &rHint, const TypeId &)
+{
+ switch (((SfxSimpleHint &) rHint).GetId())
+ {
+ case HINT_FORMATCHANGED:
+ SetModified(TRUE);
+ SetDefault (FALSE);
+ break;
+ }
+}
+
+
+void SmConfig::ConfigChangedAction()
+{
+ SetModified(TRUE);
+ SetDefault(FALSE);
+ //Broadcast(SfxSimpleHint(HINT_CONFIGCHANGED));
+}
+
+
+void SmConfig::SetValueIfNE(BOOL &rItem, const BOOL bVal)
+ // "Set 'Modified' and 'Value' if not equal"
+{
+ if (rItem != bVal)
+ { rItem = bVal;
+ ConfigChangedAction();
+ }
+}
+
+
+void SmConfig::SetSymbolFile(const String &rText)
+{
+ if (aSymbolFile != rText)
+ {
+ aSymbolFile = rText;
+ ConfigChangedAction();
+ }
+}
+
+
+int SmConfig::Load(SvStream &rStream)
+{
+ // Da die Fileformat Version in ConfigItems nur einen Defaultwert hat setzen
+ // wir diesen hier auf die aktuelle Version, damit beim folgenden (impliziten)
+ // einlesen des 'SmFormat' Objekts aus dem Stream dieses entsprechend
+ // reagieren kann.
+ rStream.SetVersion(SOFFICE_FILEFORMAT_NOW);
+
+ rStream >> *this;
+ SetDefault(FALSE);
+ return SfxConfigItem::ERR_OK;
+}
+
+
+BOOL SmConfig::Store(SvStream &rStream)
+{
+ rStream << *this;
+ return TRUE;
+}
+
+/**************************************************************************/
+
+void SmConfig::UseDefault()
+{
+ SfxConfigItem::UseDefault(); // this implicitly calls 'SetDefault(TRUE)'
+
+ bToolBoxVisible = bCmdBoxWindow = bAutoRedraw = bFormulaCursor =
+ bPrintTitle = bPrintText = bPrintFrame = bWarnNoSymbols =
+ bNoRightSpaces = TRUE;
+
+ aSymbolFile = C2S(DEFSYMFILE);
+ SfxIniManager* pIniMgr = SFX_INIMANAGER();
+ pIniMgr->SearchFile( aSymbolFile, SFX_KEY_USERCONFIG_PATH );
+
+ ePrintSize = PRINT_SIZE_NORMAL;
+ nPrintZoom = 100;
+}
+
+/**************************************************************************/
+
+String SmConfig::GetName() const
+{
+ return C2S("StarMath");
+}
+
+/**************************************************************************/
+
+void SmConfig::ItemSetToConfig(const SfxItemSet &rSet)
+{
+ const SfxPoolItem *pItem = NULL;
+ BOOL bModified = FALSE;
+ String aSymbolFile;
+
+ if (rSet.GetItemState(SID_SYMBOLFILE, TRUE, &pItem) == SFX_ITEM_SET)
+ { aSymbolFile = ((const SfxStringItem *) pItem)->GetValue();
+ DBG_ASSERT(aSymbolFile.Len() > 0, "Symboldatei nicht angegeben !");
+
+ if (aSymbolFile != aSymbolFile)
+ {
+ SfxModule *p = SM_MOD1();
+ SmModule *pp = (SmModule *) p;
+
+ pp->GetConfig()->SetWarnNoSymbols(TRUE);
+ aSymbolFile = aSymbolFile;
+
+ bModified = TRUE;
+ }
+ }
+
+ UINT16 nU16;
+ if (rSet.GetItemState(SID_PRINTSIZE, TRUE, &pItem) == SFX_ITEM_SET)
+ { nU16 = ((const SfxUInt16Item *) pItem)->GetValue();
+ if (ePrintSize != nU16)
+ { ePrintSize = (SmPrintSize) nU16;
+ bModified = TRUE;
+ }
+ }
+ if (rSet.GetItemState(SID_PRINTZOOM, TRUE, &pItem) == SFX_ITEM_SET)
+ { nU16 = ((const SfxUInt16Item *) pItem)->GetValue();
+ if (nPrintZoom != nU16)
+ { nPrintZoom = (USHORT) nU16;
+ bModified = TRUE;
+ }
+ }
+
+ BOOL bVal;
+ if (rSet.GetItemState(SID_PRINTTITLE, TRUE, &pItem) == SFX_ITEM_SET)
+ { bVal = ((const SfxBoolItem *) pItem)->GetValue();
+ if (bPrintTitle != bVal)
+ { bPrintTitle = bVal;
+ bModified = TRUE;
+ }
+ }
+ if (rSet.GetItemState(SID_PRINTTEXT, TRUE, &pItem) == SFX_ITEM_SET)
+ { bVal = ((const SfxBoolItem *) pItem)->GetValue();
+ if (bPrintText != bVal)
+ { bPrintText = bVal;
+ bModified = TRUE;
+ }
+ }
+ if (rSet.GetItemState(SID_PRINTFRAME, TRUE, &pItem) == SFX_ITEM_SET)
+ { bVal = ((const SfxBoolItem *) pItem)->GetValue();
+ if (bPrintFrame != bVal)
+ { bPrintFrame = bVal;
+ bModified = TRUE;
+ }
+ }
+ if (rSet.GetItemState(SID_AUTOREDRAW, TRUE, &pItem) == SFX_ITEM_SET)
+ { bVal = ((const SfxBoolItem *) pItem)->GetValue();
+ if (bAutoRedraw != bVal)
+ { bAutoRedraw = bVal;
+ bModified = TRUE;
+ }
+ }
+ if (rSet.GetItemState(SID_NO_RIGHT_SPACES, TRUE, &pItem) == SFX_ITEM_SET)
+ { bVal = ((const SfxBoolItem *) pItem)->GetValue();
+ if (bNoRightSpaces != bVal)
+ { bNoRightSpaces = bVal;
+ bModified = TRUE;
+
+ // (angezeigte) Formeln mssen entsprechen neu formatiert werden.
+ // Das erreichen wir mit:
+ Broadcast(SfxSimpleHint(HINT_FORMATCHANGED));
+ }
+ }
+
+ if (bModified)
+ ConfigChangedAction();
+}
+
+
+void SmConfig::ConfigToItemSet(SfxItemSet &rSet) const
+{
+ const SfxItemPool *pPool = rSet.GetPool();
+
+ rSet.Put(SfxStringItem(pPool->GetWhich(SID_SYMBOLFILE),
+ aSymbolFile));
+
+ rSet.Put(SfxUInt16Item(pPool->GetWhich(SID_PRINTSIZE),
+ (UINT16) ePrintSize));
+ rSet.Put(SfxUInt16Item(pPool->GetWhich(SID_PRINTZOOM),
+ (UINT16) nPrintZoom));
+
+ rSet.Put(SfxBoolItem(pPool->GetWhich(SID_PRINTTITLE), bPrintTitle));
+ rSet.Put(SfxBoolItem(pPool->GetWhich(SID_PRINTTEXT), bPrintText));
+ rSet.Put(SfxBoolItem(pPool->GetWhich(SID_PRINTFRAME), bPrintFrame));
+ rSet.Put(SfxBoolItem(pPool->GetWhich(SID_AUTOREDRAW), bAutoRedraw));
+ rSet.Put(SfxBoolItem(pPool->GetWhich(SID_NO_RIGHT_SPACES), bNoRightSpaces));
+}
+
+
+/**************************************************************************/
+
+
+SvStream & operator << (SvStream &rStream, const SmConfig &rConfig)
+{
+ rStream << CONFIGVERSION;
+
+ UINT16 nFlags = rConfig.bPrintTitle
+ | (rConfig.bPrintText << 1)
+ | (rConfig.bPrintFrame << 2)
+ | (rConfig.bWarnNoSymbols << 3)
+ | (rConfig.bToolBoxVisible << 4)
+ | (rConfig.bCmdBoxWindow << 5)
+ | (rConfig.bAutoRedraw << 6)
+ | (rConfig.bFormulaCursor << 7)
+ | (rConfig.bNoRightSpaces << 8);
+
+ rStream << nFlags;
+
+ rStream << (INT16) rConfig.ePrintSize;
+ rStream << (INT16) rConfig.nPrintZoom;
+
+ rStream.WriteByteString(rConfig.aSymbolFile, gsl_getSystemTextEncoding());
+ rStream << rConfig.aStandardFormat;
+
+ for (int i = 0; i < 7; i++)
+ rStream << rConfig.vFontPickList[i];
+
+ return rStream;
+}
+
+
+SvStream & operator >> (SvStream &rStream, SmConfig &rConfig)
+{
+ INT16 nVer;
+ rStream >> nVer;
+
+ UINT16 nFlags;
+ rStream >> nFlags;
+
+ rConfig.bPrintTitle = nFlags & 0x01;
+ rConfig.bPrintText = (nFlags >> 1) & 0x01;
+ rConfig.bPrintFrame = (nFlags >> 2) & 0x01;
+ rConfig.bWarnNoSymbols = (nFlags >> 3) & 0x01;
+ rConfig.bToolBoxVisible = (nFlags >> 4) & 0x01;
+ rConfig.bCmdBoxWindow = (nFlags >> 5) & 0x01;
+ rConfig.bAutoRedraw = (nFlags >> 6) & 0x01;
+ rConfig.bFormulaCursor = (nFlags >> 7) & 0x01;
+ rConfig.bNoRightSpaces = (nFlags >> 8) & 0x01;
+
+ INT16 nI16;
+ rStream >> nI16;
+ rConfig.ePrintSize = (SmPrintSize) nI16;
+ rStream >> nI16;
+ rConfig.nPrintZoom = (USHORT) nI16;
+
+ rStream.ReadByteString(rConfig.aSymbolFile, gsl_getSystemTextEncoding());
+ rStream >> rConfig.aStandardFormat;
+
+ for (int i = 0; i < 7; i++)
+ rStream >> rConfig.vFontPickList[i];
+
+ return rStream;
+}
+
+