[Libreoffice-commits] .: sc/sdi sc/source sfx2/inc sfx2/sdi

Noel Power noelp at kemper.freedesktop.org
Thu Mar 29 11:45:26 PDT 2012


 sc/sdi/cellsh.sdi             |    3 +
 sc/source/ui/src/popup.src    |   25 ++++++++++++++
 sc/source/ui/view/cellsh.cxx  |    4 ++
 sc/source/ui/view/cellsh1.cxx |   24 +++++++++++++-
 sfx2/inc/sfx2/sfxcommands.h   |    3 +
 sfx2/inc/sfx2/sfxsids.hrc     |    6 +--
 sfx2/sdi/sfx.sdi              |   72 ++++++++++++++++++++++++++++++++++++++++++
 7 files changed, 133 insertions(+), 4 deletions(-)

New commits:
commit 710d768aafd6b2c1fdc5627bede25000c3e346d5
Author: Noel Power <noel.power at novell.com>
Date:   Thu Mar 29 19:42:54 2012 +0100

    add for calc extra paste ctx menu with options to paste text or formula only

diff --git a/sc/sdi/cellsh.sdi b/sc/sdi/cellsh.sdi
index ce942e2..4f586e8 100644
--- a/sc/sdi/cellsh.sdi
+++ b/sc/sdi/cellsh.sdi
@@ -160,6 +160,9 @@ interface CellSelection
     SID_COPY            [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
     SID_PASTE           [ ExecMethod = ExecuteEdit; StateMethod = GetClipState; ]
     SID_PASTE_SPECIAL   [ ExecMethod = ExecuteEdit; StateMethod = GetClipState; ]
+    SID_PASTE_ONLY   [ ExecMethod = ExecuteEdit; StateMethod = GetClipState; ]
+    SID_PASTE_ONLY_TEXT   [ ExecMethod = ExecuteEdit; StateMethod = GetClipState; ]
+    SID_PASTE_ONLY_FORMULA   [ ExecMethod = ExecuteEdit; StateMethod = GetClipState; ]
     SID_CLIPBOARD_FORMAT_ITEMS  [ ExecMethod = ExecuteEdit; StateMethod = GetClipState; ]
     SID_EXTERNAL_SOURCE [ ExecMethod = ExecuteEdit; StateMethod = GetBlockState; ]
     FID_MERGE_ON        [ ExecMethod = Execute; StateMethod = GetState; ]
diff --git a/sc/source/ui/src/popup.src b/sc/source/ui/src/popup.src
index 441c336..de6fba5 100644
--- a/sc/source/ui/src/popup.src
+++ b/sc/source/ui/src/popup.src
@@ -133,6 +133,31 @@ Menu RID_POPUP_CELLS
             HelpId = CMD_SID_PASTE_SPECIAL ;
             Text [ en-US ] = "P~aste Special..." ;
         };
+
+        MenuItem
+        {
+            Identifier = SID_PASTE_ONLY ;
+            HelpId = CMD_SID_PASTE_ONLY ;
+            Text [ en-US ] = "Paste O~nly" ;
+            SubMenu = Menu
+            {
+                ItemList =
+                {
+                    MenuItem
+                    {
+                        Identifier = SID_PASTE_ONLY_TEXT ;
+                        HelpId = CMD_SID_PASTE_ONLY_TEXT ;
+                        Text [ en-US ] = "~Text" ;
+                    };
+                    MenuItem
+                    {
+                        Identifier = SID_PASTE_ONLY_FORMULA ;
+                        HelpId = CMD_SID_PASTE_ONLY_FORMULA ;
+                        Text [ en-US ] = "~Formula" ;
+                    };
+                };
+            };
+        };
          //------------------------------
         MenuItem { Separator = TRUE ; };
          //------------------------------
diff --git a/sc/source/ui/view/cellsh.cxx b/sc/source/ui/view/cellsh.cxx
index c1e5670..0d76bb7 100644
--- a/sc/source/ui/view/cellsh.cxx
+++ b/sc/source/ui/view/cellsh.cxx
@@ -449,6 +449,8 @@ IMPL_LINK( ScCellShell, ClipboardChanged, TransferableDataHelper*, pDataHelper )
         SfxBindings& rBindings = GetViewData()->GetBindings();
         rBindings.Invalidate( SID_PASTE );
         rBindings.Invalidate( SID_PASTE_SPECIAL );
+        rBindings.Invalidate( SID_PASTE_ONLY_TEXT );
+        rBindings.Invalidate( SID_PASTE_ONLY_FORMULA );
         rBindings.Invalidate( SID_CLIPBOARD_FORMAT_ITEMS );
     }
     return 0;
@@ -537,6 +539,8 @@ void ScCellShell::GetClipState( SfxItemSet& rSet )
     {
         rSet.DisableItem( SID_PASTE );
         rSet.DisableItem( SID_PASTE_SPECIAL );
+        rSet.DisableItem( SID_PASTE_ONLY_TEXT );
+        rSet.DisableItem( SID_PASTE_ONLY_FORMULA );
         rSet.DisableItem( SID_CLIPBOARD_FORMAT_ITEMS );
     }
     else if ( rSet.GetItemState( SID_CLIPBOARD_FORMAT_ITEMS ) != SFX_ITEM_UNKNOWN )
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index 3c6807f..99921c7 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -1331,9 +1331,11 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                             if ( bAsLink && bOtherDoc )
                                 pTabViewShell->PasteFromSystem(SOT_FORMATSTR_ID_LINK);  // DDE insert
                             else
+                            {
                                 pTabViewShell->PasteFromClip( nFlags, pOwnClip->GetDocument(),
                                     nFunction, bSkipEmpty, bTranspose, bAsLink,
                                     eMoveMode, IDF_NONE, sal_True );    // allow warning dialog
+                            }
                         }
 
                         if( !pReqArgs )
