[Libreoffice-commits] core.git: Branch 'libreoffice-5-2' - sc/source sc/uiconfig
Tor Lillqvist
tml at collabora.com
Thu Jul 28 11:13:49 UTC 2016
sc/source/ui/optdlg/calcoptionsdlg.cxx | 674 ----------------------
sc/source/ui/optdlg/calcoptionsdlg.hxx | 21
sc/uiconfig/scalc/ui/formulacalculationoptions.ui | 299 ---------
sc/uiconfig/scalc/ui/optformula.ui | 2
4 files changed, 1 insertion(+), 995 deletions(-)
New commits:
commit 1e0a8a26ce401aa84e065057d09b8a50dcdfc871
Author: Tor Lillqvist <tml at collabora.com>
Date: Wed Jul 27 10:59:00 2016 +0300
Drop OpenCL details from the 'Detailed Calculation Settings' dialog
There is really no need for end-users to have access to these
settings. We don't want end-users to shoot themselves in the foot. If
power users really think they need to modify these settings, they can
poke the LibreOffice registry.
tdf#101063: Get rid of the whole "Test OpenCL" functionality while at it
Its intended use case has never been particularly clear. (I wrote it,
so I know.) We now test OpenCL usability silently at each from-scratch
start.
(cherry picked from commit a92da660cd4aae511785da4f3a276309c64b47f7)
(cherry picked from commit d78012872a15cdd0347cbabfc13e03ce5511bf90)
(cherry picked from commit 70258bb2d637319d8ff1d19bf304f813c5b2e948)
(cherry picked from commit e4781d09418fe1dc7219f6ae11f516da622329aa)
Change-Id: Idb800ea7e35d09fd1d72da83e93c2c2b6a025115
Reviewed-on: https://gerrit.libreoffice.org/27617
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/sc/source/ui/optdlg/calcoptionsdlg.cxx b/sc/source/ui/optdlg/calcoptionsdlg.cxx
index a62900c..46c1192 100644
--- a/sc/source/ui/optdlg/calcoptionsdlg.cxx
+++ b/sc/source/ui/optdlg/calcoptionsdlg.cxx
@@ -83,14 +83,6 @@ ScCalcOptionsDialog::ScCalcOptionsDialog(vcl::Window* pParent, const ScCalcConfi
, mbSelectedEmptyStringAsZero(rConfig.mbEmptyStringAsZero)
, mbWriteConfig(bWriteConfig)
{
- get(mpTestButton, "test");
- get(mpOpenclInfoList, "opencl_list");
- get(mpBtnAutomaticSelectionTrue, "automatic_select_true");
- get(mpBtnAutomaticSelectionFalse, "automatic_select_false");
- get(mpFtFrequency, "frequency");
- get(mpFtComputeUnits, "compute_units");
- get(mpFtMemory, "memory");
-
get(mpConversion,"comboConversion");
mpConversion->SelectEntryPos(static_cast<sal_Int32>(rConfig.meStringConversion));
mpConversion->SetSelectHdl(LINK(this, ScCalcOptionsDialog, ConversionModifiedHdl));
@@ -107,32 +99,6 @@ ScCalcOptionsDialog::ScCalcOptionsDialog(vcl::Window* pParent, const ScCalcConfi
get(mpCurrentDocOnly,"current_doc");
mpCurrentDocOnly->Check(!mbWriteConfig);
mpCurrentDocOnly->SetClickHdl(LINK(this, ScCalcOptionsDialog, CurrentDocOnlyHdl));
-
- get(mpUseOpenCL,"CBUseOpenCL");
- mpUseOpenCL->Check(rConfig.mbOpenCLSubsetOnly);
- mpUseOpenCL->SetClickHdl(LINK(this, ScCalcOptionsDialog, CBUseOpenCLHdl));
-
- get(mpSpinButton,"spinOpenCLSize");
- mpSpinButton->SetValue(rConfig.mnOpenCLMinimumFormulaGroupSize);
- mpSpinButton->SetModifyHdl(LINK(this, ScCalcOptionsDialog, SpinOpenCLMinSizeHdl));
-
- get(mpEditField, "entry");
- mpEditField->SetText(ScOpCodeSetToSymbolicString(maConfig.mpOpenCLSubsetOpCodes));
- mpEditField->set_height_request(4 * mpEditField->GetTextHeight());
-
- mpEditField->SetModifyHdl(LINK(this, ScCalcOptionsDialog, EditModifiedHdl));
-
- mpOpenclInfoList->set_height_request(4* mpOpenclInfoList->GetTextHeight());
- mpOpenclInfoList->SetStyle(mpOpenclInfoList->GetStyle() | WB_CLIPCHILDREN | WB_FORCE_MAKEVISIBLE);
- mpOpenclInfoList->SetHighlightRange();
- mpOpenclInfoList->GetParent()->Hide();
- mpOpenclInfoList->SetSelectHdl(LINK(this, ScCalcOptionsDialog, DeviceSelHdl));
-
- mpBtnAutomaticSelectionTrue->SetToggleHdl(LINK(this, ScCalcOptionsDialog, BtnAutomaticSelectHdl));
-
- maSoftware = get<vcl::Window>("software")->GetText();
-
- mpTestButton->SetClickHdl(LINK(this, ScCalcOptionsDialog, TestClickHdl));
}
ScCalcOptionsDialog::~ScCalcOptionsDialog()
@@ -142,62 +108,9 @@ ScCalcOptionsDialog::~ScCalcOptionsDialog()
void ScCalcOptionsDialog::dispose()
{
- mpUseOpenCL.clear();
- mpSpinButton.clear();
- mpEditField.clear();
- mpTestButton.clear();
- mpFtFrequency.clear();
- mpFtComputeUnits.clear();
- mpFtMemory.clear();
- mpOpenclInfoList.clear();
- mpBtnAutomaticSelectionTrue.clear();
- mpBtnAutomaticSelectionFalse.clear();
ModalDialog::dispose();
}
-void ScCalcOptionsDialog::OpenCLAutomaticSelectionChanged()
-{
- bool bValue = mpBtnAutomaticSelectionTrue->IsChecked();
- if(bValue)
- mpOpenclInfoList->Disable();
- else
- mpOpenclInfoList->Enable();
-
- maConfig.mbOpenCLAutoSelect = bValue;
-}
-
-void ScCalcOptionsDialog::SelectedDeviceChanged()
-{
-#if HAVE_FEATURE_OPENCL
- SvTreeListEntry* pEntry = mpOpenclInfoList->GetModel()->GetView(0)->FirstSelected();
- if(!pEntry)
- return;
-
- OpenCLDeviceInfo* pInfo = static_cast<OpenCLDeviceInfo*>(pEntry->GetUserData());
- if(pInfo)
- {
- mpFtFrequency->SetText(OUString::number(pInfo->mnFrequency));
- mpFtComputeUnits->SetText(OUString::number(pInfo->mnComputeUnits));
- mpFtMemory->SetText(OUString::number(pInfo->mnMemory/1024/1024));
- }
- else
- {
- mpFtFrequency->SetText(OUString());
- mpFtComputeUnits->SetText(OUString());
- mpFtMemory->SetText(OUString());
- }
-
- SvLBoxString& rBoxEntry = dynamic_cast<SvLBoxString&>(pEntry->GetItem(1));
-
- OUString aDevice = rBoxEntry.GetText();
- // use english string for configuration
- if(aDevice == maSoftware)
- aDevice = OPENCL_SOFTWARE_DEVICE_CONFIG_NAME;
-
- maConfig.maOpenCLDevice = aDevice;
-#endif
-}
-
void ScCalcOptionsDialog::CoupleEmptyAsZeroToStringConversion()
{
switch (maConfig.meStringConversion)
@@ -243,591 +156,4 @@ IMPL_LINK_TYPED(ScCalcOptionsDialog, CurrentDocOnlyHdl, Button*, pCheckBox, void
mbWriteConfig = !(static_cast<CheckBox*>(pCheckBox)->IsChecked());
}
-IMPL_LINK_TYPED(ScCalcOptionsDialog, CBUseOpenCLHdl, Button*, pCheckBox, void)
-{
- maConfig.mbOpenCLSubsetOnly = static_cast<CheckBox*>(pCheckBox)->IsChecked();
-}
-
-IMPL_LINK_TYPED(ScCalcOptionsDialog, SpinOpenCLMinSizeHdl, Edit&, rEdit, void)
-{
- maConfig.mnOpenCLMinimumFormulaGroupSize = static_cast<NumericField&>(rEdit).GetValue();
-}
-
-IMPL_LINK_NOARG_TYPED(ScCalcOptionsDialog, BtnAutomaticSelectHdl, RadioButton&, void)
-{
- OpenCLAutomaticSelectionChanged();
-}
-
-IMPL_LINK_NOARG_TYPED(ScCalcOptionsDialog, DeviceSelHdl, SvTreeListBox*, void)
-{
- SelectedDeviceChanged();
-}
-
-IMPL_LINK_TYPED(ScCalcOptionsDialog, EditModifiedHdl, Edit&, rCtrl, void)
-{
- maConfig.mpOpenCLSubsetOpCodes = ScStringToOpCodeSet(rCtrl.GetText());
-}
-
-namespace {
-
-struct Area
-{
- OUString msTitle;
- int mnRows;
-
- Area(const OUString& rTitle, int nRows = ScInterpreter::GetGlobalConfig().mnOpenCLMinimumFormulaGroupSize + 2) :
- msTitle(rTitle),
- mnRows(nRows)
- {
- }
-
- virtual ~Area()
- {
- }
-
- virtual void addHeader(ScDocument *pDoc, int nTab) const = 0;
-
- virtual void addRow(ScDocument *pDoc, int nRow, int nTab) const = 0;
-
- virtual OUString getSummaryFormula(ScDocument *pDoc, int nTab) const = 0;
-};
-
-struct OpenCLTester
-{
- int mnTestAreas;
- ScDocShell* mpDocShell;
- ScDocument *mpDoc;
- bool mbOldAutoCalc;
- ScCalcConfig mpOldCalcConfig;
-
- OpenCLTester() :
- mnTestAreas(0)
- {
- css::uno::Reference< css::uno::XComponentContext > xContext( comphelper::getProcessComponentContext() );
- css::uno::Reference< css::frame::XDesktop2 > xComponentLoader = css::frame::Desktop::create(xContext);
- css::uno::Reference< css::lang::XComponent >
- xComponent( xComponentLoader->loadComponentFromURL( "private:factory/scalc",
- "_blank", 0,
- css::uno::Sequence < css::beans::PropertyValue >() ) );
- mpDocShell = dynamic_cast<ScDocShell*>(SfxObjectShell::GetShellFromComponent(xComponent));
-
- assert(mpDocShell);
-
- mpDoc = &mpDocShell->GetDocument();
-
- mbOldAutoCalc = mpDoc->GetAutoCalc();
- mpDoc->SetAutoCalc(false);
- mpOldCalcConfig = ScInterpreter::GetGlobalConfig();
- ScCalcConfig aConfig(mpOldCalcConfig);
- aConfig.mnOpenCLMinimumFormulaGroupSize = 20;
- ScInterpreter::SetGlobalConfig(aConfig);
-
- mpDoc->SetString(ScAddress(0,0,0), "Result:");
- }
-
- void addTest(const Area &rArea)
- {
- mnTestAreas++;
- (void) mpDocShell->GetDocFunc().InsertTable(mnTestAreas, rArea.msTitle, false, true);
-
- rArea.addHeader(mpDoc, mnTestAreas);
-
- for (int i = 0; i < rArea.mnRows; ++i)
- rArea.addRow(mpDoc, i, mnTestAreas);
-
- mpDoc->SetString(ScAddress(0,1+mnTestAreas-1,0), rArea.msTitle + ":");
- mpDoc->SetString(ScAddress(1,1+mnTestAreas-1,0), rArea.getSummaryFormula(mpDoc, mnTestAreas));
-
- mpDoc->SetString(ScAddress(1,0,0),
- "=IF(SUM(" +
- ScRange(ScAddress(1,1,0),
- ScAddress(1,1+mnTestAreas-1,0)).Format(ScRefFlags::VALID|ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- ")=0,\"PASS\",\"FAIL\")");
- }
-};
-
-struct Op : Area
-{
- OUString msOp;
- double mnRangeLo;
- double mnRangeHi;
- double mnEpsilon;
-
- Op(const OUString& rTitle,
- const OUString& rOp,
- double nRangeLo, double nRangeHi,
- double nEpsilon) :
- Area(rTitle),
- msOp(rOp),
- mnRangeLo(nRangeLo),
- mnRangeHi(nRangeHi),
- mnEpsilon(nEpsilon)
- {
- }
-
- virtual ~Op()
- {
- }
-};
-
-struct UnOp : Op
-{
- double (*mpFun)(double nArg);
- bool (*mpFilterOut)(double nArg);
-
- UnOp(const OUString& rTitle,
- const OUString& rOp,
- double nRangeLo, double nRangeHi,
- double nEpsilon,
- double (*pFun)(double nArg),
- bool (*pFilterOut)(double nArg) = nullptr) :
- Op(rTitle, rOp, nRangeLo, nRangeHi, nEpsilon),
- mpFun(pFun),
- mpFilterOut(pFilterOut)
- {
- }
-
- virtual ~UnOp()
- {
- }
-
- virtual void addHeader(ScDocument *pDoc, int nTab) const override
- {
- pDoc->SetString(ScAddress(0,0,nTab), "arg");
- pDoc->SetString(ScAddress(1,0,nTab), msOp + "(arg)");
- pDoc->SetString(ScAddress(2,0,nTab), "expected");
- }
-
- virtual void addRow(ScDocument *pDoc, int nRow, int nTab) const override
- {
- double nArg;
-
- do {
- nArg = comphelper::rng::uniform_real_distribution(mnRangeLo, mnRangeHi);
- } while (mpFilterOut != nullptr && mpFilterOut(nArg));
-
- pDoc->SetValue(ScAddress(0,1+nRow,nTab), nArg);
-
- pDoc->SetString(ScAddress(1,1+nRow,nTab),
- "=" + msOp + "(" + ScAddress(0,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) + ")");
-
- pDoc->SetValue(ScAddress(2,1+nRow,nTab), mpFun(nArg));
-
- if (mnEpsilon < 0)
- {
- // relative epsilon
- pDoc->SetString(ScAddress(3,1+nRow,nTab),
- "=IF(ABS((" + ScAddress(1,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- "-" + ScAddress(2,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- ")/" + ScAddress(2,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- ")<=" + OUString::number(-mnEpsilon) +
- ",0,1)");
- }
- else
- {
- // absolute epsilon
- pDoc->SetString(ScAddress(3,1+nRow,nTab),
- "=IF(ABS(" + ScAddress(1,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- "-" + ScAddress(2,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- ")<=" + OUString::number(mnEpsilon) +
- ",0,1)");
- }
- }
-
- virtual OUString getSummaryFormula(ScDocument *pDoc, int nTab) const override
- {
- return "=SUM(" +
- ScRange(ScAddress(3,1,nTab),
- ScAddress(3,1+mnRows-1,nTab)).Format(ScRefFlags::VALID|ScRefFlags::TAB_3D|ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID|ScRefFlags::TAB_VALID, pDoc) +
- ")";
- }
-};
-
-struct BinOp : Op
-{
- double (*mpFun)(double nLhs, double nRhs);
- bool (*mpFilterOut)(double nLhs, double nRhs);
-
- BinOp(const OUString& rTitle,
- const OUString& rOp,
- double nRangeLo, double nRangeHi,
- double nEpsilon,
- double (*pFun)(double nLhs, double nRhs),
- bool (*pFilterOut)(double nLhs, double nRhs) = nullptr) :
- Op(rTitle, rOp, nRangeLo, nRangeHi, nEpsilon),
- mpFun(pFun),
- mpFilterOut(pFilterOut)
- {
- }
-
- virtual ~BinOp()
- {
- }
-
- virtual void addHeader(ScDocument *pDoc, int nTab) const override
- {
- pDoc->SetString(ScAddress(0,0,nTab), "lhs");
- pDoc->SetString(ScAddress(1,0,nTab), "rhs");
- pDoc->SetString(ScAddress(2,0,nTab), "lhs" + msOp + "rhs");
- pDoc->SetString(ScAddress(3,0,nTab), "expected");
- }
-
- virtual void addRow(ScDocument *pDoc, int nRow, int nTab) const override
- {
- double nLhs, nRhs;
-
- do {
- nLhs = comphelper::rng::uniform_real_distribution(mnRangeLo, mnRangeHi);
- nRhs = comphelper::rng::uniform_real_distribution(mnRangeLo, mnRangeHi);
- } while (mpFilterOut != nullptr && mpFilterOut(nLhs, nRhs));
-
- pDoc->SetValue(ScAddress(0,1+nRow,nTab), nLhs);
- pDoc->SetValue(ScAddress(1,1+nRow,nTab), nRhs);
-
- pDoc->SetString(ScAddress(2,1+nRow,nTab),
- "=" + ScAddress(0,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- msOp + ScAddress(1,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID));
-
- pDoc->SetValue(ScAddress(3,1+nRow,nTab), mpFun(nLhs, nRhs));
-
- pDoc->SetString(ScAddress(4,1+nRow,nTab),
- "=IF(ABS(" + ScAddress(2,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- "-" + ScAddress(3,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- ")<=" + OUString::number(mnEpsilon) +
- ",0,1)");
- }
-
- virtual OUString getSummaryFormula(ScDocument *pDoc, int nTab) const override
- {
- return "=SUM(" +
- ScRange(ScAddress(4,1,nTab),
- ScAddress(4,1+mnRows-1,nTab)).Format(ScRefFlags::VALID|ScRefFlags::TAB_3D|ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID|ScRefFlags::TAB_VALID, pDoc) +
- ")";
- }
-};
-
-struct Round : Area
-{
- Round() :
- Area("Round")
- {
- }
-
- virtual ~Round()
- {
- }
-
- virtual void addHeader(ScDocument *pDoc, int nTab) const override
- {
- pDoc->SetString(ScAddress(0,0,nTab), "x");
- pDoc->SetString(ScAddress(1,0,nTab), "n");
- pDoc->SetString(ScAddress(2,0,nTab), "ROUND(x,n)");
- pDoc->SetString(ScAddress(3,0,nTab), "expected");
- }
-
- virtual void addRow(ScDocument *pDoc, int nRow, int nTab) const override
- {
- const double nX(comphelper::rng::uniform_real_distribution(0, 100));
- const int nN(comphelper::rng::uniform_int_distribution(1, 10));
-
- pDoc->SetValue(ScAddress(0,1+nRow,nTab), nX);
- pDoc->SetValue(ScAddress(1,1+nRow,nTab), nN);
-
- pDoc->SetString(ScAddress(2,1+nRow,nTab),
- "=ROUND(" + ScAddress(0,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- "," + ScAddress(1,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- ")");
-
- pDoc->SetValue(ScAddress(3,1+nRow,nTab), ::rtl::math::round(nX, (short) nN));
-
- pDoc->SetString(ScAddress(4,1+nRow,nTab),
- "=IF(ABS(" + ScAddress(2,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- "-" + ScAddress(3,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- ")<=3e-10"
- ",0,1)");
- }
-
- virtual OUString getSummaryFormula(ScDocument *pDoc, int nTab) const override
- {
- return "=SUM(" +
- ScRange(ScAddress(4,1,nTab),
- ScAddress(4,1+mnRows-1,nTab)).Format(ScRefFlags::VALID|ScRefFlags::TAB_3D|ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID|ScRefFlags::TAB_VALID, pDoc) +
- ")";
- }
-
-};
-
-struct Normdist : Area
-{
- Normdist() :
- Area("Normdist")
- {
- }
-
- virtual ~Normdist()
- {
- }
-
- virtual void addHeader(ScDocument *pDoc, int nTab) const override
- {
- pDoc->SetString(ScAddress(0,0,nTab), "num");
- pDoc->SetString(ScAddress(1,0,nTab), "avg");
- pDoc->SetString(ScAddress(2,0,nTab), "stdev");
- pDoc->SetString(ScAddress(3,0,nTab), "type");
- pDoc->SetString(ScAddress(4,0,nTab), "NORMDIST(num,avg,stdev,type)");
- pDoc->SetString(ScAddress(5,0,nTab), "expected");
- }
-
- virtual void addRow(ScDocument *pDoc, int nRow, int nTab) const override
- {
- const double nNum(comphelper::rng::uniform_real_distribution(0, 100));
- const double nAvg(comphelper::rng::uniform_real_distribution(0, 100));
- const double nStDev(comphelper::rng::uniform_real_distribution(1, 10));
- const int nType(comphelper::rng::uniform_int_distribution(0, 1));
-
- pDoc->SetValue(ScAddress(0,1+nRow,nTab), nNum);
- pDoc->SetValue(ScAddress(1,1+nRow,nTab), nAvg);
- pDoc->SetValue(ScAddress(2,1+nRow,nTab), nStDev);
- pDoc->SetValue(ScAddress(3,1+nRow,nTab), nType);
-
- pDoc->SetString(ScAddress(4,1+nRow,nTab),
- "=NORMDIST(" + ScAddress(0,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- "," + ScAddress(1,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- "," + ScAddress(2,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- "," + ScAddress(3,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- ")");
-
- if (nType == 1)
- pDoc->SetValue(ScAddress(5,1+nRow,nTab), ScInterpreter::integralPhi((nNum-nAvg)/nStDev));
- else
- pDoc->SetValue(ScAddress(5,1+nRow,nTab), ScInterpreter::phi((nNum-nAvg)/nStDev)/nStDev);
-
- pDoc->SetString(ScAddress(6,1+nRow,nTab),
- "=IF(ABS(" + ScAddress(4,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- "-" + ScAddress(5,1+nRow,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- ")<=3e-10"
- ",0,1)");
- }
-
- virtual OUString getSummaryFormula(ScDocument *pDoc, int nTab) const override
- {
- return "=SUM(" +
- ScRange(ScAddress(6,1,nTab),
- ScAddress(6,1+mnRows-1,nTab)).Format(ScRefFlags::VALID|ScRefFlags::TAB_3D|ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID|ScRefFlags::TAB_VALID, pDoc) +
- ")";
- }
-
-};
-
-struct Reduction : Op
-{
- double mnAccumInitial;
- double (*mpFun)(double nAccum, double nArg, const Reduction& rReduction);
- bool (*mpFilterOut)(double nArg);
-
- Reduction(const OUString& rTitle,
- const OUString& rOp,
- double nAccumInitial,
- double nRangeLo, double nRangeHi,
- double nEpsilon,
- double (*pFun)(double nAccum, double nArg, const Reduction& rReduction),
- bool (*pFilterOut)(double nArg) = nullptr) :
- Op(rTitle, rOp, nRangeLo, nRangeHi, nEpsilon),
- mnAccumInitial(nAccumInitial),
- mpFun(pFun),
- mpFilterOut(pFilterOut)
- {
- }
-
- virtual ~Reduction()
- {
- }
-
- virtual void addHeader(ScDocument *pDoc, int nTab) const override
- {
- pDoc->SetString(ScAddress(0,0,nTab), "x");
- pDoc->SetString(ScAddress(1,0,nTab), msOp);
- pDoc->SetString(ScAddress(2,0,nTab), "expected");
- }
-
- virtual void addRow(ScDocument *pDoc, int nRow, int nTab) const override
- {
- double nArg;
-
- do {
- nArg = comphelper::rng::uniform_real_distribution(mnRangeLo, mnRangeHi);
- } while (mpFilterOut != nullptr && mpFilterOut(nArg));
-
- pDoc->SetValue(ScAddress(0,1+nRow,nTab), nArg);
-
- if (nRow >= mnRows/2-1)
- {
- pDoc->SetString(ScAddress(1,1+nRow-mnRows/2+1,nTab),
- "=" + msOp + "(" +
- ScRange(ScAddress(0,1+nRow-mnRows/2+1,nTab),
- ScAddress(0,1+nRow,nTab)).Format(ScRefFlags::VALID|ScRefFlags::TAB_3D|ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- ")");
-
- double nAccum(mnAccumInitial);
- for (int i = 0; i < mnRows/2; i++)
- nAccum = mpFun(nAccum, pDoc->GetValue(ScAddress(0,1+nRow-mnRows/2+i+1,nTab)), *this);
-
- pDoc->SetValue(ScAddress(2,1+nRow-mnRows/2+1,nTab), nAccum);
-
- if (mnEpsilon != 0)
- pDoc->SetString(ScAddress(3,1+nRow-mnRows/2+1,nTab),
- "=IF(ABS(" + ScAddress(1,1+nRow-mnRows/2+1,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- "-" + ScAddress(2,1+nRow-mnRows/2+1,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- ")<=" + OUString::number(mnEpsilon) +
- ",0,1)");
- else
- pDoc->SetString(ScAddress(3,1+nRow-mnRows/2+1,nTab),
- "=IF(" + ScAddress(1,1+nRow-mnRows/2+1,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- "=" + ScAddress(2,1+nRow-mnRows/2+1,nTab).Format(ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID) +
- ",0,1)");
- }
- }
-
- virtual OUString getSummaryFormula(ScDocument *pDoc, int nTab) const override
- {
- return "=SUM(" +
- ScRange(ScAddress(3,1+0,nTab),
- ScAddress(3,1+mnRows-mnRows/2-1,nTab)).Format(ScRefFlags::VALID|ScRefFlags::TAB_3D|ScRefFlags::COL_VALID|ScRefFlags::ROW_VALID|ScRefFlags::TAB_VALID, pDoc) +
- ")";
- }
-};
-
-}
-
-IMPL_STATIC_LINK_TYPED(ScCalcOptionsDialog, TestClickHdl, Button*, pButton, void)
-{
- pButton->Disable();
-
- // Automatically test the current implementation of OpenCL. If it
- // seems good, whitelist it. If it seems bad, blacklist it.
-
- std::unique_ptr<OpenCLTester> xTestDocument(new OpenCLTester());
-
- xTestDocument->addTest(BinOp("Plus", "+", -1000, 1000, 3e-10,
- [] (double nLhs, double nRhs)
- {
- return nLhs + nRhs;
- }));
-
- xTestDocument->addTest(BinOp("Minus", "-", -1000, 1000, 3e-10,
- [] (double nLhs, double nRhs)
- {
- return nLhs - nRhs;
- }));
-
- xTestDocument->addTest(BinOp("Times", "*", -1000, 1000, 3e-10,
- [] (double nLhs, double nRhs)
- {
- return nLhs * nRhs;
- }));
-
- xTestDocument->addTest(BinOp("Divided", "/", -1000, 1000, 3e-10,
- [] (double nLhs, double nRhs)
- {
- return nLhs / nRhs;
- },
- [] (double, double nRhs)
- {
- return (nRhs == 0);
- }));
-
- xTestDocument->addTest(UnOp("Sin", "SIN", -10, 10, 3e-10,
- [] (double nArg)
- {
- return sin(nArg);
- }));
-
- xTestDocument->addTest(UnOp("Cos", "COS", -10, 10, 3e-10,
- [] (double nArg)
- {
- return cos(nArg);
- }));
-
- xTestDocument->addTest(UnOp("Tan", "TAN", 0, 10, -3e-10,
- [] (double nArg)
- {
- return tan(nArg);
- },
- [] (double nArg)
- {
- return (std::fmod(nArg, M_PI) == M_PI/2);
- }));
-
- xTestDocument->addTest(UnOp("Atan", "ATAN", -10, 10, 3e-10,
- [] (double nArg)
- {
- return atan(nArg);
- }));
-
- xTestDocument->addTest(UnOp("Sqrt", "SQRT", 0, 1000, 3e-10,
- [] (double nArg)
- {
- return sqrt(nArg);
- }));
-
- xTestDocument->addTest(UnOp("Exp", "EXP", 0, 10, 3e-10,
- [] (double nArg)
- {
- return exp(nArg);
- }));
-
- xTestDocument->addTest(UnOp("Ln", "LN", 0, 1000, 3e-10,
- [] (double nArg)
- {
- return log(nArg);
- },
- [] (double nArg)
- {
- return (nArg == 0);
- }));
-
- xTestDocument->addTest(UnOp("NormSInv", "NORMSINV", 0, 1, 3e-10,
- [] (double nArg)
- {
- return ScInterpreter::gaussinv(nArg);
- }));
-
- xTestDocument->addTest(Round());
-
- xTestDocument->addTest(Normdist());
-
- xTestDocument->addTest(Reduction("Sum", "SUM", 0, -1000, 1000, 3e-10,
- [] (double nAccum, double nArg, const Reduction&)
- {
- return (nAccum + nArg);
- }));
-
- xTestDocument->addTest(Reduction("Average", "AVERAGE", 0, -1000, 1000, 3e-10,
- [] (double nAccum, double nArg, const Reduction& rReduction)
- {
- return (nAccum + nArg/(rReduction.mnRows/2));
- }));
-
- xTestDocument->addTest(Reduction("Product", "PRODUCT", 1, 0.1, 2.5, 3e-10,
- [] (double nAccum, double nArg, const Reduction&)
- {
- return (nAccum * nArg);
- }));
-
- xTestDocument->addTest(Reduction("Min", "MIN", DBL_MAX, -1000, 1000, 0,
- [] (double nAccum, double nArg, const Reduction&)
- {
- return std::min(nAccum, nArg);
- }));
-
- xTestDocument->addTest(Reduction("Max", "MAX", -DBL_MAX, -1000, 1000, 0,
- [] (double nAccum, double nArg, const Reduction&)
- {
- return std::max(nAccum, nArg);
- }));
-
- xTestDocument->mpDoc->CalcAll();
- ScInterpreter::SetGlobalConfig(xTestDocument->mpOldCalcConfig);
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/optdlg/calcoptionsdlg.hxx b/sc/source/ui/optdlg/calcoptionsdlg.hxx
index c7f2ffc..b507b07 100644
--- a/sc/source/ui/optdlg/calcoptionsdlg.hxx
+++ b/sc/source/ui/optdlg/calcoptionsdlg.hxx
@@ -38,16 +38,10 @@ public:
virtual ~ScCalcOptionsDialog();
virtual void dispose() override;
- DECL_LINK_TYPED( BtnAutomaticSelectHdl, RadioButton&, void );
- DECL_LINK_TYPED( DeviceSelHdl, SvTreeListBox*, void );
- DECL_LINK_TYPED( EditModifiedHdl, Edit&, void );
- DECL_STATIC_LINK_TYPED( ScCalcOptionsDialog, TestClickHdl, Button*, void );
DECL_LINK_TYPED( AsZeroModifiedHdl, Button*, void);
DECL_LINK_TYPED( ConversionModifiedHdl, ListBox&, void);
DECL_LINK_TYPED( SyntaxModifiedHdl, ListBox&, void);
DECL_LINK_TYPED( CurrentDocOnlyHdl, Button*, void);
- DECL_LINK_TYPED( CBUseOpenCLHdl, Button*, void);
- DECL_LINK_TYPED( SpinOpenCLMinSizeHdl, Edit&, void);
const ScCalcConfig& GetConfig() const { return maConfig;}
bool GetWriteCalcConfig() const { return mbWriteConfig;}
@@ -63,21 +57,6 @@ private:
VclPtr<ListBox> mpSyntax;
VclPtr<CheckBox> mpCurrentDocOnly;
- VclPtr<CheckBox> mpUseOpenCL;
- VclPtr<NumericField> mpSpinButton;
- VclPtr<VclMultiLineEdit> mpEditField;
- VclPtr<PushButton> mpTestButton;
-
- VclPtr<FixedText> mpFtFrequency;
- VclPtr<FixedText> mpFtComputeUnits;
- VclPtr<FixedText> mpFtMemory;
-
- VclPtr<SvTreeListBox> mpOpenclInfoList;
- VclPtr<RadioButton> mpBtnAutomaticSelectionTrue;
- VclPtr<RadioButton> mpBtnAutomaticSelectionFalse;
-
- OUString maSoftware;
-
ScCalcConfig maConfig;
bool mbSelectedEmptyStringAsZero;
diff --git a/sc/uiconfig/scalc/ui/formulacalculationoptions.ui b/sc/uiconfig/scalc/ui/formulacalculationoptions.ui
index bf1c6b0..ffeda70 100644
--- a/sc/uiconfig/scalc/ui/formulacalculationoptions.ui
+++ b/sc/uiconfig/scalc/ui/formulacalculationoptions.ui
@@ -203,304 +203,6 @@
<property name="position">0</property>
</packing>
</child>
- <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="GtkGrid" id="grid1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="vexpand">True</property>
- <property name="row_spacing">6</property>
- <property name="column_spacing">12</property>
- <child>
- <object class="GtkGrid" id="grid6">
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="row_spacing">6</property>
- <child>
- <object class="svtlo-SvTreeListBox" id="opencl_list:border">
- <property name="visible">True</property>
- <property name="app_paintable">True</property>
- <property name="can_focus">True</property>
- <property name="hexpand">True</property>
- <property name="vexpand">True</property>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="Tree List-selection"/>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid" id="grid3">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="column_spacing">12</property>
- <child>
- <object class="GtkLabel" id="label2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Automatic selection of platform/device:</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="automatic_select_true">
- <property name="label" translatable="yes">True</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- <property name="group">automatic_select_false</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="automatic_select_false">
- <property name="label" translatable="yes">False</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- <property name="group">automatic_select_true</property>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid" id="grid5">
- <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="frequency_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Frequency:</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="compute_units_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Compute units:</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="memory_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Memory (in MB):</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="frequency">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="compute_units">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="memory">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">4</property>
- <property name="width">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="software">
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Internal, software interpreter</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">6</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="test">
- <property name="label" translatable="yes">_Test OpenCL</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_underline">True</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">5</property>
- <property name="width">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="CBUseOpenCL">
- <property name="label" translatable="yes">Use Open_CL only for a subset of operations</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_underline">True</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- <property name="width">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label5">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Minimum data size for OpenCL use:</property>
- <property name="ellipsize">end</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="spinOpenCLSize">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="adjustment">adjustment1</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label7">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="valign">start</property>
- <property name="vexpand">True</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">Subset of OpCodes for which OpenCL is used:</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkTextView" id="entry">
- <property name="width_request">60</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="margin_left">50</property>
- <property name="wrap_mode">word-char</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- <property name="width">2</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </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">OpenCL 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">2</property>
- </packing>
- </child>
</object>
</child>
<action-widgets>
@@ -512,7 +214,6 @@
<widgets>
<widget name="comboSyntaxRef"/>
<widget name="comboConversion"/>
- <widget name="spinOpenCLSize"/>
</widgets>
</object>
</interface>
diff --git a/sc/uiconfig/scalc/ui/optformula.ui b/sc/uiconfig/scalc/ui/optformula.ui
index 4e66f81..686fbd0 100644
--- a/sc/uiconfig/scalc/ui/optformula.ui
+++ b/sc/uiconfig/scalc/ui/optformula.ui
@@ -269,7 +269,7 @@
<property name="column_spacing">12</property>
<child>
<object class="GtkRadioButton" id="calccustom">
- <property name="label" translatable="yes">Custom (use OpenCL, conversion of text to numbers, and more):</property>
+ <property name="label" translatable="yes">Custom (conversion of text to numbers and more):</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
More information about the Libreoffice-commits
mailing list