Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


Hi,
It took some time to fix this. I moved stuff to a new computer, had
some build problems, implemented some changes (see below), and had a
fair share of bugs to straighten out. But now I think I'm finished
with this feature patch. Please have a look

- Changed the option tab page to defaults.
- Changed the name of the handler class to ScTpDefaultsOptions
- Changed the type of the tab enumerator to SCTAB
- Changed to c++ type static casts
- Renamed variables to more sensable names
- Added new option nodes in
officecfg/registry/schema/org/openoffice/Office/Calc.xcs
- Set the maximum allowed sheet tabs tat you can enter into the input
field to 32000

I also looked at checking that no negative numbers/character are
inserted. To my understanding, you don't have to to anything special,
it is taken care of in the input field. If you try to give a negative
value as an input it changes to the minimum value (in this case  have
been setting this to 1) and the same happens when you try to enter a
character. This is also consistent with how other input fields behave.

Regards,

/Albert

On Wed, Jun 1, 2011 at 16:15, Kohei Yoshida <kyoshida@novell.com> wrote:
Sorry I forgot to snip a large part of it.  Don't copy this behavior of
mine... It's something to be used as a counter-example of good
behavior. ;-)

Kohei

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

diff --git a/sc/Library_scui.mk b/sc/Library_scui.mk
index 1e0ef6b..c85de9f 100644
--- a/sc/Library_scui.mk
+++ b/sc/Library_scui.mk
@@ -103,6 +103,7 @@ $(eval $(call gb_Library_add_exception_objects,scui,\
     sc/source/ui/optdlg/tpcalc \
     sc/source/ui/optdlg/tpcompatibility \
     sc/source/ui/optdlg/tpformula \
+    sc/source/ui/optdlg/tpdefaults \
     sc/source/ui/optdlg/tpprint \
     sc/source/ui/optdlg/tpusrlst \
     sc/source/ui/optdlg/tpview \
diff --git a/sc/inc/docoptio.hxx b/sc/inc/docoptio.hxx
index 9ca84eb..de6b970 100644
--- a/sc/inc/docoptio.hxx
+++ b/sc/inc/docoptio.hxx
@@ -33,6 +33,7 @@
 #include <svl/poolitem.hxx>
 #include <svl/itemprop.hxx>
 #include "scdllapi.h"
+#include "scmod.hxx"
 #include "optutil.hxx"
 
 #include "formula/grammar.hxx"
@@ -41,6 +42,7 @@ class SC_DLLPUBLIC ScDocOptions
 {
     double fIterEps;                           // epsilon value dazu
     sal_uInt16 nIterCount;                             // number
+    SCTAB nInitTabCount;                       // number of Tabs for new Spreadssheet doc
     sal_uInt16 nPrecStandardFormat; // precision for standard format
     ScOptionsUtil::KeyBindingType eKeyBindingType;
     sal_uInt16 nDay;                                   // Null date:
@@ -79,6 +81,8 @@ public:
     void   SetIter( sal_Bool bVal )                    { bIsIter = bVal; }
     sal_uInt16 GetIterCount() const                    { return nIterCount; }
     void   SetIterCount( sal_uInt16 nCount) { nIterCount = nCount; }
+    SCTAB GetInitTabCount() const                      { return nInitTabCount; }
+    void   SetInitTabCount( SCTAB nTabs) { nInitTabCount = nTabs; }
     double GetIterEps() const                  { return fIterEps; }
     void   SetIterEps( double fEps )   { fIterEps = fEps; }
 
@@ -134,6 +138,7 @@ inline const ScDocOptions& ScDocOptions::operator=( const ScDocOptions& rCpy )
     bIsIgnoreCase              = rCpy.bIsIgnoreCase;
     bIsIter                            = rCpy.bIsIter;
     nIterCount                 = rCpy.nIterCount;
+    nInitTabCount       = rCpy.nInitTabCount;
     fIterEps                   = rCpy.fIterEps;
     nPrecStandardFormat = rCpy.nPrecStandardFormat;
     eKeyBindingType     = rCpy.eKeyBindingType;
@@ -162,6 +167,7 @@ inline int ScDocOptions::operator==( const ScDocOptions& rOpt ) const
                 rOpt.bIsIgnoreCase                     == bIsIgnoreCase
             && rOpt.bIsIter                            == bIsIter
             && rOpt.nIterCount                         == nIterCount
+            &&  rOpt.nInitTabCount          == nInitTabCount
             && rOpt.fIterEps                           == fIterEps
             && rOpt.nPrecStandardFormat        == nPrecStandardFormat
             &&  rOpt.eKeyBindingType        == eKeyBindingType
@@ -221,16 +227,19 @@ class ScDocCfg : public ScDocOptions
     ScLinkConfigItem    aFormulaItem;
     ScLinkConfigItem   aLayoutItem;
     ScLinkConfigItem    aCompatItem;
+    ScLinkConfigItem    aDefaultsItem;
 
     DECL_LINK( CalcCommitHdl, void* );
     DECL_LINK( FormulaCommitHdl, void* );
     DECL_LINK( LayoutCommitHdl, void* );
     DECL_LINK( CompatCommitHdl, void* );
+    DECL_LINK( DefaultsCommitHdl, void* );
 
     com::sun::star::uno::Sequence<rtl::OUString> GetCalcPropertyNames();
     com::sun::star::uno::Sequence<rtl::OUString> GetFormulaPropertyNames();
     com::sun::star::uno::Sequence<rtl::OUString> GetLayoutPropertyNames();
     com::sun::star::uno::Sequence<rtl::OUString> GetCompatPropertyNames();
+    com::sun::star::uno::Sequence<rtl::OUString> GetDefaultsPropertyNames();
 
 public:
             ScDocCfg();
diff --git a/sc/inc/helpids.h b/sc/inc/helpids.h
index de666a3..6273186 100644
--- a/sc/inc/helpids.h
+++ b/sc/inc/helpids.h
@@ -99,7 +99,7 @@
 #define HID_SCPAGE_COMPATIBILITY                                "SC_HID_SCPAGE_COMPATIBILITY"
 #define HID_SCPAGE_TABLE                                        "SC_HID_SCPAGE_TABLE"
 #define HID_SCPAGE_PRINT                                        "SC_HID_SCPAGE_PRINT"
-
+#define HID_SCPAGE_DEFAULTS                                     "SC_HID_SCPAGE_DEFAULTS"
 #define HID_SCPAGE_SUBT_GROUP1                                  "SC_HID_SCPAGE_SUBT_GROUP1"
 #define HID_SCPAGE_SUBT_GROUP2                                  "SC_HID_SCPAGE_SUBT_GROUP2"
 #define HID_SCPAGE_SUBT_GROUP3                                  "SC_HID_SCPAGE_SUBT_GROUP3"
diff --git a/sc/inc/sc.hrc b/sc/inc/sc.hrc
index ac00c69..d2b7048 100644
--- a/sc/inc/sc.hrc
+++ b/sc/inc/sc.hrc
@@ -1253,5 +1253,8 @@
 // compatibility options page
 #define RID_SCPAGE_COMPATIBILITY    (SC_OOO_BUILD_START + 9)
 
+// init option page
+#define RID_SCPAGE_DEFAULTS         (SC_OOO_BUILD_START + 10)
+
 #endif
 
diff --git a/sc/source/core/tool/appoptio.cxx b/sc/source/core/tool/appoptio.cxx
index 4680d86..7541fb6 100644
--- a/sc/source/core/tool/appoptio.cxx
+++ b/sc/source/core/tool/appoptio.cxx
@@ -85,7 +85,7 @@ ScAppOptions::~ScAppOptions()
 void ScAppOptions::SetDefaults()
 {
     // Set default tab count for new spreadsheet.
-    nTabCountInNewSpreadsheet = 3;
+    nTabCountInNewSpreadsheet = 0;
 
     if ( ScOptionsUtil::IsMetricSystem() )
         eMetric                = FUNIT_CM;                             // default for countries 
with metric system
diff --git a/sc/source/core/tool/docoptio.cxx b/sc/source/core/tool/docoptio.cxx
index f9e81a9..662d59c 100644
--- a/sc/source/core/tool/docoptio.cxx
+++ b/sc/source/core/tool/docoptio.cxx
@@ -91,6 +91,7 @@ ScDocOptions::ScDocOptions()
 ScDocOptions::ScDocOptions( const ScDocOptions& rCpy )
         :   fIterEps( rCpy.fIterEps ),
             nIterCount( rCpy.nIterCount ),
+            nInitTabCount( rCpy.nInitTabCount ),
             nPrecStandardFormat( rCpy.nPrecStandardFormat ),
             eKeyBindingType( rCpy.eKeyBindingType ),
             nDay( rCpy.nDay ),
@@ -126,6 +127,7 @@ void ScDocOptions::ResetDocOptions()
     bIsIgnoreCase              = false;
     bIsIter                            = false;
     nIterCount                 = 100;
+    nInitTabCount       = 3;
     fIterEps                   = 1.0E-3;
     nPrecStandardFormat = SvNumberFormatter::UNLIMITED_PRECISION;
     eKeyBindingType     = ScOptionsUtil::KEY_DEFAULT;
@@ -290,6 +292,11 @@ SfxPoolItem* ScTpCalcItem::Clone( SfxItemPool * ) const
 #define SCCOMPATOPT_KEY_BINDING     0
 #define SCCOMPATOPT_COUNT           1
 
+#define CFGPATH_DEFAULTS    "Office.Calc/Defaults"
+#define SCDEFAULTSOPT_TAB_COUNT     0
+#define SCDEFAULTSOPT_COUNT         1
+
+
 Sequence<OUString> ScDocCfg::GetCalcPropertyNames()
 {
     static const char* aPropNames[] =
@@ -365,11 +372,27 @@ Sequence<OUString> ScDocCfg::GetCompatPropertyNames()
     return aNames;
 }
 
+Sequence<OUString> ScDocCfg::GetDefaultsPropertyNames()
+{
+    static const char* aPropNames[] =
+    {
+        "Other/TabCount"             // SCDEFAULTSOPT_COUNT_TAB_COUNT
+    };
+    Sequence<OUString> aNames(SCDEFAULTSOPT_COUNT);
+    OUString* pNames = aNames.getArray();
+    for (int i = 0; i < SCDEFAULTSOPT_COUNT; ++i)
+        pNames[i] = OUString::createFromAscii(aPropNames[i]);
+
+    return aNames;
+}
+
+
 ScDocCfg::ScDocCfg() :
     aCalcItem( OUString(RTL_CONSTASCII_USTRINGPARAM( CFGPATH_CALC )) ),
     aFormulaItem(OUString(RTL_CONSTASCII_USTRINGPARAM(CFGPATH_FORMULA))),
     aLayoutItem(OUString(RTL_CONSTASCII_USTRINGPARAM(CFGPATH_DOCLAYOUT))),
-    aCompatItem(OUString(RTL_CONSTASCII_USTRINGPARAM(CFGPATH_COMPAT)))
+    aCompatItem(OUString(RTL_CONSTASCII_USTRINGPARAM(CFGPATH_COMPAT))),
+    aDefaultsItem(OUString(RTL_CONSTASCII_USTRINGPARAM(CFGPATH_DEFAULTS)))
 {
     sal_Int32 nIntVal = 0;
 
@@ -559,6 +582,27 @@ ScDocCfg::ScDocCfg() :
         }
     }
     aCompatItem.SetCommitLink( LINK(this, ScDocCfg, CompatCommitHdl) );
+
+    aNames = GetDefaultsPropertyNames();
+    aValues = aDefaultsItem.GetProperties(aNames);
+    aDefaultsItem.EnableNotification(aNames);
+    pValues = aValues.getConstArray();
+    if (aValues.getLength() == aNames.getLength())
+    {
+        for (int nProp = 0; nProp < aNames.getLength(); ++nProp)
+        {
+            switch (nProp)
+            {
+
+            case SCDEFAULTSOPT_TAB_COUNT:
+                nIntVal = 3; // 3 = 'Default'
+                if (pValues[nProp] >>= nIntVal)
+                    SetInitTabCount( static_cast<SCTAB>(nIntVal) );
+                break;
+            }
+        }
+    }
+    aDefaultsItem.SetCommitLink( LINK(this, ScDocCfg, DefaultsCommitHdl) );
 }
 
 IMPL_LINK( ScDocCfg, CalcCommitHdl, void *, EMPTYARG )
@@ -703,6 +747,25 @@ IMPL_LINK( ScDocCfg, CompatCommitHdl, void *, EMPTYARG )
     return 0;
 }
 
+IMPL_LINK( ScDocCfg, DefaultsCommitHdl, void *, EMPTYARG )
+{
+    Sequence<OUString> aNames = GetDefaultsPropertyNames();
+    Sequence<Any> aValues(aNames.getLength());
+    Any* pValues = aValues.getArray();
+
+    for (int nProp = 0; nProp < aNames.getLength(); ++nProp)
+    {
+        switch(nProp)
+        {
+        case SCDEFAULTSOPT_TAB_COUNT:
+            pValues[nProp] <<= static_cast<sal_Int32>(GetInitTabCount());
+        break;
+        }
+    }
+    aDefaultsItem.PutProperties(aNames, aValues);
+    return 0;
+}
+
 void ScDocCfg::SetOptions( const ScDocOptions& rNew )
 {
     *(ScDocOptions*)this = rNew;
@@ -711,6 +774,7 @@ void ScDocCfg::SetOptions( const ScDocOptions& rNew )
     aFormulaItem.SetModified();
     aLayoutItem.SetModified();
     aCompatItem.SetModified();
+    aDefaultsItem.SetModified();
 }
 
 
diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx
index aa90629..82eacd5 100644
--- a/sc/source/ui/app/scmod.cxx
+++ b/sc/source/ui/app/scmod.cxx
@@ -100,13 +100,13 @@
 #include "dwfunctr.hxx"
 #include "formdata.hxx"
 #include "tpprint.hxx"
+#include "tpdefaults.hxx"
 #include "transobj.hxx"
 #include "detfunc.hxx"
 #include "preview.hxx"
 
 #include <svx/xmlsecctrl.hxx>
 
-
 #define ScModule
 #include "scslots.hxx"
 
@@ -2054,6 +2054,14 @@ SfxTabPage*       ScModule::CreateTabPage( sal_uInt16 nId, Window* pParent, 
const Sfx
                                         pRet = (*ScTpPrintOptionsCreate)( pParent, rSet);
                                 }
             break;
+        case RID_SC_TP_DEFAULTS:
+            {
+                ::CreateTabPage ScTpDefaultsOptionsCreate = pFact->GetTabPageCreatorFunc( 
RID_SCPAGE_DEFAULTS );
+                if ( ScTpDefaultsOptionsCreate )
+                    pRet = (*ScTpDefaultsOptionsCreate)( pParent, rSet);
+            }
+            break;
+
         case RID_OFA_TP_INTERNATIONAL:
         {
             SfxAbstractDialogFactory* pSfxFact = SfxAbstractDialogFactory::Create();
diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx b/sc/source/ui/attrdlg/scdlgfact.cxx
index faf0f29..14e3c6d 100644
--- a/sc/source/ui/attrdlg/scdlgfact.cxx
+++ b/sc/source/ui/attrdlg/scdlgfact.cxx
@@ -83,6 +83,7 @@
 #include "tpformula.hxx"
 #include "datafdlg.hxx"
 #include "tpcompatibility.hxx"
+#include "tpdefaults.hxx"
 
 // ause
 #include "editutil.hxx"
@@ -1608,6 +1609,8 @@ CreateTabPage ScAbstractDialogFactory_Impl::GetTabPageCreatorFunc( sal_uInt16 
nI
             return ScTpFormulaOptions::Create;
         case RID_SCPAGE_COMPATIBILITY:
             return ScTpCompatOptions::Create;
+        case RID_SCPAGE_DEFAULTS:
+            return ScTpDefaultsOptions::Create;
         case   RID_SCPAGE_PRINT :
             return ScTpPrintOptions::Create;
             //break;
diff --git a/sc/source/ui/inc/optdlg.hrc b/sc/source/ui/inc/optdlg.hrc
index d62819b..4cdb0a5 100644
--- a/sc/source/ui/inc/optdlg.hrc
+++ b/sc/source/ui/inc/optdlg.hrc
@@ -194,3 +194,8 @@
 #define FL_KEY_BINDINGS       1
 #define FT_KEY_BINDINGS       2
 #define LB_KEY_BINDINGS       3
+
+// TP_DEFAULTS
+#define FL_INIT_SPREADSHEET  1
+#define FT_NSHEETS           2
+#define ED_NSHEETS           3
diff --git a/sc/source/ui/inc/tpdefaults.hxx b/sc/source/ui/inc/tpdefaults.hxx
new file mode 100644
index 0000000..0d3300e
--- /dev/null
+++ b/sc/source/ui/inc/tpdefaults.hxx
@@ -0,0 +1,65 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2010 Novell, Inc.
+ *
+ * LibreOffice - a multi-platform office productivity suite
+ *
+ * This file is part of LibreOffice.
+ *
+ * LibreOffice 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.
+ *
+ * LibreOffice 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 LibreOffice.  If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef __SC_TPDEFAULTS_HXX__
+#define __SC_TPDEFAULTS_HXX__
+
+#include <sfx2/tabdlg.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/field.hxx>
+
+#include <boost/shared_ptr.hpp>
+
+class ScDocOptions;
+
+class ScTpDefaultsOptions : public SfxTabPage
+{
+public:
+    using SfxTabPage::DeactivatePage;
+
+    static  SfxTabPage* Create (Window* pParent, const SfxItemSet& rCoreAttrs);
+
+    virtual sal_Bool FillItemSet(SfxItemSet& rCoreAttrs);
+    virtual void Reset(const SfxItemSet& rCoreAttrs);
+    virtual int DeactivatePage(SfxItemSet* pSet = NULL);
+
+private:
+    explicit ScTpDefaultsOptions(Window* pParent, const SfxItemSet& rCoreAttrs);
+    virtual ~ScTpDefaultsOptions();
+
+private:
+    FixedLine     aFLInitSpreadSheet;
+    FixedText     aFtNSheets;
+    NumericField  aEdNSheets;
+
+    ::boost::shared_ptr<ScDocOptions> mpLocalOptions;
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/optdlg/tpdefaults.cxx b/sc/source/ui/optdlg/tpdefaults.cxx
new file mode 100644
index 0000000..b260bd5
--- /dev/null
+++ b/sc/source/ui/optdlg/tpdefaults.cxx
@@ -0,0 +1,87 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2010 Novell, Inc.
+ *
+ * LibreOffice - a multi-platform office productivity suite
+ *
+ * This file is part of LibreOffice.
+ *
+ * LibreOffice 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.
+ *
+ * LibreOffice 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 LibreOffice.  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_sc.hxx"
+
+#undef SC_DLLIMPLEMENTATION
+
+#include "tpdefaults.hxx"
+#include "optdlg.hrc"
+#include "scresid.hxx"
+#include "scmod.hxx"
+#include "docoptio.hxx"
+
+ScTpDefaultsOptions::ScTpDefaultsOptions(Window *pParent, const SfxItemSet &rCoreAttrs) :
+    SfxTabPage(pParent, ScResId(RID_SCPAGE_DEFAULTS), rCoreAttrs),
+    aFLInitSpreadSheet ( this, ScResId( FL_INIT_SPREADSHEET ) ),
+    aFtNSheets         ( this, ScResId( FT_NSHEETS ) ),
+    aEdNSheets                    ( this, ScResId( ED_NSHEETS ) )
+{
+    FreeResource();
+
+    const ScTpCalcItem& rItem = static_cast<const ScTpCalcItem&>(
+        rCoreAttrs.Get(GetWhich(SID_SCDOCOPTIONS)));
+    mpLocalOptions.reset(new ScDocOptions(rItem.GetDocOptions()));
+}
+
+ScTpDefaultsOptions::~ScTpDefaultsOptions()
+{
+}
+
+SfxTabPage* ScTpDefaultsOptions::Create(Window *pParent, const SfxItemSet &rCoreAttrs)
+{
+    return new ScTpDefaultsOptions(pParent, rCoreAttrs);
+}
+
+sal_Bool ScTpDefaultsOptions::FillItemSet(SfxItemSet &rCoreAttrs)
+{
+    SCTAB nTabCount = static_cast<SCTAB>(aEdNSheets.GetValue());
+
+    if ( mpLocalOptions->GetInitTabCount() != nTabCount)
+     {
+         mpLocalOptions->SetInitTabCount( nTabCount );
+
+         rCoreAttrs.Put(ScTpCalcItem(GetWhich(SID_SCDOCOPTIONS), *mpLocalOptions));
+       return sal_True;
+     }
+    else
+     return sal_False;
+}
+
+void ScTpDefaultsOptions::Reset(const SfxItemSet &/*rCoreAttrs*/)
+{
+    aEdNSheets.SetValue( static_cast<sal_uInt16>(mpLocalOptions->GetInitTabCount()) );
+}
+
+int ScTpDefaultsOptions::DeactivatePage(SfxItemSet* /*pSet*/)
+{
+    return KEEP_PAGE;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/src/optdlg.src b/sc/source/ui/src/optdlg.src
index 5a210d0..d6a6228 100644
--- a/sc/source/ui/src/optdlg.src
+++ b/sc/source/ui/src/optdlg.src
@@ -908,3 +908,35 @@ TabPage RID_SCPAGE_PRINT
         Text [ en-US ] = "~Print only selected sheets";
     };
 };
+
+TabPage RID_SCPAGE_DEFAULTS
+{
+    HelpId = HID_SCPAGE_DEFAULTS ;
+    SVLook = TRUE ;
+    Hide = TRUE ;
+    Pos = MAP_APPFONT ( 0 , 0 ) ;
+    Size = MAP_APPFONT ( 260 , 185 ) ;
+    FixedLine FL_INIT_SPREADSHEET
+    {
+        Pos = MAP_APPFONT ( 6 , 3 ) ;
+        Size = MAP_APPFONT ( 248 , 8 ) ;
+        Text [ en-US ] = "New Spreadsheet";
+    };
+    FixedText FT_NSHEETS
+    {
+        Pos = MAP_APPFONT ( 12 , 32 ) ;
+        Size = MAP_APPFONT ( 120 , 8 ) ;
+        Text [ en-US ] = "Number of worksheets in new document";
+    };
+    NumericField ED_NSHEETS
+    {
+        HelpID = "sc:NumericField:RID_SCPAGE_CALC:ED_NSHEETS";
+        Border = TRUE ;
+        Pos = MAP_APPFONT ( 130 , 30 ) ;
+        Size = MAP_APPFONT ( 25 , 12 ) ;
+        Minimum = 1 ;
+        Maximum = 32000 ;
+        Spin = TRUE ;
+        Repeat = TRUE ;
+    };
+};
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index a542a27..73e3055 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -29,8 +29,6 @@
 // MARKER(update_precomp.py): autogen include statement, do not remove
 #include "precompiled_sc.hxx"
 
-
-
 // INCLUDE ---------------------------------------------------------------
 
 #include "scitems.hxx"
@@ -97,6 +95,7 @@
 #include "sc.hrc"
 #include "scabstdlg.hxx"
 #include "externalrefmgr.hxx"
+#include "docoptio.hxx"
 
 void ActivateOlk( ScViewData* pViewData );
 void DeActivateOlk( ScViewData* pViewData );
@@ -1596,8 +1595,13 @@ void ScTabViewShell::Construct( sal_uInt8 nForceDesignMode )
             // append additional sheets (not for OLE object)
             if ( pDocSh->GetCreateMode() != SFX_CREATE_MODE_EMBEDDED )
             {
-                SCTAB nInitTabCount = 3;                                                       //! 
    konfigurierbar !!!
-                // Get the customized initial tab count, we only can set the count by VBA API 
currently.
+                // Get the customized initial tab count...
+
+                // ... from option dialog.
+                const ScDocOptions& rDocOpt = SC_MOD()->GetDocOptions();
+                SCTAB nInitTabCount = rDocOpt.GetInitTabCount();
+
+                // ... by VBA API.
                 const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions();
                 SCTAB nNewTabCount = rAppOpt.GetTabCountInNewSpreadsheet();
                 if ( nNewTabCount >= 1 && nNewTabCount <= MAXTAB )
diff --git a/cui/source/options/treeopt.src b/cui/source/options/treeopt.src
index a1924ad..55eaf83 100644
--- a/cui/source/options/treeopt.src
+++ b/cui/source/options/treeopt.src
@@ -237,6 +237,7 @@ Resource RID_OFADLG_OPTIONS_TREE_PAGES
         {
             < "%PRODUCTNAME Calc" ; 0; > ;
             < "General" ;                      SID_SC_TP_LAYOUT                        ;> ;
+            < "Defaults" ;                     RID_SC_TP_DEFAULTS                      ;> ;
             < "View" ;                 SID_SC_TP_CONTENT                       ;> ;
             < "International" ;                RID_OFA_TP_INTERNATIONAL        ;> ;
             < "Calculate" ;                    SID_SC_TP_CALC                          ;> ;
diff --git a/helpcontent2/helpers/help_hid.lst b/helpcontent2/helpers/help_hid.lst
index 3164a82..d9c1db7 100644
--- a/helpcontent2/helpers/help_hid.lst
+++ b/helpcontent2/helpers/help_hid.lst
@@ -3520,6 +3520,7 @@ HID_SCPAGE_SUBT_GROUP2,58886,
 HID_SCPAGE_SUBT_GROUP3,58887,
 HID_SCPAGE_SUBT_OPTIONS,58875,
 HID_SCPAGE_TABLE,58883,
+HID_SCPAGE_DEFAULTS,58894,
 HID_SCPAGE_USERLISTS,58880,
 HID_SCRIPTORG_DIALOG,39987,
 HID_SCRIPTSBOX,40011,
diff --git a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs 
b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
index 8e50f95..f558af8 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
@@ -1570,6 +1570,24 @@
                     </constraints>
                 </prop>
             </group>
+       </group>
+        <group oor:name="Defaults">
+          <info>
+            <desc>Contains various defaults settings.</desc>
+          </info>
+          <group oor:name="Other">
+           <info>
+              <desc>Other Program defaults</desc>
+           </info>
+           <prop oor:name="TabCount" oor:type="xs:int">
+              <!-- UIHints: Tools - Options - Spreadsheet - Defaults -->
+              <info>
+                <author>Albert Thuswaldner</author>
+                <desc>Option to set initial number of sheet tabs</desc>
+              </info>
+             <value>3</value>
+           </prop>
+          </group>
         </group>
-       </component>
+      </component>
 </oor:component-schema>
diff --git a/svx/inc/svx/dialogs.hrc b/svx/inc/svx/dialogs.hrc
index 4a30eb4..c399162 100755
--- a/svx/inc/svx/dialogs.hrc
+++ b/svx/inc/svx/dialogs.hrc
@@ -166,6 +166,7 @@
 #define        RID_OFA_TP_INTERNATIONAL_SD             (RID_OFA_START + 253)
 #define        RID_OFA_TP_INTERNATIONAL_IMPR   (RID_OFA_START + 254)
 #define        RID_OFA_TP_INTERNATIONAL                (RID_OFA_START + 252) // calc
+#define RID_SC_TP_DEFAULTS                     (RID_OFA_START + 253)
 
 //---------------------------------------------------------------------
 // ResId's fuer die Zeichen-TabPages
diff --git a/svx/source/src/app.hrc b/svx/source/src/app.hrc
index 69f5766..bcacb30 100755
--- a/svx/source/src/app.hrc
+++ b/svx/source/src/app.hrc
@@ -199,6 +199,7 @@
 #define RID_SW_TP_OPTCAPTION_PAGE       (RID_OFA_START + 256)
 #define SID_SC_TP_FORMULA               (RID_OFA_START + 257)
 #define SID_SC_TP_COMPATIBILITY         (RID_OFA_START + 258)
+#define RID_SC_TP_DEFAULTS                     (RID_OFA_START + 259)
 
 // Strings ------------------------------------------
 

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.