diff options
author | Sumit Chauhan <sumitcn25@gmail.com> | 2019-07-25 02:51:10 +0530 |
---|---|---|
committer | Szymon Kłos <szymon.klos@collabora.com> | 2019-07-26 18:36:08 +0200 |
commit | 7b0dd98941911c686c0d127810d1c333df5026c3 (patch) | |
tree | de5d0e746ad44ad53c51cca70d67e756724d0df7 /vcl | |
parent | 7942929685fafb0f9c82feb8da7279e5103c87f0 (diff) |
Extension support for gtkmenuItem and notebookbar.ui file added for writer
Change-Id: I65a07fbef7726cdaa9061ebf2227fbedd725d4db
Reviewed-on: https://gerrit.libreoffice.org/76278
Tested-by: Jenkins
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/window/NotebookBarAddonsMerger.cxx | 94 | ||||
-rw-r--r-- | vcl/source/window/builder.cxx | 11 |
2 files changed, 76 insertions, 29 deletions
diff --git a/vcl/source/window/NotebookBarAddonsMerger.cxx b/vcl/source/window/NotebookBarAddonsMerger.cxx index d65aba9624f8..5fc0b14b8087 100644 --- a/vcl/source/window/NotebookBarAddonsMerger.cxx +++ b/vcl/source/window/NotebookBarAddonsMerger.cxx @@ -19,6 +19,7 @@ #include <vcl/NotebookBarAddonsMerger.hxx> #include <vcl/commandinfoprovider.hxx> +#include <vcl/vclenum.hxx> #include <vcl/toolbox.hxx> static const char STYLE_TEXT[] = "Text"; @@ -33,13 +34,34 @@ static const char MERGE_NOTEBOOKBAR_CONTROLTYPE[] = "ControlType"; static const char MERGE_NOTEBOOKBAR_WIDTH[] = "Width"; static const char MERGE_NOTEBOOKBAR_STYLE[] = "Style"; -NotebookBarAddonsMerger::NotebookBarAddonsMerger( - vcl::Window* pParent, const css::uno::Reference<css::frame::XFrame>& m_xFrame, - const NotebookBarAddonsItem& aNotebookBarAddonsItem) +static void GetAddonNotebookBarItem(const css::uno::Sequence<css::beans::PropertyValue>& pExtension, + AddonNotebookBarItem& aAddonNotebookBarItem) { - MergeNotebookBarAddons(pParent, m_xFrame, aNotebookBarAddonsItem); + for (int nIdx = 0; nIdx < pExtension.getLength(); nIdx++) + { + if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_URL) + pExtension[nIdx].Value >>= aAddonNotebookBarItem.sCommandURL; + else if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_TITLE) + pExtension[nIdx].Value >>= aAddonNotebookBarItem.sLabel; + else if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_IMAGEID) + pExtension[nIdx].Value >>= aAddonNotebookBarItem.sImageIdentifier; + else if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_CONTEXT) + pExtension[nIdx].Value >>= aAddonNotebookBarItem.sContext; + else if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_TARGET) + pExtension[nIdx].Value >>= aAddonNotebookBarItem.sTarget; + else if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_CONTROLTYPE) + pExtension[nIdx].Value >>= aAddonNotebookBarItem.sControlType; + else if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_WIDTH) + pExtension[nIdx].Value >>= aAddonNotebookBarItem.nWidth; + else if (pExtension[nIdx].Name == MERGE_NOTEBOOKBAR_STYLE) + pExtension[nIdx].Value >>= aAddonNotebookBarItem.sStyle; + } } +NotebookBarAddonsMerger::NotebookBarAddonsMerger() {} + +NotebookBarAddonsMerger::~NotebookBarAddonsMerger() {} + void NotebookBarAddonsMerger::MergeNotebookBarAddons( vcl::Window* pParent, const css::uno::Reference<css::frame::XFrame>& m_xFrame, const NotebookBarAddonsItem& aNotebookBarAddonsItem) @@ -53,29 +75,10 @@ void NotebookBarAddonsMerger::MergeNotebookBarAddons( for (int nSecIdx = 0; nSecIdx < aExtension.getLength(); nSecIdx++) { + sal_uInt16 nItemId = 0; AddonNotebookBarItem aAddonNotebookBarItem; const css::uno::Sequence<css::beans::PropertyValue> pExtension = aExtension[nSecIdx]; - for (int nRes = 0; nRes < pExtension.getLength(); nRes++) - { - if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_URL) - pExtension[nRes].Value >>= aAddonNotebookBarItem.sCommandURL; - else if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_TITLE) - pExtension[nRes].Value >>= aAddonNotebookBarItem.sLabel; - else if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_IMAGEID) - pExtension[nRes].Value >>= aAddonNotebookBarItem.sImageIdentifier; - else if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_CONTEXT) - pExtension[nRes].Value >>= aAddonNotebookBarItem.sContext; - else if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_TARGET) - pExtension[nRes].Value >>= aAddonNotebookBarItem.sTarget; - else if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_CONTROLTYPE) - pExtension[nRes].Value >>= aAddonNotebookBarItem.sControlType; - else if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_WIDTH) - pExtension[nRes].Value >>= aAddonNotebookBarItem.nWidth; - else if (pExtension[nRes].Name == MERGE_NOTEBOOKBAR_STYLE) - pExtension[nRes].Value >>= aAddonNotebookBarItem.sStyle; - } - - sal_uInt16 nItemId = 0; + GetAddonNotebookBarItem(pExtension, aAddonNotebookBarItem); ToolBox* pToolbox = dynamic_cast<ToolBox*>(pParent); if (pToolbox) { @@ -108,7 +111,46 @@ void NotebookBarAddonsMerger::MergeNotebookBarAddons( pToolbox->SetItemImage(nItemId, sImage); } } - pToolbox->InsertSeparator(); + if (nSecIdx == aExtension.getLength() - 1) + pToolbox->InsertSeparator(); + } + } +} + +void NotebookBarAddonsMerger::MergeNotebookBarMenuAddons( + PopupMenu* pPopupMenu, sal_Int16 nItemId, const OString& sItemIdName, + NotebookBarAddonsItem& aNotebookBarAddonsItem) +{ + std::vector<Image> aImageVec = aNotebookBarAddonsItem.aImageValues; + unsigned long nIter = 0; + css::uno::Sequence<css::uno::Sequence<css::beans::PropertyValue>> aExtension; + for (unsigned long nIdx = 0; nIdx < aNotebookBarAddonsItem.aAddonValues.size(); nIdx++) + { + aExtension = aNotebookBarAddonsItem.aAddonValues[nIdx]; + + for (int nSecIdx = 0; nSecIdx < aExtension.getLength(); nSecIdx++) + { + AddonNotebookBarItem aAddonNotebookBarItem; + Image sImage; + MenuItemBits nBits = MenuItemBits::ICON; + const css::uno::Sequence<css::beans::PropertyValue> pExtension = aExtension[nSecIdx]; + + GetAddonNotebookBarItem(pExtension, aAddonNotebookBarItem); + + pPopupMenu->InsertItem(nItemId, aAddonNotebookBarItem.sLabel, nBits, sItemIdName); + pPopupMenu->SetItemCommand(nItemId, aAddonNotebookBarItem.sCommandURL); + + if (nIter < aImageVec.size()) + { + sImage = aImageVec[nIter]; + nIter++; + } + pPopupMenu->SetItemImage(nItemId, sImage); + + if (nSecIdx == aExtension.getLength() - 1) + pPopupMenu->InsertSeparator(); + + ++nItemId; } } } diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index 0a4c66e0cbf1..75112c8514a4 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -2170,9 +2170,9 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OString & { xWindow = VclPtr<ToolBox>::Create(pParent, WB_3DLOOK | WB_TABSTOP); } - else if (name == "NotebookBarAddonsMergePoint") + else if (name == "NotebookBarAddonsToolMergePoint") { - NotebookBarAddonsMerger aNotebookBarAddonsMerger(pParent,m_xFrame, m_pNotebookBarAddonsItem); + NotebookBarAddonsMerger::MergeNotebookBarAddons(pParent, m_xFrame, m_pNotebookBarAddonsItem); return nullptr; } else if (name == "GtkToolButton" || name == "GtkMenuToolButton" || @@ -3514,7 +3514,12 @@ void VclBuilder::insertMenuObject(PopupMenu *pParent, PopupMenu *pSubMenu, const sal_uInt16 nOldCount = pParent->GetItemCount(); sal_uInt16 nNewId = ++m_pParserState->m_nLastMenuItemId; - if (rClass == "GtkMenuItem") + if(rClass == "NotebookBarAddonsMenuMergePoint") + { + NotebookBarAddonsMerger::MergeNotebookBarMenuAddons(pParent, nNewId, rID, m_pNotebookBarAddonsItem); + m_pParserState->m_nLastMenuItemId = pParent->GetItemCount(); + } + else if (rClass == "GtkMenuItem") { OUString sLabel(BuilderUtils::convertMnemonicMarkup(extractLabel(rProps))); OUString aCommand(extractActionName(rProps)); |