2000-09-18 23:16:46 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-10 18:53:24 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2000-09-18 23:16:46 +00:00
|
|
|
*
|
2010-02-12 15:01:35 +01:00
|
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
2000-09-18 23:16:46 +00:00
|
|
|
*
|
2008-04-10 18:53:24 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 23:16:46 +00:00
|
|
|
*
|
2008-04-10 18:53:24 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2000-09-18 23:16:46 +00:00
|
|
|
*
|
2008-04-10 18:53:24 +00:00
|
|
|
* 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.
|
2000-09-18 23:16:46 +00:00
|
|
|
*
|
2008-04-10 18:53:24 +00:00
|
|
|
* 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).
|
2000-09-18 23:16:46 +00:00
|
|
|
*
|
2008-04-10 18:53:24 +00:00
|
|
|
* 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.
|
2000-09-18 23:16:46 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
2006-07-21 10:30:13 +00:00
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
|
|
#include "precompiled_sc.hxx"
|
|
|
|
|
2000-09-18 23:16:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
//------------------------------------------------------------------
|
|
|
|
|
|
|
|
#include <tools/debug.hxx>
|
|
|
|
|
|
|
|
#include <com/sun/star/uno/Any.hxx>
|
|
|
|
#include <com/sun/star/uno/Sequence.hxx>
|
|
|
|
|
|
|
|
#include "cfgids.hxx"
|
|
|
|
#include "inputopt.hxx"
|
|
|
|
#include "rechead.hxx"
|
|
|
|
#include "scresid.hxx"
|
|
|
|
#include "global.hxx"
|
|
|
|
#include "sc.hrc"
|
|
|
|
#include "miscuno.hxx"
|
|
|
|
|
|
|
|
using namespace utl;
|
|
|
|
using namespace rtl;
|
|
|
|
using namespace com::sun::star::uno;
|
|
|
|
|
|
|
|
//------------------------------------------------------------------
|
|
|
|
|
|
|
|
// Version, ab der das Item kompatibel ist
|
|
|
|
#define SC_VERSION ((USHORT)351)
|
|
|
|
|
|
|
|
|
|
|
|
//========================================================================
|
|
|
|
// ScInputOptions - Eingabe-Optionen
|
|
|
|
//========================================================================
|
|
|
|
|
|
|
|
ScInputOptions::ScInputOptions()
|
|
|
|
{
|
|
|
|
SetDefaults();
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
|
|
|
|
ScInputOptions::ScInputOptions( const ScInputOptions& rCpy )
|
|
|
|
{
|
|
|
|
*this = rCpy;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
|
|
|
|
ScInputOptions::~ScInputOptions()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void ScInputOptions::SetDefaults()
|
|
|
|
{
|
|
|
|
nMoveDir = DIR_BOTTOM;
|
|
|
|
bMoveSelection = TRUE;
|
|
|
|
bEnterEdit = FALSE;
|
|
|
|
bExtendFormat = FALSE;
|
|
|
|
bRangeFinder = TRUE;
|
|
|
|
bExpandRefs = FALSE;
|
|
|
|
bMarkHeader = TRUE;
|
2003-04-28 14:31:51 +00:00
|
|
|
bUseTabCol = FALSE;
|
|
|
|
bTextWysiwyg = FALSE;
|
2002-07-11 09:56:31 +00:00
|
|
|
bReplCellsWarn = TRUE;
|
2000-09-18 23:16:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
|
|
|
|
const ScInputOptions& ScInputOptions::operator=( const ScInputOptions& rCpy )
|
|
|
|
{
|
|
|
|
nMoveDir = rCpy.nMoveDir;
|
|
|
|
bMoveSelection = rCpy.bMoveSelection;
|
|
|
|
bEnterEdit = rCpy.bEnterEdit;
|
|
|
|
bExtendFormat = rCpy.bExtendFormat;
|
|
|
|
bRangeFinder = rCpy.bRangeFinder;
|
|
|
|
bExpandRefs = rCpy.bExpandRefs;
|
|
|
|
bMarkHeader = rCpy.bMarkHeader;
|
|
|
|
bUseTabCol = rCpy.bUseTabCol;
|
2001-05-11 15:20:22 +00:00
|
|
|
bTextWysiwyg = rCpy.bTextWysiwyg;
|
2002-07-11 09:56:31 +00:00
|
|
|
bReplCellsWarn = rCpy.bReplCellsWarn;
|
2000-09-18 23:16:46 +00:00
|
|
|
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//==================================================================
|
|
|
|
// Config Item containing input options
|
|
|
|
//==================================================================
|
|
|
|
|
|
|
|
#define CFGPATH_INPUT "Office.Calc/Input"
|
|
|
|
|
|
|
|
#define SCINPUTOPT_MOVEDIR 0
|
|
|
|
#define SCINPUTOPT_MOVESEL 1
|
|
|
|
#define SCINPUTOPT_EDTEREDIT 2
|
|
|
|
#define SCINPUTOPT_EXTENDFMT 3
|
|
|
|
#define SCINPUTOPT_RANGEFIND 4
|
|
|
|
#define SCINPUTOPT_EXPANDREFS 5
|
|
|
|
#define SCINPUTOPT_MARKHEADER 6
|
|
|
|
#define SCINPUTOPT_USETABCOL 7
|
2001-05-14 18:09:36 +00:00
|
|
|
#define SCINPUTOPT_TEXTWYSIWYG 8
|
2002-07-11 09:56:31 +00:00
|
|
|
#define SCINPUTOPT_REPLCELLSWARN 9
|
|
|
|
#define SCINPUTOPT_COUNT 10
|
2000-09-18 23:16:46 +00:00
|
|
|
|
|
|
|
Sequence<OUString> ScInputCfg::GetPropertyNames()
|
|
|
|
{
|
|
|
|
static const char* aPropNames[] =
|
|
|
|
{
|
|
|
|
"MoveSelectionDirection", // SCINPUTOPT_MOVEDIR
|
|
|
|
"MoveSelection", // SCINPUTOPT_MOVESEL
|
|
|
|
"SwitchToEditMode", // SCINPUTOPT_EDTEREDIT
|
|
|
|
"ExpandFormatting", // SCINPUTOPT_EXTENDFMT
|
|
|
|
"ShowReference", // SCINPUTOPT_RANGEFIND
|
|
|
|
"ExpandReference", // SCINPUTOPT_EXPANDREFS
|
|
|
|
"HighlightSelection", // SCINPUTOPT_MARKHEADER
|
2001-05-14 18:09:36 +00:00
|
|
|
"UseTabCol", // SCINPUTOPT_USETABCOL
|
2002-07-11 09:56:31 +00:00
|
|
|
"UsePrinterMetrics", // SCINPUTOPT_TEXTWYSIWYG
|
|
|
|
"ReplaceCellsWarning" // SCINPUTOPT_REPLCELLSWARN
|
2000-09-18 23:16:46 +00:00
|
|
|
};
|
|
|
|
Sequence<OUString> aNames(SCINPUTOPT_COUNT);
|
|
|
|
OUString* pNames = aNames.getArray();
|
|
|
|
for(int i = 0; i < SCINPUTOPT_COUNT; i++)
|
|
|
|
pNames[i] = OUString::createFromAscii(aPropNames[i]);
|
|
|
|
|
|
|
|
return aNames;
|
|
|
|
}
|
|
|
|
|
|
|
|
ScInputCfg::ScInputCfg() :
|
|
|
|
ConfigItem( OUString::createFromAscii( CFGPATH_INPUT ) )
|
|
|
|
{
|
2007-03-05 13:41:44 +00:00
|
|
|
sal_Int32 nIntVal = 0;
|
2000-09-18 23:16:46 +00:00
|
|
|
|
|
|
|
Sequence<OUString> aNames = GetPropertyNames();
|
|
|
|
Sequence<Any> aValues = GetProperties(aNames);
|
|
|
|
EnableNotification(aNames);
|
|
|
|
const Any* pValues = aValues.getConstArray();
|
2008-11-10 15:06:12 +00:00
|
|
|
DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed");
|
2000-09-18 23:16:46 +00:00
|
|
|
if(aValues.getLength() == aNames.getLength())
|
|
|
|
{
|
|
|
|
for(int nProp = 0; nProp < aNames.getLength(); nProp++)
|
|
|
|
{
|
2008-11-10 15:06:12 +00:00
|
|
|
DBG_ASSERT(pValues[nProp].hasValue(), "property value missing");
|
2000-09-18 23:16:46 +00:00
|
|
|
if(pValues[nProp].hasValue())
|
|
|
|
{
|
|
|
|
switch(nProp)
|
|
|
|
{
|
|
|
|
case SCINPUTOPT_MOVEDIR:
|
|
|
|
if ( pValues[nProp] >>= nIntVal )
|
2001-05-11 15:20:22 +00:00
|
|
|
SetMoveDir( (USHORT)nIntVal );
|
2000-09-18 23:16:46 +00:00
|
|
|
break;
|
|
|
|
case SCINPUTOPT_MOVESEL:
|
|
|
|
SetMoveSelection( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
|
|
|
|
break;
|
|
|
|
case SCINPUTOPT_EDTEREDIT:
|
|
|
|
SetEnterEdit( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
|
|
|
|
break;
|
|
|
|
case SCINPUTOPT_EXTENDFMT:
|
|
|
|
SetExtendFormat( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
|
|
|
|
break;
|
|
|
|
case SCINPUTOPT_RANGEFIND:
|
|
|
|
SetRangeFinder( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
|
|
|
|
break;
|
|
|
|
case SCINPUTOPT_EXPANDREFS:
|
|
|
|
SetExpandRefs( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
|
|
|
|
break;
|
|
|
|
case SCINPUTOPT_MARKHEADER:
|
|
|
|
SetMarkHeader( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
|
|
|
|
break;
|
|
|
|
case SCINPUTOPT_USETABCOL:
|
|
|
|
SetUseTabCol( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
|
|
|
|
break;
|
2001-05-14 18:09:36 +00:00
|
|
|
case SCINPUTOPT_TEXTWYSIWYG:
|
|
|
|
SetTextWysiwyg( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
|
|
|
|
break;
|
2002-07-11 09:56:31 +00:00
|
|
|
case SCINPUTOPT_REPLCELLSWARN:
|
|
|
|
SetReplaceCellsWarn( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
|
|
|
|
break;
|
2000-09-18 23:16:46 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ScInputCfg::Commit()
|
|
|
|
{
|
|
|
|
Sequence<OUString> aNames = GetPropertyNames();
|
|
|
|
Sequence<Any> aValues(aNames.getLength());
|
|
|
|
Any* pValues = aValues.getArray();
|
|
|
|
|
|
|
|
for(int nProp = 0; nProp < aNames.getLength(); nProp++)
|
|
|
|
{
|
|
|
|
switch(nProp)
|
|
|
|
{
|
|
|
|
case SCINPUTOPT_MOVEDIR:
|
|
|
|
pValues[nProp] <<= (sal_Int32) GetMoveDir();
|
|
|
|
break;
|
|
|
|
case SCINPUTOPT_MOVESEL:
|
|
|
|
ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetMoveSelection() );
|
|
|
|
break;
|
|
|
|
case SCINPUTOPT_EDTEREDIT:
|
|
|
|
ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetEnterEdit() );
|
|
|
|
break;
|
|
|
|
case SCINPUTOPT_EXTENDFMT:
|
|
|
|
ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetExtendFormat() );
|
|
|
|
break;
|
|
|
|
case SCINPUTOPT_RANGEFIND:
|
|
|
|
ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetRangeFinder() );
|
|
|
|
break;
|
|
|
|
case SCINPUTOPT_EXPANDREFS:
|
|
|
|
ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetExpandRefs() );
|
|
|
|
break;
|
|
|
|
case SCINPUTOPT_MARKHEADER:
|
|
|
|
ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetMarkHeader() );
|
|
|
|
break;
|
|
|
|
case SCINPUTOPT_USETABCOL:
|
|
|
|
ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetUseTabCol() );
|
|
|
|
break;
|
2001-05-14 18:09:36 +00:00
|
|
|
case SCINPUTOPT_TEXTWYSIWYG:
|
|
|
|
ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetTextWysiwyg() );
|
|
|
|
break;
|
2002-07-11 09:56:31 +00:00
|
|
|
case SCINPUTOPT_REPLCELLSWARN:
|
|
|
|
ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetReplaceCellsWarn() );
|
|
|
|
break;
|
2000-09-18 23:16:46 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
PutProperties(aNames, aValues);
|
|
|
|
}
|
|
|
|
|
2007-02-27 11:15:54 +00:00
|
|
|
void ScInputCfg::Notify( const Sequence<rtl::OUString>& /* aPropertyNames */ )
|
2000-09-18 23:16:46 +00:00
|
|
|
{
|
2008-11-10 15:06:12 +00:00
|
|
|
DBG_ERROR("properties have been changed");
|
2000-09-18 23:16:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void ScInputCfg::SetOptions( const ScInputOptions& rNew )
|
|
|
|
{
|
|
|
|
*(ScInputOptions*)this = rNew;
|
|
|
|
SetModified();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ScInputCfg::OptionsChanged()
|
|
|
|
{
|
|
|
|
SetModified();
|
|
|
|
}
|
|
|
|
|
|
|
|
|