SmartArt: add Edit Diagram dialog
Currently it displays only text representation of diagram. Change-Id: I3ff12c4abf2ed32f68ea9d7437905afc13279e62 Reviewed-on: https://gerrit.libreoffice.org/77873 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
This commit is contained in:
committed by
Miklos Vajna
parent
1aed241deb
commit
5457ddf2f5
@@ -110,6 +110,7 @@ $(eval $(call gb_Library_add_exception_objects,cui,\
|
|||||||
cui/source/dialogs/cuiimapwnd \
|
cui/source/dialogs/cuiimapwnd \
|
||||||
cui/source/dialogs/cuitbxform \
|
cui/source/dialogs/cuitbxform \
|
||||||
cui/source/dialogs/dlgname \
|
cui/source/dialogs/dlgname \
|
||||||
|
cui/source/dialogs/DiagramDialog \
|
||||||
cui/source/dialogs/FontFeaturesDialog \
|
cui/source/dialogs/FontFeaturesDialog \
|
||||||
cui/source/dialogs/hangulhanjadlg \
|
cui/source/dialogs/hangulhanjadlg \
|
||||||
cui/source/dialogs/hldocntp \
|
cui/source/dialogs/hldocntp \
|
||||||
|
@@ -48,6 +48,7 @@ $(eval $(call gb_UIConfig_add_uifiles,cui,\
|
|||||||
cui/uiconfig/ui/croppage \
|
cui/uiconfig/ui/croppage \
|
||||||
cui/uiconfig/ui/cuiimapdlg \
|
cui/uiconfig/ui/cuiimapdlg \
|
||||||
cui/uiconfig/ui/databaselinkdialog \
|
cui/uiconfig/ui/databaselinkdialog \
|
||||||
|
cui/uiconfig/ui/diagramdialog \
|
||||||
cui/uiconfig/ui/dimensionlinestabpage \
|
cui/uiconfig/ui/dimensionlinestabpage \
|
||||||
cui/uiconfig/ui/editdictionarydialog \
|
cui/uiconfig/ui/editdictionarydialog \
|
||||||
cui/uiconfig/ui/editmodulesdialog \
|
cui/uiconfig/ui/editmodulesdialog \
|
||||||
|
27
cui/source/dialogs/DiagramDialog.cxx
Normal file
27
cui/source/dialogs/DiagramDialog.cxx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
|
/*
|
||||||
|
* This file is part of the LibreOffice project.
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <DiagramDialog.hxx>
|
||||||
|
|
||||||
|
#include <svx/DiagramDataInterface.hxx>
|
||||||
|
|
||||||
|
DiagramDialog::DiagramDialog(weld::Window* pWindow,
|
||||||
|
std::shared_ptr<DiagramDataInterface> pDiagramData)
|
||||||
|
: GenericDialogController(pWindow, "cui/ui/diagramdialog.ui", "DiagramDialog")
|
||||||
|
, mpDiagramData(pDiagramData)
|
||||||
|
, mpBtnOk(m_xBuilder->weld_button("btnOk"))
|
||||||
|
, mpBtnCancel(m_xBuilder->weld_button("btnCancel"))
|
||||||
|
, mpTextDiagram(m_xBuilder->weld_text_view("textDiagram"))
|
||||||
|
{
|
||||||
|
mpTextDiagram->set_text(mpDiagramData->getString());
|
||||||
|
}
|
||||||
|
|
||||||
|
DiagramDialog::~DiagramDialog() {}
|
||||||
|
|
||||||
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
@@ -87,6 +87,7 @@
|
|||||||
#include <thesdlg.hxx>
|
#include <thesdlg.hxx>
|
||||||
#include <about.hxx>
|
#include <about.hxx>
|
||||||
#include <tipofthedaydlg.hxx>
|
#include <tipofthedaydlg.hxx>
|
||||||
|
#include <DiagramDialog.hxx>
|
||||||
|
|
||||||
using namespace ::com::sun::star;
|
using namespace ::com::sun::star;
|
||||||
using namespace ::com::sun::star::frame;
|
using namespace ::com::sun::star::frame;
|
||||||
@@ -1384,6 +1385,11 @@ short AbstractTipOfTheDayDialog_Impl::Execute()
|
|||||||
return m_xDlg->run();
|
return m_xDlg->run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
short AbstractDiagramDialog_Impl::Execute()
|
||||||
|
{
|
||||||
|
return m_xDlg->run();
|
||||||
|
}
|
||||||
|
|
||||||
VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateSvxMacroAssignDlg(
|
VclPtr<VclAbstractDialog> AbstractDialogFactory_Impl::CreateSvxMacroAssignDlg(
|
||||||
weld::Window* _pParent, const Reference< XFrame >& _rxDocumentFrame, const bool _bUnoDialogMode,
|
weld::Window* _pParent, const Reference< XFrame >& _rxDocumentFrame, const bool _bUnoDialogMode,
|
||||||
const Reference< XNameReplace >& _rxEvents, const sal_uInt16 _nInitiallySelectedEvent )
|
const Reference< XNameReplace >& _rxEvents, const sal_uInt16 _nInitiallySelectedEvent )
|
||||||
@@ -1641,4 +1647,11 @@ AbstractDialogFactory_Impl::CreateTipOfTheDayDialog(weld::Window* pParent)
|
|||||||
return VclPtr<AbstractTipOfTheDayDialog_Impl>::Create(std::make_unique<TipOfTheDayDialog>(pParent));
|
return VclPtr<AbstractTipOfTheDayDialog_Impl>::Create(std::make_unique<TipOfTheDayDialog>(pParent));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VclPtr<AbstractDiagramDialog>
|
||||||
|
AbstractDialogFactory_Impl::CreateDiagramDialog(weld::Window* pParent, std::shared_ptr<DiagramDataInterface> pDiagramData)
|
||||||
|
{
|
||||||
|
return VclPtr<AbstractDiagramDialog_Impl>::Create(
|
||||||
|
std::make_unique<DiagramDialog>(pParent, pDiagramData));
|
||||||
|
}
|
||||||
|
|
||||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||||
|
@@ -37,6 +37,7 @@
|
|||||||
#include <cuitabarea.hxx>
|
#include <cuitabarea.hxx>
|
||||||
#include <cuitbxform.hxx>
|
#include <cuitbxform.hxx>
|
||||||
#include <dlgname.hxx>
|
#include <dlgname.hxx>
|
||||||
|
#include <DiagramDialog.hxx>
|
||||||
#include <dstribut.hxx>
|
#include <dstribut.hxx>
|
||||||
#include <hangulhanjadlg.hxx>
|
#include <hangulhanjadlg.hxx>
|
||||||
#include <hyphen.hxx>
|
#include <hyphen.hxx>
|
||||||
@@ -740,6 +741,22 @@ public:
|
|||||||
virtual short Execute() override;
|
virtual short Execute() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class DiagramDialog;
|
||||||
|
|
||||||
|
/** Edit Diagram dialog */
|
||||||
|
class AbstractDiagramDialog_Impl : public AbstractDiagramDialog
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
std::unique_ptr<DiagramDialog> m_xDlg;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit AbstractDiagramDialog_Impl(std::unique_ptr<DiagramDialog> p)
|
||||||
|
: m_xDlg(std::move(p))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
virtual short Execute() override;
|
||||||
|
};
|
||||||
|
|
||||||
//AbstractDialogFactory_Impl implementations
|
//AbstractDialogFactory_Impl implementations
|
||||||
class AbstractDialogFactory_Impl : public SvxAbstractDialogFactory
|
class AbstractDialogFactory_Impl : public SvxAbstractDialogFactory
|
||||||
{
|
{
|
||||||
@@ -926,6 +943,10 @@ public:
|
|||||||
const css::uno::Reference<css::frame::XModel> xModel, bool bEditExisting) override;
|
const css::uno::Reference<css::frame::XModel> xModel, bool bEditExisting) override;
|
||||||
|
|
||||||
virtual VclPtr<AbstractTipOfTheDayDialog> CreateTipOfTheDayDialog(weld::Window* pParent) override;
|
virtual VclPtr<AbstractTipOfTheDayDialog> CreateTipOfTheDayDialog(weld::Window* pParent) override;
|
||||||
|
|
||||||
|
virtual VclPtr<AbstractDiagramDialog> CreateDiagramDialog(
|
||||||
|
weld::Window* pParent,
|
||||||
|
std::shared_ptr<DiagramDataInterface> pDiagramData) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
34
cui/source/inc/DiagramDialog.hxx
Normal file
34
cui/source/inc/DiagramDialog.hxx
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
|
/*
|
||||||
|
* This file is part of the LibreOffice project.
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef INCLUDED_CUI_SOURCE_INC_DIAGRAMDIALOG_HXX
|
||||||
|
#define INCLUDED_CUI_SOURCE_INC_DIAGRAMDIALOG_HXX
|
||||||
|
|
||||||
|
#include <tools/link.hxx>
|
||||||
|
#include <vcl/weld.hxx>
|
||||||
|
|
||||||
|
class DiagramDataInterface;
|
||||||
|
|
||||||
|
/** Edit Diagram dialog */
|
||||||
|
class DiagramDialog : public weld::GenericDialogController
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DiagramDialog(weld::Window* pWindow, std::shared_ptr<DiagramDataInterface> pDiagramData);
|
||||||
|
virtual ~DiagramDialog() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::shared_ptr<DiagramDataInterface> mpDiagramData;
|
||||||
|
std::unique_ptr<weld::Button> mpBtnOk;
|
||||||
|
std::unique_ptr<weld::Button> mpBtnCancel;
|
||||||
|
std::unique_ptr<weld::TextView> mpTextDiagram;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // INCLUDED_CUI_SOURCE_INC_DIAGRAMDIALOG_HXX
|
||||||
|
|
||||||
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
73
cui/uiconfig/ui/diagramdialog.ui
Normal file
73
cui/uiconfig/ui/diagramdialog.ui
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Generated with glade 3.22.1 -->
|
||||||
|
<interface domain="cui">
|
||||||
|
<requires lib="gtk+" version="3.18"/>
|
||||||
|
<object class="GtkDialog" id="DiagramDialog">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="type_hint">dialog</property>
|
||||||
|
<child>
|
||||||
|
<placeholder/>
|
||||||
|
</child>
|
||||||
|
<child internal-child="vbox">
|
||||||
|
<object class="GtkBox">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="spacing">2</property>
|
||||||
|
<child internal-child="action_area">
|
||||||
|
<object class="GtkButtonBox">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="layout_style">end</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="btnOk">
|
||||||
|
<property name="label">gtk-ok</property>
|
||||||
|
<property name="visible">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">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="btnCancel">
|
||||||
|
<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>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkTextView" id="textDiagram">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">True</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<action-widgets>
|
||||||
|
<action-widget response="-5">btnOk</action-widget>
|
||||||
|
<action-widget response="-6">btnCancel</action-widget>
|
||||||
|
</action-widgets>
|
||||||
|
</object>
|
||||||
|
</interface>
|
@@ -35,6 +35,7 @@ namespace com { namespace sun { namespace star { namespace frame { class XModel;
|
|||||||
namespace vcl { class Window; }
|
namespace vcl { class Window; }
|
||||||
class Dialog;
|
class Dialog;
|
||||||
class BitmapEx;
|
class BitmapEx;
|
||||||
|
class DiagramDataInterface;
|
||||||
namespace weld
|
namespace weld
|
||||||
{
|
{
|
||||||
class Dialog;
|
class Dialog;
|
||||||
@@ -131,6 +132,13 @@ protected:
|
|||||||
virtual ~AbstractTipOfTheDayDialog() override = default;
|
virtual ~AbstractTipOfTheDayDialog() override = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Edit Diagram dialog */
|
||||||
|
class VCL_DLLPUBLIC AbstractDiagramDialog : public VclAbstractDialog
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
virtual ~AbstractDiagramDialog() override = default;
|
||||||
|
};
|
||||||
|
|
||||||
class VCL_DLLPUBLIC VclAbstractDialogFactory
|
class VCL_DLLPUBLIC VclAbstractDialogFactory
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -170,6 +178,10 @@ public:
|
|||||||
// create info dialog to show tip-of-the-day
|
// create info dialog to show tip-of-the-day
|
||||||
virtual VclPtr<AbstractTipOfTheDayDialog>
|
virtual VclPtr<AbstractTipOfTheDayDialog>
|
||||||
CreateTipOfTheDayDialog(weld::Window* pParent) = 0;
|
CreateTipOfTheDayDialog(weld::Window* pParent) = 0;
|
||||||
|
|
||||||
|
virtual VclPtr<AbstractDiagramDialog> CreateDiagramDialog(
|
||||||
|
weld::Window* pParent,
|
||||||
|
std::shared_ptr<DiagramDataInterface> pDiagramData) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -7081,6 +7081,11 @@
|
|||||||
<value xml:lang="en-US">Regenerate Diagram</value>
|
<value xml:lang="en-US">Regenerate Diagram</value>
|
||||||
</prop>
|
</prop>
|
||||||
</node>
|
</node>
|
||||||
|
<node oor:name=".uno:EditDiagram" oor:op="replace">
|
||||||
|
<prop oor:name="Label" oor:type="xs:string">
|
||||||
|
<value xml:lang="en-US">Edit Diagram</value>
|
||||||
|
</prop>
|
||||||
|
</node>
|
||||||
<node oor:name=".uno:RemoveHyperlink" oor:op="replace">
|
<node oor:name=".uno:RemoveHyperlink" oor:op="replace">
|
||||||
<prop oor:name="Label" oor:type="xs:string">
|
<prop oor:name="Label" oor:type="xs:string">
|
||||||
<value xml:lang="en-US">~Remove Hyperlink</value>
|
<value xml:lang="en-US">~Remove Hyperlink</value>
|
||||||
|
@@ -464,6 +464,7 @@
|
|||||||
#define SID_SHOW_NEXT_LEVEL (SID_SD_START+449)
|
#define SID_SHOW_NEXT_LEVEL (SID_SD_START+449)
|
||||||
#define SID_PRESENTATION_MINIMIZER (SID_SD_START+450)
|
#define SID_PRESENTATION_MINIMIZER (SID_SD_START+450)
|
||||||
#define SID_REGENERATE_DIAGRAM (SID_SD_START+451)
|
#define SID_REGENERATE_DIAGRAM (SID_SD_START+451)
|
||||||
|
#define SID_EDIT_DIAGRAM (SID_SD_START+452)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||||
|
@@ -2809,6 +2809,11 @@ interface DrawView
|
|||||||
ExecMethod = ExecCtrl ;
|
ExecMethod = ExecCtrl ;
|
||||||
StateMethod = GetMenuState ;
|
StateMethod = GetMenuState ;
|
||||||
]
|
]
|
||||||
|
SID_EDIT_DIAGRAM
|
||||||
|
[
|
||||||
|
ExecMethod = ExecCtrl ;
|
||||||
|
StateMethod = GetMenuState ;
|
||||||
|
]
|
||||||
SID_INSERT_QRCODE
|
SID_INSERT_QRCODE
|
||||||
[
|
[
|
||||||
ExecMethod = FuTemporary ;
|
ExecMethod = FuTemporary ;
|
||||||
|
@@ -4683,3 +4683,20 @@ SfxVoidItem RegenerateDiagram SID_REGENERATE_DIAGRAM
|
|||||||
ToolBoxConfig = TRUE,
|
ToolBoxConfig = TRUE,
|
||||||
GroupId = SfxGroupId::Modify;
|
GroupId = SfxGroupId::Modify;
|
||||||
]
|
]
|
||||||
|
|
||||||
|
SfxVoidItem EditDiagram SID_EDIT_DIAGRAM
|
||||||
|
()
|
||||||
|
[
|
||||||
|
AutoUpdate = FALSE,
|
||||||
|
FastCall = FALSE,
|
||||||
|
ReadOnlyDoc = FALSE,
|
||||||
|
Toggle = FALSE,
|
||||||
|
Container = FALSE,
|
||||||
|
RecordAbsolute = FALSE,
|
||||||
|
RecordPerSet;
|
||||||
|
|
||||||
|
AccelConfig = TRUE,
|
||||||
|
MenuConfig = TRUE,
|
||||||
|
ToolBoxConfig = TRUE,
|
||||||
|
GroupId = SfxGroupId::Modify;
|
||||||
|
]
|
||||||
|
@@ -508,6 +508,27 @@ void DrawViewShell::ExecCtrl(SfxRequest& rReq)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SID_EDIT_DIAGRAM:
|
||||||
|
{
|
||||||
|
const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
|
||||||
|
if (rMarkList.GetMarkCount() == 1)
|
||||||
|
{
|
||||||
|
SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
|
||||||
|
Reference<css::drawing::XShape> xShape(pObj->getUnoShape(), UNO_QUERY);
|
||||||
|
|
||||||
|
if (oox::drawingml::DrawingML::IsDiagram(xShape))
|
||||||
|
{
|
||||||
|
VclAbstractDialogFactory* pFact = VclAbstractDialogFactory::Create();
|
||||||
|
VclPtr<VclAbstractDialog> pDlg
|
||||||
|
= pFact->CreateDiagramDialog(GetFrameWeld(), pObj->GetDiagramData());
|
||||||
|
pDlg->Execute();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rReq.Done();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user