22 #include <osl/diagnose.h>
26 #include <svx/svxids.hrc>
33 using ::com::sun::star::uno::Reference;
34 using ::com::sun::star::frame::XFrame;
60 SID_ATTR_MACROITEM, SID_ATTR_MACROITEM,
70 OUString aEntry =
aName.getToken( nCount-1,
'.' );
73 aEntry +=
"(" +
aName.getToken( 0,
'.' ) +
"." +
aName.getToken( nCount-2,
'.' ) +
")";
90 mpImpl->m_xDeletePB->set_sensitive(
nullptr != pM);
92 OUString sEventMacro = rTreeView.
get_text(nSelected, 1);
94 OUString sScriptURI =
mpImpl->m_xMacroLB->GetSelectedScriptURI();
95 mpImpl->m_xAssignPB->set_sensitive(!sScriptURI.equalsIgnoreAsciiCase(sEventMacro));
98 mpImpl->m_xAssignPB->set_sensitive(
false);
102 :
SfxTabPage(pPage, pController,
"cui/ui/eventassignpage.ui",
"EventAssignPage", &rAttrSet)
107 mpImpl->m_aFillGroupIdle.SetPriority( TaskPriority::HIGHEST );
108 mpImpl->m_aFillGroupIdle.SetDebugName(
"SfxMacroTabPage m_aFillGroupIdle" );
111 mpImpl->m_xAssignPB = m_xBuilder->weld_button(
"assign");
112 mpImpl->m_xDeletePB = m_xBuilder->weld_button(
"delete");
113 mpImpl->m_xGroupFrame = m_xBuilder->weld_widget(
"groupframe");
115 mpImpl->m_xMacroFrame = m_xBuilder->weld_frame(
"macroframe");
116 mpImpl->m_aStaticMacroLBLabel =
mpImpl->m_xMacroFrame->get_label();
134 rTreeView.
append(OUString::number(static_cast<sal_Int32>(nEventId)), rEventName);
148 mpImpl->m_xGroupFrame->show();
149 mpImpl->m_xMacroFrame->show();
161 || aItem != *static_cast<const SvxMacroItem*>(pItem) )
171 if (!
mpImpl->m_aFillGroupIdle.IsActive() )
172 mpImpl->m_aFillGroupIdle.Start();
183 if( !
mpImpl->m_bGotEvents && SfxItemState::SET == aSet.
GetItemState( SID_EVENTCONFIG,
true, &pEventsItem ) )
185 mpImpl->m_bGotEvents =
true;
187 for (
size_t nNo = 0, nCnt = rList.
size(); nNo < nCnt; ++nNo )
199 aTbl = static_cast<const SvxMacroItem*>(pItem)->GetMacroTable();
202 if( !
mpImpl->m_bGotEvents && SfxItemState::SET == rSet->
GetItemState( SID_EVENTCONFIG,
true, &pEventsItem ) )
204 mpImpl->m_bGotEvents =
true;
206 for (
size_t nNo = 0, nCnt = rList.
size(); nNo < nCnt; ++nNo )
216 std::unique_ptr<weld::TreeIter> xIter(rListBox.
make_iterator());
232 DBG_ASSERT(nSelected != -1,
"Where does the empty entry come from?");
242 mpImpl->m_xGroupLB->GroupSelected();
243 const OUString sScriptURI = mpImpl->m_xMacroLB->GetSelectedScriptURI();
245 if( !sScriptURI.isEmpty() )
246 aLabelText = mpImpl->m_aStaticMacroLBLabel;
247 mpImpl->m_xMacroFrame->set_label( aLabelText );
259 AssignDeleteHdl(&rBtn);
264 AssignDeleteHdl(&rBtn);
274 DBG_ASSERT(nSelected != -1,
"Where does the empty entry come from?");
278 const bool bAssEnabled = pBtn !=
mpImpl->m_xDeletePB.get() &&
mpImpl->m_xAssignPB->get_sensitive();
287 sScriptURI =
mpImpl->m_xMacroLB->GetSelectedScriptURI();
288 if( sScriptURI.startsWith(
"vnd.sun.star.script:" ) )
295 OSL_ENSURE(
false,
"SfxMacroTabPage::AssignDeleteHdl_Impl: this branch is *not* dead? (out of interest: tell fs, please!)" );
301 rListBox.
set_text(nSelected, sScriptURI, 1);
311 std::unique_ptr<weld::WaitObject> xWait(pDialog ?
new weld::WaitObject(pDialog) :
nullptr);
321 mpImpl->m_xMacroLB->connect_row_activated( aLnk);
330 std::vector<int> aWidths;
334 mpImpl->m_xEventLB->show();
336 mpImpl->m_xEventLB->set_sensitive(
true);
337 mpImpl->m_xGroupLB->set_sensitive(
true);
338 mpImpl->m_xMacroLB->set_sensitive(
true);
340 mpImpl->m_xGroupLB->SetFunctionListBox(
mpImpl->m_xMacroLB.get());
350 for (
int n = 0 ;
n < nEntryCnt; ++
n)
369 return std::make_unique<SfxMacroTabPage>( pPage, pController,
nullptr, rAttrSet );
375 return CreateSfxMacroTabPage(pPage, pController, *rAttrSet);
383 std::unique_ptr<SfxMacroTabPage> xPage = CreateSfxMacroTabPage(
get_content_area(),
this, rSet);
384 xPage->SetFrame(rxDocumentFrame);
virtual void set_text(int row, const OUString &rText, int col=-1)=0
std::unique_ptr< CuiConfigFunctionListBox > m_xMacroLB
#define LINK(Instance, Class, Member)
SvxMacro & Insert(SvMacroItemId nEvent, const SvxMacro &rMacro)
OUString GetLanguage() const
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
SfxMacroAssignDlg(weld::Widget *pParent, const css::uno::Reference< css::frame::XFrame > &rxDocumentFrame, const SfxItemSet &rSet)
weld::Container * get_content_area()
virtual ~SfxMacroTabPage() override
SfxMacroTabPage(weld::Container *pPage, weld::DialogController *pController, const css::uno::Reference< css::frame::XFrame > &rxDocumentFrame, const SfxItemSet &rSet)
OUString m_aStaticMacroLBLabel
sal_Int32 getTokenCount(const OString &rIn, char cTok)
std::unique_ptr< CuiConfigGroupListBox > m_xGroupLB
virtual std::unique_ptr< TreeIter > make_iterator(const TreeIter *pOrig=nullptr) const =0
SfxEventName & at(size_t Index)
void connect_changed(const Link< TreeView &, void > &rLink)
SfxMacroTabPage * GetTabPage()
static OUString ConvertToUIName_Impl(SvxMacro const *pMacro)
std::unique_ptr< weld::Widget > m_xGroupFrame
virtual void ActivatePage(const SfxItemSet &) override
virtual int n_children() const =0
virtual bool FillItemSet(SfxItemSet *rSet) override
virtual void set_column_fixed_widths(const std::vector< int > &rWidths)=0
virtual OUString get_id(int pos) const =0
void SetFrame(const css::uno::Reference< css::frame::XFrame > &xFrame)
virtual void Reset(const SfxItemSet *rSet) override
void connect_row_activated(const Link< TreeView &, bool > &rLink)
const SfxItemSet & GetItemSet() const
IMPL_LINK(SfxMacroTabPage, AssignDeleteClickHdl_Impl, weld::Button &, rBtn, void)
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
#define DBG_ASSERT(sCon, aError)
virtual int get_selected_index() const =0
std::unique_ptr< weld::Button > m_xDeletePB
void AddEvent(const OUString &rEventName, SvMacroItemId nEventId)
void Erase(SvMacroItemId nEvent)
std::unique_ptr< weld::Button > m_xAssignPB
void SetTabPage(std::unique_ptr< SfxTabPage > xTabPage)
virtual OUString get_text(int row, int col=-1) const =0
#define SVX_MACRO_LANGUAGE_SF
bool IsReadOnly() const override
virtual OUString get_selected_id() const =0
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
bool IsKeyValid(SvMacroItemId nEvent) const
const SvxMacroTableDtor & GetMacroTable() const
void AssignDeleteHdl(const weld::Widget *)
const SvxMacro * Get(SvMacroItemId nEvent) const
static sal_uInt16 aPageRg[]
virtual bool get_iter_first(TreeIter &rIter) const =0
Reference< XComponentContext > getProcessComponentContext()
virtual void PageCreated(const SfxAllItemSet &aSet) override
virtual void set_cursor(int pos)=0
std::unique_ptr< weld::Frame > m_xMacroFrame
void append(TreeIter *pRet=nullptr)
std::unique_ptr< SfxMacroTabPage_Impl > mpImpl
IMPL_LINK_NOARG(SfxMacroTabPage, SelectEvent_Impl, weld::TreeView &, void)
#define SVX_MACRO_LANGUAGE_STARBASIC
std::unique_ptr< MacroEventListBox > m_xEventLB
weld::Window * GetFrameWeld(const SfxFrame *pFrame)
const OUString & GetMacName() const
sal_uInt16 GetWhich(sal_uInt16 nSlot, bool bDeep=true) const