31#include <document.hxx>
53#include <formdata.hxx>
54#include <inputwin.hxx>
77#include <LibreOfficeKit/LibreOfficeKitEnums.h>
89 sal_uInt16 nSlotId =
SC_MOD()->GetCurRefDlgId();
90 if( nSlotId == FID_ADD_NAME )
94 sal_uInt16
nId = ScNameDlgWrapper::GetChildWindowId();
98 SC_MOD()->SetRefDialog(
nId, pWnd ==
nullptr );
100 else if (nSlotId == FID_DEFINE_NAME)
105 sal_uInt16
nId = ScNameDefDlgWrapper::GetChildWindowId();
109 SC_MOD()->SetRefDialog(
nId, pWnd ==
nullptr );
121 if (
SC_MOD()->GetCurRefDlgId() != nSlotId )
136 std::shared_ptr<SfxModelessDialogController> xResult;
145 case SID_CORRELATION_DIALOG:
146 xResult = std::make_shared<ScCorrelationDialog>(pB, pCW, pParent,
GetViewData());
148 case SID_SAMPLING_DIALOG:
149 xResult = std::make_shared<ScSamplingDialog>(pB, pCW, pParent,
GetViewData());
151 case SID_DESCRIPTIVE_STATISTICS_DIALOG:
152 xResult = std::make_shared<ScDescriptiveStatisticsDialog>(pB, pCW, pParent,
GetViewData());
154 case SID_ANALYSIS_OF_VARIANCE_DIALOG:
155 xResult = std::make_shared<ScAnalysisOfVarianceDialog>(pB, pCW, pParent,
GetViewData());
157 case SID_COVARIANCE_DIALOG:
158 xResult = std::make_shared<ScCovarianceDialog>(pB, pCW, pParent,
GetViewData());
160 case SID_EXPONENTIAL_SMOOTHING_DIALOG:
161 xResult = std::make_shared<ScExponentialSmoothingDialog>(pB, pCW, pParent,
GetViewData());
163 case SID_MOVING_AVERAGE_DIALOG:
164 xResult = std::make_shared<ScMovingAverageDialog>(pB, pCW, pParent,
GetViewData());
166 case SID_REGRESSION_DIALOG:
167 xResult = std::make_shared<ScRegressionDialog>(pB, pCW, pParent,
GetViewData());
169 case SID_FTEST_DIALOG:
170 xResult = std::make_shared<ScFTestDialog>(pB, pCW, pParent,
GetViewData());
172 case SID_TTEST_DIALOG:
173 xResult = std::make_shared<ScTTestDialog>(pB, pCW, pParent,
GetViewData());
175 case SID_ZTEST_DIALOG:
176 xResult = std::make_shared<ScZTestDialog>(pB, pCW, pParent,
GetViewData());
178 case SID_CHI_SQUARE_TEST_DIALOG:
179 xResult = std::make_shared<ScChiSquareTestDialog>(pB, pCW, pParent,
GetViewData());
181 case SID_FOURIER_ANALYSIS_DIALOG:
182 xResult = std::make_shared<ScFourierAnalysisDialog>(pB, pCW, pParent,
GetViewData());
190 xResult = std::make_shared<ScSimpleRefDlg>(pB, pCW, pParent);
193 case FID_DEFINE_NAME:
197 xResult = std::make_shared<ScNameDlg>(pB, pCW, pParent,
GetViewData(),
204 xResult = std::make_shared<ScNameDlg>( pB, pCW, pParent,
GetViewData(),
217 std::map<OUString, ScRangeName*> aRangeMap;
219 xResult = std::make_shared<ScNameDefDlg>(pB, pCW, pParent,
GetViewData(), std::move(aRangeMap),
226 std::map<OUString, ScRangeName*> aRangeMap;
229 aRangeMap.insert(std::pair<OUString, ScRangeName*>(itr.first, &itr.second));
231 xResult = std::make_shared<ScNameDefDlg>(pB, pCW, pParent,
GetViewData(), std::move(aRangeMap),
238 case SID_RANDOM_NUMBER_GENERATOR_DIALOG:
239 xResult = std::make_shared<ScRandomNumberGeneratorDialog>(pB, pCW, pParent,
GetViewData());
241 case SID_SPARKLINE_DIALOG:
243 xResult = std::make_shared<sc::SparklineDialog>(pB, pCW, pParent,
GetViewData());
246 case SID_SPARKLINE_DATA_RANGE_DIALOG:
248 xResult = std::make_shared<sc::SparklineDataRangeDialog>(pB, pCW, pParent,
GetViewData());
251 case SID_DEFINE_DBNAME:
259 xResult = std::make_shared<ScDbNameDlg>(pB, pCW, pParent,
GetViewData());
262 case SID_OPENDLG_EDIT_PRINTAREA:
263 xResult = std::make_shared<ScPrintAreasDlg>(pB, pCW, pParent);
265 case SID_DEFINE_COLROWNAMERANGES:
266 xResult = std::make_shared<ScColRowNameRangesDlg>(pB, pCW, pParent,
GetViewData());
268 case SID_OPENDLG_SOLVE:
274 xResult = std::make_shared<ScSolverDlg>(pB, pCW, pParent, &rViewData.
GetDocument(), aCurPos);
277 case SID_OPENDLG_TABOP:
284 xResult = std::make_shared<ScTabOpDlg>(pB, pCW, pParent, &rViewData.
GetDocument(), aCurPos);
287 case SID_OPENDLG_CONSOLIDATE:
298 SCCOL nStartCol, nEndCol;
299 SCROW nStartRow, nEndRow;
300 SCTAB nStartTab, nEndTab;
303 nEndCol, nEndRow, nEndTab );
309 aConsParam.
nCol = nStartCol;
310 aConsParam.
nRow = nStartRow;
311 aConsParam.
nTab = nStartTab;
320 xResult = std::make_shared<ScConsolidateDlg>(pB, pCW, pParent, aArgSet);
344 xResult = std::make_shared<ScFilterDlg>(pB, pCW, pParent, aArgSet);
347 case SID_SPECIAL_FILTER:
366 aArgSet.Put( aItem );
371 xResult = std::make_shared<ScSpecialFilterDlg>(pB, pCW, pParent, aArgSet);
374 case SID_OPENDLG_OPTSOLVER:
378 xResult = std::make_shared<ScOptSolverDlg>(pB, pCW, pParent, rViewData.
GetDocShell(), aCurPos);
384 xResult = std::make_shared<ScHighlightChgDlg>(pB, pCW, pParent,
GetViewData());
387 case SID_MANAGE_XML_SOURCE:
389 xResult = std::make_shared<ScXMLSourceDlg>(pB, pCW, pParent, &rDoc);
392 case SID_OPENDLG_PIVOTTABLE:
402 xResult = std::make_shared<ScPivotLayoutDialog>(pB, pCW, pParent, &rViewData,
pDialogDPObject.get(), pObj ==
nullptr);
407 case SID_OPENDLG_FUNCTION:
416 case WID_CONDFRMT_REF:
421 if (itemsRange.begin() != itemsRange.end())
432 xResult = std::make_shared<ScCondFormatDlg>(pB, pCW, pParent, &rViewData, pDlgItem);
443 xResult->Initialize( pInfo );
497 css::uno::Reference<css::datatransfer::XTransferable2> xTransferable;
498 css::uno::Reference<css::datatransfer::clipboard::XClipboard> xClipboard;
505 xTransferable.set(xClipboard.is() ? xClipboard->getContents() :
nullptr, css::uno::UNO_QUERY);
507 return xTransferable;
535 && (nCurrentTabIndex == -1 || pTabViewShell->
getPart() == nCurrentTabIndex))
551 if (pTabViewShell && pTabViewShell->
GetDocId() == pForViewShell->
GetDocId())
569 bool bRows,
bool bSizes,
bool bHidden,
bool bFiltered,
570 bool bGroups,
SCTAB nCurrentTabIndex)
574 comphelper::LibreOfficeKit::Compat::scPrintTwipsMsgs))
577 if (!bColumns && !bRows)
580 bool bAllTypes = bSizes && bHidden && bFiltered && bGroups;
581 bool bAllDims = bColumns && bRows;
582 OString aPayload = bAllDims ?
"all" : bColumns ?
"columns" :
"rows";
587 aPayload +=
" sizes";
590 aPayload +=
" hidden";
593 aPayload +=
" filtered";
596 aPayload +=
" groups";
604 (nCurrentTabIndex == -1 || pTabViewShell->
getPart() == nCurrentTabIndex))
614 bool bSubTotal =
false;
616 size_t nRangeCount (pRangeList->
size());
617 size_t nRangeIndex (0);
618 while (!bSubTotal && nRangeIndex < nRangeCount)
620 const ScRange& rRange = (*pRangeList)[nRangeIndex];
623 while (!bSubTotal && nTab <= nTabEnd)
627 while (!bSubTotal && nRow <= nRowEnd)
642 for (
const auto& rxDB : rDBs)
649 while (!bSubTotal && nRangeIndex < nRangeCount)
651 const ScRange & rRange = (*pRangeList)[nRangeIndex];
673 rRangeFinder = rSubTotal =
false;
682 const ScRange & rRange( aMarkRangeList[
i] );
699 const bool bSubTotal(
UseSubTotal( &aRangeList ) );
705 const bool bSubTotal(
UseSubTotal( &aMarkRangeList ) );
708 const ScRange & rRange = aMarkRangeList[
i];
709 const bool bSetCursor = (
i ==
nCount - 1 );
710 const bool bContinue = (
i != 0 );
711 if ( !
AutoSum( rRange, bSubTotal, bSetCursor, bContinue, eCode ) )
void PutInOrder(T &nStart, T &nEnd)
void DrawSelectionXOR(OutlinerViewShell *pOtherShell)
void RegisterOtherShell(OutlinerViewShell *pOtherShell)
void ShowCursor(bool bGotoCursor=true, bool bForceVisCursor=true, bool bActivate=false)
EditView & GetEditView() const
void IncRow(SCROW nDelta=1)
Stores global named database ranges.
bool HasAutoFilter() const
void GetArea(SCTAB &rTab, SCCOL &rCol1, SCROW &rRow1, SCCOL &rCol2, SCROW &rRow2) const
SC_DLLPUBLIC bool GetAdvancedQuerySource(ScRange &rSource) const
SC_DLLPUBLIC void GetQueryParam(ScQueryParam &rQueryParam) const
void ExtendDataArea(const ScDocument &rDoc)
ScDBData * GetDBData(bool bMarkArea=true, ScGetDBMode eMode=SC_DB_MAKE, ScGetDBSelection eSel=ScGetDBSelection::Keep)
SC_DLLPUBLIC void GetRangeNameMap(std::map< OUString, ScRangeName * > &rRangeName)
SC_DLLPUBLIC bool RowFiltered(SCROW nRow, SCTAB nTab, SCROW *pFirstRow=nullptr, SCROW *pLastRow=nullptr) const
const ScConsolidateParam * GetConsolidateDlgData() const
SC_DLLPUBLIC ScDBCollection * GetDBCollection() const
SC_DLLPUBLIC ScDPObject * GetDPAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab) const
bool IsBlockEmpty(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab) const
static ScFunctionMgr * GetStarCalcFunctionMgr()
void updateKitCellCursor(const SfxViewShell *pOtherShell) const
todo: It should be possible to have MarkArrays for each table, in order to enable "search all" across...
bool IsMultiMarked() const
void FillRangeListWithMarks(ScRangeList *pList, bool bClear, SCTAB nForTab=-1) const
Create a range list of marks.
void SetAdvancedQuerySource(const ScRange *pSource)
bool Intersects(const ScRange &rRange) const
std::unique_ptr< ScDPObject > pDialogDPObject
bool UseSubTotal(ScRangeList *pRangeList)
void afterCallbackRegistered() override
See SfxViewShell::afterCallbackRegistered().
static void notifyAllViewsSheetGeomInvalidation(const SfxViewShell *pForViewShell, bool bColumns, bool bRows, bool bSizes, bool bHidden, bool bFiltered, bool bGroups, SCTAB nCurrentTabIndex)
Emits a LOK_CALLBACK_INVALIDATE_SHEET_GEOMETRY for all views whose current tab is equal to nCurrentTa...
std::unique_ptr< ScInputHandler, o3tl::default_delete< ScInputHandler > > mpInputHandler
static css::uno::Reference< css::datatransfer::XTransferable2 > GetClipData(vcl::Window *pWin)
static bool isAnyEditViewInRange(const SfxViewShell *pForViewShell, bool bColumns, SCCOLROW nStart, SCCOLROW nEnd)
static void notifyAllViewsHeaderInvalidation(const SfxViewShell *pForViewShell, HeaderType eHeaderType, SCTAB nCurrentTabIndex)
Emits a LOK_CALLBACK_INVALIDATE_HEADER for all views whose current tab is equal to nCurrentTabIndex.
void UpdateInputHandler(bool bForce=false, bool bStopEditing=true)
std::map< OUString, ScRangeName > m_RangeMap
void NotifyCursor(SfxViewShell *pViewShell) const override
See SfxViewShell::NotifyCursor().
void SwitchBetweenRefDialogs(SfxModelessDialogController *pDialog)
void SetCurRefDlgId(sal_uInt16 nNew)
int getPart() const override
See SfxViewShell::getPart().
OUString DoAutoSum(bool &rRangeFinder, bool &rSubTotal, const OpCode eCode)
std::shared_ptr< SfxModelessDialogController > CreateRefDialogController(SfxBindings *pB, SfxChildWindow *pCW, const SfxChildWinInfo *pInfo, weld::Window *pParent, sal_uInt16 nSlotId)
const ScInputHandler * GetInputHandler() const
std::unique_ptr< ScFormEditData > mpFormEditData
void MarkDataArea(bool bIncludeCursor=true)
void MarkRange(const ScRange &rRange, bool bSetCursor=true, bool bContinue=false)
ScViewData & GetViewData()
SC_DLLPUBLIC void SetCursor(SCCOL nPosX, SCROW nPosY, bool bNew=false)
ScDrawView * GetScDrawView()
SfxDispatcher & GetDispatcher()
ScMarkData & GetMarkData()
ScDocument & GetDocument() const
ScDocShell * GetDocShell() const
ScGridWindow * GetActiveWin()
ScMarkType GetSimpleArea(SCCOL &rStartCol, SCROW &rStartRow, SCTAB &rStartTab, SCCOL &rEndCol, SCROW &rEndRow, SCTAB &rEndTab) const
ScAddress GetCurPos() const
void SetRefTabNo(SCTAB nNewTab)
bool AutoSum(const ScRange &rRange, bool bSubTotal, bool bSetCursor, bool bContinue, const OpCode eCode)
bool GetAutoSumArea(ScRangeList &rRangeList)
void EnterAutoSum(const ScRangeList &rRangeList, bool bSubTotal, const ScAddress &rAddr, const OpCode eCode)
OUString GetAutoSumFormula(const ScRangeList &rRangeList, bool bSubTotal, const ScAddress &rAddr, const OpCode eCode)
void AdjustMarkHdl(SfxViewShell *pOtherShell=nullptr)
SdrTextObj * GetTextEditObject() const
const OutlinerView * GetTextEditOutlinerView() const
void SetHideNotDelete(bool bOn)
Item2Range GetItemSurrogates(sal_uInt16 nWhich) const
void Remove(const SfxPoolItem &)
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
SfxItemPool & GetPool() const
vcl::Window & GetWindow() const
SfxChildWindow * GetChildWindow(sal_uInt16)
static SAL_WARN_UNUSED_RESULT SfxViewFrame * GetFirst(const SfxObjectShell *pDoc=nullptr, bool bOnlyVisible=true)
bool isLOKMobilePhone() const
ViewShellDocId GetDocId() const override
SfxViewFrame & GetViewFrame() const
static SAL_WARN_UNUSED_RESULT SfxViewShell * GetNext(const SfxViewShell &rPrev, bool bOnlyVisible=true, const std::function< bool(const SfxViewShell *)> &isViewShell=nullptr)
static SAL_WARN_UNUSED_RESULT SfxViewShell * GetFirst(bool bOnlyVisible=true, const std::function< bool(const SfxViewShell *)> &isViewShell=nullptr)
virtual void libreOfficeKitViewCallback(int nType, const char *pPayload) const override
css::uno::Reference< css::datatransfer::clipboard::XClipboard > GetClipboard()
@ RowDown
If only one row or portion thereof is selected, shrink row to used data columns and select further ro...
@ SC_DB_MAKE
create "untitled" (if necessary)
bool isCompatFlagSet(Compat flag)
#define SCITEM_CONDFORMATDLGDATA
#define SCITEM_CONSOLIDATEDATA
sal_Int32 SCCOLROW
a type capable of holding either SCCOL or SCROW