summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSahil Gautam <sahil@libreoffice.org>2024-03-04 04:22:03 +0530
committerThorsten Behrens <thorsten.behrens@allotropia.de>2024-04-20 21:58:10 +0200
commit05a1217921b7be283c6750a35b90e4feda6e993e (patch)
treeb4cd353766c608d0b0bd8b4bd36f57f164e2449a
parenttdf#49885 Removed custom Thai BreakIterator (diff)
downloadcore-05a1217921b7be283c6750a35b90e4feda6e993e.tar.gz
core-05a1217921b7be283c6750a35b90e4feda6e993e.zip
tdf#80390 Extend InsertCells Dialog to allow adding a set of Rows/Columns
Change-Id: I103574d720fef685b806943672a2aeb1fbf87097 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164316 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
-rw-r--r--sc/inc/scabstdlg.hxx1
-rw-r--r--sc/source/ui/attrdlg/scdlgfact.cxx5
-rw-r--r--sc/source/ui/attrdlg/scdlgfact.hxx1
-rw-r--r--sc/source/ui/docshell/docfunc.cxx6
-rw-r--r--sc/source/ui/inc/docfunc.hxx2
-rw-r--r--sc/source/ui/inc/inscldlg.hxx8
-rw-r--r--sc/source/ui/inc/viewfunc.hxx2
-rw-r--r--sc/source/ui/miscdlgs/inscldlg.cxx42
-rw-r--r--sc/source/ui/view/cellsh1.cxx13
-rw-r--r--sc/source/ui/view/viewfunc.cxx5
-rw-r--r--sc/uiconfig/scalc/ui/insertcells.ui170
11 files changed, 184 insertions, 71 deletions
diff --git a/sc/inc/scabstdlg.hxx b/sc/inc/scabstdlg.hxx
index afd9abf4fbfc..40cf91404518 100644
--- a/sc/inc/scabstdlg.hxx
+++ b/sc/inc/scabstdlg.hxx
@@ -184,6 +184,7 @@ protected:
virtual ~AbstractScInsertCellDlg() override = default;
public:
virtual InsCellCmd GetInsCellCmd() const = 0;
+ virtual size_t GetCount() const = 0;
};
class AbstractScInsertContentsDlg : public VclAbstractDialog
diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx b/sc/source/ui/attrdlg/scdlgfact.cxx
index 03926077d9f1..1dba14884dbc 100644
--- a/sc/source/ui/attrdlg/scdlgfact.cxx
+++ b/sc/source/ui/attrdlg/scdlgfact.cxx
@@ -570,6 +570,11 @@ InsCellCmd AbstractScInsertCellDlg_Impl::GetInsCellCmd() const
return m_xDlg->GetInsCellCmd();
}
+size_t AbstractScInsertCellDlg_Impl::GetCount() const
+{
+ return m_xDlg->GetCount();
+}
+
InsertDeleteFlags AbstractScInsertContentsDlg_Impl::GetInsContentsCmdBits() const
{
return m_xDlg->GetInsContentsCmdBits();
diff --git a/sc/source/ui/attrdlg/scdlgfact.hxx b/sc/source/ui/attrdlg/scdlgfact.hxx
index 4644ff4b35e2..e1c2d0f52df3 100644
--- a/sc/source/ui/attrdlg/scdlgfact.hxx
+++ b/sc/source/ui/attrdlg/scdlgfact.hxx
@@ -266,6 +266,7 @@ public:
virtual short Execute() override;
virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) override;
virtual InsCellCmd GetInsCellCmd() const override ;
+ virtual size_t GetCount() const override ;
};
class AbstractScInsertContentsDlg_Impl : public AbstractScInsertContentsDlg
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index bad24d1cafb2..430fbe53ddd3 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -1756,7 +1756,7 @@ bool canDeleteCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, D
}
bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark, InsCellCmd eCmd,
- bool bRecord, bool bApi, bool bPartOfPaste )
+ bool bRecord, bool bApi, bool bPartOfPaste, size_t nInsertCount )
{
ScDocShellModificator aModificator( rDocShell );
ScDocument& rDoc = rDocShell.GetDocument();
@@ -1795,8 +1795,8 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
SCCOL nStartCol = aTargetRange.aStart.Col();
SCROW nStartRow = aTargetRange.aStart.Row();
SCTAB nStartTab = aTargetRange.aStart.Tab();
- SCCOL nEndCol = aTargetRange.aEnd.Col();
- SCROW nEndRow = aTargetRange.aEnd.Row();
+ SCCOL nEndCol = aTargetRange.aEnd.Col() + nInsertCount;
+ SCROW nEndRow = aTargetRange.aEnd.Row() + nInsertCount;
SCTAB nEndTab = aTargetRange.aEnd.Tab();
if ( !rDoc.ValidRow(nStartRow) || !rDoc.ValidRow(nEndRow) )
diff --git a/sc/source/ui/inc/docfunc.hxx b/sc/source/ui/inc/docfunc.hxx
index e1f0bb9eaa34..53f0bcc27104 100644
--- a/sc/source/ui/inc/docfunc.hxx
+++ b/sc/source/ui/inc/docfunc.hxx
@@ -138,7 +138,7 @@ public:
bool bApi );
bool InsertCells( const ScRange& rRange,const ScMarkData* pTabMark,
- InsCellCmd eCmd, bool bRecord, bool bApi, bool bPartOfPaste = false );
+ InsCellCmd eCmd, bool bRecord, bool bApi, bool bPartOfPaste = false, size_t nInsertCount = 0 );
bool DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
DelCellCmd eCmd, bool bApi );
diff --git a/sc/source/ui/inc/inscldlg.hxx b/sc/source/ui/inc/inscldlg.hxx
index b44bfb60baa9..fdd70fff8738 100644
--- a/sc/source/ui/inc/inscldlg.hxx
+++ b/sc/source/ui/inc/inscldlg.hxx
@@ -30,12 +30,20 @@ private:
std::unique_ptr<weld::RadioButton> m_xBtnCellsRight;
std::unique_ptr<weld::RadioButton> m_xBtnInsRow;
std::unique_ptr<weld::RadioButton> m_xBtnInsCol;
+ std::unique_ptr<weld::SpinButton> m_xNumberOfRows;
+ std::unique_ptr<weld::SpinButton> m_xNumberOfCols;
+
+ // These are arbitrarily chosen.
+ const size_t MAX_INS_ROWS = 4000;
+ const size_t MAX_INS_COLS = 4000;
public:
ScInsertCellDlg(weld::Window* pParent, bool bDisallowCellMove);
virtual ~ScInsertCellDlg() override;
InsCellCmd GetInsCellCmd() const;
+ size_t GetCount() const;
+ DECL_LINK(RadioButtonsHdl, weld::Toggleable&, void);
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/inc/viewfunc.hxx b/sc/source/ui/inc/viewfunc.hxx
index 82d202b2df8e..501772c93828 100644
--- a/sc/source/ui/inc/viewfunc.hxx
+++ b/sc/source/ui/inc/viewfunc.hxx
@@ -203,7 +203,7 @@ public:
bool Unprotect( SCTAB nTab, const OUString& rPassword );
void DeleteCells( DelCellCmd eCmd );
- bool InsertCells( InsCellCmd eCmd, bool bRecord = true, bool bPartOfPaste = false );
+ bool InsertCells( InsCellCmd eCmd, bool bRecord = true, bool bPartOfPaste = false, size_t nCount = 0);
void DeleteMulti( bool bRows );
void DeleteContents( InsertDeleteFlags nFlags );
diff --git a/sc/source/ui/miscdlgs/inscldlg.cxx b/sc/source/ui/miscdlgs/inscldlg.cxx
index e077724f4264..bfbfc0462936 100644
--- a/sc/source/ui/miscdlgs/inscldlg.cxx
+++ b/sc/source/ui/miscdlgs/inscldlg.cxx
@@ -32,17 +32,30 @@ ScInsertCellDlg::ScInsertCellDlg(weld::Window* pParent, bool bDisallowCellMove)
, m_xBtnCellsRight(m_xBuilder->weld_radio_button("right"))
, m_xBtnInsRow(m_xBuilder->weld_radio_button("rows"))
, m_xBtnInsCol(m_xBuilder->weld_radio_button("cols"))
+ , m_xNumberOfRows(m_xBuilder->weld_spin_button("number_of_rows"))
+ , m_xNumberOfCols(m_xBuilder->weld_spin_button("number_of_columns"))
{
const ScViewData* pViewData = ScDocShell::GetViewData();
if (pViewData && pViewData->GetDocument().IsLayoutRTL(pViewData->GetTabNo()))
m_xBtnCellsRight->set_label(ScResId(SCSTR_INSERT_RTL));
+ m_xNumberOfRows->set_range(1, MAX_INS_ROWS);
+ m_xNumberOfRows->set_value(1);
+ m_xNumberOfCols->set_range(1, MAX_INS_COLS);
+ m_xNumberOfCols->set_value(1);
+
+ m_xBtnInsRow->connect_toggled(LINK(this, ScInsertCellDlg, RadioButtonsHdl));
+ m_xBtnInsCol->connect_toggled(LINK(this, ScInsertCellDlg, RadioButtonsHdl));
+
+ bool bColCount = false;
+ bool bRowsCount = false;
if (bDisallowCellMove)
{
m_xBtnCellsDown->set_sensitive(false);
m_xBtnCellsRight->set_sensitive(false);
m_xBtnInsRow->set_active(true);
+ bRowsCount = true;
switch (nInsItemChecked)
{
case 2:
@@ -50,6 +63,8 @@ ScInsertCellDlg::ScInsertCellDlg(weld::Window* pParent, bool bDisallowCellMove)
break;
case 3:
m_xBtnInsCol->set_active(true);
+ bRowsCount = false;
+ bColCount = true;
break;
default:
m_xBtnInsRow->set_active(true);
@@ -68,12 +83,20 @@ ScInsertCellDlg::ScInsertCellDlg(weld::Window* pParent, bool bDisallowCellMove)
break;
case 2:
m_xBtnInsRow->set_active(true);
+ bRowsCount = true;
+ bColCount = false;
break;
case 3:
m_xBtnInsCol->set_active(true);
+ bRowsCount = false;
+ bColCount = true;
break;
}
}
+
+ // if some cells are selected, then disable the SpinButtons
+ m_xNumberOfCols->set_sensitive(bColCount && !pViewData->GetMarkData().IsMarked());
+ m_xNumberOfRows->set_sensitive(bRowsCount && !pViewData->GetMarkData().IsMarked());
}
ScInsertCellDlg::~ScInsertCellDlg() {}
@@ -106,4 +129,23 @@ InsCellCmd ScInsertCellDlg::GetInsCellCmd() const
return nReturn;
}
+size_t ScInsertCellDlg::GetCount() const
+{
+ switch (nInsItemChecked)
+ {
+ case 2:
+ return m_xNumberOfRows->get_value() - 1;
+ case 3:
+ return m_xNumberOfCols->get_value() - 1;
+ default:
+ return 0;
+ }
+}
+
+IMPL_LINK_NOARG(ScInsertCellDlg, RadioButtonsHdl, weld::Toggleable&, void)
+{
+ m_xNumberOfRows->set_sensitive(m_xBtnInsRow->get_active());
+ m_xNumberOfCols->set_sensitive(m_xBtnInsCol->get_active());
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index a8297303ee8f..69fbd1ead083 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -213,11 +213,11 @@ void HandleConditionalFormat(sal_uInt32 nIndex, bool bCondFormatDlg, bool bConta
}
}
-void InsertCells(ScTabViewShell* pTabViewShell, SfxRequest &rReq, InsCellCmd eCmd)
+void InsertCells(ScTabViewShell* pTabViewShell, SfxRequest &rReq, InsCellCmd eCmd, size_t nCount = 0)
{
if (eCmd!=INS_NONE)
{
- pTabViewShell->InsertCells( eCmd );
+ pTabViewShell->InsertCells( eCmd, true, false, nCount );
if( ! rReq.IsAPI() )
{
@@ -352,6 +352,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
case FID_INS_CELL:
{
InsCellCmd eCmd=INS_NONE;
+ size_t nCount = 0;
if ( pReqArgs )
{
@@ -385,18 +386,20 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
VclPtr<AbstractScInsertCellDlg> pDlg(pFact->CreateScInsertCellDlg(pTabViewShell->GetFrameWeld(), bTheFlag));
- pDlg->StartExecuteAsync([pDlg, pTabViewShell](sal_Int32 nResult){
+ pDlg->StartExecuteAsync([pDlg, pTabViewShell, &nCount](sal_Int32 nResult){
if (nResult == RET_OK)
{
SfxRequest aRequest(pTabViewShell->GetViewFrame(), FID_INS_CELL);
- InsertCells(pTabViewShell, aRequest, pDlg->GetInsCellCmd());
+ InsCellCmd eTmpCmd = pDlg->GetInsCellCmd();
+ nCount = pDlg->GetCount();
+ InsertCells(pTabViewShell, aRequest, eTmpCmd, nCount);
}
pDlg->disposeOnce();
});
}
}
- InsertCells(pTabViewShell, rReq, eCmd);
+ InsertCells(pTabViewShell, rReq, eCmd, nCount);
}
break;
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index b25bc9f91312..d6cf4b13ca01 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -17,6 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <address.hxx>
#include <config_features.h>
#include <scitems.hxx>
@@ -1833,7 +1834,7 @@ void ScViewFunc::OnLOKSetWidthOrHeight(SCCOLROW nStart, bool bWidth)
// insert cells - undo OK
-bool ScViewFunc::InsertCells( InsCellCmd eCmd, bool bRecord, bool bPartOfPaste )
+bool ScViewFunc::InsertCells( InsCellCmd eCmd, bool bRecord, bool bPartOfPaste, size_t nCount )
{
ScRange aRange;
ScMarkType eMarkType = GetViewData().GetSimpleArea(aRange);
@@ -1841,7 +1842,7 @@ bool ScViewFunc::InsertCells( InsCellCmd eCmd, bool bRecord, bool bPartOfPaste )
{
ScDocShell* pDocSh = GetViewData().GetDocShell();
const ScMarkData& rMark = GetViewData().GetMarkData();
- bool bSuccess = pDocSh->GetDocFunc().InsertCells( aRange, &rMark, eCmd, bRecord, false, bPartOfPaste );
+ bool bSuccess = pDocSh->GetDocFunc().InsertCells( aRange, &rMark, eCmd, bRecord, false, bPartOfPaste, nCount );
if (bSuccess)
{
ResetAutoSpellForContentChange();
diff --git a/sc/uiconfig/scalc/ui/insertcells.ui b/sc/uiconfig/scalc/ui/insertcells.ui
index 7bb1aa1cbba5..1f047b7b4867 100644
--- a/sc/uiconfig/scalc/ui/insertcells.ui
+++ b/sc/uiconfig/scalc/ui/insertcells.ui
@@ -1,33 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.36.0 -->
+<!-- Generated with glade 3.40.0 -->
<interface domain="sc">
<requires lib="gtk+" version="3.20"/>
+ <object class="GtkAdjustment" id="number_of_columns_adjustment">
+ <property name="lower">1</property>
+ <property name="upper">4000</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="number_of_rows_adjustment">
+ <property name="lower">1</property>
+ <property name="upper">4000</property>
+ <property name="value">1</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">1</property>
+ </object>
<object class="GtkDialog" id="InsertCellsDialog">
- <property name="can_focus">False</property>
- <property name="border_width">6</property>
+ <property name="can-focus">False</property>
+ <property name="border-width">6</property>
<property name="title" translatable="yes" context="insertcells|InsertCellsDialog">Insert Cells</property>
<property name="resizable">False</property>
<property name="modal">True</property>
- <property name="default_width">0</property>
- <property name="default_height">0</property>
- <property name="type_hint">dialog</property>
+ <property name="default-width">0</property>
+ <property name="default-height">0</property>
+ <property name="type-hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1">
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">12</property>
<child internal-child="action_area">
<object class="GtkButtonBox" id="dialog-action_area3">
- <property name="can_focus">False</property>
- <property name="layout_style">end</property>
+ <property name="can-focus">False</property>
+ <property name="layout-style">end</property>
<child>
<object class="GtkButton" id="ok">
<property name="label" translatable="yes" context="stock">_OK</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="receives_default">True</property>
+ <property name="can-focus">True</property>
+ <property name="can-default">True</property>
+ <property name="has-default">True</property>
+ <property name="receives-default">True</property>
<property name="use-underline">True</property>
</object>
<packing>
@@ -40,8 +53,8 @@
<object class="GtkButton" id="cancel">
<property name="label" translatable="yes" context="stock">_Cancel</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
<property name="use-underline">True</property>
</object>
<packing>
@@ -54,8 +67,8 @@
<object class="GtkButton" id="help">
<property name="label" translatable="yes" context="stock">_Help</property>
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">True</property>
<property name="use-underline">True</property>
</object>
<packing>
@@ -69,33 +82,33 @@
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="pack_type">end</property>
+ <property name="pack-type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkFrame" id="Selection">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label_xalign">0</property>
- <property name="shadow_type">none</property>
+ <property name="can-focus">False</property>
+ <property name="label-xalign">0</property>
+ <property name="shadow-type">none</property>
<child>
- <object class="GtkBox" id="box1">
+ <!-- n-columns=2 n-rows=4 -->
+ <object class="GtkGrid">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="spacing">6</property>
- <property name="margin-start">12</property>
- <property name="margin-top">6</property>
+ <property name="can-focus">False</property>
+ <property name="row-spacing">3</property>
+ <property name="column-spacing">6</property>
+ <property name="row-homogeneous">True</property>
<child>
<object class="GtkRadioButton" id="down">
<property name="label" translatable="yes" context="insertcells|down">Shift cells _down</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="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="use-underline">True</property>
<property name="active">True</property>
- <property name="draw_indicator">True</property>
+ <property name="draw-indicator">True</property>
<child internal-child="accessible">
<object class="AtkObject" id="down-atkobject">
<property name="AtkObject::accessible-description" translatable="yes" context="insertcells|extended_tip|down">Moves the contents of the selected range downward when cells are inserted.</property>
@@ -103,19 +116,18 @@
</child>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="right">
<property name="label" translatable="yes" context="insertcells|right">Shift cells _right</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="draw_indicator">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<property name="group">down</property>
<child internal-child="accessible">
<object class="AtkObject" id="right-atkobject">
@@ -124,19 +136,18 @@
</child>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="rows">
<property name="label" translatable="yes" context="insertcells|rows">Entire ro_w</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="draw_indicator">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<property name="group">down</property>
<child internal-child="accessible">
<object class="AtkObject" id="rows-atkobject">
@@ -145,19 +156,18 @@
</child>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="cols">
<property name="label" translatable="yes" context="insertcells|cols">Entire _column</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="draw_indicator">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
<property name="group">down</property>
<child internal-child="accessible">
<object class="AtkObject" id="cols-atkobject">
@@ -166,17 +176,62 @@
</child>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">4</property>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
</packing>
</child>
+ <child>
+ <object class="GtkSpinButton" id="number_of_rows">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="secondary-icon-tooltip-text" translatable="yes" context="insertcells|number_of_rows">Number of rows</property>
+ <property name="adjustment">number_of_rows_adjustment</property>
+ <property name="numeric">True</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="number_of_rows-atkobject">
+ <property name="AtkObject::accessible-description" translatable="yes" context="insertcells|extended_tip|number_of_rows">Specify the number of rows to insert.</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="number_of_columns">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="secondary-icon-tooltip-text" translatable="yes" context="insertcells|number_of_columns">Number of columns</property>
+ <property name="adjustment">number_of_columns_adjustment</property>
+ <property name="numeric">True</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="number_of_columns-atkobject">
+ <property name="AtkObject::accessible-description" translatable="yes" context="insertcells|extended_tip|number_of_columns">Specify the number of columns to insert.</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
</object>
</child>
<child type="label">
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="can-focus">False</property>
<property name="label" translatable="yes" context="insertcells|label1">Selection</property>
<attributes>
<attribute name="weight" value="bold"/>
@@ -197,9 +252,6 @@
<action-widget response="-6">cancel</action-widget>
<action-widget response="-11">help</action-widget>
</action-widgets>
- <child type="titlebar">
- <placeholder/>
- </child>
<child internal-child="accessible">
<object class="AtkObject" id="InsertCellsDialog-atkobject">
<property name="AtkObject::accessible-description" translatable="yes" context="insertcells|extended_tip|InsertCellsDialog">Opens the Insert Cells dialog, in which you can insert new cells according to the options that you specify.</property>