Bug 38803 - Import keybindings for macros
Summary: Import keybindings for macros
Status: NEW
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: BASIC (show other bugs)
Version:
(earliest affected)
unspecified
Hardware: Other All
: medium normal
Assignee: Not Assigned
URL:
Whiteboard:
Keywords: difficultyInteresting, skillCpp
: 118248 (view as bug list)
Depends on:
Blocks: Shortcuts-Accelerators
  Show dependency treegraph
 
Reported: 2011-06-30 06:13 UTC by Björn Michaelsen
Modified: 2019-02-25 19:56 UTC (History)
2 users (show)

See Also:
Crash report or crash signature:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Björn Michaelsen 2011-06-30 06:13:09 UTC
Background: VBA macro can have a defined key binding that launches the macro. We don't import that key-binding at the moment. Well actually import all the information be we unfortunately discard it. For example if we had a Macro named 'launchByKey' in and Excel spreadsheet that was bound to the key cntrl-p then this is what you would see in the VBA source code

      Attribute VB_Name = "Module1"
      Sub launchByKey()
         Attribute launchByKey.VB_Description = "cntrl-p launches the macro"
         Attribute launchByKey.VB_ProcData.VB_Invoke_Func = "p\n14"
         MsgBox "launched"
      End Sub

As you can see the special attribute line 'Attribute lauchByKey.VB_ProcData.VB_Invoke_Func = "p\n14"' gives all the necessary info we need ( ok, we also need to recognise which procedure that attribute applies to ). Note: Currently we do at least extract information associated with one type of 'Attribute' statement see

1) legacy filter

  filter/source/msfilter/svxmsbas.cxx ( SvxImportMSVBasic::extractAttribute )

2) oox filter

  source/ole/vbamodule.cxx ( VbaModule::extractOleOverrideFromAttr )

In LibreOffice it is possible to provide a document only key configuration ( see the Tools|Customize|Keyboard dialog ) where a key|macro binding can be created. Finding the source code for that dialog will no doubt show how to create such a binding.
Comment 1 Florian Reisinger 2012-05-18 08:55:56 UTC
Deteted "Easyhack" from summary
Comment 2 Björn Michaelsen 2013-10-04 18:46:31 UTC
adding LibreOffice developer list as CC to unresolved EasyHacks for better visibility.

see e.g. http://nabble.documentfoundation.org/minutes-of-ESC-call-td4076214.html for details
Comment 3 Björn Michaelsen 2015-01-15 15:48:58 UTC
Removing EasyHack for now as its been around since 2011-06 with little interest from newcomers so far.
Comment 4 Robinson Tryon (qubit) 2015-12-14 04:57:39 UTC Comment hidden (obsolete)
Comment 5 melikeyurtoglu 2016-12-18 21:09:49 UTC
Hi, I'm working on this bug. I couldn't find "VbaModule::extractOleOverrideFromAttr" and "SvxImportMSVBasic::extractAttribute" functions that you said. How do you extract information about Attribute ?
Comment 6 QA Administrators 2018-06-05 02:39:00 UTC Comment hidden (obsolete)
Comment 7 Gabor Kelemen 2018-06-20 17:06:48 UTC
*** Bug 118248 has been marked as a duplicate of this bug. ***