blob: 3aad4f4712c7024cc1e616954f35200a88617e8a [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _MACROPG_HXX
#define _MACROPG_HXX
#include "sal/config.h"
#include "sfx2/dllapi.h"
#include <sfx2/basedlgs.hxx>
#include <sfx2/tabdlg.hxx>
#include <svl/macitem.hxx>
#include <vcl/lstbox.hxx>
#include <com/sun/star/frame/XFrame.hpp>
class _SfxMacroTabPage;
class SvStringsDtor;
class SvTabListBox;
class Edit;
class String;
class SfxObjectShell;
typedef SvStringsDtor* (*FNGetRangeHdl)( _SfxMacroTabPage*, const String& rLanguage );
typedef SvStringsDtor* (*FNGetMacrosOfRangeHdl)( _SfxMacroTabPage*, const String& rLanguage, const String& rRange );
class SfxConfigGroupListBox_Impl;
class SfxConfigFunctionListBox_Impl;
class _HeaderTabListBox;
class _SfxMacroTabPage_Impl;
class SFX2_DLLPUBLIC _SfxMacroTabPage : public SfxTabPage
{
SvxMacroTableDtor aTbl;
//#if 0 // _SOLAR__PRIVATE
DECL_DLLPRIVATE_STATIC_LINK( _SfxMacroTabPage, SelectEvent_Impl, SvTabListBox * );
DECL_DLLPRIVATE_STATIC_LINK( _SfxMacroTabPage, SelectGroup_Impl, ListBox * );
DECL_DLLPRIVATE_STATIC_LINK( _SfxMacroTabPage, SelectMacro_Impl, ListBox * );
DECL_DLLPRIVATE_STATIC_LINK( _SfxMacroTabPage, DoubleClickHdl_Impl, Control* );
DECL_DLLPRIVATE_STATIC_LINK( _SfxMacroTabPage, AssignDeleteHdl_Impl, PushButton * );
DECL_DLLPRIVATE_STATIC_LINK( _SfxMacroTabPage, ChangeScriptHdl_Impl, RadioButton * );
DECL_DLLPRIVATE_STATIC_LINK( _SfxMacroTabPage, GetFocus_Impl, Edit* );
DECL_DLLPRIVATE_STATIC_LINK( _SfxMacroTabPage, TimeOut_Impl, Timer* );
//#endif
protected:
_SfxMacroTabPage_Impl* mpImpl;
_SfxMacroTabPage( Window* pParent, const ResId& rId, const SfxItemSet& rItemSet );
void InitAndSetHandler();
void FillEvents();
void FillMacroList();
void EnableButtons( const String& rLanguage );
public:
virtual ~_SfxMacroTabPage();
void AddEvent( const String & rEventName, sal_uInt16 nEventId );
const SvxMacroTableDtor& GetMacroTbl() const;
void SetMacroTbl( const SvxMacroTableDtor& rTbl );
void ClearMacroTbl();
virtual void ScriptChanged( const String& rLanguage );
// zum setzen / abfragen der Links
void SetGetRangeLink( FNGetRangeHdl pFn );
FNGetRangeHdl GetGetRangeLink() const;
void SetGetMacrosOfRangeLink( FNGetMacrosOfRangeHdl pFn );
FNGetMacrosOfRangeHdl GetGetMacrosOfRangeLink() const;
// --------- Erben aus der Basis -------------
virtual sal_Bool FillItemSet( SfxItemSet& rSet );
virtual void Reset( const SfxItemSet& rSet );
void SetReadOnly( sal_Bool bSet );
sal_Bool IsReadOnly() const;
void SelectEvent( const String& rEventName, sal_uInt16 nEventId );
};
inline const SvxMacroTableDtor& _SfxMacroTabPage::GetMacroTbl() const
{
return aTbl;
}
inline void _SfxMacroTabPage::SetMacroTbl( const SvxMacroTableDtor& rTbl )
{
aTbl = rTbl;
}
inline void _SfxMacroTabPage::ClearMacroTbl()
{
aTbl.DelDtor();
}
class SFX2_DLLPUBLIC SfxMacroTabPage : public _SfxMacroTabPage
{
public:
SfxMacroTabPage(
Window* pParent,
const ResId& rId,
const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rxDocumentFrame,
const SfxItemSet& rSet
);
// --------- Erben aus der Basis -------------
static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet );
};
class SFX2_DLLPUBLIC SfxMacroAssignDlg : public SfxSingleTabDialog
{
public:
SfxMacroAssignDlg(
Window* pParent,
const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rxDocumentFrame,
SfxItemSet& rSet );
SfxMacroAssignDlg(
Window* pParent,
const SfxObjectShell* _pShell,
SfxItemSet& rSet );
virtual ~SfxMacroAssignDlg();
};
#endif