[Libreoffice-commits] core.git: sc/source sc/uiconfig sc/UIConfig_scalc.mk
Markus Mohrhard
markus.mohrhard at googlemail.com
Wed Feb 14 02:00:01 UTC 2018
sc/UIConfig_scalc.mk | 2
sc/source/ui/miscdlgs/dataproviderdlg.cxx | 79 ++++++++++++++++++++++----
sc/uiconfig/scalc/ui/deletecolumnentry.ui | 68 ++++++++++++++++++++++
sc/uiconfig/scalc/ui/mergecolumnentry.ui | 89 ++++++++++++++++++++++++++++++
4 files changed, 227 insertions(+), 11 deletions(-)
New commits:
commit d0aca687f654eff81b86540007e7c8606ab00e1f
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date: Thu Feb 8 22:46:59 2018 +0100
init the selected columns in data transformations dialog
Change-Id: Ie1d9213ba4f0d88e09a368fa778c77de3e89492f
Reviewed-on: https://gerrit.libreoffice.org/49458
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
diff --git a/sc/UIConfig_scalc.mk b/sc/UIConfig_scalc.mk
index 845ede98034b..2e8c1ad945c3 100644
--- a/sc/UIConfig_scalc.mk
+++ b/sc/UIConfig_scalc.mk
@@ -116,6 +116,7 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/scalc,\
sc/uiconfig/scalc/ui/definedatabaserangedialog \
sc/uiconfig/scalc/ui/definename \
sc/uiconfig/scalc/ui/deletecells \
+ sc/uiconfig/scalc/ui/deletecolumnentry \
sc/uiconfig/scalc/ui/deletecontents \
sc/uiconfig/scalc/ui/descriptivestatisticsdialog \
sc/uiconfig/scalc/ui/dropmenu \
@@ -152,6 +153,7 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/scalc,\
sc/uiconfig/scalc/ui/notebookbar_groupedbar_compact \
sc/uiconfig/scalc/ui/managenamesdialog \
sc/uiconfig/scalc/ui/mergecellsdialog \
+ sc/uiconfig/scalc/ui/mergecolumnentry \
sc/uiconfig/scalc/ui/movecopysheet \
sc/uiconfig/scalc/ui/movingaveragedialog \
sc/uiconfig/scalc/ui/multipleoperationsdialog \
diff --git a/sc/source/ui/miscdlgs/dataproviderdlg.cxx b/sc/source/ui/miscdlgs/dataproviderdlg.cxx
index 11fa52ee2927..78953cb3d4fd 100644
--- a/sc/source/ui/miscdlgs/dataproviderdlg.cxx
+++ b/sc/source/ui/miscdlgs/dataproviderdlg.cxx
@@ -13,6 +13,8 @@
#include <dataprovider.hxx>
#include <datatransformation.hxx>
+#include <comphelper/string.hxx>
+
#include <vcl/lstbox.hxx>
constexpr int MENU_START = 0;
@@ -202,7 +204,6 @@ IMPL_LINK_NOARG(ScDataProviderBaseControl, ApplyBtnHdl, Button*, void)
maImportCallback.Call(this);
}
-
namespace {
struct MenuData
@@ -275,9 +276,10 @@ class ScSplitColumnTransformationControl : public ScDataTransformationBaseContro
private:
VclPtr<Edit> maSeparator;
VclPtr<NumericField> maNumColumns;
+ SCCOL mnCol;
public:
- ScSplitColumnTransformationControl(vcl::Window* pParent);
+ ScSplitColumnTransformationControl(vcl::Window* pParent, SCCOL nCol);
~ScSplitColumnTransformationControl() override;
virtual void dispose() override;
@@ -285,8 +287,9 @@ public:
virtual std::shared_ptr<sc::DataTransformation> getTransformation() override;
};
-ScSplitColumnTransformationControl::ScSplitColumnTransformationControl(vcl::Window* pParent):
- ScDataTransformationBaseControl(pParent, "modules/scalc/ui/splitcolumnentry.ui")
+ScSplitColumnTransformationControl::ScSplitColumnTransformationControl(vcl::Window* pParent, SCCOL nCol):
+ ScDataTransformationBaseControl(pParent, "modules/scalc/ui/splitcolumnentry.ui"),
+ mnCol(nCol)
{
get(maSeparator, "ed_separator");
get(maNumColumns, "num_cols");
@@ -307,28 +310,76 @@ void ScSplitColumnTransformationControl::dispose()
std::shared_ptr<sc::DataTransformation> ScSplitColumnTransformationControl::getTransformation()
{
- return std::make_shared<sc::SplitColumnTransformation>(0, ',');
+ OUString aSeparator = maSeparator->GetText();
+ sal_Unicode cSeparator = aSeparator.isEmpty() ? ',' : aSeparator[0];
+ return std::make_shared<sc::SplitColumnTransformation>(mnCol, cSeparator);
}
class ScMergeColumnTransformationControl : public ScDataTransformationBaseControl
{
private:
+ VclPtr<Edit> mpSeparator;
+ VclPtr<Edit> mpEdColumns;
+
public:
- ScMergeColumnTransformationControl(vcl::Window* pParent);
+ ScMergeColumnTransformationControl(vcl::Window* pParent, SCCOL nStartCol, SCCOL nEndCol);
+ ~ScMergeColumnTransformationControl() override;
+
+ virtual void dispose() override;
virtual std::shared_ptr<sc::DataTransformation> getTransformation() override;
};
-ScMergeColumnTransformationControl::ScMergeColumnTransformationControl(vcl::Window* pParent):
+ScMergeColumnTransformationControl::ScMergeColumnTransformationControl(vcl::Window* pParent, SCCOL nStartCol, SCCOL nEndCol):
ScDataTransformationBaseControl(pParent, "modules/scalc/ui/mergecolumnentry.ui")
{
+ get(mpSeparator, "ed_separator");
+ get(mpEdColumns, "ed_columns");
+
+ OUStringBuffer aBuffer;
+
+ // map from zero based to one based column numbers
+ aBuffer.append(OUString::number(nStartCol + 1));
+ for ( SCCOL nCol = nStartCol + 1; nCol <= nEndCol; ++nCol)
+ {
+ aBuffer.append(";").append(OUString::number(nCol + 1));
+ }
+
+ mpEdColumns->SetText(aBuffer.makeStringAndClear());
+}
+
+ScMergeColumnTransformationControl::~ScMergeColumnTransformationControl()
+{
+ disposeOnce();
+}
+
+void ScMergeColumnTransformationControl::dispose()
+{
+ mpSeparator.clear();
+ mpEdColumns.clear();
+
+ ScDataTransformationBaseControl::dispose();
}
std::shared_ptr<sc::DataTransformation> ScMergeColumnTransformationControl::getTransformation()
{
- std::set<SCCOL> maColumns = {0, 1};
- return std::make_shared<sc::MergeColumnTransformation>(maColumns, ",");
+ OUString aColumnString = mpEdColumns->GetText();
+ std::vector<OUString> aSplitColumns = comphelper::string::split(aColumnString, ';');
+ std::set<SCCOL> aMergedColumns;
+ for (auto& rColStr : aSplitColumns)
+ {
+ sal_Int32 nCol = rColStr.toInt32();
+ if (nCol <= 0)
+ continue;
+
+ if (nCol > MAXCOL)
+ continue;
+
+ // translate from 1-based column notations to internal Calc one
+ aMergedColumns.insert(nCol - 1);
+ }
+ return std::make_shared<sc::MergeColumnTransformation>(aMergedColumns, mpSeparator->GetText());
}
}
@@ -454,13 +505,19 @@ void ScDataProviderDlg::deleteColumn()
void ScDataProviderDlg::splitColumn()
{
- VclPtr<ScSplitColumnTransformationControl> pSplitColumnEntry = VclPtr<ScSplitColumnTransformationControl>::Create(mpList);
+ SCCOL nStartCol = -1;
+ SCCOL nEndCol = -1;
+ mpTable->getColRange(nStartCol, nEndCol);
+ VclPtr<ScSplitColumnTransformationControl> pSplitColumnEntry = VclPtr<ScSplitColumnTransformationControl>::Create(mpList, nStartCol);
mpList->addEntry(pSplitColumnEntry);
}
void ScDataProviderDlg::mergeColumns()
{
- VclPtr<ScMergeColumnTransformationControl> pMergeColumnEntry = VclPtr<ScMergeColumnTransformationControl>::Create(mpList);
+ SCCOL nStartCol = -1;
+ SCCOL nEndCol = -1;
+ mpTable->getColRange(nStartCol, nEndCol);
+ VclPtr<ScMergeColumnTransformationControl> pMergeColumnEntry = VclPtr<ScMergeColumnTransformationControl>::Create(mpList, nStartCol, nEndCol);
mpList->addEntry(pMergeColumnEntry);
}
diff --git a/sc/uiconfig/scalc/ui/deletecolumnentry.ui b/sc/uiconfig/scalc/ui/deletecolumnentry.ui
new file mode 100644
index 000000000000..03bfcd48bd03
--- /dev/null
+++ b/sc/uiconfig/scalc/ui/deletecolumnentry.ui
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
+<interface domain="sc">
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkGrid" id="grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="border_width">6</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="deletecolumnentry|name">Delete Columns Action</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid_details">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="deletecolumnentry|separator">Columns (List of ';' separated columns)</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="ed_columns">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/sc/uiconfig/scalc/ui/mergecolumnentry.ui b/sc/uiconfig/scalc/ui/mergecolumnentry.ui
new file mode 100644
index 000000000000..2c032d8cb3ac
--- /dev/null
+++ b/sc/uiconfig/scalc/ui/mergecolumnentry.ui
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.2 -->
+<interface domain="sc">
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkGrid" id="grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="border_width">6</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="mergecolumnentry|name">Merge Column Action</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid_details">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="mergecolumnentry|separator">Separator:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="ed_separator">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="mergecolumnentry|columns">Columns:</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="ed_columns">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ </object>
+</interface>
More information about the Libreoffice-commits
mailing list