[Libreoffice-commits] core.git: sc/source sc/uiconfig

Heiko Tietze (via logerrit) logerrit at kemper.freedesktop.org
Fri Nov 27 09:40:32 UTC 2020


 sc/source/ui/inc/inscodlg.hxx        |   15 
 sc/source/ui/miscdlgs/inscodlg.cxx   |  136 +++---
 sc/uiconfig/scalc/ui/pastespecial.ui |  723 +++++++++++++++++++----------------
 3 files changed, 484 insertions(+), 390 deletions(-)

New commits:
commit 4c0c77f10c3967c720cb0511dc26986a5b003f33
Author:     Heiko Tietze <tietze.heiko at gmail.com>
AuthorDate: Tue Nov 24 17:14:08 2020 +0100
Commit:     Heiko Tietze <heiko.tietze at documentfoundation.org>
CommitDate: Fri Nov 27 10:39:55 2020 +0100

    Resolves tdf#134802 - Improved "Paste Special" dialog box
    
    * New design
    * Paste Format Only added
    * Code clean-up
    
    Change-Id: Id414b5f0d4cc27ffd861c2272d755f7ccbd06d64
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106540
    Tested-by: Jenkins
    Reviewed-by: Heiko Tietze <heiko.tietze at documentfoundation.org>

diff --git a/sc/source/ui/inc/inscodlg.hxx b/sc/source/ui/inc/inscodlg.hxx
index 9f23194c66ae..7cb2ce637f34 100644
--- a/sc/source/ui/inc/inscodlg.hxx
+++ b/sc/source/ui/inc/inscodlg.hxx
@@ -34,6 +34,7 @@ public:
 
     InsertDeleteFlags GetInsContentsCmdBits() const;
     ScPasteFunc       GetFormulaCmdBits() const;
+
     bool            IsSkipEmptyCells() const;
     bool            IsTranspose() const;
     bool            IsLink() const;
@@ -50,11 +51,10 @@ private:
     bool              bChangeTrack;
     bool              bMoveDownDisabled;
     bool              bMoveRightDisabled;
-    bool              bUsedShortCut;
-
-    InsertDeleteFlags nShortCutInsContentsCmdBits;
-    bool              bShortCutTranspose;
-
+    void SetInsContentsCmdBits(const InsertDeleteFlags eFlags);
+    void SetFormulaCmdBits(const ScPasteFunc eFlags);
+    void SetCellCmdFlags(const InsCellCmd eFlags);
+    void SetContentsFlags(const InsertContentsFlags eFlags);
 
     std::unique_ptr<weld::CheckButton>        mxBtnInsAll;
     std::unique_ptr<weld::CheckButton>        mxBtnInsStrings;
@@ -82,12 +82,15 @@ private:
     std::unique_ptr<weld::Button>      mxBtnShortCutPasteValuesOnly;
     std::unique_ptr<weld::Button>      mxBtnShortCutPasteValuesFormats;
     std::unique_ptr<weld::Button>      mxBtnShortCutPasteTranspose;
+    std::unique_ptr<weld::Button>      mxBtnShortCutPasteFormats;
+
+    std::unique_ptr<weld::CheckButton>     mxImmediately;
 
     static bool         bPreviousAllCheck;
     static InsertDeleteFlags nPreviousChecks;
     static InsertContentsFlags nPreviousChecks2;
     static ScPasteFunc  nPreviousFormulaChecks;
-    static sal_uInt16   nPreviousMoveMode;          // enum InsCellCmd
+    static InsCellCmd   nPreviousMoveMode;
 
     void DisableChecks( bool bInsAllChecked );
     void TestModes();
diff --git a/sc/source/ui/miscdlgs/inscodlg.cxx b/sc/source/ui/miscdlgs/inscodlg.cxx
index d3edb5855c34..772f207a4afe 100644
--- a/sc/source/ui/miscdlgs/inscodlg.cxx
+++ b/sc/source/ui/miscdlgs/inscodlg.cxx
@@ -21,11 +21,10 @@
 
 #include <inscodlg.hxx>
 
-bool       ScInsertContentsDlg::bPreviousAllCheck = false;
 InsertDeleteFlags ScInsertContentsDlg::nPreviousChecks   = InsertDeleteFlags::VALUE | InsertDeleteFlags::DATETIME | InsertDeleteFlags::STRING;
 ScPasteFunc  ScInsertContentsDlg::nPreviousFormulaChecks = ScPasteFunc::NONE;
 InsertContentsFlags ScInsertContentsDlg::nPreviousChecks2 = InsertContentsFlags::NONE;
-sal_uInt16 ScInsertContentsDlg::nPreviousMoveMode = INS_NONE;   // enum InsCellCmd
+InsCellCmd ScInsertContentsDlg::nPreviousMoveMode = InsCellCmd::INS_NONE;
 
 ScInsertContentsDlg::ScInsertContentsDlg(weld::Window* pParent,
                                          const OUString* pStrTitle )
@@ -35,9 +34,6 @@ ScInsertContentsDlg::ScInsertContentsDlg(weld::Window* pParent,
     , bChangeTrack(false)
     , bMoveDownDisabled(false)
     , bMoveRightDisabled(false)
-    , bUsedShortCut(false)
-    , nShortCutInsContentsCmdBits(InsertDeleteFlags::NONE )
-    , bShortCutTranspose(false)
     , mxBtnInsAll(m_xBuilder->weld_check_button("paste_all"))
     , mxBtnInsStrings(m_xBuilder->weld_check_button("text"))
     , mxBtnInsNumbers(m_xBuilder->weld_check_button("numbers"))
@@ -60,47 +56,25 @@ ScInsertContentsDlg::ScInsertContentsDlg(weld::Window* pParent,
     , mxBtnShortCutPasteValuesOnly(m_xBuilder->weld_button("paste_values_only"))
     , mxBtnShortCutPasteValuesFormats(m_xBuilder->weld_button("paste_values_formats"))
     , mxBtnShortCutPasteTranspose(m_xBuilder->weld_button("paste_transpose"))
+    , mxBtnShortCutPasteFormats(m_xBuilder->weld_button("paste_formats"))
+    , mxImmediately(m_xBuilder->weld_check_button("cbImmediately"))
 {
     if (pStrTitle)
         m_xDialog->set_title(*pStrTitle);
 
-    mxBtnInsAll->set_active( ScInsertContentsDlg::bPreviousAllCheck );
-    mxBtnInsStrings->set_active( bool(InsertDeleteFlags::STRING & ScInsertContentsDlg::nPreviousChecks) );
-    mxBtnInsNumbers->set_active( bool(InsertDeleteFlags::VALUE & ScInsertContentsDlg::nPreviousChecks) );
-    mxBtnInsDateTime->set_active( bool(InsertDeleteFlags::DATETIME & ScInsertContentsDlg::nPreviousChecks) );
-    mxBtnInsFormulas->set_active( bool(InsertDeleteFlags::FORMULA & ScInsertContentsDlg::nPreviousChecks) );
-    mxBtnInsNotes->set_active( bool(InsertDeleteFlags::NOTE & ScInsertContentsDlg::nPreviousChecks) );
-    mxBtnInsAttrs->set_active( (InsertDeleteFlags::ATTRIB & ScInsertContentsDlg::nPreviousChecks) == InsertDeleteFlags::ATTRIB );
-    mxBtnInsObjects->set_active ( bool(InsertDeleteFlags::OBJECTS & ScInsertContentsDlg::nPreviousChecks) );
-
-    switch( ScInsertContentsDlg::nPreviousFormulaChecks )
-    {
-        case ScPasteFunc::NONE: mxRbNoOp->set_active(true); break;
-        case ScPasteFunc::ADD:    mxRbAdd->set_active(true); break;
-        case ScPasteFunc::SUB:    mxRbSub->set_active(true); break;
-        case ScPasteFunc::MUL:    mxRbMul->set_active(true); break;
-        case ScPasteFunc::DIV:    mxRbDiv->set_active(true); break;
-    }
-
-    switch( ScInsertContentsDlg::nPreviousMoveMode )
-    {
-        case INS_NONE:       mxRbMoveNone->set_active(true); break;
-        case INS_CELLSDOWN:  mxRbMoveDown->set_active(true); break;
-        case INS_CELLSRIGHT: mxRbMoveRight->set_active(true); break;
-    }
-
-    mxBtnSkipEmptyCells->set_active( bool( ScInsertContentsDlg::nPreviousChecks2 & InsertContentsFlags::NoEmpty ));
-    mxBtnTranspose->set_active( bool( ScInsertContentsDlg::nPreviousChecks2    & InsertContentsFlags::Trans ));
-    mxBtnLink->set_active( bool( ScInsertContentsDlg::nPreviousChecks2             & InsertContentsFlags::Link  ));
-
+    SetInsContentsCmdBits( ScInsertContentsDlg::nPreviousChecks );
+    SetFormulaCmdBits( ScInsertContentsDlg::nPreviousFormulaChecks );
+    SetCellCmdFlags( ScInsertContentsDlg::nPreviousMoveMode );
+    SetContentsFlags( ScInsertContentsDlg::nPreviousChecks2 );
     DisableChecks( mxBtnInsAll->get_active() );
 
     mxBtnInsAll->connect_toggled( LINK( this, ScInsertContentsDlg, InsAllHdl ) );
     mxBtnLink->connect_toggled( LINK( this, ScInsertContentsDlg, LinkBtnHdl ) );
-
+    mxBtnShortCutPasteValuesOnly->set_label("Values Only");
     mxBtnShortCutPasteValuesOnly->connect_clicked( LINK( this, ScInsertContentsDlg, ShortCutHdl ) );
     mxBtnShortCutPasteValuesFormats->connect_clicked( LINK( this, ScInsertContentsDlg, ShortCutHdl ) );
     mxBtnShortCutPasteTranspose->connect_clicked( LINK( this, ScInsertContentsDlg, ShortCutHdl ) );
+    mxBtnShortCutPasteFormats->connect_clicked( LINK( this, ScInsertContentsDlg, ShortCutHdl ) );
 }
 
 InsertDeleteFlags ScInsertContentsDlg::GetInsContentsCmdBits() const
@@ -122,20 +96,59 @@ InsertDeleteFlags ScInsertContentsDlg::GetInsContentsCmdBits() const
     if ( mxBtnInsObjects->get_active() )
         ScInsertContentsDlg::nPreviousChecks |= InsertDeleteFlags::OBJECTS;
 
-    ScInsertContentsDlg::bPreviousAllCheck = mxBtnInsAll->get_active();
-
-    if (bUsedShortCut)
-        return nShortCutInsContentsCmdBits;
-
-    return ( ScInsertContentsDlg::bPreviousAllCheck
+    return ( mxBtnInsAll->get_active()
                 ? InsertDeleteFlags::ALL
                 : ScInsertContentsDlg::nPreviousChecks );
 }
 
+void ScInsertContentsDlg::SetInsContentsCmdBits(const InsertDeleteFlags eFlags)
+{
+    mxBtnInsNumbers->set_active((InsertDeleteFlags::VALUE & eFlags) == InsertDeleteFlags::VALUE);
+    mxBtnInsDateTime->set_active((InsertDeleteFlags::DATETIME & eFlags) == InsertDeleteFlags::DATETIME);
+    mxBtnInsStrings->set_active((InsertDeleteFlags::STRING & eFlags) == InsertDeleteFlags::STRING);
+    mxBtnInsNotes->set_active((InsertDeleteFlags::NOTE & eFlags) == InsertDeleteFlags::NOTE);
+    mxBtnInsFormulas->set_active((InsertDeleteFlags::FORMULA & eFlags) == InsertDeleteFlags::FORMULA);
+    mxBtnInsAttrs->set_active((InsertDeleteFlags::ATTRIB & eFlags) == InsertDeleteFlags::ATTRIB);
+    mxBtnInsObjects->set_active((InsertDeleteFlags::OBJECTS & eFlags) == InsertDeleteFlags::OBJECTS);
+    mxBtnInsAll->set_active((InsertDeleteFlags::ALL & eFlags) == InsertDeleteFlags::ALL);
+    DisableChecks( mxBtnInsAll->get_active() );
+}
+
+void ScInsertContentsDlg::SetFormulaCmdBits(const ScPasteFunc eFlags)
+{
+    switch( eFlags )
+    {
+        case ScPasteFunc::NONE: mxRbNoOp->set_active(true); break;
+        case ScPasteFunc::ADD:  mxRbAdd->set_active(true); break;
+        case ScPasteFunc::SUB:  mxRbSub->set_active(true); break;
+        case ScPasteFunc::MUL:  mxRbMul->set_active(true); break;
+        case ScPasteFunc::DIV:  mxRbDiv->set_active(true); break;
+    }
+}
+
+void ScInsertContentsDlg::SetCellCmdFlags(const InsCellCmd eFlags)
+{
+    switch( eFlags )
+    {
+        case INS_NONE:       mxRbMoveNone->set_active(true); break;
+        case INS_CELLSDOWN:  mxRbMoveDown->set_active(true); break;
+        case INS_CELLSRIGHT: mxRbMoveRight->set_active(true); break;
+        case INS_INSROWS_BEFORE:
+        case INS_INSCOLS_BEFORE:
+        case INS_INSROWS_AFTER:
+        case INS_INSCOLS_AFTER: break;
+    }
+}
+
+void ScInsertContentsDlg::SetContentsFlags(const InsertContentsFlags eFlags)
+{
+    mxBtnSkipEmptyCells->set_active(bool(InsertContentsFlags::NoEmpty & eFlags));
+    mxBtnTranspose->set_active(bool(InsertContentsFlags::Trans & eFlags));
+    mxBtnLink->set_active(bool(InsertContentsFlags::Link & eFlags));
+}
+
 InsCellCmd ScInsertContentsDlg::GetMoveMode() const
 {
-    if (bUsedShortCut)
-        return INS_NONE;
     if ( mxRbMoveDown->get_active() )
         return INS_CELLSDOWN;
     if ( mxRbMoveRight->get_active() )
@@ -146,22 +159,16 @@ InsCellCmd ScInsertContentsDlg::GetMoveMode() const
 
 bool ScInsertContentsDlg::IsSkipEmptyCells() const
 {
-    if (bUsedShortCut)
-        return false;
     return mxBtnSkipEmptyCells->get_active();
 }
 
 bool ScInsertContentsDlg::IsTranspose() const
 {
-    if (bUsedShortCut)
-        return bShortCutTranspose;
     return mxBtnTranspose->get_active();
 }
 
 bool ScInsertContentsDlg::IsLink() const
 {
-    if (bUsedShortCut)
-        return false;
     return mxBtnLink->get_active();
 }
 
@@ -287,25 +294,30 @@ IMPL_LINK(ScInsertContentsDlg, ShortCutHdl, weld::Button&, rBtn, void)
 {
     if (&rBtn == mxBtnShortCutPasteValuesOnly.get())
     {
-        bUsedShortCut = true;
-        nShortCutInsContentsCmdBits = InsertDeleteFlags::STRING | InsertDeleteFlags::VALUE | InsertDeleteFlags::DATETIME;
-        bShortCutTranspose = false;
-        m_xDialog->response(RET_OK);
+        SetInsContentsCmdBits( InsertDeleteFlags::STRING | InsertDeleteFlags::VALUE | InsertDeleteFlags::DATETIME );
+        SetContentsFlags( InsertContentsFlags::NONE );
     }
     else if (&rBtn == mxBtnShortCutPasteValuesFormats.get())
     {
-        bUsedShortCut = true;
-        nShortCutInsContentsCmdBits = InsertDeleteFlags::STRING | InsertDeleteFlags::VALUE | InsertDeleteFlags::DATETIME | InsertDeleteFlags::ATTRIB;
-        bShortCutTranspose = false;
-        m_xDialog->response(RET_OK);
+        SetInsContentsCmdBits( InsertDeleteFlags::STRING | InsertDeleteFlags::VALUE | InsertDeleteFlags::DATETIME | InsertDeleteFlags::ATTRIB );
+        SetContentsFlags( InsertContentsFlags::NONE );
     }
     else if (&rBtn == mxBtnShortCutPasteTranspose.get())
     {
-        bUsedShortCut = true;
-        nShortCutInsContentsCmdBits = InsertDeleteFlags::ALL;
-        bShortCutTranspose = true;
-        m_xDialog->response(RET_OK);
+        SetInsContentsCmdBits( InsertDeleteFlags::ALL );
+        SetContentsFlags( InsertContentsFlags::Trans );
+    }
+    else if (&rBtn == mxBtnShortCutPasteFormats.get())
+    {
+        SetInsContentsCmdBits( InsertDeleteFlags::ATTRIB );
+        SetContentsFlags( InsertContentsFlags::NONE );
     }
+    else
+        return;
+
+    SetCellCmdFlags( InsCellCmd::INS_NONE );
+    SetFormulaCmdBits(ScPasteFunc::NONE);
+    if (mxImmediately->get_active()) m_xDialog->response(RET_OK);
 }
 
 IMPL_LINK_NOARG(ScInsertContentsDlg, InsAllHdl, weld::ToggleButton&, void)
@@ -350,8 +362,6 @@ ScPasteFunc  ScInsertContentsDlg::GetFormulaCmdBits() const
         ScInsertContentsDlg::nPreviousFormulaChecks = ScPasteFunc::MUL;
     else if(mxRbDiv->get_active())
         ScInsertContentsDlg::nPreviousFormulaChecks = ScPasteFunc::DIV;
-    if (bUsedShortCut)
-        return ScPasteFunc::NONE;
     return ScInsertContentsDlg::nPreviousFormulaChecks;
 }
 
diff --git a/sc/uiconfig/scalc/ui/pastespecial.ui b/sc/uiconfig/scalc/ui/pastespecial.ui
index 885319cdaabd..e646c2f40882 100644
--- a/sc/uiconfig/scalc/ui/pastespecial.ui
+++ b/sc/uiconfig/scalc/ui/pastespecial.ui
@@ -1,46 +1,55 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.36.0 -->
+<!-- Generated with glade 3.38.1 -->
 <interface domain="sc">
   <requires lib="gtk+" version="3.20"/>
+  <object class="GtkImage" id="img_paste_formats">
+    <property name="visible">True</property>
+    <property name="can-focus">False</property>
+    <property name="icon-name">sc/res/paste_formats_only.png</property>
+    <property name="icon_size">3</property>
+  </object>
   <object class="GtkImage" id="img_paste_transpose">
     <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="icon_name">sc/res/paste_transpose.png</property>
+    <property name="can-focus">False</property>
+    <property name="icon-name">sc/res/paste_transpose.png</property>
+    <property name="icon_size">3</property>
   </object>
   <object class="GtkImage" id="img_paste_values_formats">
     <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="icon_name">sc/res/paste_values_formats.png</property>
+    <property name="can-focus">False</property>
+    <property name="icon-name">sc/res/paste_values_formats.png</property>
+    <property name="icon_size">3</property>
   </object>
   <object class="GtkImage" id="img_paste_values_only">
     <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="icon_name">sc/res/paste_values_only.png</property>
+    <property name="can-focus">False</property>
+    <property name="icon-name">sc/res/paste_values_only.png</property>
+    <property name="icon_size">3</property>
   </object>
   <object class="GtkDialog" id="PasteSpecial">
-    <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="pastespecial|PasteSpecial">Paste Special</property>
     <property name="resizable">False</property>
-    <property name="type_hint">dialog</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_area1">
-            <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">gtk-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="use_stock">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-stock">True</property>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -52,9 +61,9 @@
               <object class="GtkButton" id="cancel">
                 <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
+                <property name="can-focus">True</property>
+                <property name="receives-default">True</property>
+                <property name="use-stock">True</property>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -66,9 +75,9 @@
               <object class="GtkButton" id="help">
                 <property name="label">gtk-help</property>
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
+                <property name="can-focus">True</property>
+                <property name="receives-default">True</property>
+                <property name="use-stock">True</property>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -81,105 +90,49 @@
           <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="GtkButtonBox" id="buttonbox1">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="spacing">6</property>
-            <property name="layout_style">center</property>
-            <child>
-              <object class="GtkButton" id="paste_values_only">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes" context="pastespecial|paste_values_only|tooltip_text">Values Only</property>
-                <property name="image">img_paste_values_only</property>
-                <property name="always_show_image">True</property>
-              </object>
-              <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="paste_values_formats">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes" context="pastespecial|paste_values_formats|tooltip_text">Values & Formats</property>
-                <property name="image">img_paste_values_formats</property>
-                <property name="always_show_image">True</property>
-              </object>
-              <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="paste_transpose">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes" context="pastespecial|paste_transpose|tooltip_text">Transpose</property>
-                <property name="image">img_paste_transpose</property>
-                <property name="always_show_image">True</property>
-              </object>
-              <packing>
-                <property name="expand">True</property>
-                <property name="fill">True</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">1</property>
-          </packing>
+          <placeholder/>
         </child>
         <child>
-          <!-- n-columns=1 n-rows=1 -->
+          <!-- n-columns=3 n-rows=3 -->
           <object class="GtkGrid" id="grid1">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="row_spacing">12</property>
-            <property name="column_spacing">12</property>
+            <property name="can-focus">False</property>
+            <property name="row-spacing">6</property>
+            <property name="column-spacing">6</property>
             <child>
-              <object class="GtkFrame" id="frame1">
+              <object class="GtkFrame" id="frmPaste">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="hexpand">True</property>
-                <property name="vexpand">True</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="GtkAlignment" id="alignment1">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="top_padding">6</property>
-                    <property name="left_padding">12</property>
+                    <property name="can-focus">False</property>
+                    <property name="top-padding">3</property>
+                    <property name="bottom-padding">6</property>
+                    <property name="left-padding">12</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="can-focus">False</property>
+                        <property name="column-spacing">3</property>
                         <child>
                           <object class="GtkCheckButton" id="paste_all">
-                            <property name="label" translatable="yes" context="pastespecial|paste_all">_Paste all</property>
+                            <property name="label" translatable="yes" context="pastespecial|paste_all">_All</property>
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="has_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="use_underline">True</property>
+                            <property name="can-focus">True</property>
+                            <property name="has-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>
+                            <property name="draw-indicator">True</property>
                             <child internal-child="accessible">
                               <object class="AtkObject" id="paste_all-atkobject">
                                 <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|paste_all">Pastes all cell contents, comments, formats, and objects into the current document.</property>
@@ -187,41 +140,39 @@
                             </child>
                           </object>
                           <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">0</property>
+                            <property name="left-attach">0</property>
+                            <property name="top-attach">0</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkCheckButton" id="text">
-                            <property name="label" translatable="yes" context="pastespecial|text">Te_xt</property>
+                          <object class="GtkCheckButton" id="comments">
+                            <property name="label" translatable="yes" context="pastespecial|comments">_Comments</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="xalign">0</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="draw-indicator">True</property>
                             <child internal-child="accessible">
-                              <object class="AtkObject" id="text-atkobject">
-                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|text">Inserts cells containing text.</property>
+                              <object class="AtkObject" id="comments-atkobject">
+                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|comments">Inserts comments that are attached to cells. If you want to add the comments to the existing cell content, select the "Add" operation.</property>
                               </object>
                             </child>
                           </object>
                           <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">1</property>
+                            <property name="left-attach">1</property>
+                            <property name="top-attach">1</property>
                           </packing>
                         </child>
                         <child>
                           <object class="GtkCheckButton" id="numbers">
                             <property name="label" translatable="yes" context="pastespecial|numbers">_Numbers</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="xalign">0</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="draw-indicator">True</property>
                             <child internal-child="accessible">
                               <object class="AtkObject" id="numbers-atkobject">
                                 <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|numbers">Inserts cells containing numbers.</property>
@@ -229,114 +180,108 @@
                             </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="GtkCheckButton" id="datetime">
-                            <property name="label" translatable="yes" context="pastespecial|datetime">_Date & time</property>
+                          <object class="GtkCheckButton" id="text">
+                            <property name="label" translatable="yes" context="pastespecial|text">Te_xt</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="xalign">0</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="draw-indicator">True</property>
                             <child internal-child="accessible">
-                              <object class="AtkObject" id="datetime-atkobject">
-                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|datetime">Inserts cells containing date and time values.</property>
+                              <object class="AtkObject" id="text-atkobject">
+                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|text">Inserts cells containing text.</property>
                               </object>
                             </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="GtkCheckButton" id="formulas">
-                            <property name="label" translatable="yes" context="pastespecial|formulas">_Formulas</property>
+                          <object class="GtkCheckButton" id="datetime">
+                            <property name="label" translatable="yes" context="pastespecial|datetime">_Date & time</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="xalign">0</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="draw-indicator">True</property>
                             <child internal-child="accessible">
-                              <object class="AtkObject" id="formulas-atkobject">
-                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|formulas">Inserts cells containing formulae.</property>
+                              <object class="AtkObject" id="datetime-atkobject">
+                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|datetime">Inserts cells containing date and time values.</property>
                               </object>
                             </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="GtkCheckButton" id="comments">
-                            <property name="label" translatable="yes" context="pastespecial|comments">_Comments</property>
+                          <object class="GtkCheckButton" id="formats">
+                            <property name="label" translatable="yes" context="pastespecial|formats">For_mats</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="xalign">0</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="draw-indicator">True</property>
                             <child internal-child="accessible">
-                              <object class="AtkObject" id="comments-atkobject">
-                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|comments">Inserts comments that are attached to cells. If you want to add the comments to the existing cell content, select the "Add" operation.</property>
+                              <object class="AtkObject" id="formats-atkobject">
+                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|formats">Inserts cell format attributes.</property>
                               </object>
                             </child>
                           </object>
                           <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">5</property>
+                            <property name="left-attach">1</property>
+                            <property name="top-attach">0</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkCheckButton" id="formats">
-                            <property name="label" translatable="yes" context="pastespecial|formats">For_mats</property>
+                          <object class="GtkCheckButton" id="objects">
+                            <property name="label" translatable="yes" context="pastespecial|objects">Ob_jects</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="xalign">0</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="draw-indicator">True</property>
                             <child internal-child="accessible">
-                              <object class="AtkObject" id="formats-atkobject">
-                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|formats">Inserts cell format attributes.</property>
+                              <object class="AtkObject" id="objects-atkobject">
+                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|objects">Inserts objects contained within the selected cell range. These can be OLE objects, chart objects, or drawing objects.</property>
                               </object>
                             </child>
                           </object>
                           <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">6</property>
+                            <property name="left-attach">1</property>
+                            <property name="top-attach">2</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkCheckButton" id="objects">
-                            <property name="label" translatable="yes" context="pastespecial|objects">_Objects</property>
+                          <object class="GtkCheckButton" id="formulas">
+                            <property name="label" translatable="yes" context="pastespecial|formulas">F_ormulas</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="xalign">0</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="draw-indicator">True</property>
                             <child internal-child="accessible">
-                              <object class="AtkObject" id="objects-atkobject">
-                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|objects">Inserts objects contained within the selected cell range. These can be OLE objects, chart objects, or drawing objects.</property>
+                              <object class="AtkObject" id="formulas-atkobject">
+                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|formulas">Inserts cells containing formulae.</property>
                               </object>
                             </child>
                           </object>
                           <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">7</property>
+                            <property name="left-attach">1</property>
+                            <property name="top-attach">3</property>
                           </packing>
                         </child>
                       </object>
@@ -346,8 +291,8 @@
                 <child type="label">
                   <object class="GtkLabel" id="label1">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label" translatable="yes" context="pastespecial|label1">Selection</property>
+                    <property name="can-focus">False</property>
+                    <property name="label" translatable="yes" context="pastespecial|label1">Paste</property>
                     <attributes>
                       <attribute name="weight" value="bold"/>
                     </attributes>
@@ -355,40 +300,38 @@
                 </child>
               </object>
               <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">0</property>
+                <property name="left-attach">1</property>
+                <property name="top-attach">0</property>
               </packing>
             </child>
             <child>
-              <object class="GtkFrame" id="frame2">
+              <object class="GtkFrame" id="frmOperations">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="hexpand">True</property>
-                <property name="vexpand">True</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="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>
+                    <property name="can-focus">False</property>
+                    <property name="top-padding">3</property>
+                    <property name="bottom-padding">6</property>
+                    <property name="left-padding">12</property>
                     <child>
                       <object class="GtkBox" id="box4">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="orientation">vertical</property>
-                        <property name="spacing">6</property>
+                        <property name="can-focus">False</property>
+                        <property name="spacing">3</property>
                         <child>
                           <object class="GtkRadioButton" id="none">
                             <property name="label" translatable="yes" context="pastespecial|none">Non_e</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="xalign">0</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="none-atkobject">
                                 <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|none">Does not apply an operation when you insert the cell range from the clipboard. The contents of the clipboard will replace existing cell contents.</property>
@@ -405,11 +348,11 @@
                           <object class="GtkRadioButton" id="add">
                             <property name="label" translatable="yes" context="pastespecial|add">_Add</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="xalign">0</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="draw-indicator">True</property>
                             <property name="group">none</property>
                             <child internal-child="accessible">
                               <object class="AtkObject" id="add-atkobject">
@@ -427,11 +370,11 @@
                           <object class="GtkRadioButton" id="subtract">
                             <property name="label" translatable="yes" context="pastespecial|subtract">_Subtract</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="xalign">0</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="draw-indicator">True</property>
                             <property name="group">none</property>
                             <child internal-child="accessible">
                               <object class="AtkObject" id="subtract-atkobject">
@@ -447,13 +390,13 @@
                         </child>
                         <child>
                           <object class="GtkRadioButton" id="multiply">
-                            <property name="label" translatable="yes" context="pastespecial|multiply">Multipl_y</property>
+                            <property name="label" translatable="yes" context="pastespecial|multiply">_Multiply</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="xalign">0</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="draw-indicator">True</property>
                             <property name="group">none</property>
                             <child internal-child="accessible">
                               <object class="AtkObject" id="multiply-atkobject">
@@ -469,13 +412,13 @@
                         </child>
                         <child>
                           <object class="GtkRadioButton" id="divide">
-                            <property name="label" translatable="yes" context="pastespecial|divide">Di_vide</property>
+                            <property name="label" translatable="yes" context="pastespecial|divide">_Divide</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="xalign">0</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="draw-indicator">True</property>
                             <property name="group">none</property>
                             <child internal-child="accessible">
                               <object class="AtkObject" id="divide-atkobject">
@@ -496,7 +439,7 @@
                 <child type="label">
                   <object class="GtkLabel" id="label2">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
+                    <property name="can-focus">False</property>
                     <property name="label" translatable="yes" context="pastespecial|label2">Operations</property>
                     <attributes>
                       <attribute name="weight" value="bold"/>
@@ -505,43 +448,42 @@
                 </child>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">0</property>
+                <property name="left-attach">1</property>
+                <property name="top-attach">1</property>
+                <property name="width">2</property>
               </packing>
             </child>
             <child>
-              <object class="GtkFrame" id="frame3">
+              <object class="GtkFrame" id="frmShift">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="hexpand">True</property>
-                <property name="vexpand">True</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="GtkAlignment" id="alignment3">
+                  <object class="GtkAlignment" id="alignment4">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="top_padding">6</property>
-                    <property name="left_padding">12</property>
+                    <property name="can-focus">False</property>
+                    <property name="top-padding">3</property>
+                    <property name="bottom-padding">6</property>
+                    <property name="left-padding">12</property>
                     <child>
-                      <object class="GtkBox" id="box3">
+                      <object class="GtkBox" id="box2">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="orientation">vertical</property>
-                        <property name="spacing">6</property>
+                        <property name="can-focus">False</property>
+                        <property name="spacing">3</property>
                         <child>
-                          <object class="GtkCheckButton" id="skip_empty">
-                            <property name="label" translatable="yes" context="pastespecial|skip_empty">S_kip empty cells</property>
+                          <object class="GtkRadioButton" id="no_shift">
+                            <property name="label" translatable="yes" context="pastespecial|no_shift">Don't sh_ift</property>
                             <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="tooltip_text" translatable="yes" context="pastespecial|skip_empty">If enabled, blank cells in source will not override the target.</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="xalign">0</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="active">True</property>
+                            <property name="draw-indicator">True</property>
                             <child internal-child="accessible">
-                              <object class="AtkObject" id="skip_empty-atkobject">
-                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|skip_empty">Empty cells from the clipboard do not replace target cells. If you use this option in conjunction with the "Multiply" or the "Divide" operation, the operation is not applied to the target cell of an empty cell in the clipboard.</property>
+                              <object class="AtkObject" id="no_shift-atkobject">
+                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|no_shift">Inserted cells replace the target cells.</property>
                               </object>
                             </child>
                           </object>
@@ -552,17 +494,18 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkCheckButton" id="transpose">
-                            <property name="label" translatable="yes" context="pastespecial|transpose">_Transpose</property>
+                          <object class="GtkRadioButton" id="move_down">
+                            <property name="label" translatable="yes" context="pastespecial|move_down">_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="xalign">0</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="draw-indicator">True</property>
+                            <property name="group">no_shift</property>
                             <child internal-child="accessible">
-                              <object class="AtkObject" id="transpose-atkobject">
-                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|transpose">The rows of the range in the clipboard are pasted to become columns of the output range. The columns of the range in the clipboard are pasted to become rows.</property>
+                              <object class="AtkObject" id="move_down-atkobject">
+                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|move_down">Target cells are shifted downward when you insert cells from the clipboard.</property>
                               </object>
                             </child>
                           </object>
@@ -573,17 +516,18 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkCheckButton" id="link">
-                            <property name="label" translatable="yes" context="pastespecial|link">_Link</property>
+                          <object class="GtkRadioButton" id="move_right">
+                            <property name="label" translatable="yes" context="pastespecial|move_right">_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="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>
+                            <property name="draw-indicator">True</property>
+                            <property name="group">no_shift</property>
                             <child internal-child="accessible">
-                              <object class="AtkObject" id="link-atkobject">
-                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|link">Inserts the cell range as a link, so that changes made to the cells in the source file are updated in the target file. To ensure that changes made to empty cells in the source file are updated in the target file, ensure that the "Paste All" option is also selected.</property>
+                              <object class="AtkObject" id="move_right-atkobject">
+                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|move_right">Target cells are shifted to the right when you insert cells from the clipboard.</property>
                               </object>
                             </child>
                           </object>
@@ -598,10 +542,10 @@
                   </object>
                 </child>
                 <child type="label">
-                  <object class="GtkLabel" id="label3">
+                  <object class="GtkLabel" id="label4">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label" translatable="yes" context="pastespecial|label3">Options</property>
+                    <property name="can-focus">False</property>
+                    <property name="label" translatable="yes" context="pastespecial|label4">Shift Cells</property>
                     <attributes>
                       <attribute name="weight" value="bold"/>
                     </attributes>
@@ -609,94 +553,234 @@
                 </child>
               </object>
               <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">1</property>
+                <property name="left-attach">1</property>
+                <property name="top-attach">2</property>
+                <property name="width">2</property>
               </packing>
             </child>
             <child>
-              <object class="GtkFrame" id="frame4">
+              <object class="GtkFrame" id="frmPresets">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="hexpand">True</property>
-                <property name="vexpand">True</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="GtkAlignment" id="alignment4">
+                  <object class="GtkAlignment">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="top_padding">6</property>
-                    <property name="left_padding">12</property>
+                    <property name="can-focus">False</property>
+                    <property name="top-padding">3</property>
+                    <property name="bottom-padding">6</property>
+                    <property name="left-padding">12</property>
                     <child>
-                      <object class="GtkBox" id="box2">
+                      <object class="GtkBox">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
+                        <property name="can-focus">False</property>
                         <property name="orientation">vertical</property>
-                        <property name="spacing">6</property>
                         <child>
-                          <object class="GtkRadioButton" id="no_shift">
-                            <property name="label" translatable="yes" context="pastespecial|no_shift">Don't sh_ift</property>
+                          <object class="GtkButtonBox">
                             <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">False</property>
+                            <property name="orientation">vertical</property>
+                            <property name="homogeneous">True</property>
+                            <property name="layout-style">expand</property>
+                            <child>
+                              <object class="GtkButton" id="paste_values_only">
+                                <property name="label" translatable="yes" context="pastespecial|paste_values_only|label">_Values Only</property>
+                                <property name="visible">True</property>
+                                <property name="can-focus">True</property>
+                                <property name="receives-default">True</property>
+                                <property name="tooltip-text" translatable="yes" context="pastespecial|paste_values_only|tooltip_text">Values Only</property>
+                                <property name="image">img_paste_values_only</property>
+                                <property name="use-underline">True</property>
+                                <property name="image-position">top</property>
+                                <property name="always-show-image">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="paste_values_formats">
+                                <property name="label" translatable="yes" context="pastespecial|paste_values_formats|label">Values & _Formats</property>
+                                <property name="visible">True</property>
+                                <property name="can-focus">True</property>
+                                <property name="receives-default">True</property>
+                                <property name="tooltip-text" translatable="yes" context="pastespecial|paste_values_formats|tooltip_text">Values & Formats</property>
+                                <property name="vexpand">True</property>
+                                <property name="image">img_paste_values_formats</property>
+                                <property name="use-underline">True</property>
+                                <property name="image-position">top</property>
+                                <property name="always-show-image">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="paste_formats">
+                                <property name="label" translatable="yes" context="pastespecial|paste_format|label">Formats Onl_y</property>
+                                <property name="height-request">60</property>
+                                <property name="visible">True</property>
+                                <property name="can-focus">True</property>
+                                <property name="receives-default">True</property>
+                                <property name="tooltip-text" translatable="yes" context="pastespecial|paste_format|tooltip_text">Formats Only</property>
+                                <property name="vexpand">True</property>
+                                <property name="image">img_paste_formats</property>
+                                <property name="use-underline">True</property>
+                                <property name="image-position">top</property>
+                              </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="paste_transpose">
+                                <property name="label" translatable="yes" context="pastespecial|paste_transpose|label">_Transpose All</property>
+                                <property name="visible">True</property>
+                                <property name="can-focus">True</property>
+                                <property name="receives-default">True</property>
+                                <property name="tooltip-text" translatable="yes" context="pastespecial|paste_transpose|tooltip_text">Transpose All</property>
+                                <property name="vexpand">True</property>
+                                <property name="image">img_paste_transpose</property>
+                                <property name="use-underline">True</property>
+                                <property name="image-position">top</property>
+                                <property name="always-show-image">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">True</property>
+                                <property name="fill">True</property>
+                                <property name="position">3</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" id="cbImmediately">
+                            <property name="label" translatable="yes" context="pastespecial|cbImmediately">_Run immediately</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="active">True</property>
-                            <property name="draw_indicator">True</property>
+                            <property name="draw-indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can-focus">False</property>
+                    <property name="label" translatable="yes" context="pastespecial|frPresets">Presets</property>
+                    <attributes>
+                      <attribute name="weight" value="bold"/>
+                    </attributes>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left-attach">0</property>
+                <property name="top-attach">0</property>
+                <property name="height">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkFrame" id="frmOptions">
+                <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">
+                    <property name="visible">True</property>
+                    <property name="can-focus">False</property>
+                    <property name="top-padding">3</property>
+                    <property name="bottom-padding">6</property>
+                    <property name="left-padding">12</property>
+                    <child>
+                      <!-- n-columns=1 n-rows=3 -->
+                      <object class="GtkGrid">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="column-spacing">3</property>
+                        <child>
+                          <object class="GtkCheckButton" id="link">
+                            <property name="label" translatable="yes" context="pastespecial|link">As _Link</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>
                             <child internal-child="accessible">
-                              <object class="AtkObject" id="no_shift-atkobject">
-                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|no_shift">Inserted cells replace the target cells.</property>
+                              <object class="AtkObject" id="link-atkobject">
+                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|link">Inserts the cell range as a link, so that changes made to the cells in the source file are updated in the target file. To ensure that changes made to empty cells in the source file are updated in the target file, ensure that the "Paste All" option is also selected.</property>
                               </object>
                             </child>
                           </object>
                           <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">0</property>
+                            <property name="left-attach">0</property>
+                            <property name="top-attach">0</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkRadioButton" id="move_down">
-                            <property name="label" translatable="yes" context="pastespecial|move_down">Do_wn</property>
+                          <object class="GtkCheckButton" id="transpose">
+                            <property name="label" translatable="yes" context="pastespecial|transpose">Trans_pose</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="xalign">0</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">no_shift</property>
+                            <property name="draw-indicator">True</property>
                             <child internal-child="accessible">
-                              <object class="AtkObject" id="move_down-atkobject">
-                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|move_down">Target cells are shifted downward when you insert cells from the clipboard.</property>
+                              <object class="AtkObject" id="transpose-atkobject">
+                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|transpose">The rows of the range in the clipboard are pasted to become columns of the output range. The columns of the range in the clipboard are pasted to become rows.</property>
                               </object>
                             </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">1</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkRadioButton" id="move_right">
-                            <property name="label" translatable="yes" context="pastespecial|move_right">_Right</property>
+                          <object class="GtkCheckButton" id="skip_empty">
+                            <property name="label" translatable="yes" context="pastespecial|skip_empty">_Skip empty cells</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="tooltip-text" translatable="yes" context="pastespecial|skip_empty">If enabled, blank cells in source will not override the target.</property>
+                            <property name="use-underline">True</property>
                             <property name="xalign">0</property>
-                            <property name="draw_indicator">True</property>
-                            <property name="group">no_shift</property>
+                            <property name="draw-indicator">True</property>
                             <child internal-child="accessible">
-                              <object class="AtkObject" id="move_right-atkobject">
-                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|move_right">Target cells are shifted to the right when you insert cells from the clipboard.</property>
+                              <object class="AtkObject" id="skip_empty-atkobject">
+                                <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|skip_empty">Empty cells from the clipboard do not replace target cells. If you use this option in conjunction with the "Multiply" or the "Divide" operation, the operation is not applied to the target cell of an empty cell in the clipboard.</property>
                               </object>
                             </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">2</property>
                           </packing>
                         </child>
                       </object>
@@ -704,10 +788,10 @@
                   </object>
                 </child>
                 <child type="label">
-                  <object class="GtkLabel" id="label4">
+                  <object class="GtkLabel">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label" translatable="yes" context="pastespecial|label4">Shift Cells</property>
+                    <property name="can-focus">False</property>
+                    <property name="label" translatable="yes" context="pastespecial|OptionsFrame">Options</property>
                     <attributes>
                       <attribute name="weight" value="bold"/>
                     </attributes>
@@ -715,8 +799,8 @@
                 </child>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">1</property>
+                <property name="left-attach">2</property>
+                <property name="top-attach">0</property>
               </packing>
             </child>
           </object>
@@ -733,9 +817,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="PasteSpecial-atkobject">
         <property name="AtkObject::accessible-description" translatable="yes" context="pastespecial|extended_tip|PasteSpecial">Inserts the contents of the clipboard into the current file in a format that you can specify.</property>


More information about the Libreoffice-commits mailing list