weld AlignmentTabPage
Change-Id: I253a01b053efe836b0657f9a711cecd060b6782b
Reviewed-on: https://gerrit.libreoffice.org/60883
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/cui/source/inc/align.hxx b/cui/source/inc/align.hxx
index df2094a..669cac0 100644
--- a/cui/source/inc/align.hxx
+++ b/cui/source/inc/align.hxx
@@ -69,47 +69,50 @@ public:
virtual void DataChanged( const DataChangedEvent& rDCEvt ) override;
private:
explicit AlignmentTabPage( vcl::Window* pParent, const SfxItemSet& rCoreSet );
explicit AlignmentTabPage(TabPageParent pParent, const SfxItemSet& rCoreSet);
void InitVsRefEgde();
void UpdateEnableControls();
bool HasAlignmentChanged( const SfxItemSet& rNew, sal_uInt16 nWhich ) const;
DECL_LINK( UpdateEnableHdl, ListBox&, void );
DECL_LINK( UpdateEnableClickHdl, Button*, void );
DECL_LINK(UpdateEnableHdl, weld::ComboBox&, void);
DECL_LINK(UpdateEnableClickHdl, weld::ToggleButton&, void);
private:
VclPtr<ListBox> m_pLbHorAlign;
VclPtr<FixedText> m_pFtIndent;
VclPtr<MetricField> m_pEdIndent;
VclPtr<FixedText> m_pFtVerAlign;
VclPtr<ListBox> m_pLbVerAlign;
SvxDialControl m_aCtrlDial;
SvtValueSet m_aVsRefEdge;
VclPtr<DialControl> m_pCtrlDial;
VclPtr<FixedText> m_pFtRotate;
VclPtr<NumericField> m_pNfRotate;
VclPtr<FixedText> m_pFtRefEdge;
VclPtr<ValueSet> m_pVsRefEdge;
VclPtr<TriStateBox> m_pCbStacked;
VclPtr<TriStateBox> m_pCbAsianMode;
std::unique_ptr<OrientationHelper> m_pOrientHlp;
std::unique_ptr<weld::ComboBox> m_xLbHorAlign;
std::unique_ptr<weld::Label> m_xFtIndent;
std::unique_ptr<weld::MetricSpinButton> m_xEdIndent;
std::unique_ptr<weld::Label> m_xFtVerAlign;
std::unique_ptr<weld::ComboBox> m_xLbVerAlign;
VclPtr<VclHBox> m_pBoxDirection;
VclPtr<TriStateBox> m_pBtnWrap;
VclPtr<TriStateBox> m_pBtnHyphen;
VclPtr<TriStateBox> m_pBtnShrink;
VclPtr<FrameDirectionListBox> m_pLbFrameDir;
std::unique_ptr<weld::Label> m_xFtRotate;
std::unique_ptr<weld::SpinButton> m_xNfRotate;
std::unique_ptr<weld::Label> m_xFtRefEdge;
std::unique_ptr<weld::CheckButton> m_xCbStacked;
std::unique_ptr<weld::CheckButton> m_xCbAsianMode;
std::unique_ptr<weld::Widget> m_xBoxDirection;
std::unique_ptr<weld::CheckButton> m_xBtnWrap;
std::unique_ptr<weld::CheckButton> m_xBtnHyphen;
std::unique_ptr<weld::CheckButton> m_xBtnShrink;
std::unique_ptr<SvxFrameDirectionListBox> m_xLbFrameDir;
// hidden labels/string
VclPtr<FixedText> m_pFtBotLock;
VclPtr<FixedText> m_pFtTopLock;
VclPtr<FixedText> m_pFtCelLock;
VclPtr<FixedText> m_pFtABCD;
std::unique_ptr<weld::Label> m_xFtBotLock;
std::unique_ptr<weld::Label> m_xFtTopLock;
std::unique_ptr<weld::Label> m_xFtCelLock;
std::unique_ptr<weld::Label> m_xFtABCD;
VclPtr<VclContainer> m_pAlignmentFrame;
VclPtr<VclContainer> m_pOrientFrame;
VclPtr<VclContainer> m_pPropertiesFrame;
std::unique_ptr<weld::Widget> m_xAlignmentFrame;
std::unique_ptr<weld::Widget> m_xOrientFrame;
std::unique_ptr<weld::Widget> m_xPropertiesFrame;
std::unique_ptr<weld::CustomWeld> m_xVsRefEdge;
std::unique_ptr<weld::CustomWeld> m_xCtrlDial;
};
diff --git a/cui/source/tabpages/align.cxx b/cui/source/tabpages/align.cxx
index ed35fa5..3dd853f 100644
--- a/cui/source/tabpages/align.cxx
+++ b/cui/source/tabpages/align.cxx
@@ -46,55 +46,6 @@
namespace svx {
// item connections ===========================================================
// horizontal alignment -------------------------------------------------------
typedef sfx::ValueItemWrapper< SvxHorJustifyItem, SvxCellHorJustify > HorJustItemWrapper;
typedef sfx::ListBoxConnection< HorJustItemWrapper > HorJustConnection;
static const HorJustConnection::MapEntryType s_pHorJustMap[] =
{
{ ALIGNDLG_HORALIGN_STD, SvxCellHorJustify::Standard },
{ ALIGNDLG_HORALIGN_LEFT, SvxCellHorJustify::Left },
{ ALIGNDLG_HORALIGN_CENTER, SvxCellHorJustify::Center },
{ ALIGNDLG_HORALIGN_RIGHT, SvxCellHorJustify::Right },
{ ALIGNDLG_HORALIGN_BLOCK, SvxCellHorJustify::Block },
{ ALIGNDLG_HORALIGN_FILL, SvxCellHorJustify::Repeat },
{ ALIGNDLG_HORALIGN_DISTRIBUTED, SvxCellHorJustify::Block },
{ WRAPPER_LISTBOX_ENTRY_NOTFOUND, SvxCellHorJustify::Standard }
};
// vertical alignment ---------------------------------------------------------
typedef sfx::ValueItemWrapper< SvxVerJustifyItem, SvxCellVerJustify > VerJustItemWrapper;
typedef sfx::ListBoxConnection< VerJustItemWrapper > VerJustConnection;
static const VerJustConnection::MapEntryType s_pVerJustMap[] =
{
{ ALIGNDLG_VERALIGN_STD, SvxCellVerJustify::Standard },
{ ALIGNDLG_VERALIGN_TOP, SvxCellVerJustify::Top },
{ ALIGNDLG_VERALIGN_MID, SvxCellVerJustify::Center },
{ ALIGNDLG_VERALIGN_BOTTOM, SvxCellVerJustify::Bottom },
{ ALIGNDLG_VERALIGN_BLOCK, SvxCellVerJustify::Block },
{ ALIGNDLG_VERALIGN_DISTRIBUTED, SvxCellVerJustify::Block },
{ WRAPPER_LISTBOX_ENTRY_NOTFOUND, SvxCellVerJustify::Standard }
};
// cell rotate mode -----------------------------------------------------------
typedef sfx::ValueItemWrapper< SvxRotateModeItem, SvxRotateMode > RotateModeItemWrapper;
typedef sfx::ValueSetConnection< RotateModeItemWrapper > RotateModeConnection;
static const RotateModeConnection::MapEntryType s_pRotateModeMap[] =
{
{ IID_BOTTOMLOCK, SVX_ROTATE_MODE_BOTTOM },
{ IID_TOPLOCK, SVX_ROTATE_MODE_TOP },
{ IID_CELLLOCK, SVX_ROTATE_MODE_STANDARD },
{ WRAPPER_VALUESET_ITEM_NOTFOUND, SVX_ROTATE_MODE_STANDARD }
};
const sal_uInt16 AlignmentTabPage::s_pRanges[] =
{
SID_ATTR_ALIGN_HOR_JUSTIFY,SID_ATTR_ALIGN_VER_JUSTIFY,
@@ -114,7 +65,7 @@ namespace {
template<typename JustContainerType, typename JustEnumType>
void lcl_MaybeResetAlignToDistro(
ListBox& rLB, sal_uInt16 nListPos, const SfxItemSet& rCoreAttrs, sal_uInt16 nWhichAlign, sal_uInt16 nWhichJM, JustEnumType eBlock)
weld::ComboBox& rLB, sal_uInt16 nListPos, const SfxItemSet& rCoreAttrs, sal_uInt16 nWhichAlign, sal_uInt16 nWhichJM, JustEnumType eBlock)
{
const SfxPoolItem* pItem;
if (rCoreAttrs.GetItemState(nWhichAlign, true, &pItem) != SfxItemState::SET)
@@ -134,14 +85,16 @@ void lcl_MaybeResetAlignToDistro(
p = static_cast<const SfxEnumItemInterface*>(pItem);
SvxCellJustifyMethod eMethod = static_cast<SvxCellJustifyMethod>(p->GetEnumValue());
if (eMethod == SvxCellJustifyMethod::Distribute)
{
// Select the 'distribute' entry in the specified list box.
rLB.SelectEntryPos(nListPos);
rLB.set_active(nListPos);
}
}
void lcl_SetJustifyMethodToItemSet(SfxItemSet& rSet, sal_uInt16 nWhichJM, const ListBox& rLB, sal_uInt16 nListPos)
void lcl_SetJustifyMethodToItemSet(SfxItemSet& rSet, sal_uInt16 nWhichJM, const weld::ComboBox& rLB, sal_uInt16 nListPos)
{
SvxCellJustifyMethod eJM = SvxCellJustifyMethod::Auto;
if (rLB.GetSelectedEntryPos() == nListPos)
if (rLB.get_active() == nListPos)
eJM = SvxCellJustifyMethod::Distribute;
SvxJustifyMethodItem aItem(eJM, nWhichJM);
@@ -150,93 +103,57 @@ void lcl_SetJustifyMethodToItemSet(SfxItemSet& rSet, sal_uInt16 nWhichJM, const
}//namespace
AlignmentTabPage::AlignmentTabPage( vcl::Window* pParent, const SfxItemSet& rCoreAttrs ) :
SfxTabPage( pParent, "CellAlignPage","cui/ui/cellalignment.ui", &rCoreAttrs )
{
AlignmentTabPage::AlignmentTabPage(TabPageParent pParent, const SfxItemSet& rCoreAttrs)
: SfxTabPage(pParent, "cui/ui/cellalignment.ui", "CellAlignPage", &rCoreAttrs)
, m_aVsRefEdge(nullptr)
// text alignment
get(m_pLbHorAlign,"comboboxHorzAlign");
get(m_pFtIndent,"labelIndent");
get(m_pEdIndent,"spinIndentFrom");
get(m_pFtVerAlign,"labelVertAlign");
get(m_pLbVerAlign,"comboboxVertAlign");
, m_xLbHorAlign(m_xBuilder->weld_combo_box("comboboxHorzAlign"))
, m_xFtIndent(m_xBuilder->weld_label("labelIndent"))
, m_xEdIndent(m_xBuilder->weld_metric_spin_button("spinIndentFrom", FUNIT_POINT))
, m_xFtVerAlign(m_xBuilder->weld_label("labelVertAlign"))
, m_xLbVerAlign(m_xBuilder->weld_combo_box("comboboxVertAlign"))
//text rotation
get(m_pNfRotate,"spinDegrees");
get(m_pCtrlDial,"dialcontrol");
get(m_pFtRotate,"labelDegrees");
get(m_pFtRefEdge,"labelRefEdge");
get(m_pVsRefEdge,"references");
get(m_pBoxDirection,"boxDirection");
, m_xFtRotate(m_xBuilder->weld_label("labelDegrees"))
, m_xNfRotate(m_xBuilder->weld_spin_button("spinDegrees"))
, m_xFtRefEdge(m_xBuilder->weld_label("labelRefEdge"))
//Asian mode
get(m_pCbStacked,"checkVertStack");
get(m_pCbAsianMode,"checkAsianMode");
m_pOrientHlp.reset( new OrientationHelper(*m_pCtrlDial, *m_pNfRotate, *m_pCbStacked) );
, m_xCbStacked(m_xBuilder->weld_check_button("checkVertStack"))
, m_xCbAsianMode(m_xBuilder->weld_check_button("checkAsianMode"))
// Properties
get(m_pBtnWrap,"checkWrapTextAuto");
get(m_pBtnHyphen,"checkHyphActive");
get(m_pBtnShrink,"checkShrinkFitCellSize");
get(m_pLbFrameDir,"comboTextDirBox");
, m_xBoxDirection(m_xBuilder->weld_widget("boxDirection"))
, m_xBtnWrap(m_xBuilder->weld_check_button("checkWrapTextAuto"))
, m_xBtnHyphen(m_xBuilder->weld_check_button("checkHyphActive"))
, m_xBtnShrink(m_xBuilder->weld_check_button("checkShrinkFitCellSize"))
, m_xLbFrameDir(new SvxFrameDirectionListBox(m_xBuilder->weld_combo_box("comboTextDirBox")))
//ValueSet hover strings
get(m_pFtBotLock,"labelSTR_BOTTOMLOCK");
get(m_pFtTopLock,"labelSTR_TOPLOCK");
get(m_pFtCelLock,"labelSTR_CELLLOCK");
get(m_pFtABCD,"labelABCD");
get(m_pAlignmentFrame, "alignment");
get(m_pOrientFrame, "orientation");
get(m_pPropertiesFrame, "properties");
m_pCtrlDial->SetText(m_pFtABCD->GetText());
, m_xFtBotLock(m_xBuilder->weld_label("labelSTR_BOTTOMLOCK"))
, m_xFtTopLock(m_xBuilder->weld_label("labelSTR_TOPLOCK"))
, m_xFtCelLock(m_xBuilder->weld_label("labelSTR_CELLLOCK"))
, m_xFtABCD(m_xBuilder->weld_label("labelABCD"))
, m_xAlignmentFrame(m_xBuilder->weld_widget("alignment"))
, m_xOrientFrame(m_xBuilder->weld_widget("orientation"))
, m_xPropertiesFrame(m_xBuilder->weld_widget("properties"))
, m_xVsRefEdge(new weld::CustomWeld(*m_xBuilder, "references", m_aVsRefEdge))
, m_xCtrlDial(new weld::CustomWeld(*m_xBuilder, "dialcontrol", m_aCtrlDial))
{
m_aCtrlDial.SetLinkedField(m_xNfRotate.get());
m_aCtrlDial.SetText(m_xFtABCD->get_label());
InitVsRefEgde();
// windows to be disabled, if stacked text is turned ON
m_pOrientHlp->AddDependentWindow( *m_pFtRotate, TRISTATE_TRUE );
m_pOrientHlp->AddDependentWindow( *m_pFtRefEdge, TRISTATE_TRUE );
m_pOrientHlp->AddDependentWindow( *m_pVsRefEdge, TRISTATE_TRUE );
// windows to be disabled, if stacked text is turned OFF
m_pOrientHlp->AddDependentWindow( *m_pCbAsianMode, TRISTATE_FALSE );
Link<ListBox&,void> aLink = LINK( this, AlignmentTabPage, UpdateEnableHdl );
m_pLbHorAlign->SetSelectHdl( aLink );
m_pBtnWrap->SetClickHdl( LINK( this, AlignmentTabPage, UpdateEnableClickHdl ) );
m_xLbHorAlign->connect_changed(LINK(this, AlignmentTabPage, UpdateEnableHdl));
m_xBtnWrap->connect_toggled(LINK(this, AlignmentTabPage, UpdateEnableClickHdl));
m_xCbStacked->connect_toggled(LINK(this, AlignmentTabPage, UpdateEnableClickHdl));
// Asian vertical mode
m_pCbAsianMode->Show( SvtCJKOptions().IsVerticalTextEnabled() );
m_xCbAsianMode->show(SvtCJKOptions().IsVerticalTextEnabled());
m_pLbFrameDir->InsertEntryValue( SvxResId( RID_SVXSTR_FRAMEDIR_LTR ), SvxFrameDirection::Horizontal_LR_TB );
m_pLbFrameDir->InsertEntryValue( SvxResId( RID_SVXSTR_FRAMEDIR_RTL ), SvxFrameDirection::Horizontal_RL_TB );
m_pLbFrameDir->InsertEntryValue( SvxResId( RID_SVXSTR_FRAMEDIR_SUPER ), SvxFrameDirection::Environment );
m_xLbFrameDir->append(SvxFrameDirection::Horizontal_LR_TB, SvxResId(RID_SVXSTR_FRAMEDIR_LTR));
m_xLbFrameDir->append(SvxFrameDirection::Horizontal_RL_TB, SvxResId(RID_SVXSTR_FRAMEDIR_RTL));
m_xLbFrameDir->append(SvxFrameDirection::Environment, SvxResId(RID_SVXSTR_FRAMEDIR_SUPER));
// This page needs ExchangeSupport.
SetExchangeSupport();
AddItemConnection( new HorJustConnection( SID_ATTR_ALIGN_HOR_JUSTIFY, *m_pLbHorAlign, s_pHorJustMap, ItemConnFlags::HideUnknown ) );
AddItemConnection( new sfx::DummyItemConnection( SID_ATTR_ALIGN_INDENT, *m_pFtIndent, ItemConnFlags::HideUnknown ) );
AddItemConnection( new sfx::MetricConnection<sfx::UInt16ItemWrapper>( SID_ATTR_ALIGN_INDENT, *m_pEdIndent, FUNIT_TWIP, ItemConnFlags::HideUnknown ) );
AddItemConnection( new sfx::DummyItemConnection( SID_ATTR_ALIGN_VER_JUSTIFY, *m_pFtVerAlign, ItemConnFlags::HideUnknown ) );
AddItemConnection( new VerJustConnection( SID_ATTR_ALIGN_VER_JUSTIFY, *m_pLbVerAlign, s_pVerJustMap, ItemConnFlags::HideUnknown ) );
AddItemConnection( new DialControlConnection( SID_ATTR_ALIGN_DEGREES, *m_pCtrlDial, ItemConnFlags::HideUnknown ) );
AddItemConnection( new sfx::DummyItemConnection( SID_ATTR_ALIGN_DEGREES, *m_pFtRotate, ItemConnFlags::HideUnknown ) );
AddItemConnection( new sfx::DummyItemConnection( SID_ATTR_ALIGN_LOCKPOS, *m_pFtRefEdge, ItemConnFlags::HideUnknown ) );
AddItemConnection( new RotateModeConnection( SID_ATTR_ALIGN_LOCKPOS, *m_pVsRefEdge, s_pRotateModeMap, ItemConnFlags::HideUnknown ) );
AddItemConnection( new OrientStackedConnection( SID_ATTR_ALIGN_STACKED, *m_pOrientHlp ) );
AddItemConnection( new sfx::DummyItemConnection( SID_ATTR_ALIGN_STACKED, *m_pCbStacked, ItemConnFlags::HideUnknown ) );
AddItemConnection( new sfx::CheckBoxConnection( SID_ATTR_ALIGN_ASIANVERTICAL, *m_pCbAsianMode, ItemConnFlags::HideUnknown ) );
AddItemConnection( new sfx::CheckBoxConnection( SID_ATTR_ALIGN_LINEBREAK, *m_pBtnWrap, ItemConnFlags::HideUnknown ) );
AddItemConnection( new sfx::CheckBoxConnection( SID_ATTR_ALIGN_HYPHENATION, *m_pBtnHyphen, ItemConnFlags::HideUnknown ) );
AddItemConnection( new sfx::CheckBoxConnection( SID_ATTR_ALIGN_SHRINKTOFIT, *m_pBtnShrink, ItemConnFlags::HideUnknown ) );
AddItemConnection( new sfx::DummyItemConnection( SID_ATTR_FRAMEDIRECTION, *m_pBoxDirection, ItemConnFlags::HideUnknown ) );
AddItemConnection( new FrameDirectionListBoxConnection( SID_ATTR_FRAMEDIRECTION, *m_pLbFrameDir, ItemConnFlags::HideUnknown ) );
}
AlignmentTabPage::~AlignmentTabPage()
@@ -246,76 +163,414 @@ AlignmentTabPage::~AlignmentTabPage()
void AlignmentTabPage::dispose()
{
m_pOrientHlp.reset();
m_pLbHorAlign.clear();
m_pFtIndent.clear();
m_pEdIndent.clear();
m_pFtVerAlign.clear();
m_pLbVerAlign.clear();
m_pCtrlDial.clear();
m_pFtRotate.clear();
m_pNfRotate.clear();
m_pFtRefEdge.clear();
m_pVsRefEdge.clear();
m_pCbStacked.clear();
m_pCbAsianMode.clear();
m_pBoxDirection.clear();
m_pBtnWrap.clear();
m_pBtnHyphen.clear();
m_pBtnShrink.clear();
m_pLbFrameDir.clear();
m_pFtBotLock.clear();
m_pFtTopLock.clear();
m_pFtCelLock.clear();
m_pFtABCD.clear();
m_pAlignmentFrame.clear();
m_pOrientFrame.clear();
m_pPropertiesFrame.clear();
m_xCtrlDial.reset();
m_xVsRefEdge.reset();
m_xLbFrameDir.reset();
SfxTabPage::dispose();
}
VclPtr<SfxTabPage> AlignmentTabPage::Create( TabPageParent pParent, const SfxItemSet* rAttrSet )
VclPtr<SfxTabPage> AlignmentTabPage::Create(TabPageParent pParent, const SfxItemSet* rAttrSet)
{
return VclPtr<AlignmentTabPage>::Create( pParent.pParent, *rAttrSet );
return VclPtr<AlignmentTabPage>::Create(pParent, *rAttrSet);
}
bool AlignmentTabPage::FillItemSet( SfxItemSet* rSet )
{
bool bChanged = SfxTabPage::FillItemSet(rSet);
if (m_xLbHorAlign->get_value_changed_from_saved())
{
SvxCellHorJustify eJustify(SvxCellHorJustify::Standard);
switch (m_xLbHorAlign->get_active_id().toInt32())
{
case ALIGNDLG_HORALIGN_STD:
eJustify = SvxCellHorJustify::Standard;
break;
case ALIGNDLG_HORALIGN_LEFT:
eJustify = SvxCellHorJustify::Left;
break;
case ALIGNDLG_HORALIGN_CENTER:
eJustify = SvxCellHorJustify::Center;
break;
case ALIGNDLG_HORALIGN_RIGHT:
eJustify = SvxCellHorJustify::Right;
break;
case ALIGNDLG_HORALIGN_BLOCK:
eJustify = SvxCellHorJustify::Block;
break;
case ALIGNDLG_HORALIGN_FILL:
eJustify = SvxCellHorJustify::Repeat;
break;
}
rSet->Put(SvxHorJustifyItem(eJustify, GetWhich(SID_ATTR_ALIGN_HOR_JUSTIFY)));
bChanged = true;
}
if (m_xEdIndent->get_value_changed_from_saved())
{
rSet->Put(SfxUInt16Item(GetWhich(SID_ATTR_ALIGN_INDENT), m_xEdIndent->get_value(FUNIT_TWIP)));
bChanged = true;
}
if (m_xLbVerAlign->get_value_changed_from_saved())
{
SvxCellVerJustify eJustify(SvxCellVerJustify::Standard);
switch (m_xLbVerAlign->get_active_id().toInt32())
{
case ALIGNDLG_VERALIGN_STD:
eJustify = SvxCellVerJustify::Standard;
break;
case ALIGNDLG_VERALIGN_TOP:
eJustify = SvxCellVerJustify::Top;
break;
case ALIGNDLG_VERALIGN_MID:
eJustify = SvxCellVerJustify::Center;
break;
case ALIGNDLG_VERALIGN_BOTTOM:
eJustify = SvxCellVerJustify::Bottom;
break;
case ALIGNDLG_VERALIGN_BLOCK:
eJustify = SvxCellVerJustify::Block;
break;
}
rSet->Put(SvxVerJustifyItem(eJustify, GetWhich(SID_ATTR_ALIGN_VER_JUSTIFY)));
bChanged = true;
}
if (m_xNfRotate->get_value_changed_from_saved())
{
rSet->Put(SfxInt32Item(GetWhich(SID_ATTR_ALIGN_DEGREES), m_aCtrlDial.GetRotation()));
bChanged = true;
}
if (m_aVsRefEdge.IsValueChangedFromSaved())
{
switch (m_aVsRefEdge.GetSelectedItemId())
{
case IID_CELLLOCK:
rSet->Put(SvxRotateModeItem(SvxRotateMode::SVX_ROTATE_MODE_STANDARD, GetWhich(SID_ATTR_ALIGN_LOCKPOS)));
break;
case IID_TOPLOCK:
rSet->Put(SvxRotateModeItem(SvxRotateMode::SVX_ROTATE_MODE_TOP, GetWhich(SID_ATTR_ALIGN_LOCKPOS)));
break;
case IID_BOTTOMLOCK:
rSet->Put(SvxRotateModeItem(SvxRotateMode::SVX_ROTATE_MODE_BOTTOM, GetWhich(SID_ATTR_ALIGN_LOCKPOS)));
break;
default:
m_aVsRefEdge.SetNoSelection();
break;
}
bChanged = true;
}
if (m_xCbStacked->get_state_changed_from_saved())
{
rSet->Put(SfxBoolItem(GetWhich(SID_ATTR_ALIGN_STACKED), m_xCbStacked->get_active()));
bChanged = true;
}
if (m_xCbAsianMode->get_state_changed_from_saved())
{
rSet->Put(SfxBoolItem(GetWhich(SID_ATTR_ALIGN_ASIANVERTICAL), m_xCbAsianMode->get_active()));
bChanged = true;
}
if (m_xBtnWrap->get_state_changed_from_saved())
{
rSet->Put(SfxBoolItem(GetWhich(SID_ATTR_ALIGN_LINEBREAK), m_xBtnWrap->get_active()));
bChanged = true;
}
if (m_xBtnHyphen->get_state_changed_from_saved())
{
rSet->Put(SfxBoolItem(GetWhich(SID_ATTR_ALIGN_HYPHENATION), m_xBtnHyphen->get_active()));
bChanged = true;
}
if (m_xBtnShrink->get_state_changed_from_saved())
{
rSet->Put(SfxBoolItem(GetWhich(SID_ATTR_ALIGN_SHRINKTOFIT), m_xBtnShrink->get_active()));
bChanged = true;
}
if (m_xLbFrameDir->get_visible())
{
if (m_xLbFrameDir->get_value_changed_from_saved())
{
SvxFrameDirection eDir = m_xLbFrameDir->get_active_id();
rSet->Put(SvxFrameDirectionItem(eDir, GetWhich(SID_ATTR_FRAMEDIRECTION)));
bChanged = true;
}
}
// Special treatment for distributed alignment; we need to set the justify
// method to 'distribute' to distinguish from the normal justification.
sal_uInt16 nWhichHorJM = GetWhich(SID_ATTR_ALIGN_HOR_JUSTIFY_METHOD);
lcl_SetJustifyMethodToItemSet(*rSet, nWhichHorJM, *m_pLbHorAlign, ALIGNDLG_HORALIGN_DISTRIBUTED);
lcl_SetJustifyMethodToItemSet(*rSet, nWhichHorJM, *m_xLbHorAlign, ALIGNDLG_HORALIGN_DISTRIBUTED);
if (!bChanged)
bChanged = HasAlignmentChanged(*rSet, nWhichHorJM);
sal_uInt16 nWhichVerJM = GetWhich(SID_ATTR_ALIGN_VER_JUSTIFY_METHOD);
lcl_SetJustifyMethodToItemSet(*rSet, nWhichVerJM, *m_pLbVerAlign, ALIGNDLG_VERALIGN_DISTRIBUTED);
lcl_SetJustifyMethodToItemSet(*rSet, nWhichVerJM, *m_xLbVerAlign, ALIGNDLG_VERALIGN_DISTRIBUTED);
if (!bChanged)
bChanged = HasAlignmentChanged(*rSet, nWhichVerJM);
return bChanged;
}
void AlignmentTabPage::Reset( const SfxItemSet* rCoreAttrs )
namespace
{
SfxTabPage::Reset( rCoreAttrs );
void ResetBool(sal_uInt16 nWhich, const SfxItemSet* pSet, weld::CheckButton& rBtn)
{
SfxItemState eState = pSet->GetItemState(nWhich);
switch (eState)
{
case SfxItemState::UNKNOWN:
rBtn.hide();
break;
case SfxItemState::DISABLED:
case SfxItemState::READONLY:
rBtn.set_sensitive(false);
break;
case SfxItemState::DONTCARE:
rBtn.set_state(TRISTATE_INDET);
break;
case SfxItemState::DEFAULT:
case SfxItemState::SET:
{
const SfxBoolItem& rItem = static_cast<const SfxBoolItem&>(pSet->Get(nWhich));
rBtn.set_state(static_cast<TriState>(rItem.GetValue()));
break;
}
}
rBtn.save_state();
}
}
void AlignmentTabPage::Reset(const SfxItemSet* pCoreAttrs)
{
SfxTabPage::Reset(pCoreAttrs);
ResetBool(GetWhich(SID_ATTR_ALIGN_STACKED), pCoreAttrs, *m_xCbStacked);
ResetBool(GetWhich(SID_ATTR_ALIGN_ASIANVERTICAL), pCoreAttrs, *m_xCbAsianMode);
ResetBool(GetWhich(SID_ATTR_ALIGN_LINEBREAK), pCoreAttrs, *m_xBtnWrap);
ResetBool(GetWhich(SID_ATTR_ALIGN_HYPHENATION), pCoreAttrs, *m_xBtnHyphen);
ResetBool(GetWhich(SID_ATTR_ALIGN_SHRINKTOFIT), pCoreAttrs, *m_xBtnShrink);
sal_uInt16 nWhich = GetWhich(SID_ATTR_ALIGN_HOR_JUSTIFY);
SfxItemState eState = pCoreAttrs->GetItemState(nWhich);
switch (eState)
{
case SfxItemState::UNKNOWN:
m_xLbHorAlign->hide();
break;
case SfxItemState::DISABLED:
case SfxItemState::READONLY:
m_xLbHorAlign->set_sensitive(false);
break;
case SfxItemState::DONTCARE:
m_xLbHorAlign->set_active(-1);
break;
case SfxItemState::DEFAULT:
case SfxItemState::SET:
{
const SvxHorJustifyItem& rJustifyItem = static_cast<const SvxHorJustifyItem&>(pCoreAttrs->Get(nWhich));
switch (rJustifyItem.GetValue())
{
case SvxCellHorJustify::Standard:
m_xLbHorAlign->set_active_id(OUString::number(ALIGNDLG_HORALIGN_STD));
break;
case SvxCellHorJustify::Left:
m_xLbHorAlign->set_active_id(OUString::number(ALIGNDLG_HORALIGN_LEFT));
break;
case SvxCellHorJustify::Center:
m_xLbHorAlign->set_active_id(OUString::number(ALIGNDLG_HORALIGN_CENTER));
break;
case SvxCellHorJustify::Right:
m_xLbHorAlign->set_active_id(OUString::number(ALIGNDLG_HORALIGN_RIGHT));
break;
case SvxCellHorJustify::Block:
m_xLbHorAlign->set_active_id(OUString::number(ALIGNDLG_HORALIGN_BLOCK));
break;
case SvxCellHorJustify::Repeat:
m_xLbHorAlign->set_active_id(OUString::number(ALIGNDLG_HORALIGN_FILL));
break;
}
break;
}
}
nWhich = GetWhich(SID_ATTR_ALIGN_INDENT);
eState = pCoreAttrs->GetItemState(nWhich);
switch (eState)
{
case SfxItemState::UNKNOWN:
m_xEdIndent->hide();
break;
case SfxItemState::DISABLED:
case SfxItemState::READONLY:
m_xEdIndent->set_sensitive(false);
break;
case SfxItemState::DONTCARE:
m_xEdIndent->set_text("");
break;
case SfxItemState::DEFAULT:
case SfxItemState::SET:
{
const SfxUInt16Item& rIndentItem = static_cast<const SfxUInt16Item&>(pCoreAttrs->Get(nWhich));
m_xEdIndent->set_value(rIndentItem.GetValue(), FUNIT_TWIP);
break;
}
}
nWhich = GetWhich(SID_ATTR_ALIGN_VER_JUSTIFY);
eState = pCoreAttrs->GetItemState(nWhich);
switch (eState)
{
case SfxItemState::UNKNOWN:
m_xLbVerAlign->hide();
break;
case SfxItemState::DISABLED:
case SfxItemState::READONLY:
m_xLbVerAlign->set_sensitive(false);
break;
case SfxItemState::DONTCARE:
m_xLbVerAlign->set_active(-1);
break;
case SfxItemState::DEFAULT:
case SfxItemState::SET:
{
const SvxVerJustifyItem& rJustifyItem = static_cast<const SvxVerJustifyItem&>(pCoreAttrs->Get(nWhich));
switch (rJustifyItem.GetValue())
{
case SvxCellVerJustify::Standard:
m_xLbVerAlign->set_active_id(OUString::number(ALIGNDLG_VERALIGN_STD));
break;
case SvxCellVerJustify::Top:
m_xLbVerAlign->set_active_id(OUString::number(ALIGNDLG_VERALIGN_TOP));
break;
case SvxCellVerJustify::Center:
m_xLbVerAlign->set_active_id(OUString::number(ALIGNDLG_VERALIGN_MID));
break;
case SvxCellVerJustify::Bottom:
m_xLbVerAlign->set_active_id(OUString::number(ALIGNDLG_VERALIGN_BOTTOM));
break;
case SvxCellVerJustify::Block:
m_xLbVerAlign->set_active_id(OUString::number(ALIGNDLG_VERALIGN_BLOCK));
break;
}
break;
}
}
nWhich = GetWhich(SID_ATTR_ALIGN_DEGREES);
eState = pCoreAttrs->GetItemState(nWhich);
switch (eState)
{
case SfxItemState::UNKNOWN:
m_xNfRotate->hide();
m_xCtrlDial->hide();
break;
case SfxItemState::DISABLED:
case SfxItemState::READONLY:
m_xNfRotate->set_sensitive(false);
m_xCtrlDial->set_sensitive(false);
break;
case SfxItemState::DONTCARE:
m_aCtrlDial.SetNoRotation();
break;
case SfxItemState::DEFAULT:
case SfxItemState::SET:
{
const SfxInt32Item& rAlignItem = static_cast<const SfxInt32Item&>(pCoreAttrs->Get(nWhich));
m_aCtrlDial.SetRotation(rAlignItem.GetValue());
break;
}
}
nWhich = GetWhich(SID_ATTR_ALIGN_LOCKPOS);
eState = pCoreAttrs->GetItemState(nWhich);
switch (eState)
{
case SfxItemState::UNKNOWN:
m_xVsRefEdge->hide();
break;
case SfxItemState::DISABLED:
case SfxItemState::READONLY:
m_xVsRefEdge->set_sensitive(false);
break;
case SfxItemState::DONTCARE:
m_aVsRefEdge.SetNoSelection();
break;
case SfxItemState::DEFAULT:
case SfxItemState::SET:
{
const SvxRotateModeItem& rRotateModeItem = static_cast<const SvxRotateModeItem&>(pCoreAttrs->Get(nWhich));
switch (rRotateModeItem.GetValue())
{
case SvxRotateMode::SVX_ROTATE_MODE_STANDARD:
m_aVsRefEdge.SelectItem(IID_CELLLOCK);
break;
case SvxRotateMode::SVX_ROTATE_MODE_TOP:
m_aVsRefEdge.SelectItem(IID_TOPLOCK);
break;
case SvxRotateMode::SVX_ROTATE_MODE_BOTTOM:
m_aVsRefEdge.SelectItem(IID_BOTTOMLOCK);
break;
default:
m_aVsRefEdge.SetNoSelection();
break;
}
break;
}
}
m_aVsRefEdge.SaveValue();
//text direction
nWhich = GetWhich(SID_ATTR_FRAMEDIRECTION);
eState = pCoreAttrs->GetItemState(nWhich);
switch (eState)
{
case SfxItemState::UNKNOWN:
m_xLbFrameDir->hide();
break;
case SfxItemState::DISABLED:
case SfxItemState::READONLY:
m_xLbFrameDir->set_sensitive(false);
break;
case SfxItemState::DONTCARE:
m_xLbFrameDir->set_active(-1);
break;
case SfxItemState::DEFAULT:
case SfxItemState::SET:
{
const SvxFrameDirectionItem& rFrameDirItem = static_cast<const SvxFrameDirectionItem&>(pCoreAttrs->Get(nWhich));
m_xLbFrameDir->set_active_id(rFrameDirItem.GetValue());
break;
}
}
// Special treatment for distributed alignment; we need to set the justify
// method to 'distribute' to distinguish from the normal justification.
lcl_MaybeResetAlignToDistro<SvxCellHorJustify, SvxCellHorJustify>(
*m_pLbHorAlign, ALIGNDLG_HORALIGN_DISTRIBUTED, *rCoreAttrs,
*m_xLbHorAlign, ALIGNDLG_HORALIGN_DISTRIBUTED, *pCoreAttrs,
GetWhich(SID_ATTR_ALIGN_HOR_JUSTIFY), GetWhich(SID_ATTR_ALIGN_HOR_JUSTIFY_METHOD),
SvxCellHorJustify::Block);
lcl_MaybeResetAlignToDistro<SvxCellVerJustify, SvxCellVerJustify>(
*m_pLbVerAlign, ALIGNDLG_VERALIGN_DISTRIBUTED, *rCoreAttrs,
*m_xLbVerAlign, ALIGNDLG_VERALIGN_DISTRIBUTED, *pCoreAttrs,
GetWhich(SID_ATTR_ALIGN_VER_JUSTIFY), GetWhich(SID_ATTR_ALIGN_VER_JUSTIFY_METHOD),
SvxCellVerJustify::Block);
m_xLbHorAlign->save_value();
m_xLbFrameDir->save_value();
m_xLbVerAlign->save_value();
m_xNfRotate->save_value();
m_xEdIndent->save_value();
UpdateEnableControls();
}
@@ -338,7 +593,7 @@ void AlignmentTabPage::DataChanged( const DataChangedEvent& rDCEvt )
void AlignmentTabPage::InitVsRefEgde()
{
// remember selection - is deleted in call to ValueSet::Clear()
sal_uInt16 nSel = m_pVsRefEdge->GetSelectedItemId();
sal_uInt16 nSel = m_aVsRefEdge.GetSelectedItemId();
BitmapEx aBottomLock(RID_SVXBMP_BOTTOMLOCK);
BitmapEx aTopLock(RID_SVXBMP_TOPLOCK);
@@ -351,49 +606,57 @@ void AlignmentTabPage::InitVsRefEgde()
aCellLock.Scale(GetDPIScaleFactor(), GetDPIScaleFactor(), BmpScaleFlag::Fast);
}
Size aItemSize(aBottomLock.GetSizePixel());
m_aVsRefEdge.Clear();
m_aVsRefEdge.SetStyle(m_aVsRefEdge.GetStyle() | WB_ITEMBORDER | WB_DOUBLEBORDER);
m_pVsRefEdge->Clear();
m_pVsRefEdge->SetStyle( m_pVsRefEdge->GetStyle() | WB_ITEMBORDER | WB_DOUBLEBORDER );
m_aVsRefEdge.SetColCount(3);
m_aVsRefEdge.InsertItem(IID_BOTTOMLOCK, Image(aBottomLock), m_xFtBotLock->get_label());
m_aVsRefEdge.InsertItem(IID_TOPLOCK, Image(aTopLock), m_xFtTopLock->get_label());
m_aVsRefEdge.InsertItem(IID_CELLLOCK, Image(aCellLock), m_xFtCelLock->get_label());
m_aVsRefEdge.SetOptimalSize();
m_pVsRefEdge->SetColCount( 3 );
m_pVsRefEdge->InsertItem(IID_BOTTOMLOCK, Image(aBottomLock), m_pFtBotLock->GetText());
m_pVsRefEdge->InsertItem(IID_TOPLOCK, Image(aTopLock), m_pFtTopLock->GetText());
m_pVsRefEdge->InsertItem(IID_CELLLOCK, Image(aCellLock), m_pFtCelLock->GetText());
m_pVsRefEdge->SetSizePixel( m_pVsRefEdge->CalcWindowSizePixel( aItemSize ) );
m_pVsRefEdge->SelectItem( nSel );
m_aVsRefEdge.SelectItem( nSel );
}
void AlignmentTabPage::UpdateEnableControls()
{
const sal_Int32 nHorAlign = m_pLbHorAlign->GetSelectedEntryPos();
const sal_Int32 nHorAlign = m_xLbHorAlign->get_active();
bool bHorLeft = (nHorAlign == ALIGNDLG_HORALIGN_LEFT);
bool bHorBlock = (nHorAlign == ALIGNDLG_HORALIGN_BLOCK);
bool bHorFill = (nHorAlign == ALIGNDLG_HORALIGN_FILL);
bool bHorDist = (nHorAlign == ALIGNDLG_HORALIGN_DISTRIBUTED);
// indent edit field only for left alignment
m_pFtIndent->Enable( bHorLeft );
m_pEdIndent->Enable( bHorLeft );
m_xFtIndent->set_sensitive( bHorLeft );
m_xEdIndent->set_sensitive( bHorLeft );
// rotation/stacked disabled for fill alignment
m_pOrientHlp->Enable( !bHorFill );
// stacked disabled for fill alignment
m_xCbStacked->set_sensitive(!bHorFill);
// hyphenation only for automatic line breaks or for block alignment
m_pBtnHyphen->Enable( m_pBtnWrap->IsChecked() || bHorBlock );
m_xBtnHyphen->set_sensitive( m_xBtnWrap->get_active() || bHorBlock );
// shrink only without automatic line break, and not for block, fill or distribute.
m_pBtnShrink->Enable( (m_pBtnWrap->GetState() == TRISTATE_FALSE) && !bHorBlock && !bHorFill && !bHorDist );
m_xBtnShrink->set_sensitive( (m_xBtnWrap->get_state() == TRISTATE_FALSE) && !bHorBlock && !bHorFill && !bHorDist );
// visibility of frames
m_pAlignmentFrame->Show(m_pLbHorAlign->IsVisible() || m_pEdIndent->IsVisible() ||
m_pLbVerAlign->IsVisible());
m_pOrientFrame->Show(m_pCtrlDial->IsVisible() || m_pVsRefEdge->IsVisible() ||
m_pCbStacked->IsVisible() || m_pCbAsianMode->IsVisible());
m_pPropertiesFrame->Show(m_pBtnWrap->IsVisible() || m_pBtnHyphen->IsVisible() ||
m_pBtnShrink->IsVisible() || m_pLbFrameDir->IsVisible());
m_xAlignmentFrame->show(m_xLbHorAlign->get_visible() || m_xEdIndent->get_visible() ||
m_xLbVerAlign->get_visible());
m_xOrientFrame->show(m_xCtrlDial->get_visible() || m_xVsRefEdge->get_visible() ||
m_xCbStacked->get_visible() || m_xCbAsianMode->get_visible());
m_xPropertiesFrame->show(m_xBtnWrap->get_visible() || m_xBtnHyphen->get_visible() ||
m_xBtnShrink->get_visible() || m_xLbFrameDir->get_visible());
bool bStackedText = m_xCbStacked->get_active();
// windows to be disabled, if stacked text is turned ON
m_xFtRotate->set_sensitive(!bStackedText);
m_xFtRefEdge->set_sensitive(!bStackedText);
m_xVsRefEdge->set_sensitive(!bStackedText);
// windows to be disabled, if stacked text is turned OFF
m_xCbAsianMode->set_sensitive(bStackedText);
// rotation/stacked disabled for fill alignment/stacked
m_xCtrlDial->set_sensitive(!bHorFill && !bStackedText);
m_xNfRotate->set_sensitive(!bHorFill && !bStackedText);
}
bool AlignmentTabPage::HasAlignmentChanged( const SfxItemSet& rNew, sal_uInt16 nWhich ) const
@@ -417,17 +680,16 @@ bool AlignmentTabPage::HasAlignmentChanged( const SfxItemSet& rNew, sal_uInt16 n
return eMethodOld != eMethodNew;
}
IMPL_LINK_NOARG(AlignmentTabPage, UpdateEnableClickHdl, Button*, void)
IMPL_LINK_NOARG(AlignmentTabPage, UpdateEnableClickHdl, weld::ToggleButton&, void)
{
UpdateEnableControls();
}
IMPL_LINK_NOARG(AlignmentTabPage, UpdateEnableHdl, ListBox&, void)
IMPL_LINK_NOARG(AlignmentTabPage, UpdateEnableHdl, weld::ComboBox&, void)
{
UpdateEnableControls();
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/uiconfig/ui/cellalignment.ui b/cui/uiconfig/ui/cellalignment.ui
index db63e0a..7721736 100644
--- a/cui/uiconfig/ui/cellalignment.ui
+++ b/cui/uiconfig/ui/cellalignment.ui
@@ -1,8 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<!-- Generated with glade 3.22.1 -->
<interface domain="cui">
<requires lib="gtk+" version="3.18"/>
<requires lib="LibreOffice" version="1.0"/>
<object class="GtkAdjustment" id="adjustmentIndent">
<property name="upper">990</property>
<property name="step_increment">10</property>
@@ -12,78 +11,6 @@
<property name="upper">359</property>
<property name="step_increment">5</property>
</object>
<object class="GtkListStore" id="liststoreHorzAlign">
<columns>
<!-- column-name gchararray1 -->
<column type="gchararray"/>
<!-- column-name gint1 -->
<column type="gint"/>
</columns>
<data>
<row>
<col id="0" translatable="yes" context="cellalignment|liststoreHorzAlign">Default</col>
<col id="1">0</col>
</row>
<row>
<col id="0" translatable="yes" context="cellalignment|liststoreHorzAlign">Left</col>
<col id="1">1</col>
</row>
<row>
<col id="0" translatable="yes" context="cellalignment|liststoreHorzAlign">Center</col>
<col id="1">2</col>
</row>
<row>
<col id="0" translatable="yes" context="cellalignment|liststoreHorzAlign">Right</col>
<col id="1">3</col>
</row>
<row>
<col id="0" translatable="yes" context="cellalignment|liststoreHorzAlign">Justified</col>
<col id="1">4</col>
</row>
<row>
<col id="0" translatable="yes" context="cellalignment|liststoreHorzAlign">Filled</col>
<col id="1">5</col>
</row>
<row>
<col id="0" translatable="yes" context="cellalignment|liststoreHorzAlign">Distributed</col>
<col id="1">6</col>
</row>
</data>
</object>
<object class="GtkListStore" id="liststoreVertAlign">
<columns>
<!-- column-name gchararray1 -->
<column type="gchararray"/>
<!-- column-name gint1 -->
<column type="gint"/>
</columns>
<data>
<row>
<col id="0" translatable="yes" context="cellalignment|liststoreVertAlign">Default</col>
<col id="1">0</col>
</row>
<row>
<col id="0" translatable="yes" context="cellalignment|liststoreVertAlign">Top</col>
<col id="1">1</col>
</row>
<row>
<col id="0" translatable="yes" context="cellalignment|liststoreVertAlign">Middle</col>
<col id="1">2</col>
</row>
<row>
<col id="0" translatable="yes" context="cellalignment|liststoreVertAlign">Bottom</col>
<col id="1">3</col>
</row>
<row>
<col id="0" translatable="yes" context="cellalignment|liststoreVertAlign">Justified</col>
<col id="1">4</col>
</row>
<row>
<col id="0" translatable="yes" context="cellalignment|liststoreVertAlign">Distributed</col>
<col id="1">5</col>
</row>
</data>
</object>
<object class="GtkGrid" id="CellAlignPage">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -119,10 +46,10 @@
<object class="GtkLabel" id="labelDegrees">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="cellalignment|labelDegrees">_Degrees:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">spinDegrees</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -133,10 +60,10 @@
<object class="GtkLabel" id="labelRefEdge">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="cellalignment|labelRefEdge">_Reference edge:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">references</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -144,10 +71,27 @@
</packing>
</child>
<child>
<object class="svtlo-ValueSet" id="references">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">start</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">never</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkDrawingArea" id="references">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
<property name="halign">start</property>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="left_attach">0</property>
@@ -158,6 +102,7 @@
<object class="GtkSpinButton" id="spinDegrees">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activates_default">True</property>
<property name="progress_pulse_step">1</property>
<property name="adjustment">adjustmentSpinDegrees</property>
<property name="wrap">True</property>
@@ -174,12 +119,29 @@
</packing>
</child>
<child>
<object class="svxlo-DialControl" id="dialcontrol">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="active">True</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">never</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkDrawingArea" id="dialcontrol">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
<property name="halign">center</property>
<property name="valign">center</property>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="left_attach">0</property>
@@ -322,7 +284,7 @@
</packing>
</child>
<child>
<object class="GtkHBox" id="boxDirection">
<object class="GtkBox" id="boxDirection">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">12</property>
@@ -330,10 +292,10 @@
<object class="GtkLabel" id="LabelTxtDir">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="cellalignment|LabelTxtDir">Te_xt direction:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">comboTextDirBox</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -342,7 +304,7 @@
</packing>
</child>
<child>
<object class="svxlo-FrameDirectionListBox" id="comboTextDirBox">
<object class="GtkComboBoxText" id="comboTextDirBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
@@ -398,9 +360,10 @@
<property name="row_spacing">6</property>
<property name="column_spacing">12</property>
<child>
<object class="GtkSpinButton" id="spinIndentFrom:0.00pt">
<object class="GtkSpinButton" id="spinIndentFrom">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="activates_default">True</property>
<property name="adjustment">adjustmentIndent</property>
<property name="climb_rate">1</property>
</object>
@@ -413,10 +376,10 @@
<object class="GtkLabel" id="labelHorzAlign">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="cellalignment|labelHorzAlign">Hori_zontal</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">comboboxHorzAlign</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -427,10 +390,10 @@
<object class="GtkLabel" id="labelVertAlign">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="cellalignment|labelVertAlign">_Vertical</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">comboboxVertAlign</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">2</property>
@@ -441,10 +404,10 @@
<object class="GtkLabel" id="labelIndent">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="cellalignment|labelIndent">I_ndent</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">spinIndentFrom:0.00pt</property>
<property name="mnemonic_widget">spinIndentFrom</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -452,11 +415,19 @@
</packing>
</child>
<child>
<object class="GtkComboBox" id="comboboxHorzAlign">
<object class="GtkComboBoxText" id="comboboxHorzAlign">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="model">liststoreHorzAlign</property>
<items>
<item id="0" translatable="yes" context="cellalignment|liststoreHorzAlign">Default</item>
<item id="1" translatable="yes" context="cellalignment|liststoreHorzAlign">Left</item>
<item id="2" translatable="yes" context="cellalignment|liststoreHorzAlign">Center</item>
<item id="3" translatable="yes" context="cellalignment|liststoreHorzAlign">Right</item>
<item id="4" translatable="yes" context="cellalignment|liststoreHorzAlign">Justified</item>
<item id="5" translatable="yes" context="cellalignment|liststoreHorzAlign">Filled</item>
<item id="6" translatable="yes" context="cellalignment|liststoreHorzAlign">Distributed</item>
</items>
</object>
<packing>
<property name="left_attach">0</property>
@@ -464,11 +435,18 @@
</packing>
</child>
<child>
<object class="GtkComboBox" id="comboboxVertAlign">
<object class="GtkComboBoxText" id="comboboxVertAlign">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="model">liststoreVertAlign</property>
<items>
<item id="0" translatable="yes" context="cellalignment|liststoreVertAlign">Default</item>
<item id="1" translatable="yes" context="cellalignment|liststoreVertAlign">Top</item>
<item id="2" translatable="yes" context="cellalignment|liststoreVertAlign">Middle</item>
<item id="3" translatable="yes" context="cellalignment|liststoreVertAlign">Bottom</item>
<item id="4" translatable="yes" context="cellalignment|liststoreVertAlign">Justified</item>
<item id="5" translatable="yes" context="cellalignment|liststoreVertAlign">Distributed</item>
</items>
</object>
<packing>
<property name="left_attach">2</property>
diff --git a/include/sfx2/controlwrapper.hxx b/include/sfx2/controlwrapper.hxx
index 1758d70..549c215 100644
--- a/include/sfx2/controlwrapper.hxx
+++ b/include/sfx2/controlwrapper.hxx
@@ -122,12 +122,8 @@ private:
| | +- [ValueType]MetricFieldWrapper [1] [2]
| |
| +- ListBoxWrapper< ValueT > [1]
| | |
| | +- [ValueType]ListBoxWrapper [1] [2]
| |
| +- ValueSetWrapper< ValueT > [1]
| |
| +- [ValueType]ValueSetWrapper [1] [2]
| +- [ValueType]ListBoxWrapper [1] [2]
|
+- MultiControlWrapperHelper
|
@@ -226,21 +222,6 @@ public:
};
/** A wrapper for the VCL CheckBox. */
class SFX2_DLLPUBLIC CheckBoxWrapper:
public SingleControlWrapper< CheckBox, bool >
{
public:
explicit CheckBoxWrapper( CheckBox& rCheckBox );
virtual bool IsControlDontKnow() const override;
virtual void SetControlDontKnow( bool bSet ) override;
virtual bool GetControlValue() const override;
virtual void SetControlValue( bool bValue ) override;
};
/** A wrapper for the VCL MetricField.
Adds support for field units during accessing the control value. The
@@ -298,39 +279,6 @@ public:
};
#define WRAPPER_VALUESET_ITEM_NOTFOUND 0xFFFF /* XXX was value of VALUESET_ITEM_NOTFOUND */
/** A wrapper for the SVTOOLS ValueSet.
If a position<->value map is passed to the constructor, it MUST be
terminated with an entry containing WRAPPER_VALUESET_ITEM_NOTFOUND as list
position. See documentation of the PosValueMapper template for details.
*/
template< typename ValueT >
class ValueSetWrapper :
public SingleControlWrapper< ValueSet, ValueT >,
public PosValueMapper< ValueSetPosType, ValueT >
{
typedef PosValueMapper< ValueSetPosType, ValueT > MapperType;
public:
typedef typename MapperType::MapEntryType MapEntryType;
/** @param pMap Optional position <-> value map.
See PosValueMapper documentation for details. */
explicit ValueSetWrapper( ValueSet& rValueSet, const MapEntryType* pMap ) :
SingleControlWrapper< ValueSet, ValueT >( rValueSet ), MapperType( WRAPPER_VALUESET_ITEM_NOTFOUND, pMap ) {}
virtual bool IsControlDontKnow() const override
{ return this->GetControl().IsNoSelection(); }
virtual void SetControlDontKnow( bool bSet ) override
{ if( bSet ) this->GetControl().SetNoSelection(); }
virtual ValueT GetControlValue() const override;
virtual void SetControlValue( ValueT nValue ) override;
};
// *** Implementation of template functions ***
@@ -424,22 +372,6 @@ void ListBoxWrapper< ValueT >::SetControlValue( ValueT nValue )
this->GetControl().SelectEntryPos( nPos );
}
template< typename ValueT >
ValueT ValueSetWrapper< ValueT >::GetControlValue() const
{
return this->GetValueFromPos( this->GetControl().GetSelectedItemId() );
}
template< typename ValueT >
void ValueSetWrapper< ValueT >::SetControlValue( ValueT nValue )
{
sal_uInt16 nPos = this->GetPosFromValue( nValue );
if( nPos != this->GetNotFoundPos() )
this->GetControl().SelectItem( nPos );
}
} // namespace sfx
#endif
diff --git a/include/sfx2/itemconnect.hxx b/include/sfx2/itemconnect.hxx
index a4a122c..622114e 100644
--- a/include/sfx2/itemconnect.hxx
+++ b/include/sfx2/itemconnect.hxx
@@ -143,23 +143,13 @@ namespace sfx {
|
+- ItemControlConnection< ItemWrpT, ControlWrpT >
| |
| +- CheckBoxConnection [1]
| |
| +- NumericConnection< ItemWrpT > [1]
| | |
| | +- [ValueType]NumericConnection [1] [2]
| |
| +- MetricConnection< ItemWrpT > [1]
| | |
| | +- [ValueType]MetricConnection [1] [2]
| |
| +- ListBoxConnection< ItemWrpT > [1]
| | |
| | +- [ValueType]ListBoxConnection [1] [2]
| |
| +- ValueSetConnection< ItemWrpT > [1]
| |
| +- [ValueType]ValueSetConnection [1] [2]
| +- [ValueType]ListBoxConnection [1] [2]
|
+- ItemConnectionArray [1]
@@ -273,34 +263,6 @@ private:
sal_uInt16 mnSlot;
};
/** Connection between an SfxBoolItem and a VCL CheckBox. */
typedef ItemControlConnection< BoolItemWrapper, CheckBoxWrapper > CheckBoxConnection;
/** Connection between an item and the VCL MetricField.
Adds support of different field units during control value <-> item value
conversion. The field unit passed to the constructor applies for the item
values, while the field unit used in the control has to be set at the
control itself.
*/
template< typename ItemWrpT >
class MetricConnection : public ItemControlConnection< ItemWrpT,
MetricFieldWrapper< typename ItemWrpT::ItemValueType > >
{
typedef ItemControlConnection< ItemWrpT,
MetricFieldWrapper< typename ItemWrpT::ItemValueType > >
ItemControlConnectionType;
public:
typedef typename ItemControlConnectionType::ControlWrapperType MetricFieldWrapperType;
explicit MetricConnection( sal_uInt16 nSlot, MetricField& rField,
FieldUnit eItemUnit, ItemConnFlags nFlags = ItemConnFlags::NONE );
};
/** Connection between an item and a VCL ListBox.
Optionally a map can be passed that maps list box positions to item values.
@@ -326,31 +288,6 @@ public:
};
/** Connection between an item and an SVTOOLS ValueSet.
Optionally a map can be passed that maps value set identifiers to item
values. This map MUST be terminated with an entry containing
WRAPPER_VALUESET_ITEM_NOTFOUND as value set identifier. The item value
contained in this last entry is used as default item value in case of an
error.
*/
template< typename ItemWrpT >
class ValueSetConnection : public ItemControlConnection< ItemWrpT,
ValueSetWrapper< typename ItemWrpT::ItemValueType > >
{
typedef ItemControlConnection< ItemWrpT,
ValueSetWrapper< typename ItemWrpT::ItemValueType > >
ItemControlConnectionType;
public:
typedef typename ItemControlConnectionType::ControlWrapperType ValueSetWrapperType;
typedef typename ValueSetWrapperType::MapEntryType MapEntryType;
explicit ValueSetConnection( sal_uInt16 nSlot, ValueSet& rValueSet,
const MapEntryType* pMap, ItemConnFlags nFlags = ItemConnFlags::NONE );
};
// Array of connections
@@ -462,15 +399,6 @@ bool ItemControlConnection< ItemWrpT, ControlWrpT >::FillItemSet(
// Standard connections
template< typename ItemWrpT >
MetricConnection< ItemWrpT >::MetricConnection(
sal_uInt16 nSlot, MetricField& rField, FieldUnit eItemUnit, ItemConnFlags nFlags ) :
ItemControlConnectionType( nSlot, new MetricFieldWrapperType( rField, eItemUnit ), nFlags )
{
}
template< typename ItemWrpT >
ListBoxConnection< ItemWrpT >::ListBoxConnection(
sal_uInt16 nSlot, ListBox& rListBox, const MapEntryType* pMap, ItemConnFlags nFlags ) :
@@ -478,15 +406,6 @@ ListBoxConnection< ItemWrpT >::ListBoxConnection(
{
}
template< typename ItemWrpT >
ValueSetConnection< ItemWrpT >::ValueSetConnection(
sal_uInt16 nSlot, ValueSet& rValueSet, const MapEntryType* pMap, ItemConnFlags nFlags ) :
ItemControlConnectionType( nSlot, new ValueSetWrapperType( rValueSet, pMap ), nFlags )
{
}
} // namespace sfx
#endif
diff --git a/include/svtools/valueset.hxx b/include/svtools/valueset.hxx
index 6804a96..7bd827e 100644
--- a/include/svtools/valueset.hxx
+++ b/include/svtools/valueset.hxx
@@ -421,6 +421,7 @@ private:
long mnUserItemWidth;
long mnUserItemHeight;
sal_uInt16 mnSelItemId;
int mnSavedItemId;
sal_uInt16 mnHighItemId;
sal_uInt16 mnCols;
sal_uInt16 mnCurCol;
@@ -581,6 +582,17 @@ public:
return mbEdgeBlending;
}
void SetEdgeBlending(bool bNew);
void SaveValue()
{
mnSavedItemId = IsNoSelection() ? -1 : GetSelectedItemId();
}
bool IsValueChangedFromSaved() const
{
int nItemId = IsNoSelection() ? -1 : GetSelectedItemId();
return mnSavedItemId != nItemId;
}
};
diff --git a/include/svx/dialcontrol.hxx b/include/svx/dialcontrol.hxx
index 085cb0c..44a8291 100644
--- a/include/svx/dialcontrol.hxx
+++ b/include/svx/dialcontrol.hxx
@@ -22,6 +22,7 @@
#include <memory>
#include <vcl/ctrl.hxx>
#include <vcl/customweld.hxx>
#include <vcl/weld.hxx>
#include <sfx2/itemconnect.hxx>
#include <svx/svxdllapi.h>
@@ -179,6 +180,8 @@ public:
sal_Int32 GetRotation() const;
/** Sets the rotation to the passed value (in 1/100 degrees). */
void SetRotation( sal_Int32 nAngle );
/** Sets the control to "don't care" state. */
void SetNoRotation();
/** Links the passed numeric edit field to the control (bi-directional).
* nDecimalPlaces:
@@ -194,12 +197,16 @@ public:
/** Compare value with the saved value */
bool IsValueModified();
const OUString& GetText() const { return mpImpl->maText; }
void SetText(const OUString& rText) { mpImpl->maText = rText; }
protected:
struct DialControl_Impl
{
ScopedVclPtr<DialControlBmp> mxBmpEnabled;
ScopedVclPtr<DialControlBmp> mxBmpDisabled;
ScopedVclPtr<DialControlBmp> mxBmpBuffered;
OUString maText;
weld::SpinButton* mpLinkField;
sal_Int32 mnLinkedFieldValueMultiplyer;
Size maWinSize;
@@ -209,6 +216,7 @@ protected:
sal_Int32 mnOldAngle;
long mnCenterX;
long mnCenterY;
bool mbNoRot;
explicit DialControl_Impl(OutputDevice& rReference);
void Init( const Size& rWinSize, const vcl::Font& rWinFont );
@@ -225,26 +233,10 @@ protected:
private:
void InvalidateControl();
DECL_LINK( LinkedFieldModifyHdl, weld::SpinButton&, void );
DECL_LINK(LinkedFieldModifyHdl, weld::Entry&, void);
void LinkedFieldModifyHdl();
};
/** Wrapper for usage of a DialControl in item connections. */
class SAL_WARN_UNUSED SVX_DLLPUBLIC DialControlWrapper : public sfx::SingleControlWrapper< DialControl, sal_Int32 >
{
public:
explicit DialControlWrapper( DialControl& rDial );
virtual bool IsControlDontKnow() const override;
virtual void SetControlDontKnow( bool bSet ) override;
virtual sal_Int32 GetControlValue() const override;
virtual void SetControlValue( sal_Int32 nValue ) override;
};
/** An item<->control connection for a DialControl. */
typedef sfx::ItemControlConnection< sfx::Int32ItemWrapper, DialControlWrapper > DialControlConnection;
}
#endif
diff --git a/include/svx/frmdirlbox.hxx b/include/svx/frmdirlbox.hxx
index 62d374e..72455be 100644
--- a/include/svx/frmdirlbox.hxx
+++ b/include/svx/frmdirlbox.hxx
@@ -69,6 +69,8 @@ public:
SvxFrameDirection get_active_id() const { return static_cast<SvxFrameDirection>(m_xControl->get_active_id().toUInt32()); }
void set_active_id(SvxFrameDirection eDir) { m_xControl->set_active_id(OUString::number(static_cast<sal_uInt32>(eDir))); }
void remove_id(SvxFrameDirection eDir) { m_xControl->remove_id(OUString::number(static_cast<sal_uInt32>(eDir))); }
void set_active(int pos) { m_xControl->set_active(pos); }
void set_sensitive(bool bSensitive) { m_xControl->set_sensitive(bSensitive); }
void hide() { m_xControl->hide(); }
void show(bool bShow = true) { m_xControl->show(bShow); }
int get_count() const { return m_xControl->get_count(); }
@@ -80,26 +82,6 @@ public:
void connect_changed(const Link<weld::ComboBox&, void>& rLink) { m_xControl->connect_changed(rLink); }
};
/** Wrapper for usage of a FrameDirectionListBox in item connections. */
class SAL_WARN_UNUSED SVX_DLLPUBLIC FrameDirectionListBoxWrapper : public sfx::SingleControlWrapper< FrameDirectionListBox, SvxFrameDirection >
{
public:
explicit FrameDirectionListBoxWrapper( FrameDirectionListBox& rListBox );
virtual bool IsControlDontKnow() const override;
virtual void SetControlDontKnow( bool bSet ) override;
virtual SvxFrameDirection GetControlValue() const override;
virtual void SetControlValue( SvxFrameDirection eValue ) override;
};
/** Wrapper for usage of a SvxFrameDirectionItem in item connections. */
typedef sfx::ValueItemWrapper< SvxFrameDirectionItem, SvxFrameDirection > FrameDirItemWrapper;
/** An item<->control connection for a FrameDirectionListBox. */
typedef sfx::ItemControlConnection< FrameDirItemWrapper, FrameDirectionListBoxWrapper > FrameDirectionListBoxConnection;
}
#endif
diff --git a/include/svx/orienthelper.hxx b/include/svx/orienthelper.hxx
index f3d16bc..8140398 100644
--- a/include/svx/orienthelper.hxx
+++ b/include/svx/orienthelper.hxx
@@ -89,25 +89,6 @@ private:
std::unique_ptr< OrientationHelper_Impl > mpImpl;
};
/** Wrapper for usage of the stacked attribute of an OrientationHelper in item connections. */
class SVX_DLLPUBLIC OrientStackedWrapper : public sfx::SingleControlWrapper< OrientationHelper, bool >
{
public:
explicit OrientStackedWrapper( OrientationHelper& rOrientHlp );
virtual bool IsControlDontKnow() const override;
virtual void SetControlDontKnow( bool bSet ) override;
virtual bool GetControlValue() const override;
virtual void SetControlValue( bool bValue ) override;
};
/** An item<->control connection for the stacked attribute of an OrientationHelper. */
typedef sfx::ItemControlConnection< sfx::BoolItemWrapper, OrientStackedWrapper > OrientStackedConnection;
} // namespace
#endif
diff --git a/include/vcl/customweld.hxx b/include/vcl/customweld.hxx
index 5739ab11..5399d6c 100644
--- a/include/vcl/customweld.hxx
+++ b/include/vcl/customweld.hxx
@@ -123,6 +123,7 @@ public:
void set_margin_bottom(int nMargin) { m_xDrawingArea->set_margin_bottom(nMargin); }
void set_sensitive(bool bSensitive) { m_xDrawingArea->set_sensitive(bSensitive); }
bool get_sensitive() const { return m_xDrawingArea->get_sensitive(); }
bool get_visible() const { return m_xDrawingArea->get_visible(); }
};
}
#endif
diff --git a/sfx2/source/dialog/itemconnect.cxx b/sfx2/source/dialog/itemconnect.cxx
index e814a70..a3b9700 100644
--- a/sfx2/source/dialog/itemconnect.cxx
+++ b/sfx2/source/dialog/itemconnect.cxx
@@ -101,34 +101,6 @@ void DummyWindowWrapper::SetControlValue( void* )
{
}
CheckBoxWrapper::CheckBoxWrapper( CheckBox& rCheckBox ) :
SingleControlWrapperType( rCheckBox )
{
}
bool CheckBoxWrapper::IsControlDontKnow() const
{
return GetControl().GetState() == TRISTATE_INDET;
}
void CheckBoxWrapper::SetControlDontKnow( bool bSet )
{
GetControl().EnableTriState( bSet );
GetControl().SetState( bSet ? TRISTATE_INDET : TRISTATE_FALSE );
}
bool CheckBoxWrapper::GetControlValue() const
{
return GetControl().IsChecked();
}
void CheckBoxWrapper::SetControlValue( bool bValue )
{
GetControl().Check( bValue );
}
// Base connection classes
diff --git a/svtools/source/control/valueset.cxx b/svtools/source/control/valueset.cxx
index eb3daf8b..7c851be 100644
--- a/svtools/source/control/valueset.cxx
+++ b/svtools/source/control/valueset.cxx
@@ -2280,6 +2280,7 @@ SvtValueSet::SvtValueSet(std::unique_ptr<weld::ScrolledWindow> pScrolledWindow)
mnUserItemHeight = 0;
mnFirstLine = 0;
mnSelItemId = 0;
mnSavedItemId = -1;
mnCols = 0;
mnCurCol = 0;
mnUserCols = 0;
diff --git a/svx/source/dialog/dialcontrol.cxx b/svx/source/dialog/dialcontrol.cxx
index ab0b12d..73674cb 100644
--- a/svx/source/dialog/dialcontrol.cxx
+++ b/svx/source/dialog/dialcontrol.cxx
@@ -517,7 +517,8 @@ SvxDialControl::DialControl_Impl::DialControl_Impl(OutputDevice& rReference) :
mnInitialAngle( 0 ),
mnOldAngle( 0 ),
mnCenterX( 0 ),
mnCenterY( 0 )
mnCenterY( 0 ),
mbNoRot( false )
{
}
@@ -620,6 +621,17 @@ void SvxDialControl::LoseFocus()
HandleEscapeEvent();
}
void SvxDialControl::SetNoRotation()
{
if( !mpImpl->mbNoRot )
{
mpImpl->mbNoRot = true;
InvalidateControl();
if (mpImpl->mpLinkField)
mpImpl->mpLinkField->set_text("");
}
}
sal_Int32 SvxDialControl::GetRotation() const
{
return mpImpl->mnAngle;
@@ -633,7 +645,7 @@ void SvxDialControl::SetLinkedField(weld::SpinButton* pField, sal_Int32 nDecimal
if( mpImpl->mpLinkField )
{
weld::SpinButton& rField = *mpImpl->mpLinkField;
rField.connect_value_changed(Link<weld::SpinButton&,void>());
rField.connect_changed(Link<weld::Entry&,void>());
}
// remember the new linked field
mpImpl->mpLinkField = pField;
@@ -641,11 +653,11 @@ void SvxDialControl::SetLinkedField(weld::SpinButton* pField, sal_Int32 nDecimal
if( mpImpl->mpLinkField )
{
weld::SpinButton& rField = *mpImpl->mpLinkField;
rField.connect_value_changed(LINK(this, SvxDialControl, LinkedFieldModifyHdl));
rField.connect_changed(LINK(this, SvxDialControl, LinkedFieldModifyHdl));
}
}
IMPL_LINK_NOARG(SvxDialControl, LinkedFieldModifyHdl, weld::SpinButton&, void)
IMPL_LINK_NOARG(SvxDialControl, LinkedFieldModifyHdl, weld::Entry&, void)
{
LinkedFieldModifyHdl();
}
@@ -689,19 +701,26 @@ void SvxDialControl::Init( const Size& rWinSize )
void SvxDialControl::InvalidateControl()
{
mpImpl->mxBmpBuffered->CopyBackground( IsEnabled() ? *mpImpl->mxBmpEnabled : *mpImpl->mxBmpDisabled );
mpImpl->mxBmpBuffered->DrawElements( OUString(), mpImpl->mnAngle );
if( !mpImpl->mbNoRot )
mpImpl->mxBmpBuffered->DrawElements(GetText(), mpImpl->mnAngle);
Invalidate();
}
void SvxDialControl::SetRotation( sal_Int32 nAngle )
void SvxDialControl::SetRotation(sal_Int32 nAngle)
{
while( nAngle < 0 )
bool bOldSel = mpImpl->mbNoRot;
mpImpl->mbNoRot = false;
while (nAngle < 0)
nAngle += 36000;
mpImpl->mnAngle = nAngle;
InvalidateControl();
if( mpImpl->mpLinkField )
mpImpl->mpLinkField->set_value(GetRotation() / mpImpl->mnLinkedFieldValueMultiplyer);
if (!bOldSel || (mpImpl->mnAngle != nAngle))
{
mpImpl->mnAngle = nAngle;
InvalidateControl();
if( mpImpl->mpLinkField )
mpImpl->mpLinkField->set_value(GetRotation() / mpImpl->mnLinkedFieldValueMultiplyer);
}
}
void SvxDialControl::HandleMouseEvent( const Point& rPos, bool bInitial )
@@ -734,32 +753,6 @@ void SvxDialControl::HandleEscapeEvent()
}
}
DialControlWrapper::DialControlWrapper( DialControl& rDial ) :
SingleControlWrapperType( rDial )
{
}
bool DialControlWrapper::IsControlDontKnow() const
{
return !GetControl().HasRotation();
}
void DialControlWrapper::SetControlDontKnow( bool bSet )
{
if( bSet )
GetControl().SetNoRotation();
}
sal_Int32 DialControlWrapper::GetControlValue() const
{
return GetControl().GetRotation();
}
void DialControlWrapper::SetControlValue( sal_Int32 nValue )
{
GetControl().SetRotation( nValue );
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/dialog/frmdirlbox.cxx b/svx/source/dialog/frmdirlbox.cxx
index 035d509..12b342d 100644
--- a/svx/source/dialog/frmdirlbox.cxx
+++ b/svx/source/dialog/frmdirlbox.cxx
@@ -71,34 +71,6 @@ SvxFrameDirection FrameDirectionListBox::GetSelectEntryValue() const
return lclVoidToEnum( GetEntryData( nPos ) );
}
FrameDirectionListBoxWrapper::FrameDirectionListBoxWrapper( FrameDirectionListBox& rListBox ) :
SingleControlWrapperType( rListBox )
{
}
bool FrameDirectionListBoxWrapper::IsControlDontKnow() const
{
return GetControl().GetSelectedEntryCount() == 0;
}
void FrameDirectionListBoxWrapper::SetControlDontKnow( bool bSet )
{
if( bSet )
GetControl().SetNoSelection();
}
SvxFrameDirection FrameDirectionListBoxWrapper::GetControlValue() const
{
return GetControl().GetSelectEntryValue();
}
void FrameDirectionListBoxWrapper::SetControlValue( SvxFrameDirection eValue )
{
GetControl().SelectEntryValue( eValue );
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/dialog/orienthelper.cxx b/svx/source/dialog/orienthelper.cxx
index f69831c..b8b4833 100644
--- a/svx/source/dialog/orienthelper.cxx
+++ b/svx/source/dialog/orienthelper.cxx
@@ -149,34 +149,6 @@ void OrientationHelper::EnableStackedTriState( bool bEnable )
mpImpl->mrCbStacked.EnableTriState( bEnable );
}
OrientStackedWrapper::OrientStackedWrapper( OrientationHelper& rOrientHlp ) :
SingleControlWrapperType( rOrientHlp )
{
}
bool OrientStackedWrapper::IsControlDontKnow() const
{
return GetControl().GetStackedState() == TRISTATE_INDET;
}
void OrientStackedWrapper::SetControlDontKnow( bool bSet )
{
GetControl().EnableStackedTriState( bSet );
GetControl().SetStackedState( bSet ? TRISTATE_INDET : TRISTATE_FALSE );
}
bool OrientStackedWrapper::GetControlValue() const
{
return GetControl().GetStackedState() == TRISTATE_TRUE;
}
void OrientStackedWrapper::SetControlValue( bool bValue )
{
GetControl().SetStackedState( bValue ? TRISTATE_TRUE : TRISTATE_FALSE );
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */