summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
Diffstat (limited to 'sc')
-rw-r--r--sc/UIConfig_scalc.mk1
-rw-r--r--sc/source/ui/inc/tpformula.hxx38
-rw-r--r--sc/source/ui/optdlg/tpformula.cxx162
-rw-r--r--sc/source/ui/src/optdlg.src171
-rw-r--r--sc/uiconfig/scalc/ui/optformula.ui497
5 files changed, 586 insertions, 283 deletions
diff --git a/sc/UIConfig_scalc.mk b/sc/UIConfig_scalc.mk
index 708203d6be3e..4a1797cad0fb 100644
--- a/sc/UIConfig_scalc.mk
+++ b/sc/UIConfig_scalc.mk
@@ -85,6 +85,7 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/scalc,\
sc/uiconfig/scalc/ui/optcompatibilitypage \
sc/uiconfig/scalc/ui/optdefaultpage \
sc/uiconfig/scalc/ui/optdlg \
+ sc/uiconfig/scalc/ui/optformula \
sc/uiconfig/scalc/ui/optsortlists \
sc/uiconfig/scalc/ui/printeroptions \
sc/uiconfig/scalc/ui/protectsheetdlg \
diff --git a/sc/source/ui/inc/tpformula.hxx b/sc/source/ui/inc/tpformula.hxx
index 0b613169a242..acd554fb1087 100644
--- a/sc/source/ui/inc/tpformula.hxx
+++ b/sc/source/ui/inc/tpformula.hxx
@@ -56,30 +56,20 @@ private:
DECL_LINK( SepEditOnFocusHdl, Edit* );
private:
- FixedLine maFlFormulaOpt;
- FixedText maFtFormulaSyntax;
- ListBox maLbFormulaSyntax;
- CheckBox maCbEnglishFuncName;
-
- FixedLine maFlCustomCalcOpt;
- RadioButton maBtnCustomCalcDefault;
- RadioButton maBtnCustomCalcCustom;
- PushButton maBtnCustomCalcDetails;
-
- FixedLine maFlFormulaSeps;
- FixedText maFtSepFuncArg;
- Edit maEdSepFuncArg;
- FixedText maFtSepArrayCol;
- Edit maEdSepArrayCol;
- FixedText maFtSepArrayRow;
- Edit maEdSepArrayRow;
- PushButton maBtnSepReset;
-
- FixedLine maFlRecalcOptions;
- FixedText maFtOOXMLRecalc;
- ListBox maLbOOXMLRecalcOptions;
- FixedText maFtODFRecalc;
- ListBox maLbODFRecalcOptions;
+ ListBox* mpLbFormulaSyntax;
+ CheckBox* mpCbEnglishFuncName;
+
+ RadioButton* mpBtnCustomCalcDefault;
+ RadioButton* mpBtnCustomCalcCustom;
+ PushButton* mpBtnCustomCalcDetails;
+
+ Edit* mpEdSepFuncArg;
+ Edit* mpEdSepArrayCol;
+ Edit* mpEdSepArrayRow;
+ PushButton* mpBtnSepReset;
+
+ ListBox* mpLbOOXMLRecalcOptions;
+ ListBox* mpLbODFRecalcOptions;
/** Stores old separator value of currently focused separator edit box.
This value is used to revert undesired value change. */
diff --git a/sc/source/ui/optdlg/tpformula.cxx b/sc/source/ui/optdlg/tpformula.cxx
index 4e30ebd7295d..737ffe818b0c 100644
--- a/sc/source/ui/optdlg/tpformula.cxx
+++ b/sc/source/ui/optdlg/tpformula.cxx
@@ -41,54 +41,40 @@ using ::com::sun::star::lang::Locale;
using ::com::sun::star::i18n::LocaleDataItem;
ScTpFormulaOptions::ScTpFormulaOptions(Window* pParent, const SfxItemSet& rCoreAttrs) :
- SfxTabPage(pParent, ScResId(RID_SCPAGE_FORMULA), rCoreAttrs),
-
- maFlFormulaOpt(this, ScResId(FL_FORMULA_OPTIONS)),
- maFtFormulaSyntax(this, ScResId(FT_FORMULA_SYNTAX)),
- maLbFormulaSyntax(this, ScResId(LB_FORMULA_SYNTAX)),
- maCbEnglishFuncName(this, ScResId(CB_ENGLISH_FUNC_NAME)),
-
- maFlCustomCalcOpt(this, ScResId(FL_CUSTOM_CALC_OPTIONS)),
- maBtnCustomCalcDefault(this, ScResId(BTN_CUSTOM_CALC_DEFAULT)),
- maBtnCustomCalcCustom(this, ScResId(BTN_CUSTOM_CALC_CUSTOM)),
- maBtnCustomCalcDetails(this, ScResId(BTN_CUSTOM_CALC_DETAILS)),
-
- maFlFormulaSeps(this, ScResId(FL_FORMULA_SEPS)),
- maFtSepFuncArg(this, ScResId(FT_FORMULA_SEP_ARG)),
- maEdSepFuncArg(this, ScResId(ED_FORMULA_SEP_ARG)),
- maFtSepArrayCol(this, ScResId(FT_FORMULA_SEP_ARRAY_C)),
- maEdSepArrayCol(this, ScResId(ED_FORMULA_SEP_ARRAY_C)),
- maFtSepArrayRow(this, ScResId(FT_FORMULA_SEP_ARRAY_R)),
- maEdSepArrayRow(this, ScResId(ED_FORMULA_SEP_ARRAY_R)),
- maBtnSepReset(this, ScResId(BTN_FORMULA_SEP_RESET)),
- maFlRecalcOptions(this, ScResId(FL_RECALC_OPTIONS)),
- maFtOOXMLRecalc(this, ScResId(FT_OOXML_RECALC)),
- maLbOOXMLRecalcOptions(this, ScResId(LB_OOXML_RECALC)),
- maFtODFRecalc(this, ScResId(FT_ODF_RECALC)),
- maLbODFRecalcOptions(this, ScResId(LB_ODF_RECALC)),
+ SfxTabPage(pParent, "OptFormula", "modules/scalc/ui/optformula.ui", rCoreAttrs),
mnDecSep(0)
{
- maLbFormulaSyntax.InsertEntry(ScResId(SCSTR_FORMULA_SYNTAX_CALC_A1).toString());
- maLbFormulaSyntax.InsertEntry(ScResId(SCSTR_FORMULA_SYNTAX_XL_A1).toString());
- maLbFormulaSyntax.InsertEntry(ScResId(SCSTR_FORMULA_SYNTAX_XL_R1C1).toString());
-
- FreeResource();
+ get(mpLbFormulaSyntax, "formulasyntax");
+ get(mpCbEnglishFuncName, "englishfuncname");
+ get(mpBtnCustomCalcDefault, "calcdefault");
+ get(mpBtnCustomCalcCustom, "calccustom");
+ get(mpBtnCustomCalcDetails, "details");
+ get(mpEdSepFuncArg, "function");
+ get(mpEdSepArrayCol, "arraycolumn");
+ get(mpEdSepArrayRow, "arrayrow");
+ get(mpBtnSepReset, "reset");
+ get(mpLbOOXMLRecalcOptions, "ooxmlrecalc");
+ get(mpLbODFRecalcOptions, "odfrecalc");
+
+ mpLbFormulaSyntax->InsertEntry(ScResId(SCSTR_FORMULA_SYNTAX_CALC_A1).toString());
+ mpLbFormulaSyntax->InsertEntry(ScResId(SCSTR_FORMULA_SYNTAX_XL_A1).toString());
+ mpLbFormulaSyntax->InsertEntry(ScResId(SCSTR_FORMULA_SYNTAX_XL_R1C1).toString());
Link aLink = LINK( this, ScTpFormulaOptions, ButtonHdl );
- maBtnSepReset.SetClickHdl(aLink);
- maBtnCustomCalcDefault.SetClickHdl(aLink);
- maBtnCustomCalcCustom.SetClickHdl(aLink);
- maBtnCustomCalcDetails.SetClickHdl(aLink);
+ mpBtnSepReset->SetClickHdl(aLink);
+ mpBtnCustomCalcDefault->SetClickHdl(aLink);
+ mpBtnCustomCalcCustom->SetClickHdl(aLink);
+ mpBtnCustomCalcDetails->SetClickHdl(aLink);
aLink = LINK( this, ScTpFormulaOptions, SepModifyHdl );
- maEdSepFuncArg.SetModifyHdl(aLink);
- maEdSepArrayCol.SetModifyHdl(aLink);
- maEdSepArrayRow.SetModifyHdl(aLink);
+ mpEdSepFuncArg->SetModifyHdl(aLink);
+ mpEdSepArrayCol->SetModifyHdl(aLink);
+ mpEdSepArrayRow->SetModifyHdl(aLink);
aLink = LINK( this, ScTpFormulaOptions, SepEditOnFocusHdl );
- maEdSepFuncArg.SetGetFocusHdl(aLink);
- maEdSepArrayCol.SetGetFocusHdl(aLink);
- maEdSepArrayRow.SetGetFocusHdl(aLink);
+ mpEdSepFuncArg->SetGetFocusHdl(aLink);
+ mpEdSepArrayCol->SetGetFocusHdl(aLink);
+ mpEdSepArrayRow->SetGetFocusHdl(aLink);
// Get the decimal separator for current locale.
OUString aSep = ScGlobal::GetpLocaleData()->getNumDecimalSep();
@@ -103,9 +89,9 @@ void ScTpFormulaOptions::ResetSeparators()
{
OUString aFuncArg, aArrayCol, aArrayRow;
ScFormulaOptions::GetDefaultFormulaSeparators(aFuncArg, aArrayCol, aArrayRow);
- maEdSepFuncArg.SetText(aFuncArg);
- maEdSepArrayCol.SetText(aArrayCol);
- maEdSepArrayRow.SetText(aArrayRow);
+ mpEdSepFuncArg->SetText(aFuncArg);
+ mpEdSepArrayCol->SetText(aArrayCol);
+ mpEdSepArrayRow->SetText(aArrayRow);
}
void ScTpFormulaOptions::OnFocusSeparatorInput(Edit* pEdit)
@@ -124,15 +110,15 @@ void ScTpFormulaOptions::UpdateCustomCalcRadioButtons(bool bDefault)
{
if (bDefault)
{
- maBtnCustomCalcDefault.Check(true);
- maBtnCustomCalcCustom.Check(false);
- maBtnCustomCalcDetails.Disable();
+ mpBtnCustomCalcDefault->Check(true);
+ mpBtnCustomCalcCustom->Check(false);
+ mpBtnCustomCalcDetails->Disable();
}
else
{
- maBtnCustomCalcDefault.Check(false);
- maBtnCustomCalcCustom.Check(true);
- maBtnCustomCalcDetails.Enable();
+ mpBtnCustomCalcDefault->Check(false);
+ mpBtnCustomCalcCustom->Check(true);
+ mpBtnCustomCalcDetails->Enable();
}
}
@@ -186,8 +172,8 @@ bool ScTpFormulaOptions::IsValidSeparator(const OUString& rSep) const
bool ScTpFormulaOptions::IsValidSeparatorSet() const
{
// Make sure the column and row separators are different.
- String aColStr = maEdSepArrayCol.GetText();
- String aRowStr = maEdSepArrayRow.GetText();
+ String aColStr = mpEdSepArrayCol->GetText();
+ String aRowStr = mpEdSepArrayRow->GetText();
if (aColStr == aRowStr)
return false;
@@ -196,13 +182,13 @@ bool ScTpFormulaOptions::IsValidSeparatorSet() const
IMPL_LINK( ScTpFormulaOptions, ButtonHdl, Button*, pBtn )
{
- if (pBtn == &maBtnSepReset)
+ if (pBtn == mpBtnSepReset)
ResetSeparators();
- else if (pBtn == &maBtnCustomCalcDefault)
+ else if (pBtn == mpBtnCustomCalcDefault)
UpdateCustomCalcRadioButtons(true);
- else if (pBtn == &maBtnCustomCalcCustom)
+ else if (pBtn == mpBtnCustomCalcCustom)
UpdateCustomCalcRadioButtons(false);
- else if (pBtn == &maBtnCustomCalcDetails)
+ else if (pBtn == mpBtnCustomCalcDetails)
LaunchCustomCalcSettings();
return 0;
@@ -245,27 +231,27 @@ sal_Bool ScTpFormulaOptions::FillItemSet(SfxItemSet& rCoreSet)
{
bool bRet = false;
ScFormulaOptions aOpt;
- sal_Bool bEnglishFuncName = maCbEnglishFuncName.IsChecked();
- sal_Int16 aSyntaxPos = maLbFormulaSyntax.GetSelectEntryPos();
- OUString aSep = maEdSepFuncArg.GetText();
- OUString aSepArrayCol = maEdSepArrayCol.GetText();
- OUString aSepArrayRow = maEdSepArrayRow.GetText();
- sal_Int16 nOOXMLRecalcMode = maLbOOXMLRecalcOptions.GetSelectEntryPos();
- sal_Int16 nODFRecalcMode = maLbODFRecalcOptions.GetSelectEntryPos();
-
- if (maBtnCustomCalcDefault.IsChecked())
+ sal_Bool bEnglishFuncName = mpCbEnglishFuncName->IsChecked();
+ sal_Int16 aSyntaxPos = mpLbFormulaSyntax->GetSelectEntryPos();
+ OUString aSep = mpEdSepFuncArg->GetText();
+ OUString aSepArrayCol = mpEdSepArrayCol->GetText();
+ OUString aSepArrayRow = mpEdSepArrayRow->GetText();
+ sal_Int16 nOOXMLRecalcMode = mpLbOOXMLRecalcOptions->GetSelectEntryPos();
+ sal_Int16 nODFRecalcMode = mpLbODFRecalcOptions->GetSelectEntryPos();
+
+ if (mpBtnCustomCalcDefault->IsChecked())
{
// When Default is selected, reset all the calc config settings to default.
maCurrentConfig.reset();
}
- if ( maLbFormulaSyntax.GetSavedValue() != aSyntaxPos
- || maCbEnglishFuncName.GetSavedValue() != bEnglishFuncName
- || static_cast<OUString>(maEdSepFuncArg.GetSavedValue()) != aSep
- || static_cast<OUString>(maEdSepArrayCol.GetSavedValue()) != aSepArrayCol
- || static_cast<OUString>(maEdSepArrayRow.GetSavedValue()) != aSepArrayRow
- || maLbOOXMLRecalcOptions.GetSavedValue() != nOOXMLRecalcMode
- || maLbODFRecalcOptions.GetSavedValue() != nODFRecalcMode
+ if ( mpLbFormulaSyntax->GetSavedValue() != aSyntaxPos
+ || mpCbEnglishFuncName->GetSavedValue() != bEnglishFuncName
+ || static_cast<OUString>(mpEdSepFuncArg->GetSavedValue()) != aSep
+ || static_cast<OUString>(mpEdSepArrayCol->GetSavedValue()) != aSepArrayCol
+ || static_cast<OUString>(mpEdSepArrayRow->GetSavedValue()) != aSepArrayRow
+ || mpLbOOXMLRecalcOptions->GetSavedValue() != nOOXMLRecalcMode
+ || mpLbODFRecalcOptions->GetSavedValue() != nODFRecalcMode
|| maSavedConfig != maCurrentConfig )
{
::formula::FormulaGrammar::Grammar eGram = ::formula::FormulaGrammar::GRAM_DEFAULT;
@@ -315,31 +301,31 @@ void ScTpFormulaOptions::Reset(const SfxItemSet& rCoreSet)
switch (eGram)
{
case ::formula::FormulaGrammar::GRAM_NATIVE:
- maLbFormulaSyntax.SelectEntryPos(0);
+ mpLbFormulaSyntax->SelectEntryPos(0);
break;
case ::formula::FormulaGrammar::GRAM_NATIVE_XL_A1:
- maLbFormulaSyntax.SelectEntryPos(1);
+ mpLbFormulaSyntax->SelectEntryPos(1);
break;
case ::formula::FormulaGrammar::GRAM_NATIVE_XL_R1C1:
- maLbFormulaSyntax.SelectEntryPos(2);
+ mpLbFormulaSyntax->SelectEntryPos(2);
break;
default:
- maLbFormulaSyntax.SelectEntryPos(0);
+ mpLbFormulaSyntax->SelectEntryPos(0);
}
- maLbFormulaSyntax.SaveValue();
+ mpLbFormulaSyntax->SaveValue();
ScRecalcOptions eOOXMLRecalc = aOpt.GetOOXMLRecalcOptions();
- maLbOOXMLRecalcOptions.SelectEntryPos(static_cast<sal_uInt16>(eOOXMLRecalc));
- maLbOOXMLRecalcOptions.SaveValue();
+ mpLbOOXMLRecalcOptions->SelectEntryPos(static_cast<sal_uInt16>(eOOXMLRecalc));
+ mpLbOOXMLRecalcOptions->SaveValue();
ScRecalcOptions eODFRecalc = aOpt.GetODFRecalcOptions();
- maLbODFRecalcOptions.SelectEntryPos(static_cast<sal_uInt16>(eODFRecalc));
- maLbODFRecalcOptions.SaveValue();
+ mpLbODFRecalcOptions->SelectEntryPos(static_cast<sal_uInt16>(eODFRecalc));
+ mpLbODFRecalcOptions->SaveValue();
// english function name.
- maCbEnglishFuncName.Check( aOpt.GetUseEnglishFuncName() );
- maCbEnglishFuncName.SaveValue();
+ mpCbEnglishFuncName->Check( aOpt.GetUseEnglishFuncName() );
+ mpCbEnglishFuncName->SaveValue();
// Separators
OUString aSep = aOpt.GetFormulaSepArg();
@@ -349,13 +335,13 @@ void ScTpFormulaOptions::Reset(const SfxItemSet& rCoreSet)
if (aSep.getLength() == 1 && aSepArrayRow.getLength() == 1 && aSepArrayCol.getLength() == 1)
{
// Each separator must be one character long.
- maEdSepFuncArg.SetText(aSep);
- maEdSepArrayCol.SetText(aSepArrayCol);
- maEdSepArrayRow.SetText(aSepArrayRow);
+ mpEdSepFuncArg->SetText(aSep);
+ mpEdSepArrayCol->SetText(aSepArrayCol);
+ mpEdSepArrayRow->SetText(aSepArrayRow);
- maEdSepFuncArg.SaveValue();
- maEdSepArrayCol.SaveValue();
- maEdSepArrayRow.SaveValue();
+ mpEdSepFuncArg->SaveValue();
+ mpEdSepArrayCol->SaveValue();
+ mpEdSepArrayRow->SaveValue();
}
else
ResetSeparators();
diff --git a/sc/source/ui/src/optdlg.src b/sc/source/ui/src/optdlg.src
index 65e546701ace..9fc747833019 100644
--- a/sc/source/ui/src/optdlg.src
+++ b/sc/source/ui/src/optdlg.src
@@ -18,177 +18,6 @@
*/
#include "optdlg.hrc"
-TabPage RID_SCPAGE_FORMULA
-{
- HelpId = HID_SCPAGE_FORMULA ;
- SVLook = TRUE ;
- Hide = TRUE ;
- Pos = MAP_APPFONT ( 0 , 0 ) ;
- Size = MAP_APPFONT ( TP_WIDTH , TP_HEIGHT ) ;
-
- FixedLine FL_FORMULA_OPTIONS
- {
- Pos = MAP_APPFONT ( 6 , 3 ) ;
- Size = MAP_APPFONT ( 248 , 8 ) ;
- Text [ en-US ] = "Formula options";
- };
-
- FixedText FT_FORMULA_SYNTAX
- {
- Pos = MAP_APPFONT ( 21, 16 ) ;
- Size = MAP_APPFONT ( 80, 8 ) ;
- Text [ en-US ] = "Formula ~syntax" ;
- };
-
- ListBox LB_FORMULA_SYNTAX
- {
- Border = TRUE ;
- Pos = MAP_APPFONT ( 105, 14 ) ;
- Size = MAP_APPFONT ( 60, 46 ) ;
- DropDown = TRUE ;
- };
-
- CheckBox CB_ENGLISH_FUNC_NAME
- {
- Pos = MAP_APPFONT ( 12, 31 ) ;
- Size = MAP_APPFONT ( 120, 8 ) ;
- Text [ en-US ] = "Use English function names" ;
- };
-
- FixedLine FL_CUSTOM_CALC_OPTIONS
- {
- Pos = MAP_APPFONT ( 6 , 47 ) ;
- Size = MAP_APPFONT ( 140 , 8 ) ;
- Text [ en-US ] = "Detailed calculation settings";
- };
-
- RadioButton BTN_CUSTOM_CALC_DEFAULT
- {
- Pos = MAP_APPFONT ( 21 , 62 ) ;
- Size = MAP_APPFONT ( 60, 14 ) ;
- Text [ en-US ] = "Default";
- };
-
- RadioButton BTN_CUSTOM_CALC_CUSTOM
- {
- Pos = MAP_APPFONT ( 21 , 76 ) ;
- Size = MAP_APPFONT ( 60, 14 ) ;
- Text [ en-US ] = "Custom";
- };
-
- PushButton BTN_CUSTOM_CALC_DETAILS
- {
- Pos = MAP_APPFONT ( 83 , 74 ) ;
- Size = MAP_APPFONT ( 58, 14 ) ;
- Text [ en-US ] = "Details...";
- };
-
- FixedLine FL_FORMULA_SEPS
- {
- Pos = MAP_APPFONT ( 154 , 47 ) ;
- Size = MAP_APPFONT ( 100 , 8 ) ;
- Text [ en-US ] = "Separators";
- };
-
- FixedText FT_FORMULA_SEP_ARG
- {
- Pos = MAP_APPFONT ( 169, 60 );
- Size = MAP_APPFONT ( 60, 8 );
- Text [ en-US ] = "~Function";
- };
-
- Edit ED_FORMULA_SEP_ARG
- {
- Border = TRUE;
- Pos = MAP_APPFONT ( 233, 58 );
- Size = MAP_APPFONT ( 10, 12 );
- };
-
- FixedText FT_FORMULA_SEP_ARRAY_C
- {
- Pos = MAP_APPFONT ( 169, 78 );
- Size = MAP_APPFONT ( 60, 8 );
- Text [ en-US ] = "Array co~lumn";
- };
-
- Edit ED_FORMULA_SEP_ARRAY_C
- {
- Border = TRUE;
- Pos = MAP_APPFONT ( 233, 76 );
- Size = MAP_APPFONT ( 10, 12 );
- };
-
- FixedText FT_FORMULA_SEP_ARRAY_R
- {
- Pos = MAP_APPFONT ( 169, 96 );
- Size = MAP_APPFONT ( 60, 8 );
- Text [ en-US ] = "Array ~row";
- };
-
- Edit ED_FORMULA_SEP_ARRAY_R
- {
- Border = TRUE;
- Pos = MAP_APPFONT ( 233, 94 );
- Size = MAP_APPFONT ( 10, 12 );
- };
-
- PushButton BTN_FORMULA_SEP_RESET
- {
- Pos = MAP_APPFONT ( 169, 114 );
- Size = MAP_APPFONT ( 50, 14 );
- Text [ en-US ] = "Rese~t";
- };
-
- FixedLine FL_RECALC_OPTIONS
- {
- Pos = MAP_APPFONT ( 6, 132 );
- Size = MAP_APPFONT( 248, 8 );
- Text [ en-US ] = "Recalculation on file load";
- };
-
- FixedText FT_OOXML_RECALC
- {
- Pos = MAP_APPFONT ( 21, 149 );
- Size = MAP_APPFONT ( 120, 8 );
- Text [ en-US ] = "Excel 2007 and newer";
- };
-
- ListBox LB_OOXML_RECALC
- {
- Pos = MAP_APPFONT( 151, 147 );
- Size = MAP_APPFONT( 80, 50 );
- Border = TRUE;
- DropDown = TRUE;
- StringList [ en-US ] =
- {
- "Always recalculate";
- "Never recalculate";
- "Prompt user";
- };
- };
-
- FixedText FT_ODF_RECALC
- {
- Pos = MAP_APPFONT ( 21, 165 );
- Size = MAP_APPFONT ( 120, 8 );
- Text [ en-US ] = "ODF Spreadsheet (not saved by %PRODUCTNAME)";
- };
-
- ListBox LB_ODF_RECALC
- {
- Pos = MAP_APPFONT( 151, 163 );
- Size = MAP_APPFONT( 80, 50 );
- Border = TRUE;
- DropDown = TRUE;
- StringList [ en-US ] =
- {
- "Always recalculate";
- "Never recalculate";
- "Prompt user";
- };
- };
-};
-
TabPage RID_SCPAGE_CONTENT
{
HelpId = HID_SCPAGE_CONTENT ;
diff --git a/sc/uiconfig/scalc/ui/optformula.ui b/sc/uiconfig/scalc/ui/optformula.ui
new file mode 100644
index 000000000000..743ef343e025
--- /dev/null
+++ b/sc/uiconfig/scalc/ui/optformula.ui
@@ -0,0 +1,497 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkBox" id="OptFormula">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">6</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="box3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkBox" id="box4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="formulasyntaxlabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Formula _syntax:</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="formulasyntax">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="englishfuncname">
+ <property name="label" translatable="yes">Use English function names</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Formula options</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="box2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="box5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkRadioButton" id="calcdefault">
+ <property name="label" translatable="yes">Default</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="xalign">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="box6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkRadioButton" id="calccustom">
+ <property name="label" translatable="yes">Custom</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="xalign">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="details">
+ <property name="label" translatable="yes">Details...</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_action_appearance">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Detailed calculation settings</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkBox" id="box7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkGrid" id="grid1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">_Function</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Array co_lumn</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Array _row</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="function">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="invisible_char_set">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="arraycolumn">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="invisible_char_set">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="arrayrow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="invisible_char_set">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="reset">
+ <property name="label" translatable="yes">Rese_t</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">center</property>
+ <property name="use_action_appearance">False</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Separators</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="grid4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Excel 2007 and newer</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">ODF Spreadsheet (not saved by %PRODUCTNAME)</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="ooxmlrecalc">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="entry_text_column">0</property>
+ <property name="id_column">1</property>
+ <items>
+ <item translatable="yes">Always recalculate</item>
+ <item translatable="yes">Never recalculate</item>
+ <item translatable="yes">Prompt user</item>
+ </items>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="odfrecalc">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="entry_text_column">0</property>
+ <property name="id_column">1</property>
+ <items>
+ <item translatable="yes">Always recalculate</item>
+ <item translatable="yes">Never recalculate</item>
+ <item translatable="yes">Prompt user</item>
+ </items>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Recalculation on file load</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="lower">1</property>
+ <property name="upper">32000</property>
+ <property name="value">1</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+</interface>