@@ -1367,7 +1369,27 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
             }
             pTabViewShell->CellContentChanged();        // => PasteFromXXX ???
             break;
-
+        case SID_PASTE_ONLY_TEXT:
+        case SID_PASTE_ONLY_FORMULA:
+        {
+            Window* pWin = GetViewData()->GetActiveWin();
+            if ( ScTransferObj::GetOwnClipboard( pWin ) )  // own cell data
+            {
+                rReq.SetSlot( FID_INS_CELL_CONTENTS );
+                rtl::OUString aFlags;
+                if ( nSlot == SID_PASTE_ONLY_TEXT )
+                    aFlags = "VDS";
+                else
+                    aFlags = "F";
+                rReq.AppendItem( SfxStringItem( FID_INS_CELL_CONTENTS, aFlags ) );
+                ExecuteSlot( rReq, GetInterface() );
+                rReq.SetReturnValue(SfxInt16Item(nSlot, 1));    // 1 = success
+                pTabViewShell->CellContentChanged();
+            }
+            else
+                rReq.SetReturnValue(SfxInt16Item(nSlot, 0));        // 0 = fail
+            break;
+        }
         case SID_PASTE_SPECIAL:
             // differentiate between own cell data and draw objects/external data
             // this makes FID_INS_CELL_CONTENTS superfluous
diff --git a/sfx2/inc/sfx2/sfxcommands.h b/sfx2/inc/sfx2/sfxcommands.h
index ee56e78..e6e22c2 100644
--- a/sfx2/inc/sfx2/sfxcommands.h
+++ b/sfx2/inc/sfx2/sfxcommands.h
@@ -201,6 +201,9 @@
 #define CMD_SID_PASTE                               ".uno:Paste"
 #define CMD_SID_CLIPBOARD_FORMAT_ITEMS              ".uno:ClipboardFormatItems"
 #define CMD_SID_PASTE_SPECIAL                       ".uno:PasteSpecial"
+#define CMD_SID_PASTE_ONLY                          ".uno:PasteOnly"
+#define CMD_SID_PASTE_ONLY_TEXT                     ".uno:PasteOnlyText"
+#define CMD_SID_PASTE_ONLY_FORMULA                  ".uno:PasteOnlyFormula"
 #define CMD_SID_DOCPATH                             ".uno:DocPath"
 #define CMD_SID_PICKLIST                            ".uno:PickList"
 #define CMD_SID_PLUGINS_ACTIVE                      ".uno:PlugInsActive"
diff --git a/sfx2/inc/sfx2/sfxsids.hrc b/sfx2/inc/sfx2/sfxsids.hrc
index f7cb90b..94b2ea6 100644
--- a/sfx2/inc/sfx2/sfxsids.hrc
+++ b/sfx2/inc/sfx2/sfxsids.hrc
@@ -536,9 +536,9 @@
 // default-ids for macros
 #define SID_RECORDING_FLOATWINDOW           (SID_SFX_START + 800)
 #define SID_RECORDMACRO                     (SID_SFX_START + 1669)
-    // FREE: SID_SFX_START + 801
-    // FREE: SID_SFX_START + 802
-    // FREE: SID_SFX_START + 803
+#define SID_PASTE_ONLY                      (SID_SFX_START + 801)
+#define SID_PASTE_ONLY_TEXT                 (SID_SFX_START + 802)
+#define SID_PASTE_ONLY_FORMULA              (SID_SFX_START + 803)
     // FREE: SID_SFX_START + 804
     // FREE: SID_SFX_START + 805
     // FREE: SID_SFX_START + 806
diff --git a/sfx2/sdi/sfx.sdi b/sfx2/sdi/sfx.sdi
index 6b197c7..00885e3 100644
--- a/sfx2/sdi/sfx.sdi
+++ b/sfx2/sdi/sfx.sdi
@@ -4630,6 +4630,78 @@ SfxInt16Item PasteSpecial SID_PASTE_SPECIAL
     GroupId = GID_EDIT;
 ]
 
+SfxVoidItem PasteOnly SID_PASTE_ONLY
+()
+[
+    /* flags: */
+    AutoUpdate = FALSE,
+    Cachable = Cachable,
+    FastCall = FALSE,
+    HasCoreId = FALSE,
+    HasDialog = FALSE,
+    ReadOnlyDoc = FALSE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Synchron;
+
+    /* config: */
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    StatusBarConfig = FALSE,
+    ToolBoxConfig = TRUE,
+    GroupId = GID_EDIT;
+]
+
+SfxVoidItem PasteOnlyText SID_PASTE_ONLY_TEXT
+
+[
+    /* flags: */
+    AutoUpdate = FALSE,
+    Cachable = Cachable,
+    FastCall = FALSE,
+    HasCoreId = FALSE,
+    HasDialog = FALSE,
+    ReadOnlyDoc = TRUE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Synchron;
+
+    /* config: */
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    StatusBarConfig = FALSE,
+    ToolBoxConfig = TRUE,
+    GroupId = GID_EDIT;
+]
+
+SfxVoidItem PasteOnlyFormula SID_PASTE_ONLY_FORMULA
+
+[
+    /* flags: */
+    AutoUpdate = FALSE,
+    Cachable = Cachable,
+    FastCall = FALSE,
+    HasCoreId = FALSE,
+    HasDialog = FALSE,
+    ReadOnlyDoc = TRUE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Synchron;
+
+    /* config: */
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    StatusBarConfig = FALSE,
+    ToolBoxConfig = TRUE,
+    GroupId = GID_EDIT;
+]
+
 //--------------------------------------------------------------------------
 SfxStringItem DocPath SID_DOCPATH
 


More information about the Libreoffice-commits mailing list