12 #include <document.hxx>
30 std::unique_ptr<weld::Container>
mxGrid;
59 return static_cast<SCCOL>(nCol - 1 );
66 : mxBuilder(
Application::CreateBuilder(pParent, rUIFile))
67 , mxGrid(mxBuilder->weld_container(
"grid"))
68 , mpContainer(pParent)
82 const char* aTransformationName;
83 std::function<void(ScDataProviderDlg*)> maCallback;
86 MenuData aTransformationData[] = {
104 std::unique_ptr<weld::Entry> mxColumnNums;
105 std::unique_ptr<weld::Button> mxDelete;
106 std::function<void(sal_uInt32&)> maDeleteTransformation;
110 ScDeleteColumnTransformationControl(
const ScDocument* pDoc,
weld::Container* pParent, sal_uInt32 aIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation);
116 ScDeleteColumnTransformationControl::ScDeleteColumnTransformationControl(
117 const ScDocument* pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation)
119 , mxColumnNums(mxBuilder->weld_entry(
"ed_columns"))
120 , mxDelete(mxBuilder->weld_button(
"ed_delete"))
121 , maDeleteTransformation(
std::move(aDeleteTransformation))
124 mxDelete->connect_clicked(
LINK(
this,ScDeleteColumnTransformationControl, DeleteHdl));
127 std::shared_ptr<sc::DataTransformation> ScDeleteColumnTransformationControl::getTransformation()
129 OUString aColumnString = mxColumnNums->get_text();
131 std::set<SCCOL> ColNums;
132 for (
const auto& rColStr : aSplitColumns)
134 sal_Int32 nCol = rColStr.toInt32();
138 if (nCol > mpDoc->
MaxCol())
142 ColNums.insert(nCol - 1);
145 return std::make_shared<sc::ColumnRemoveTransformation>(std::move(ColNums));
151 std::unique_ptr<weld::Entry> mxSeparator;
152 std::unique_ptr<weld::Entry> mxNumColumns;
153 std::unique_ptr<weld::Button> mxDelete;
154 std::function<void(sal_uInt32&)> maDeleteTransformation;
158 ScSplitColumnTransformationControl(
const ScDocument* pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation);
164 ScSplitColumnTransformationControl::ScSplitColumnTransformationControl(
166 std::function<
void(sal_uInt32&)> aDeleteTransformation)
168 , mxSeparator(mxBuilder->weld_entry(
"ed_separator"))
169 , mxNumColumns(mxBuilder->weld_entry(
"num_cols"))
170 , mxDelete(mxBuilder->weld_button(
"ed_delete"))
171 , maDeleteTransformation(
std::move(aDeleteTransformation))
174 mxDelete->connect_clicked(
LINK(
this,ScSplitColumnTransformationControl, DeleteHdl));
177 std::shared_ptr<sc::DataTransformation> ScSplitColumnTransformationControl::getTransformation()
179 OUString aSeparator = mxSeparator->get_text();
180 sal_Unicode cSeparator = aSeparator.isEmpty() ?
',' : aSeparator[0];
181 OUString aColStr = mxNumColumns->get_text();
183 sal_Int32 nCol = aColStr.toInt32();
184 if (nCol > 0 && nCol <= mpDoc->MaxCol())
186 return std::make_shared<sc::SplitColumnTransformation>(
mnCol, cSeparator);
192 std::unique_ptr<weld::Entry> mxSeparator;
193 std::unique_ptr<weld::Entry> mxEdColumns;
194 std::unique_ptr<weld::Button> mxDelete;
195 std::function<void(sal_uInt32&)> maDeleteTransformation;
199 ScMergeColumnTransformationControl(
const ScDocument *pDoc,
weld::Container* pParent,
SCCOL nStartCol,
SCCOL nEndCol, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation);
205 ScMergeColumnTransformationControl::ScMergeColumnTransformationControl(
207 std::function<
void(sal_uInt32&)> aDeleteTransformation)
209 , mxSeparator(mxBuilder->weld_entry(
"ed_separator"))
210 , mxEdColumns(mxBuilder->weld_entry(
"ed_columns"))
211 , mxDelete(mxBuilder->weld_button(
"ed_delete"))
212 , maDeleteTransformation(
std::move(aDeleteTransformation))
215 mxDelete->connect_clicked(
LINK(
this,ScMergeColumnTransformationControl, DeleteHdl));
220 aBuffer.append(static_cast<sal_Int32>(nStartCol + 1));
221 for (
SCCOL nCol = nStartCol + 1; nCol <= nEndCol; ++nCol)
223 aBuffer.append(
";" + OUString::number(nCol + 1));
226 mxEdColumns->set_text(aBuffer.makeStringAndClear());
229 std::shared_ptr<sc::DataTransformation> ScMergeColumnTransformationControl::getTransformation()
231 OUString aColumnString = mxEdColumns->get_text();
233 std::set<SCCOL> aMergedColumns;
234 for (
const auto& rColStr : aSplitColumns)
236 sal_Int32 nCol = rColStr.toInt32();
240 if (nCol > mpDoc->
MaxCol())
244 aMergedColumns.insert(nCol - 1);
246 return std::make_shared<sc::MergeColumnTransformation>(std::move(aMergedColumns), mxSeparator->get_text());
252 std::unique_ptr<weld::ComboBox> mxType;
253 std::unique_ptr<weld::Entry> mxEdColumns;
254 std::unique_ptr<weld::Button> mxDelete;
255 std::function<void(sal_uInt32&)> maDeleteTransformation;
259 ScSortTransformationControl(
const ScDocument* pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation);
265 ScSortTransformationControl::ScSortTransformationControl(
266 const ScDocument* pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation)
268 , mxType(mxBuilder->weld_combo_box(
"ed_ascending"))
269 , mxEdColumns(mxBuilder->weld_entry(
"ed_columns"))
270 , mxDelete(mxBuilder->weld_button(
"ed_delete"))
271 , maDeleteTransformation(
std::move(aDeleteTransformation))
274 mxDelete->connect_clicked(
LINK(
this,ScSortTransformationControl, DeleteHdl));
277 std::shared_ptr<sc::DataTransformation> ScSortTransformationControl::getTransformation()
279 OUString aColStr = mxEdColumns->get_text();
280 bool aIsAscending = mxType->get_active();
282 sal_Int32 nCol = aColStr.toInt32();
283 if (nCol > 0 && nCol <= mpDoc->MaxCol())
288 aSortParam.
nRow2=getLastRow(*mpDoc);
290 aSortParam.
nCol2=getLastCol(*mpDoc);
293 aSortParam.
maKeyState[0].bAscending = aIsAscending;
294 return std::make_shared<sc::SortTransformation>(aSortParam);
300 std::unique_ptr<weld::Entry> mxColumnNums;
301 std::unique_ptr<weld::ComboBox> mxType;
302 std::unique_ptr<weld::Button> mxDelete;
303 std::function<void(sal_uInt32&)> maDeleteTransformation;
307 ScColumnTextTransformation(
const ScDocument* pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation);
313 ScColumnTextTransformation::ScColumnTextTransformation(
314 const ScDocument* pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation)
316 , mxColumnNums(mxBuilder->weld_entry(
"ed_columns"))
317 , mxType(mxBuilder->weld_combo_box(
"ed_lst"))
318 , mxDelete(mxBuilder->weld_button(
"ed_delete"))
319 , maDeleteTransformation(
std::move(aDeleteTransformation))
322 mxDelete->connect_clicked(
LINK(
this,ScColumnTextTransformation, DeleteHdl));
325 std::shared_ptr<sc::DataTransformation> ScColumnTextTransformation::getTransformation()
327 OUString aColumnString = mxColumnNums->get_text();
329 std::set<SCCOL> aColumns;
330 for (
const auto& rColStr : aSplitColumns)
332 sal_Int32 nCol = rColStr.toInt32();
336 if (nCol > mpDoc->
MaxCol())
340 aColumns.insert(nCol - 1);
343 sal_Int32
nPos = mxType->get_active();
364 std::unique_ptr<weld::Entry> mxColumnNums;
365 std::unique_ptr<weld::ComboBox> mxType;
366 std::unique_ptr<weld::Button> mxDelete;
367 std::function<void(sal_uInt32&)> maDeleteTransformation;
371 ScAggregateFunction(
const ScDocument* pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation);
378 std::function<
void(sal_uInt32&)> aDeleteTransformation)
380 , mxColumnNums(mxBuilder->weld_entry(
"ed_columns"))
381 , mxType(mxBuilder->weld_combo_box(
"ed_lst"))
382 , mxDelete(mxBuilder->weld_button(
"ed_delete"))
383 , maDeleteTransformation(
std::move(aDeleteTransformation))
386 mxDelete->connect_clicked(
LINK(
this,ScAggregateFunction, DeleteHdl));
389 std::shared_ptr<sc::DataTransformation> ScAggregateFunction::getTransformation()
391 OUString aColumnString = mxColumnNums->get_text();
392 sal_Int32 nPos = mxType->get_active();
394 std::set<SCCOL> aColumns;
395 for (
const auto& rColStr : aSplitColumns)
397 sal_Int32 nCol = rColStr.toInt32();
401 if (nCol > mpDoc->
MaxCol())
405 aColumns.insert(nCol - 1);
427 std::unique_ptr<weld::Entry> mxColumnNums;
428 std::unique_ptr<weld::ComboBox> mxType;
429 std::unique_ptr<weld::Button> mxDelete;
430 std::function<void(sal_uInt32&)> maDeleteTransformation;
434 ScNumberTransformation(
const ScDocument *pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation);
440 ScNumberTransformation::ScNumberTransformation(
441 const ScDocument *pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation)
443 , mxColumnNums(mxBuilder->weld_entry(
"ed_columns"))
444 , mxType(mxBuilder->weld_combo_box(
"ed_lst"))
445 , mxDelete(mxBuilder->weld_button(
"ed_delete"))
446 , maDeleteTransformation(
std::move(aDeleteTransformation))
449 mxDelete->connect_clicked(
LINK(
this,ScNumberTransformation, DeleteHdl));
452 std::shared_ptr<sc::DataTransformation> ScNumberTransformation::getTransformation()
454 OUString aColumnString = mxColumnNums->get_text();
455 sal_Int32 nPos = mxType->get_active();
457 std::set<SCCOL> aColumns;
458 for (
const auto& rColStr : aSplitColumns)
460 sal_Int32 nCol = rColStr.toInt32();
464 if (nCol > mpDoc->
MaxCol())
468 aColumns.insert(nCol - 1);
508 std::unique_ptr<weld::Entry> mxColumnNums;
509 std::unique_ptr<weld::Entry> mxReplaceString;
510 std::unique_ptr<weld::Button> mxDelete;
511 std::function<void(sal_uInt32&)> maDeleteTransformation;
516 ScReplaceNullTransformation(
const ScDocument *pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation);
522 ScReplaceNullTransformation::ScReplaceNullTransformation(
const ScDocument *pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation)
524 , mxColumnNums(mxBuilder->weld_entry(
"ed_columns"))
525 , mxReplaceString(mxBuilder->weld_entry(
"ed_str"))
526 , mxDelete(mxBuilder->weld_button(
"ed_delete"))
527 , maDeleteTransformation(aDeleteTransformation)
530 mxDelete->connect_clicked(
LINK(
this,ScReplaceNullTransformation, DeleteHdl));
534 std::shared_ptr<sc::DataTransformation> ScReplaceNullTransformation::getTransformation()
536 OUString aColumnString = mxColumnNums->get_text();
537 OUString aReplaceWithString = mxReplaceString->get_text();
539 std::set<SCCOL> aColumns;
540 for (
const auto& rColStr : aSplitColumns)
542 sal_Int32 nCol = rColStr.toInt32();
546 if (nCol > mpDoc->
MaxCol())
550 aColumns.insert(nCol - 1);
553 return std::make_shared<sc::ReplaceNullTransformation>(std::move(aColumns),aReplaceWithString);
559 std::unique_ptr<weld::Entry> mxColumnNums;
560 std::unique_ptr<weld::ComboBox> mxType;
561 std::unique_ptr<weld::Button> mxDelete;
562 std::function<void(sal_uInt32&)> maDeleteTransformation;
567 ScDateTimeTransformation(
const ScDocument* pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation);
573 ScDateTimeTransformation::ScDateTimeTransformation(
const ScDocument* pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation)
575 , mxColumnNums(mxBuilder->weld_entry(
"ed_columns"))
576 , mxType(mxBuilder->weld_combo_box(
"ed_lst"))
577 , mxDelete(mxBuilder->weld_button(
"ed_delete"))
578 , maDeleteTransformation(aDeleteTransformation)
581 mxDelete->connect_clicked(
LINK(
this,ScDateTimeTransformation, DeleteHdl));
584 std::shared_ptr<sc::DataTransformation> ScDateTimeTransformation::getTransformation()
586 OUString aColumnString = mxColumnNums->get_text();
587 sal_Int32 nPos = mxType->get_active();
589 std::set<SCCOL> aColumns;
590 for (
const auto& rColStr : aSplitColumns)
592 sal_Int32 nCol = rColStr.toInt32();
596 if (nCol > mpDoc->
MaxCol())
600 aColumns.insert(nCol - 1);
650 std::unique_ptr<weld::Entry> mxFindString;
651 std::unique_ptr<weld::Entry> mxReplaceString;
652 std::unique_ptr<weld::Entry> mxEdColumns;
653 std::unique_ptr<weld::Button> mxDelete;
654 std::function<void(sal_uInt32&)> maDeleteTransformation;
658 ScFindReplaceTransformation(
const ScDocument* pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation);
664 ScFindReplaceTransformation::ScFindReplaceTransformation(
666 std::function<
void(sal_uInt32&)> aDeleteTransformation)
668 , mxFindString(mxBuilder->weld_entry(
"ed_find"))
669 , mxReplaceString(mxBuilder->weld_entry(
"ed_replace"))
670 , mxEdColumns(mxBuilder->weld_entry(
"ed_columns"))
671 , mxDelete(mxBuilder->weld_button(
"ed_delete"))
672 , maDeleteTransformation(
std::move(aDeleteTransformation))
675 mxDelete->connect_clicked(
LINK(
this, ScFindReplaceTransformation, DeleteHdl));
678 std::shared_ptr<sc::DataTransformation> ScFindReplaceTransformation::getTransformation()
680 OUString aColStr = mxEdColumns->get_text();
682 sal_Int32 nCol = aColStr.toInt32();
683 if (nCol > 0 && nCol <= mpDoc->MaxCol())
685 return std::make_shared<sc::FindReplaceTransformation>(aColumn, mxFindString->get_text(), mxReplaceString->get_text());
691 std::unique_ptr<weld::Entry> mxFindString;
692 std::unique_ptr<weld::Entry> mxEdColumns;
693 std::unique_ptr<weld::Button> mxDelete;
694 std::function<void(sal_uInt32&)> maDeleteTransformation;
698 ScDeleteRowTransformation(
const ScDocument* pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation);
704 ScDeleteRowTransformation::ScDeleteRowTransformation(
706 std::function<
void(sal_uInt32&)> aDeleteTransformation)
708 , mxFindString(mxBuilder->weld_entry(
"ed_find"))
709 , mxEdColumns(mxBuilder->weld_entry(
"ed_columns"))
710 , mxDelete(mxBuilder->weld_button(
"ed_delete"))
711 , maDeleteTransformation(
std::move(aDeleteTransformation))
714 mxDelete->connect_clicked(
LINK(
this, ScDeleteRowTransformation, DeleteHdl));
717 std::shared_ptr<sc::DataTransformation> ScDeleteRowTransformation::getTransformation()
719 OUString aColStr = mxEdColumns->get_text();
721 sal_Int32 nCol = aColStr.toInt32();
722 if (nCol > 0 && nCol <= mpDoc->MaxCol())
724 return std::make_shared<sc::DeleteRowTransformation>(aColumn, mxFindString->get_text());
730 std::unique_ptr<weld::Entry> mxRow;
731 std::unique_ptr<weld::Entry> nxRow;
732 std::unique_ptr<weld::Button> mxDelete;
733 std::function<void(sal_uInt32&)> maDeleteTransformation;
737 ScSwapRowsTransformation(
const ScDocument* pDoc,
weld::Container* pParent, sal_uInt32 nIndex, std::function<
void(sal_uInt32&)> aDeleteTransformation);
743 ScSwapRowsTransformation::ScSwapRowsTransformation(
745 std::function<
void(sal_uInt32&)> aDeleteTransformation)
747 , mxRow(mxBuilder->weld_entry(
"ed_row1"))
748 , nxRow(mxBuilder->weld_entry(
"ed_row2"))
749 , mxDelete(mxBuilder->weld_button(
"ed_delete"))
750 , maDeleteTransformation(
std::move(aDeleteTransformation))
753 mxDelete->connect_clicked(
LINK(
this, ScSwapRowsTransformation, DeleteHdl));
756 std::shared_ptr<sc::DataTransformation> ScSwapRowsTransformation::getTransformation()
758 OUString aRowStr = mxRow->get_text();
759 OUString bRowStr = nxRow->get_text();
762 sal_Int32 mRow = aRowStr.toInt32();
763 sal_Int32 nRow = bRowStr.toInt32();
764 if (mRow > 0 && mRow <= mpDoc->MaxRow())
766 if (nRow > 0 && nRow <= mpDoc->MaxRow())
768 return std::make_shared<sc::SwapRowsTransformation>(aRow, bRow);
775 : GenericDialogController(pParent,
"modules/scalc/ui/dataproviderdlg.ui",
"dataproviderdlg")
776 , mxDoc(
std::move(pDoc))
777 , mxBox(m_xBuilder->weld_container(
"data_table"))
778 , m_xTableParent(mxBox->CreateChildFrame())
780 , mxDBRanges(m_xBuilder->weld_combo_box(
"select_db_range"))
781 , mxOKBtn(m_xBuilder->weld_button(
"okay"))
782 , mxCancelBtn(m_xBuilder->weld_button(
"cancel"))
783 , mxAddTransformationBtn(m_xBuilder->weld_button(
"add_transformation"))
784 , mxScroll(m_xBuilder->weld_scrolled_window(
"scroll"))
785 , mxTransformationList(m_xBuilder->weld_container(
"transformation_ctrl"))
786 , mxTransformationBox(m_xBuilder->weld_combo_box(
"transformation_box"))
787 , mxProviderList(m_xBuilder->weld_combo_box(
"provider_lst"))
788 , mxEditURL(m_xBuilder->weld_entry(
"ed_url"))
789 , mxEditID(m_xBuilder->weld_entry(
"ed_id"))
790 , mxApplyBtn(m_xBuilder->weld_button(
"apply"))
791 , mxBrowseBtn(m_xBuilder->weld_button(
"browse"))
792 , maIdle(
"ScDataProviderDlg maIdle")
801 for (
auto& rNamedDB : rNamedDBs)
806 for (
const auto&
i : aTransformationData)
812 bool bSuccess =
mxDoc->GetDBCollection()->getNamedDBs().insert(std::unique_ptr<ScDBData>(
pDBData));
816 for (
const auto& rDataProvider : aDataProvider)
850 mxScroll->vadjustment_set_value(mxScroll->vadjustment_get_upper());
865 OUString transformation_string = mxTransformationBox->get_active_text();
866 for (
auto&
i: aTransformationData)
868 if (transformation_string == OUString::createFromAscii(
i.aTransformationName))
894 updateApplyBtn(
true);
895 import(*mxDoc,
true);
905 mxEditURL->set_text(aFileDialog.GetPath());
911 mxAddTransformationBtn->set_sensitive(
true);
912 mxAddTransformationBtn->set_tooltip_text(msAddTransformationToolTip);
921 OUString aID =
mxEditID->get_text();
929 bValid &= !
mxEditURL->get_text().isEmpty();
960 SCCOL nStartCol = -1;
1023 bool hasDBName(
const OUString& rName,
ScDBCollection* pDBCollection)
1060 (*itr)->updateIndex(nIndex++);
1068 maDeleteTransformation(
mnIndex);
1073 maDeleteTransformation(
mnIndex);
1078 maDeleteTransformation(
mnIndex);
1083 maDeleteTransformation(
mnIndex);
1088 maDeleteTransformation(
mnIndex);
1093 maDeleteTransformation(
mnIndex);
1098 maDeleteTransformation(
mnIndex);
1103 maDeleteTransformation(
mnIndex);
1108 maDeleteTransformation(
mnIndex);
1113 maDeleteTransformation(
mnIndex);
1118 maDeleteTransformation(
mnIndex);
1123 maDeleteTransformation(
mnIndex);
::std::vector< ScSortKeyState > maKeyState
#define LINK(Instance, Class, Member)
DECL_LINK(CheckNameHdl, SvxNameDialog &, bool)
std::shared_ptr< ScDocument > mxDoc
SC_DLLPUBLIC ScDBCollection * GetDBCollection() const
std::unique_ptr< weld::Button > mxCancelBtn
std::unique_ptr< weld::Button > mxOKBtn
static std::vector< OUString > getDataProviders()
std::vector< OUString > split(std::u16string_view rStr, sal_Unicode cSeparator)
void getColRange(SCCOL &rStartCol, SCCOL &rEndCol) const
std::unique_ptr< weld::Button > mxBrowseBtn
std::unique_ptr< weld::Button > mxApplyBtn
void deleteRowTransformation()
std::unique_ptr< weld::Container > mxBox
void AddDataTransformation(const std::shared_ptr< sc::DataTransformation > &mpDataTransformation)
void sortTransformation()
constexpr tools::Long Width() const
std::unique_ptr< weld::Container > mxTransformationList
SC_DLLPUBLIC SCROW MaxRow() const
SC_DLLPUBLIC sc::ExternalDataMapper & GetExternalDataMapper()
void updateApplyBtn(bool bValidConfig)
void setID(const OUString &rID)
void SetContext(Context _eNewContext)
std::unique_ptr< weld::ComboBox > mxTransformationBox
SC_DLLPUBLIC SCCOL MaxCol() const
css::uno::Reference< css::awt::XWindow > m_xTableParent
SC_DLLPUBLIC CellType GetCellType(SCCOL nCol, SCROW nRow, SCTAB nTab) const
std::unique_ptr< weld::Entry > mxEditID
void import(ScDocument &rDoc, bool bInternal=false)
OUString getDBName() const
void deletefromList(sal_uInt32 nIndex)
static SC_DLLPUBLIC const CharClass & getCharClass()
virtual void Invalidate(InvalidateFlags nFlags=InvalidateFlags::NONE)
void textTransformation()
void refresh(ScDocument *pDoc, bool bDeterministic=false)
const OUString & GetName() const
virtual void move(weld::Widget *pWidget, weld::Container *pNewParent)=0
std::unique_ptr< weld::ComboBox > mxProviderList
sc::ExternalDataSource getDataSource(ScDocument *pDoc)
ScDBData * findByUpperName(const OUString &rName)
virtual ~ScDataProviderDlg() override
void insertDataSource(const ExternalDataSource &rSource)
void replaceNullTransformation()
std::unique_ptr< char[]> aBuffer
void swapRowsTransformation()
#define SAL_WARN_IF(condition, area, stream)
constexpr tools::Long Height() const
void numberTransformation()
void dateTimeTransformation()
Reference< XExecutableDialog > m_xDialog
void findReplaceTransformation()
void SetInvokeHandler(const Link< Timer *, void > &rLink)
SC_DLLPUBLIC SCROW GetLastDataRow(SCTAB nTab, SCCOL nCol1, SCCOL nCol2, SCROW nLastRow) const
Return the last non-empty row position in given columns that's no greater than the initial last row p...
ScDataProviderDlg(weld::Window *pWindow, std::shared_ptr< ScDocument > pDoc, const ScDocument *pDocument)
IMPL_LINK_NOARG(ScDataProviderDlg, ScrollToEnd, Timer *, void)
virtual Size GetOptimalSize() const override
OUString msAddTransformationToolTip
void SetPriority(TaskPriority ePriority)
std::unique_ptr< weld::ComboBox > mxDBRanges
std::unique_ptr< weld::Entry > mxEditURL
VclPtr< ScDataTableView > mxTable
void setDBData(const OUString &rDBName)
std::vector< std::unique_ptr< ScDataTransformationBaseControl > > maControls
std::unique_ptr< weld::Button > mxAddTransformationBtn
void Show(bool bVisible=true, ShowFlags nFlags=ShowFlags::NONE)