weld SvxLineDefTabPage
Change-Id: I7a7f421190c89cec8e1a772015b7544d60b26298
Reviewed-on: https://gerrit.libreoffice.org/61158
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/cuitabline.hxx b/cui/source/inc/cuitabline.hxx
index c7e2431..13e15ff 100644
--- a/cui/source/inc/cuitabline.hxx
+++ b/cui/source/inc/cuitabline.hxx
@@ -242,22 +242,6 @@ class SvxLineDefTabPage : public SfxTabPage
using TabPage::ActivatePage;
using TabPage::DeactivatePage;
private:
VclPtr<LineLB> m_pLbLineStyles;
VclPtr<ListBox> m_pLbType1;
VclPtr<ListBox> m_pLbType2;
VclPtr<NumericField> m_pNumFldNumber1;
VclPtr<NumericField> m_pNumFldNumber2;
VclPtr<MetricField> m_pMtrLength1;
VclPtr<MetricField> m_pMtrLength2;
VclPtr<MetricField> m_pMtrDistance;
VclPtr<CheckBox> m_pCbxSynchronize;
VclPtr<PushButton> m_pBtnAdd;
VclPtr<PushButton> m_pBtnModify;
VclPtr<PushButton> m_pBtnDelete;
VclPtr<PushButton> m_pBtnLoad;
VclPtr<PushButton> m_pBtnSave;
VclPtr<SvxXLinePreview> m_pCtlPreview;
const SfxItemSet& rOutAttrs;
XDash aDash;
@@ -274,27 +258,45 @@ private:
MapUnit ePoolUnit;
FieldUnit eFUnit;
XLinePreview m_aCtlPreview;
std::unique_ptr<SvxLineLB> m_xLbLineStyles;
std::unique_ptr<weld::ComboBox> m_xLbType1;
std::unique_ptr<weld::ComboBox> m_xLbType2;
std::unique_ptr<weld::SpinButton> m_xNumFldNumber1;
std::unique_ptr<weld::SpinButton> m_xNumFldNumber2;
std::unique_ptr<weld::MetricSpinButton> m_xMtrLength1;
std::unique_ptr<weld::MetricSpinButton> m_xMtrLength2;
std::unique_ptr<weld::MetricSpinButton> m_xMtrDistance;
std::unique_ptr<weld::CheckButton> m_xCbxSynchronize;
std::unique_ptr<weld::Button> m_xBtnAdd;
std::unique_ptr<weld::Button> m_xBtnModify;
std::unique_ptr<weld::Button> m_xBtnDelete;
std::unique_ptr<weld::Button> m_xBtnLoad;
std::unique_ptr<weld::Button> m_xBtnSave;
std::unique_ptr<weld::CustomWeld> m_xCtlPreview;
void FillDash_Impl();
void FillDialog_Impl();
DECL_LINK( ClickAddHdl_Impl, Button*, void );
DECL_LINK( ClickModifyHdl_Impl, Button*, void );
DECL_LINK( ClickDeleteHdl_Impl, Button*, void );
DECL_LINK( SelectLinestyleListBoxHdl_Impl, ListBox&, void );
void SelectLinestyleHdl_Impl(ListBox const *);
DECL_LINK( ChangePreviewHdl_Impl, Edit&, void );
DECL_LINK( ChangeNumber1Hdl_Impl, Edit&, void );
DECL_LINK( ChangeNumber2Hdl_Impl, Edit&, void );
DECL_LINK( ClickLoadHdl_Impl, Button*, void );
DECL_LINK( ClickSaveHdl_Impl, Button*, void );
DECL_LINK( ChangeMetricHdl_Impl, Button*, void );
DECL_LINK( SelectTypeListBoxHdl_Impl, ListBox&, void );
void SelectTypeHdl_Impl(ListBox*);
DECL_LINK(ClickAddHdl_Impl, weld::Button&, void);
DECL_LINK(ClickModifyHdl_Impl, weld::Button&, void);
DECL_LINK(ClickDeleteHdl_Impl, weld::Button&, void);
DECL_LINK(SelectLinestyleListBoxHdl_Impl, weld::ComboBox&, void);
void SelectLinestyleHdl_Impl(const weld::ComboBox*);
DECL_LINK(ChangePreviewHdl_Impl, weld::MetricSpinButton&, void);
DECL_LINK(ChangeNumber1Hdl_Impl, weld::SpinButton&, void);
DECL_LINK(ChangeNumber2Hdl_Impl, weld::SpinButton&, void);
DECL_LINK(ClickLoadHdl_Impl, weld::Button&, void);
DECL_LINK(ClickSaveHdl_Impl, weld::Button&, void);
DECL_LINK(ChangeMetricHdl_Impl, weld::ToggleButton&, void);
DECL_LINK(SelectTypeListBoxHdl_Impl, weld::ComboBox&, void);
void SelectTypeHdl_Impl(weld::ComboBox*);
void ChangeMetricHdl_Impl(weld::ToggleButton*);
void CheckChanges_Impl();
public:
SvxLineDefTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs );
SvxLineDefTabPage(TabPageParent pParent, const SfxItemSet& rInAttrs);
virtual ~SvxLineDefTabPage() override;
virtual void dispose() override;
diff --git a/cui/source/tabpages/tplnedef.cxx b/cui/source/tabpages/tplnedef.cxx
index 16e7602..bdc61de 100644
--- a/cui/source/tabpages/tplnedef.cxx
+++ b/cui/source/tabpages/tplnedef.cxx
@@ -50,45 +50,31 @@
using namespace com::sun::star;
SvxLineDefTabPage::SvxLineDefTabPage
(
vcl::Window* pParent,
const SfxItemSet& rInAttrs
) :
SfxTabPage( pParent
, "LineStylePage"
, "cui/ui/linestyletabpage.ui"
, &rInAttrs ),
rOutAttrs ( rInAttrs ),
aXLineAttr ( rInAttrs.GetPool() ),
rXLSet ( aXLineAttr.GetItemSet() ),
pnDashListState(nullptr),
pPageType(nullptr),
nDlgType(0),
pPosDashLb(nullptr)
SvxLineDefTabPage::SvxLineDefTabPage(TabPageParent pParent, const SfxItemSet& rInAttrs)
: SfxTabPage(pParent, "cui/ui/linestyletabpage.ui", "LineStylePage", &rInAttrs)
, rOutAttrs(rInAttrs)
, aXLineAttr(rInAttrs.GetPool())
, rXLSet(aXLineAttr.GetItemSet())
, pnDashListState(nullptr)
, pPageType(nullptr)
, nDlgType(0)
, pPosDashLb(nullptr)
, m_xLbLineStyles(new SvxLineLB(m_xBuilder->weld_combo_box("LB_LINESTYLES")))
, m_xLbType1(m_xBuilder->weld_combo_box("LB_TYPE_1"))
, m_xLbType2(m_xBuilder->weld_combo_box("LB_TYPE_2"))
, m_xNumFldNumber1(m_xBuilder->weld_spin_button("NUM_FLD_1"))
, m_xNumFldNumber2(m_xBuilder->weld_spin_button("NUM_FLD_2"))
, m_xMtrLength1(m_xBuilder->weld_metric_spin_button("MTR_FLD_LENGTH_1", FUNIT_CM))
, m_xMtrLength2(m_xBuilder->weld_metric_spin_button("MTR_FLD_LENGTH_2", FUNIT_CM))
, m_xMtrDistance(m_xBuilder->weld_metric_spin_button("MTR_FLD_DISTANCE", FUNIT_CM))
, m_xCbxSynchronize(m_xBuilder->weld_check_button("CBX_SYNCHRONIZE"))
, m_xBtnAdd(m_xBuilder->weld_button("BTN_ADD"))
, m_xBtnModify(m_xBuilder->weld_button("BTN_MODIFY"))
, m_xBtnDelete(m_xBuilder->weld_button("BTN_DELETE"))
, m_xBtnLoad(m_xBuilder->weld_button("BTN_LOAD"))
, m_xBtnSave(m_xBuilder->weld_button("BTN_SAVE"))
, m_xCtlPreview(new weld::CustomWeld(*m_xBuilder, "CTL_PREVIEW", m_aCtlPreview))
{
get(m_pLbLineStyles ,"LB_LINESTYLES");
get(m_pLbType1 ,"LB_TYPE_1");
get(m_pLbType2 ,"LB_TYPE_2");
get(m_pNumFldNumber1 ,"NUM_FLD_1");
get(m_pNumFldNumber2 ,"NUM_FLD_2");
get(m_pMtrLength1 ,"MTR_FLD_LENGTH_1");
m_pMtrLength1->SetCustomUnitText("%");
get(m_pMtrLength2 ,"MTR_FLD_LENGTH_2");
m_pMtrLength2->SetCustomUnitText("%");
get(m_pMtrDistance ,"MTR_FLD_DISTANCE");
m_pMtrDistance->SetCustomUnitText("%");
get(m_pCbxSynchronize ,"CBX_SYNCHRONIZE");
get(m_pBtnAdd ,"BTN_ADD");
get(m_pBtnModify ,"BTN_MODIFY");
get(m_pBtnDelete ,"BTN_DELETE");
get(m_pBtnLoad ,"BTN_LOAD");
get(m_pBtnSave ,"BTN_SAVE");
get(m_pCtlPreview ,"CTL_PREVIEW");
// this page needs ExchangeSupport
SetExchangeSupport();
@@ -103,9 +89,9 @@ SvxLineDefTabPage::SvxLineDefTabPage
break;
default: ; //prevent warning
}
SetFieldUnit( *m_pMtrDistance, eFUnit );
SetFieldUnit( *m_pMtrLength1, eFUnit );
SetFieldUnit( *m_pMtrLength2, eFUnit );
SetFieldUnit(*m_xMtrDistance, eFUnit);
SetFieldUnit(*m_xMtrLength1, eFUnit);
SetFieldUnit(*m_xMtrLength2, eFUnit);
// determine PoolUnit
SfxItemPool* pPool = rOutAttrs.GetPool();
@@ -118,33 +104,33 @@ SvxLineDefTabPage::SvxLineDefTabPage
rXLSet.Put( XLineColorItem(OUString(), COL_BLACK) );
// #i34740#
m_pCtlPreview->SetLineAttributes(aXLineAttr.GetItemSet());
m_aCtlPreview.SetLineAttributes(aXLineAttr.GetItemSet());
m_pBtnAdd->SetClickHdl( LINK( this, SvxLineDefTabPage, ClickAddHdl_Impl ) );
m_pBtnModify->SetClickHdl( LINK( this, SvxLineDefTabPage, ClickModifyHdl_Impl ) );
m_pBtnDelete->SetClickHdl( LINK( this, SvxLineDefTabPage, ClickDeleteHdl_Impl ) );
m_pBtnLoad->SetClickHdl( LINK( this, SvxLineDefTabPage, ClickLoadHdl_Impl ) );
m_pBtnSave->SetClickHdl( LINK( this, SvxLineDefTabPage, ClickSaveHdl_Impl ) );
m_xBtnAdd->connect_clicked(LINK(this, SvxLineDefTabPage, ClickAddHdl_Impl));
m_xBtnModify->connect_clicked(LINK(this, SvxLineDefTabPage, ClickModifyHdl_Impl));
m_xBtnDelete->connect_clicked(LINK(this, SvxLineDefTabPage, ClickDeleteHdl_Impl));
m_xBtnLoad->connect_clicked(LINK(this, SvxLineDefTabPage, ClickLoadHdl_Impl));
m_xBtnSave->connect_clicked(LINK(this, SvxLineDefTabPage, ClickSaveHdl_Impl));
m_pNumFldNumber1->SetModifyHdl( LINK( this, SvxLineDefTabPage, ChangeNumber1Hdl_Impl ) );
m_pNumFldNumber2->SetModifyHdl( LINK( this, SvxLineDefTabPage, ChangeNumber2Hdl_Impl ) );
m_pLbLineStyles->SetSelectHdl( LINK( this, SvxLineDefTabPage, SelectLinestyleListBoxHdl_Impl ) );
m_xNumFldNumber1->connect_value_changed(LINK(this, SvxLineDefTabPage, ChangeNumber1Hdl_Impl));
m_xNumFldNumber2->connect_value_changed(LINK(this, SvxLineDefTabPage, ChangeNumber2Hdl_Impl));
m_xLbLineStyles->connect_changed(LINK(this, SvxLineDefTabPage, SelectLinestyleListBoxHdl_Impl));
// #i122042# switch off default adding of 'none' and 'solid' entries
// for this ListBox; we want to select only editable/dashed styles
m_pLbLineStyles->setAddStandardFields(false);
m_xLbLineStyles->setAddStandardFields(false);
// absolute (in mm) or relative (in %)
m_pCbxSynchronize->SetClickHdl( LINK( this, SvxLineDefTabPage, ChangeMetricHdl_Impl ) );
m_xCbxSynchronize->connect_toggled(LINK(this, SvxLineDefTabPage, ChangeMetricHdl_Impl));
// preview must be updated when there's something changed
Link<ListBox&, void> aLink = LINK( this, SvxLineDefTabPage, SelectTypeListBoxHdl_Impl );
m_pLbType1->SetSelectHdl( aLink );
m_pLbType2->SetSelectHdl( aLink );
Link<Edit&,void> aLink2 = LINK( this, SvxLineDefTabPage, ChangePreviewHdl_Impl );
m_pMtrLength1->SetModifyHdl( aLink2 );
m_pMtrLength2->SetModifyHdl( aLink2 );
m_pMtrDistance->SetModifyHdl( aLink2 );
Link<weld::ComboBox&, void> aLink = LINK(this, SvxLineDefTabPage, SelectTypeListBoxHdl_Impl);
m_xLbType1->connect_changed(aLink);
m_xLbType2->connect_changed(aLink);
Link<weld::MetricSpinButton&,void> aLink2 = LINK( this, SvxLineDefTabPage, ChangePreviewHdl_Impl );
m_xMtrLength1->connect_value_changed(aLink2);
m_xMtrLength2->connect_value_changed(aLink2);
m_xMtrDistance->connect_value_changed(aLink2);
pDashList = nullptr;
}
@@ -156,31 +142,17 @@ SvxLineDefTabPage::~SvxLineDefTabPage()
void SvxLineDefTabPage::dispose()
{
m_pLbLineStyles.clear();
m_pLbType1.clear();
m_pLbType2.clear();
m_pNumFldNumber1.clear();
m_pNumFldNumber2.clear();
m_pMtrLength1.clear();
m_pMtrLength2.clear();
m_pMtrDistance.clear();
m_pCbxSynchronize.clear();
m_pBtnAdd.clear();
m_pBtnModify.clear();
m_pBtnDelete.clear();
m_pBtnLoad.clear();
m_pBtnSave.clear();
m_pCtlPreview.clear();
m_xCtlPreview.reset();
m_xLbLineStyles.reset();
SfxTabPage::dispose();
}
void SvxLineDefTabPage::Construct()
{
// Line style fill; do *not* add default fields here
m_pLbLineStyles->Fill( pDashList );
m_xLbLineStyles->Fill( pDashList );
}
void SvxLineDefTabPage::ActivatePage( const SfxItemSet& )
{
if( nDlgType == 0 ) // area dialog
@@ -188,10 +160,10 @@ void SvxLineDefTabPage::ActivatePage( const SfxItemSet& )
// ActivatePage() is called before the dialog receives PageCreated() !!!
if( pDashList.is() )
{
if( *pPageType == PageType::Gradient &&
*pPosDashLb != LISTBOX_ENTRY_NOTFOUND )
if (*pPageType == PageType::Gradient &&
*pPosDashLb != -1)
{
m_pLbLineStyles->SelectEntryPos( *pPosDashLb );
m_xLbLineStyles->set_active(*pPosDashLb);
}
// so that a possibly existing line style is discarded
SelectLinestyleHdl_Impl( nullptr );
@@ -222,21 +194,20 @@ DeactivateRC SvxLineDefTabPage::DeactivatePage( SfxItemSet* _pSet )
return DeactivateRC::LeavePage;
}
void SvxLineDefTabPage::CheckChanges_Impl()
{
// is here used to NOT lose changes
//css::drawing::DashStyle eXDS;
if( m_pNumFldNumber1->IsValueChangedFromSaved() ||
m_pMtrLength1->IsValueChangedFromSaved() ||
m_pLbType1->IsValueChangedFromSaved() ||
m_pNumFldNumber2->IsValueChangedFromSaved() ||
m_pMtrLength2->IsValueChangedFromSaved() ||
m_pLbType2->IsValueChangedFromSaved() ||
m_pMtrDistance->IsValueChangedFromSaved() )
if( m_xNumFldNumber1->get_value_changed_from_saved() ||
m_xMtrLength1->get_value_changed_from_saved() ||
m_xLbType1->get_value_changed_from_saved() ||
m_xNumFldNumber2->get_value_changed_from_saved() ||
m_xMtrLength2->get_value_changed_from_saved() ||
m_xLbType2->get_value_changed_from_saved() ||
m_xMtrDistance->get_value_changed_from_saved() )
{
std::unique_ptr<weld::MessageDialog> xMessDlg(Application::CreateMessageDialog(GetFrameWeld(),
std::unique_ptr<weld::MessageDialog> xMessDlg(Application::CreateMessageDialog(GetDialogFrameWeld(),
VclMessageType::Warning, VclButtonsType::Cancel,
CuiResId(RID_SVXSTR_ASK_CHANGE_LINESTYLE)));
xMessDlg->set_title(SvxResId(RID_SVXSTR_LINESTYLE));
@@ -249,13 +220,13 @@ void SvxLineDefTabPage::CheckChanges_Impl()
{
case RET_BTN_1:
{
ClickModifyHdl_Impl( nullptr );
ClickModifyHdl_Impl(*m_xBtnModify);
}
break;
case RET_BTN_2:
{
ClickAddHdl_Impl( nullptr );
ClickAddHdl_Impl(*m_xBtnAdd);
}
break;
@@ -264,9 +235,8 @@ void SvxLineDefTabPage::CheckChanges_Impl()
}
}
sal_Int32 nPos = m_pLbLineStyles->GetSelectedEntryPos();
if( nPos != LISTBOX_ENTRY_NOTFOUND )
int nPos = m_xLbLineStyles->get_active();
if (nPos != -1)
{
*pPosDashLb = nPos;
}
@@ -281,7 +251,7 @@ bool SvxLineDefTabPage::FillItemSet( SfxItemSet* rAttrs )
{
FillDash_Impl();
OUString aString( m_pLbLineStyles->GetSelectedEntry() );
OUString aString(m_xLbLineStyles->get_active_text());
rAttrs->Put( XLineStyleItem( drawing::LineStyle_DASH ) );
rAttrs->Put( XLineDashItem( aString, aDash ) );
}
@@ -300,19 +270,17 @@ void SvxLineDefTabPage::Reset( const SfxItemSet* rAttrs )
{
case drawing::LineStyle_NONE:
case drawing::LineStyle_SOLID:
m_pLbLineStyles->SelectEntryPos( 0 );
m_xLbLineStyles->set_active(0);
break;
case drawing::LineStyle_DASH:
{
const XLineDashItem& rDashItem = rAttrs->Get( XATTR_LINEDASH );
aDash = rDashItem.GetDashValue();
m_pLbLineStyles->SetNoSelection();
m_pLbLineStyles->SelectEntry( rDashItem.GetName() );
}
m_xLbLineStyles->set_active(-1);
m_xLbLineStyles->set_active_text(rDashItem.GetName());
break;
}
default:
break;
}
@@ -322,37 +290,34 @@ void SvxLineDefTabPage::Reset( const SfxItemSet* rAttrs )
// determine button state
if( pDashList->Count() )
{
m_pBtnModify->Enable();
m_pBtnDelete->Enable();
m_pBtnSave->Enable();
m_xBtnModify->set_sensitive(true);
m_xBtnDelete->set_sensitive(true);
m_xBtnSave->set_sensitive(true);
}
else
{
m_pBtnModify->Disable();
m_pBtnDelete->Disable();
m_pBtnSave->Disable();
m_xBtnModify->set_sensitive(false);
m_xBtnDelete->set_sensitive(false);
m_xBtnSave->set_sensitive(false);
}
}
VclPtr<SfxTabPage> SvxLineDefTabPage::Create( TabPageParent pWindow, const SfxItemSet* rOutAttrs )
VclPtr<SfxTabPage> SvxLineDefTabPage::Create(TabPageParent pParent, const SfxItemSet* rOutAttrs )
{
return VclPtr<SvxLineDefTabPage>::Create( pWindow.pParent, *rOutAttrs );
return VclPtr<SvxLineDefTabPage>::Create(pParent, *rOutAttrs);
}
IMPL_LINK( SvxLineDefTabPage, SelectLinestyleListBoxHdl_Impl, ListBox&, rListBox, void )
IMPL_LINK(SvxLineDefTabPage, SelectLinestyleListBoxHdl_Impl, weld::ComboBox&, rListBox, void)
{
SelectLinestyleHdl_Impl(&rListBox);
}
void SvxLineDefTabPage::SelectLinestyleHdl_Impl(ListBox const * p)
void SvxLineDefTabPage::SelectLinestyleHdl_Impl(const weld::ComboBox* p)
{
if(pDashList->Count())
{
int nTmp = m_pLbLineStyles->GetSelectedEntryPos();
if(LISTBOX_ENTRY_NOTFOUND == nTmp)
int nTmp = m_xLbLineStyles->get_active();
if (nTmp == -1)
{
OSL_ENSURE(false, "OOps, non-existent LineDash selected (!)");
nTmp = 1;
@@ -365,9 +330,8 @@ void SvxLineDefTabPage::SelectLinestyleHdl_Impl(ListBox const * p)
rXLSet.Put( XLineDashItem( OUString(), aDash ) );
// #i34740#
m_pCtlPreview->SetLineAttributes(aXLineAttr.GetItemSet());
m_pCtlPreview->Invalidate();
m_aCtlPreview.SetLineAttributes(aXLineAttr.GetItemSet());
m_aCtlPreview.Invalidate();
// Is not set before, in order to take the new style
// only if there was an entry selected in the ListBox.
@@ -377,153 +341,149 @@ void SvxLineDefTabPage::SelectLinestyleHdl_Impl(ListBox const * p)
}
}
IMPL_LINK_NOARG(SvxLineDefTabPage, ChangePreviewHdl_Impl, Edit&, void)
IMPL_LINK_NOARG(SvxLineDefTabPage, ChangePreviewHdl_Impl, weld::MetricSpinButton&, void)
{
FillDash_Impl();
m_pCtlPreview->Invalidate();
m_aCtlPreview.Invalidate();
}
IMPL_LINK_NOARG(SvxLineDefTabPage, ChangeNumber1Hdl_Impl, Edit&, void)
IMPL_LINK_NOARG(SvxLineDefTabPage, ChangeNumber1Hdl_Impl, weld::SpinButton&, void)
{
if( m_pNumFldNumber1->GetValue() == 0 )
if (m_xNumFldNumber1->get_value() == 0)
{
m_pNumFldNumber2->SetMin( 1 );
m_pNumFldNumber2->SetFirst( 1 );
m_xNumFldNumber2->set_min(1);
}
else
{
m_pNumFldNumber2->SetMin( 0 );
m_pNumFldNumber2->SetFirst( 0 );
m_xNumFldNumber2->set_min(0);
}
ChangePreviewHdl_Impl( *m_pMtrLength1 );
ChangePreviewHdl_Impl(*m_xMtrLength1);
}
IMPL_LINK_NOARG(SvxLineDefTabPage, ChangeNumber2Hdl_Impl, Edit&, void)
IMPL_LINK_NOARG(SvxLineDefTabPage, ChangeNumber2Hdl_Impl, weld::SpinButton&, void)
{
if( m_pNumFldNumber2->GetValue() == 0 )
if (m_xNumFldNumber2->get_value() == 0)
{
m_pNumFldNumber1->SetMin( 1 );
m_pNumFldNumber1->SetFirst( 1 );
m_xNumFldNumber1->set_min(1);
}
else
{
m_pNumFldNumber1->SetMin( 0 );
m_pNumFldNumber1->SetFirst( 0 );
m_xNumFldNumber1->set_min(0);
}
ChangePreviewHdl_Impl( *m_pMtrLength1 );
ChangePreviewHdl_Impl(*m_xMtrLength1);
}
IMPL_LINK( SvxLineDefTabPage, ChangeMetricHdl_Impl, Button*, p, void )
IMPL_LINK( SvxLineDefTabPage, ChangeMetricHdl_Impl, weld::ToggleButton&, r, void)
{
if( !m_pCbxSynchronize->IsChecked() && m_pMtrLength1->GetUnit() != eFUnit )
ChangeMetricHdl_Impl(&r);
}
void SvxLineDefTabPage::ChangeMetricHdl_Impl(weld::ToggleButton* p)
{
if( !m_xCbxSynchronize->get_active() && m_xMtrLength1->get_unit() != eFUnit )
{
long nTmp1, nTmp2, nTmp3;
// was changed with Control
if( p )
{
nTmp1 = GetCoreValue( *m_pMtrLength1, ePoolUnit ) * XOUT_WIDTH / 100;
nTmp2 = GetCoreValue( *m_pMtrLength2, ePoolUnit ) * XOUT_WIDTH / 100;
nTmp3 = GetCoreValue( *m_pMtrDistance, ePoolUnit ) * XOUT_WIDTH / 100;
nTmp1 = GetCoreValue( *m_xMtrLength1, ePoolUnit ) * XOUT_WIDTH / 100;
nTmp2 = GetCoreValue( *m_xMtrLength2, ePoolUnit ) * XOUT_WIDTH / 100;
nTmp3 = GetCoreValue( *m_xMtrDistance, ePoolUnit ) * XOUT_WIDTH / 100;
}
else
{
nTmp1 = GetCoreValue( *m_pMtrLength1, ePoolUnit );
nTmp2 = GetCoreValue( *m_pMtrLength2, ePoolUnit );
nTmp3 = GetCoreValue( *m_pMtrDistance, ePoolUnit );
nTmp1 = GetCoreValue( *m_xMtrLength1, ePoolUnit );
nTmp2 = GetCoreValue( *m_xMtrLength2, ePoolUnit );
nTmp3 = GetCoreValue( *m_xMtrDistance, ePoolUnit );
}
m_pMtrLength1->SetDecimalDigits( 2 );
m_pMtrLength2->SetDecimalDigits( 2 );
m_pMtrDistance->SetDecimalDigits( 2 );
m_xMtrLength1->set_digits(2);
m_xMtrLength2->set_digits(2);
m_xMtrDistance->set_digits(2);
// adjust metric
m_pMtrLength1->SetUnit( eFUnit );
m_pMtrLength2->SetUnit( eFUnit );
m_pMtrDistance->SetUnit( eFUnit );
m_xMtrLength1->set_unit(eFUnit);
m_xMtrLength2->set_unit(eFUnit);
m_xMtrDistance->set_unit(eFUnit);
SetMetricValue( *m_pMtrLength1, nTmp1, ePoolUnit );
SetMetricValue( *m_pMtrLength2, nTmp2, ePoolUnit );
SetMetricValue( *m_pMtrDistance, nTmp3, ePoolUnit );
SetMetricValue( *m_xMtrLength1, nTmp1, ePoolUnit );
SetMetricValue( *m_xMtrLength2, nTmp2, ePoolUnit );
SetMetricValue( *m_xMtrDistance, nTmp3, ePoolUnit );
}
else if( m_pCbxSynchronize->IsChecked() && m_pMtrLength1->GetUnit() != FUNIT_PERCENT )
else if( m_xCbxSynchronize->get_active() && m_xMtrLength1->get_unit() != FUNIT_PERCENT )
{
long nTmp1, nTmp2, nTmp3;
// was changed with Control
if( p )
{
nTmp1 = GetCoreValue( *m_pMtrLength1, ePoolUnit ) * 100 / XOUT_WIDTH;
nTmp2 = GetCoreValue( *m_pMtrLength2, ePoolUnit ) * 100 / XOUT_WIDTH;
nTmp3 = GetCoreValue( *m_pMtrDistance, ePoolUnit ) * 100 / XOUT_WIDTH;
nTmp1 = GetCoreValue( *m_xMtrLength1, ePoolUnit ) * 100 / XOUT_WIDTH;
nTmp2 = GetCoreValue( *m_xMtrLength2, ePoolUnit ) * 100 / XOUT_WIDTH;
nTmp3 = GetCoreValue( *m_xMtrDistance, ePoolUnit ) * 100 / XOUT_WIDTH;
}
else
{
nTmp1 = GetCoreValue( *m_pMtrLength1, ePoolUnit );
nTmp2 = GetCoreValue( *m_pMtrLength2, ePoolUnit );
nTmp3 = GetCoreValue( *m_pMtrDistance, ePoolUnit );
nTmp1 = GetCoreValue( *m_xMtrLength1, ePoolUnit );
nTmp2 = GetCoreValue( *m_xMtrLength2, ePoolUnit );
nTmp3 = GetCoreValue( *m_xMtrDistance, ePoolUnit );
}
m_pMtrLength1->SetDecimalDigits( 0 );
m_pMtrLength2->SetDecimalDigits( 0 );
m_pMtrDistance->SetDecimalDigits( 0 );
m_xMtrLength1->set_digits(0);
m_xMtrLength2->set_digits(0);
m_xMtrDistance->set_digits(0);
m_pMtrLength1->SetUnit( FUNIT_PERCENT );
m_pMtrLength2->SetUnit( FUNIT_PERCENT );
m_pMtrDistance->SetUnit( FUNIT_PERCENT );
m_xMtrLength1->set_unit(FUNIT_PERCENT);
m_xMtrLength2->set_unit(FUNIT_PERCENT);
m_xMtrDistance->set_unit(FUNIT_PERCENT);
SetMetricValue( *m_pMtrLength1, nTmp1, ePoolUnit );
SetMetricValue( *m_pMtrLength2, nTmp2, ePoolUnit );
SetMetricValue( *m_pMtrDistance, nTmp3, ePoolUnit );
SetMetricValue( *m_xMtrLength1, nTmp1, ePoolUnit );
SetMetricValue( *m_xMtrLength2, nTmp2, ePoolUnit );
SetMetricValue( *m_xMtrDistance, nTmp3, ePoolUnit );
}
SelectTypeHdl_Impl( nullptr );
}
IMPL_LINK( SvxLineDefTabPage, SelectTypeListBoxHdl_Impl, ListBox&, rListBox, void )
IMPL_LINK( SvxLineDefTabPage, SelectTypeListBoxHdl_Impl, weld::ComboBox&, rListBox, void )
{
SelectTypeHdl_Impl(&rListBox);
}
void SvxLineDefTabPage::SelectTypeHdl_Impl(ListBox* p)
void SvxLineDefTabPage::SelectTypeHdl_Impl(weld::ComboBox* p)
{
if ( p == m_pLbType1 || !p )
if (p == m_xLbType1.get() || !p)
{
if ( m_pLbType1->GetSelectedEntryPos() == 0 )
if (m_xLbType1->get_active() == 0)
{
m_pMtrLength1->Disable();
m_pMtrLength1->SetText( "" );
m_xMtrLength1->set_sensitive(false);
m_xMtrLength1->set_text("");
}
else if ( !m_pMtrLength1->IsEnabled() )
else if (!m_xMtrLength1->get_sensitive())
{
m_pMtrLength1->Enable();
m_pMtrLength1->Reformat();
m_xMtrLength1->set_sensitive(true);
m_xMtrLength1->reformat();
}
}
if ( p == m_pLbType2 || !p )
if (p == m_xLbType2.get() || !p)
{
if ( m_pLbType2->GetSelectedEntryPos() == 0 )
if (m_xLbType2->get_active() == 0)
{
m_pMtrLength2->Disable();
m_pMtrLength2->SetText( "" );
m_xMtrLength2->set_sensitive(false);
m_xMtrLength2->set_text("");
}
else if ( !m_pMtrLength2->IsEnabled() )
else if (!m_xMtrLength2->get_sensitive())
{
m_pMtrLength2->Enable();
m_pMtrLength2->Reformat();
m_xMtrLength2->set_sensitive(true);
m_xMtrLength2->reformat();
}
}
ChangePreviewHdl_Impl( *m_pMtrLength1 );
ChangePreviewHdl_Impl(*m_xMtrLength1);
}
IMPL_LINK_NOARG(SvxLineDefTabPage, ClickAddHdl_Impl, Button*, void)
IMPL_LINK_NOARG(SvxLineDefTabPage, ClickAddHdl_Impl, weld::Button&, void)
{
OUString aNewName(SvxResId(RID_SVXSTR_LINESTYLE));
OUString aDesc(CuiResId(RID_SVXSTR_DESC_LINESTYLE));
@@ -544,7 +504,7 @@ IMPL_LINK_NOARG(SvxLineDefTabPage, ClickAddHdl_Impl, Button*, void)
}
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
ScopedVclPtr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog(GetFrameWeld(), aName, aDesc));
ScopedVclPtr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog(GetDialogFrameWeld(), aName, aDesc));
bool bLoop = true;
while ( bLoop && pDlg->Execute() == RET_OK )
@@ -565,26 +525,26 @@ IMPL_LINK_NOARG(SvxLineDefTabPage, ClickAddHdl_Impl, Button*, void)
long nDashCount = pDashList->Count();
pDashList->Insert( o3tl::make_unique<XDashEntry>(aDash, aName), nDashCount );
m_pLbLineStyles->Append( *pDashList->GetDash(nDashCount), pDashList->GetUiBitmap(nDashCount) );
m_xLbLineStyles->Append( *pDashList->GetDash(nDashCount), pDashList->GetUiBitmap(nDashCount) );
m_pLbLineStyles->SelectEntryPos( m_pLbLineStyles->GetEntryCount() - 1 );
m_xLbLineStyles->set_active(m_xLbLineStyles->get_count() - 1);
*pnDashListState |= ChangeType::MODIFIED;
*pPageType = PageType::Hatch;
// save values for changes recognition (-> method)
m_pNumFldNumber1->SaveValue();
m_pMtrLength1->SaveValue();
m_pLbType1->SaveValue();
m_pNumFldNumber2->SaveValue();
m_pMtrLength2->SaveValue();
m_pLbType2->SaveValue();
m_pMtrDistance->SaveValue();
m_xNumFldNumber1->save_value();
m_xMtrLength1->save_value();
m_xLbType1->save_value();
m_xNumFldNumber2->save_value();
m_xMtrLength2->save_value();
m_xLbType2->save_value();
m_xMtrDistance->save_value();
}
else
{
std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetFrameWeld(), "cui/ui/queryduplicatedialog.ui"));
std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetDialogFrameWeld(), "cui/ui/queryduplicatedialog.ui"));
std::unique_ptr<weld::MessageDialog> xBox(xBuilder->weld_message_dialog("DuplicateNameDialog"));
xBox->run();
}
@@ -594,25 +554,23 @@ IMPL_LINK_NOARG(SvxLineDefTabPage, ClickAddHdl_Impl, Button*, void)
// determine button state
if ( pDashList->Count() )
{
m_pBtnModify->Enable();
m_pBtnDelete->Enable();
m_pBtnSave->Enable();
m_xBtnModify->set_sensitive(true);
m_xBtnDelete->set_sensitive(true);
m_xBtnSave->set_sensitive(true);
}
}
IMPL_LINK_NOARG(SvxLineDefTabPage, ClickModifyHdl_Impl, Button*, void)
IMPL_LINK_NOARG(SvxLineDefTabPage, ClickModifyHdl_Impl, weld::Button&, void)
{
sal_Int32 nPos = m_pLbLineStyles->GetSelectedEntryPos();
if( nPos != LISTBOX_ENTRY_NOTFOUND )
int nPos = m_xLbLineStyles->get_active();
if (nPos != -1)
{
OUString aDesc(CuiResId(RID_SVXSTR_DESC_LINESTYLE));
OUString aName( pDashList->GetDash( nPos )->GetName() );
OUString aOldName = aName;
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
ScopedVclPtr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog(GetFrameWeld(), aName, aDesc));
ScopedVclPtr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog(GetDialogFrameWeld(), aName, aDesc));
long nCount = pDashList->Count();
bool bLoop = true;
@@ -635,26 +593,26 @@ IMPL_LINK_NOARG(SvxLineDefTabPage, ClickModifyHdl_Impl, Button*, void)
FillDash_Impl();
pDashList->Replace(o3tl::make_unique<XDashEntry>(aDash, aName), nPos);
m_pLbLineStyles->Modify(*pDashList->GetDash(nPos), nPos, pDashList->GetUiBitmap(nPos));
m_xLbLineStyles->Modify(*pDashList->GetDash(nPos), nPos, pDashList->GetUiBitmap(nPos));
m_pLbLineStyles->SelectEntryPos( nPos );
m_xLbLineStyles->set_active(nPos);
*pnDashListState |= ChangeType::MODIFIED;
*pPageType = PageType::Hatch;
// save values for changes recognition (-> method)
m_pNumFldNumber1->SaveValue();
m_pMtrLength1->SaveValue();
m_pLbType1->SaveValue();
m_pNumFldNumber2->SaveValue();
m_pMtrLength2->SaveValue();
m_pLbType2->SaveValue();
m_pMtrDistance->SaveValue();
m_xNumFldNumber1->save_value();
m_xMtrLength1->save_value();
m_xLbType1->save_value();
m_xNumFldNumber2->save_value();
m_xMtrLength2->save_value();
m_xLbType2->save_value();
m_xMtrDistance->save_value();
}
else
{
std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetFrameWeld(), "cui/ui/queryduplicatedialog.ui"));
std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetDialogFrameWeld(), "cui/ui/queryduplicatedialog.ui"));
std::unique_ptr<weld::MessageDialog> xBox(xBuilder->weld_message_dialog("DuplicateNameDialog"));
xBox->run();
}
@@ -662,46 +620,44 @@ IMPL_LINK_NOARG(SvxLineDefTabPage, ClickModifyHdl_Impl, Button*, void)
}
}
IMPL_LINK_NOARG(SvxLineDefTabPage, ClickDeleteHdl_Impl, Button*, void)
IMPL_LINK_NOARG(SvxLineDefTabPage, ClickDeleteHdl_Impl, weld::Button&, void)
{
sal_Int32 nPos = m_pLbLineStyles->GetSelectedEntryPos();
if ( nPos != LISTBOX_ENTRY_NOTFOUND )
int nPos = m_xLbLineStyles->get_active();
if (nPos != -1)
{
std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetFrameWeld(), "cui/ui/querydeletelinestyledialog.ui"));
std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetDialogFrameWeld(), "cui/ui/querydeletelinestyledialog.ui"));
std::unique_ptr<weld::MessageDialog> xQueryBox(xBuilder->weld_message_dialog("AskDelLineStyleDialog"));
if (xQueryBox->run() == RET_YES)
{
pDashList->Remove(nPos);
m_pLbLineStyles->RemoveEntry( nPos );
m_pLbLineStyles->SelectEntryPos( 0 );
m_xLbLineStyles->remove(nPos);
m_xLbLineStyles->set_active(0);
SelectLinestyleHdl_Impl( nullptr );
*pPageType = PageType::Area; // style should not be taken
*pnDashListState |= ChangeType::MODIFIED;
ChangePreviewHdl_Impl( *m_pMtrLength1 );
ChangePreviewHdl_Impl( *m_xMtrLength1 );
}
}
// determine button state
if ( !pDashList->Count() )
{
m_pBtnModify->Disable();
m_pBtnDelete->Disable();
m_pBtnSave->Disable();
m_xBtnModify->set_sensitive(false);
m_xBtnDelete->set_sensitive(false);
m_xBtnSave->set_sensitive(false);
}
}
IMPL_LINK_NOARG(SvxLineDefTabPage, ClickLoadHdl_Impl, Button*, void)
IMPL_LINK_NOARG(SvxLineDefTabPage, ClickLoadHdl_Impl, weld::Button&, void)
{
sal_uInt16 nReturn = RET_YES;
if ( *pnDashListState & ChangeType::MODIFIED )
{
std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetFrameWeld(), "cui/ui/querysavelistdialog.ui"));
std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetDialogFrameWeld(), "cui/ui/querysavelistdialog.ui"));
std::unique_ptr<weld::MessageDialog> xBox(xBuilder->weld_message_dialog("AskSaveList"));
nReturn = xBox->run();
@@ -713,7 +669,7 @@ IMPL_LINK_NOARG(SvxLineDefTabPage, ClickLoadHdl_Impl, Button*, void)
if ( nReturn != RET_CANCEL )
{
::sfx2::FileDialogHelper aDlg(css::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE,
FileDialogFlags::NONE, GetFrameWeld());
FileDialogFlags::NONE, GetDialogFrameWeld());
OUString aStrFilterType( "*.sod" );
aDlg.AddFilter( aStrFilterType, aStrFilterType );
OUString aPalettePath(SvtPathOptions().GetPalettePath());
@@ -744,8 +700,8 @@ IMPL_LINK_NOARG(SvxLineDefTabPage, ClickLoadHdl_Impl, Button*, void)
pDashList = pDshLst;
static_cast<SvxLineTabDialog*>( GetParentDialog() )->SetNewDashList( pDashList );
m_pLbLineStyles->Clear();
m_pLbLineStyles->Fill( pDashList );
m_xLbLineStyles->clear();
m_xLbLineStyles->Fill( pDashList );
Reset( &rOutAttrs );
pDashList->SetName( aURL.getName() );
@@ -755,7 +711,7 @@ IMPL_LINK_NOARG(SvxLineDefTabPage, ClickLoadHdl_Impl, Button*, void)
}
else
{
std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetFrameWeld(), "cui/ui/querynoloadedfiledialog.ui"));
std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetDialogFrameWeld(), "cui/ui/querynoloadedfiledialog.ui"));
std::unique_ptr<weld::MessageDialog> xBox(xBuilder->weld_message_dialog("NoLoadedFileDialog"));
xBox->run();
}
@@ -765,21 +721,21 @@ IMPL_LINK_NOARG(SvxLineDefTabPage, ClickLoadHdl_Impl, Button*, void)
// determine button state
if ( pDashList->Count() )
{
m_pBtnModify->Enable();
m_pBtnDelete->Enable();
m_pBtnSave->Enable();
m_xBtnModify->set_sensitive(true);
m_xBtnDelete->set_sensitive(true);
m_xBtnSave->set_sensitive(true);
}
else
{
m_pBtnModify->Disable();
m_pBtnDelete->Disable();
m_pBtnSave->Disable();
m_xBtnModify->set_sensitive(false);
m_xBtnDelete->set_sensitive(false);
m_xBtnSave->set_sensitive(false);
}
}
IMPL_LINK_NOARG(SvxLineDefTabPage, ClickSaveHdl_Impl, Button*, void)
IMPL_LINK_NOARG(SvxLineDefTabPage, ClickSaveHdl_Impl, weld::Button&, void)
{
::sfx2::FileDialogHelper aDlg(css::ui::dialogs::TemplateDescription::FILESAVE_SIMPLE, FileDialogFlags::NONE, GetFrameWeld());
::sfx2::FileDialogHelper aDlg(css::ui::dialogs::TemplateDescription::FILESAVE_SIMPLE, FileDialogFlags::NONE, GetDialogFrameWeld());
OUString aStrFilterType( "*.sod" );
aDlg.AddFilter( aStrFilterType, aStrFilterType );
@@ -822,7 +778,7 @@ IMPL_LINK_NOARG(SvxLineDefTabPage, ClickSaveHdl_Impl, Button*, void)
}
else
{
std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetFrameWeld(), "cui/ui/querynosavefiledialog.ui"));
std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetDialogFrameWeld(), "cui/ui/querynosavefiledialog.ui"));
std::unique_ptr<weld::MessageDialog> xBox(xBuilder->weld_message_dialog("NoSaveFileDialog"));
xBox->run();
}
@@ -833,64 +789,62 @@ void SvxLineDefTabPage::FillDash_Impl()
{
css::drawing::DashStyle eXDS;
if( m_pCbxSynchronize->IsChecked() )
if (m_xCbxSynchronize->get_active())
eXDS = css::drawing::DashStyle_RECTRELATIVE;
else
eXDS = css::drawing::DashStyle_RECT;
aDash.SetDashStyle( eXDS );
aDash.SetDots( static_cast<sal_uInt8>(m_pNumFldNumber1->GetValue()) );
aDash.SetDotLen( m_pLbType1->GetSelectedEntryPos() == 0 ? 0 : GetCoreValue( *m_pMtrLength1, ePoolUnit ) );
aDash.SetDashes( static_cast<sal_uInt8>(m_pNumFldNumber2->GetValue()) );
aDash.SetDashLen( m_pLbType2->GetSelectedEntryPos() == 0 ? 0 : GetCoreValue( *m_pMtrLength2, ePoolUnit ) );
aDash.SetDistance( GetCoreValue( *m_pMtrDistance, ePoolUnit ) );
aDash.SetDots( static_cast<sal_uInt8>(m_xNumFldNumber1->get_value()) );
aDash.SetDotLen( m_xLbType1->get_active() == 0 ? 0 : GetCoreValue( *m_xMtrLength1, ePoolUnit ) );
aDash.SetDashes( static_cast<sal_uInt8>(m_xNumFldNumber2->get_value()) );
aDash.SetDashLen( m_xLbType2->get_active() == 0 ? 0 : GetCoreValue( *m_xMtrLength2, ePoolUnit ) );
aDash.SetDistance( GetCoreValue( *m_xMtrDistance, ePoolUnit ) );
rXLSet.Put( XLineDashItem( OUString(), aDash ) );
// #i34740#
m_pCtlPreview->SetLineAttributes(aXLineAttr.GetItemSet());
m_aCtlPreview.SetLineAttributes(aXLineAttr.GetItemSet());
}
void SvxLineDefTabPage::FillDialog_Impl()
{
css::drawing::DashStyle eXDS = aDash.GetDashStyle(); // css::drawing::DashStyle_RECT, css::drawing::DashStyle_ROUND
if( eXDS == css::drawing::DashStyle_RECTRELATIVE )
m_pCbxSynchronize->Check();
m_xCbxSynchronize->set_active(true);
else
m_pCbxSynchronize->Check( false );
m_xCbxSynchronize->set_active(false);
m_pNumFldNumber1->SetValue( aDash.GetDots() );
SetMetricValue( *m_pMtrLength1, aDash.GetDotLen(), ePoolUnit );
m_pLbType1->SelectEntryPos( aDash.GetDotLen() == 0 ? 0 : 1 );
m_pNumFldNumber2->SetValue( aDash.GetDashes() );
SetMetricValue( *m_pMtrLength2, aDash.GetDashLen(), ePoolUnit );
m_pLbType2->SelectEntryPos( aDash.GetDashLen() == 0 ? 0 : 1 );
SetMetricValue( *m_pMtrDistance, aDash.GetDistance(), ePoolUnit );
m_xNumFldNumber1->set_value(aDash.GetDots());
SetMetricValue( *m_xMtrLength1, aDash.GetDotLen(), ePoolUnit );
m_xLbType1->set_active(aDash.GetDotLen() == 0 ? 0 : 1);
m_xNumFldNumber2->set_value(aDash.GetDashes());
SetMetricValue( *m_xMtrLength2, aDash.GetDashLen(), ePoolUnit );
m_xLbType2->set_active(aDash.GetDashLen() == 0 ? 0 : 1);
SetMetricValue( *m_xMtrDistance, aDash.GetDistance(), ePoolUnit );
ChangeMetricHdl_Impl( nullptr );
ChangeMetricHdl_Impl(nullptr);
// save values for changes recognition (-> method)
m_pNumFldNumber1->SaveValue();
m_pMtrLength1->SaveValue();
m_pLbType1->SaveValue();
m_pNumFldNumber2->SaveValue();
m_pMtrLength2->SaveValue();
m_pLbType2->SaveValue();
m_pMtrDistance->SaveValue();
m_xNumFldNumber1->save_value();
m_xMtrLength1->save_value();
m_xLbType1->save_value();
m_xNumFldNumber2->save_value();
m_xMtrLength2->save_value();
m_xLbType2->save_value();
m_xMtrDistance->save_value();
}
void SvxLineDefTabPage::DataChanged( const DataChangedEvent& rDCEvt )
{
SfxTabPage::DataChanged( rDCEvt );
if ( (rDCEvt.GetType() == DataChangedEventType::SETTINGS) && (rDCEvt.GetFlags() & AllSettingsFlags::STYLE) )
{
sal_Int32 nOldSelect = m_pLbLineStyles->GetSelectedEntryPos();
m_pLbLineStyles->Clear();
m_pLbLineStyles->Fill( pDashList );
m_pLbLineStyles->SelectEntryPos( nOldSelect );
auto nOldSelect = m_xLbLineStyles->get_active();
m_xLbLineStyles->clear();
m_xLbLineStyles->Fill(pDashList);
m_xLbLineStyles->set_active(nOldSelect);
}
}
diff --git a/cui/uiconfig/ui/lineendstabpage.ui b/cui/uiconfig/ui/lineendstabpage.ui
index 81145b0..8423d30d 100644
--- a/cui/uiconfig/ui/lineendstabpage.ui
+++ b/cui/uiconfig/ui/lineendstabpage.ui
@@ -91,7 +91,7 @@
<child>
<object class="GtkEntry" id="EDT_NAME">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="halign">start</property>
<property name="hexpand">True</property>
<property name="width_chars">30</property>
@@ -148,7 +148,7 @@
<object class="GtkButton" id="BTN_ADD">
<property name="label">gtk-add</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
@@ -163,7 +163,7 @@
<object class="GtkButton" id="BTN_MODIFY">
<property name="label" translatable="yes" context="lineendstabpage|BTN_MODIFY">_Modify</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
</object>
@@ -177,7 +177,7 @@
<object class="GtkButton" id="BTN_DELETE">
<property name="label">gtk-delete</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
diff --git a/cui/uiconfig/ui/linestyletabpage.ui b/cui/uiconfig/ui/linestyletabpage.ui
index 6ecc1ad..39537e1 100644
--- a/cui/uiconfig/ui/linestyletabpage.ui
+++ b/cui/uiconfig/ui/linestyletabpage.ui
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface domain="cui">
<!-- interface-requires gtk+ 3.0 -->
<!-- interface-requires LibreOffice 1.0 -->
<requires lib="gtk+" version="3.0"/>
<object class="GtkAdjustment" id="adjustmentDIST">
<property name="upper">5</property>
<property name="step_increment">0.10000000000000001</property>
@@ -15,30 +15,22 @@
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="pixbuf">res/sc05501.png</property>
<property name="icon_name">res/sc05501.png</property>
</object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="pixbuf">res/sc05502.png</property>
<property name="icon_name">res/sc05502.png</property>
</object>
<object class="GtkListStore" id="liststoreTYPE">
<object class="GtkListStore" id="liststore4">
<columns>
<!-- column-name gchararray1 -->
<!-- column-name text -->
<column type="gchararray"/>
<!-- column-name guint1 -->
<column type="guint"/>
<!-- column-name id -->
<column type="gchararray"/>
<!-- column-name image -->
<column type="GdkPixbuf"/>
</columns>
<data>
<row>
<col id="0" translatable="yes" context="linestyletabpage|liststoreTYPE">Dots</col>
<col id="1">0</col>
</row>
<row>
<col id="0" translatable="yes" context="linestyletabpage|liststoreTYPE">Dash</col>
<col id="1">0</col>
</row>
</data>
</object>
<object class="GtkFrame" id="LineStylePage">
<property name="visible">True</property>
@@ -88,9 +80,10 @@
<object class="GtkLabel" id="FT_LINESTYLE">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="linestyletabpage|FT_LINESTYLE">Line _style:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">LB_LINESTYLES</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -99,9 +92,12 @@
</packing>
</child>
<child>
<object class="svxlo-LineLB" id="LB_LINESTYLES">
<object class="GtkComboBox" id="LB_LINESTYLES">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="model">liststore4</property>
<property name="id_column">1</property>
</object>
<packing>
<property name="expand">False</property>
@@ -126,71 +122,63 @@
<object class="GtkLabel" id="FT_TYPE">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="linestyletabpage|FT_TYPE">_Type:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">LB_TYPE_1</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="FT_NUMBER">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="linestyletabpage|FT_NUMBER">_Number:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">NUM_FLD_1</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="FT_LENGTH">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="linestyletabpage|FT_LENGTH">_Length:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">MTR_FLD_LENGTH_1:0.00cm</property>
<property name="mnemonic_widget">MTR_FLD_LENGTH_1</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="FT_DISTANCE">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="linestyletabpage|FT_DISTANCE">_Spacing:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">MTR_FLD_DISTANCE:0.00cm</property>
<property name="mnemonic_widget">MTR_FLD_DISTANCE</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="CBX_SYNCHRONIZE">
<property name="label" translatable="yes" context="linestyletabpage|CBX_SYNCHRONIZE">_Fit to line width</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
@@ -199,102 +187,97 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">4</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="LB_TYPE_1">
<object class="GtkComboBoxText" id="LB_TYPE_1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="model">liststoreTYPE</property>
<items>
<item translatable="yes" context="linestyletabpage|liststoreTYPE">Dots</item>
<item translatable="yes" context="linestyletabpage|liststoreTYPE">Dash</item>
</items>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="LB_TYPE_2">
<object class="GtkComboBoxText" id="LB_TYPE_2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="model">liststoreTYPE</property>
<items>
<item translatable="yes" context="linestyletabpage|liststoreTYPE">Dots</item>
<item translatable="yes" context="linestyletabpage|liststoreTYPE">Dash</item>
</items>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="NUM_FLD_1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="activates_default">True</property>
<property name="adjustment">adjustmentNUM</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="NUM_FLD_2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="activates_default">True</property>
<property name="adjustment">adjustmentNUM</property>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="MTR_FLD_LENGTH_1:0.00cm">
<object class="GtkSpinButton" id="MTR_FLD_LENGTH_1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="activates_default">True</property>
<property name="adjustment">adjustmentDIST</property>
<property name="digits">2</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="MTR_FLD_LENGTH_2:0.00cm">
<object class="GtkSpinButton" id="MTR_FLD_LENGTH_2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="activates_default">True</property>
<property name="adjustment">adjustmentDIST</property>
<property name="digits">2</property>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="MTR_FLD_DISTANCE:0.00cm">
<object class="GtkSpinButton" id="MTR_FLD_DISTANCE">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="activates_default">True</property>
<property name="adjustment">adjustmentDIST</property>
<property name="digits">2</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -333,7 +316,7 @@
<object class="GtkButton" id="BTN_ADD">
<property name="label">gtk-add</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
@@ -348,7 +331,7 @@
<object class="GtkButton" id="BTN_MODIFY">
<property name="label" translatable="yes" context="linestyletabpage|BTN_MODIFY">_Modify</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_underline">True</property>
</object>
@@ -362,7 +345,7 @@
<object class="GtkButton" id="BTN_DELETE">
<property name="label">gtk-delete</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
@@ -392,8 +375,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -410,8 +391,6 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
@@ -437,10 +416,24 @@
</packing>
</child>
<child>
<object class="svxlo-SvxXLinePreview" id="CTL_PREVIEW">
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">end</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="CTL_PREVIEW">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
@@ -456,8 +449,8 @@
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="linestyletabpage|label1">Properties</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
diff --git a/include/svx/dlgctrl.hxx b/include/svx/dlgctrl.hxx
index 2061a21..db016d6 100644
--- a/include/svx/dlgctrl.hxx
+++ b/include/svx/dlgctrl.hxx
@@ -268,6 +268,34 @@ public:
void Modify(const XDashEntry& rEntry, sal_Int32 nPos, const BitmapEx& rBitmap );
};
class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxLineLB
{
private:
std::unique_ptr<weld::ComboBox> m_xControl;
/// defines if standard fields (none, solid) are added, default is true
bool mbAddStandardFields : 1;
public:
SvxLineLB(std::unique_ptr<weld::ComboBox> pControl);
void Fill(const XDashListRef &pList);
bool getAddStandardFields() const { return mbAddStandardFields; }
void setAddStandardFields(bool bNew);
void Append(const XDashEntry& rEntry, const BitmapEx& rBitmap );
void Modify(const XDashEntry& rEntry, sal_Int32 nPos, const BitmapEx& rBitmap );
void clear() { m_xControl->clear(); }
void remove(int nPos) { m_xControl->remove(nPos); }
int get_active() const { return m_xControl->get_active(); }
void set_active(int nPos) { m_xControl->set_active(nPos); }
void set_active_text(const OUString& rStr) { m_xControl->set_active_text(rStr); }
OUString get_active_text() const { return m_xControl->get_active_text(); }
void connect_changed(const Link<weld::ComboBox&, void>& rLink) { m_xControl->connect_changed(rLink); }
int get_count() const { return m_xControl->get_count(); }
};
/************************************************************************/
class SAL_WARN_UNUSED SVX_DLLPUBLIC LineEndLB : public ListBox
@@ -299,6 +327,7 @@ public:
void remove(int nPos) { m_xControl->remove(nPos); }
int get_active() const { return m_xControl->get_active(); }
void set_active(int nPos) { m_xControl->set_active(nPos); }
void set_active_text(const OUString& rStr) { m_xControl->set_active_text(rStr); }
OUString get_active_text() const { return m_xControl->get_active_text(); }
void connect_changed(const Link<weld::ComboBox&, void>& rLink) { m_xControl->connect_changed(rLink); }
int get_count() const { return m_xControl->get_count(); }
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index ddfd104..822aec4 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -764,6 +764,11 @@ public:
return convert_value_to(m_xSpinButton->get_value(), eDestUnit);
}
// typically you only need to call this if set_text (e.g. with "") was
// previously called to display some arbitrary text instead of the
// formatted value and now you want to show it as formattted again
void reformat() { set_value(get_value(m_eSrcUnit), m_eSrcUnit); }
void set_range(int min, int max, FieldUnit eValueUnit)
{
min = convert_value_from(min, eValueUnit);
diff --git a/solenv/sanitizers/ui/cui.suppr b/solenv/sanitizers/ui/cui.suppr
index f084489..b0c922a 100644
--- a/solenv/sanitizers/ui/cui.suppr
+++ b/solenv/sanitizers/ui/cui.suppr
@@ -265,11 +265,9 @@ cui/uiconfig/ui/linetabpage.ui://GtkSpinButton[@id='MF_SYMBOL_HEIGHT:0cm'] no-la
cui/uiconfig/ui/lineendstabpage.ui://GtkLabel[@id='FT_LINE_END_STYLE'] orphan-label
cui/uiconfig/ui/lineendstabpage.ui://svxlo-LineEndLB[@id='LB_LINEENDS'] no-labelled-by
cui/uiconfig/ui/lineendstabpage.ui://GtkLabel[@id='FI_TIP'] orphan-label
cui/uiconfig/ui/linestyletabpage.ui://GtkLabel[@id='FT_LINESTYLE'] orphan-label
cui/uiconfig/ui/linestyletabpage.ui://svxlo-LineLB[@id='LB_LINESTYLES'] no-labelled-by
cui/uiconfig/ui/linestyletabpage.ui://GtkComboBox[@id='LB_TYPE_2'] no-labelled-by
cui/uiconfig/ui/linestyletabpage.ui://GtkSpinButton[@id='NUM_FLD_2'] no-labelled-by
cui/uiconfig/ui/linestyletabpage.ui://GtkSpinButton[@id='MTR_FLD_LENGTH_2:0.00cm'] no-labelled-by
cui/uiconfig/ui/linestyletabpage.ui://GtkSpinButton[@id='MTR_FLD_LENGTH_2'] no-labelled-by
cui/uiconfig/ui/macroassignpage.ui://cuilo-MacroEventListBox[@id='assignments:border'] no-labelled-by
cui/uiconfig/ui/macroassignpage.ui://GtkLabel[@id='eventft'] orphan-label
cui/uiconfig/ui/macroassignpage.ui://GtkLabel[@id='assignft'] orphan-label
diff --git a/svx/source/dialog/dlgctrl.cxx b/svx/source/dialog/dlgctrl.cxx
index f75661d..83292b9 100644
--- a/svx/source/dialog/dlgctrl.cxx
+++ b/svx/source/dialog/dlgctrl.cxx
@@ -1076,6 +1076,105 @@ void LineLB::Modify( const XDashEntry& rEntry, sal_Int32 nPos, const BitmapEx& r
}
}
SvxLineLB::SvxLineLB(std::unique_ptr<weld::ComboBox> pControl)
: m_xControl(std::move(pControl))
, mbAddStandardFields(true)
{
}
void SvxLineLB::setAddStandardFields(bool bNew)
{
if(getAddStandardFields() != bNew)
{
mbAddStandardFields = bNew;
}
}
// Fills the listbox (provisional) with strings
void SvxLineLB::Fill( const XDashListRef &pList )
{
m_xControl->clear();
if( !pList.is() )
return;
ScopedVclPtrInstance< VirtualDevice > pVD;
if(getAddStandardFields())
{
// entry for 'none'
m_xControl->append_text(pList->GetStringForUiNoLine());
// entry for solid line
const BitmapEx aBitmap = pList->GetBitmapForUISolidLine();
const Size aBmpSize(aBitmap.GetSizePixel());
pVD->SetOutputSizePixel(aBmpSize, false);
pVD->DrawBitmapEx(Point(), aBitmap);
m_xControl->append("", pList->GetStringForUiSolidLine(), *pVD);
}
// entries for dashed lines
long nCount = pList->Count();
m_xControl->freeze();
for( long i = 0; i < nCount; i++ )
{
const XDashEntry* pEntry = pList->GetDash(i);
const BitmapEx aBitmap = pList->GetUiBitmap( i );
if( !aBitmap.IsEmpty() )
{
const Size aBmpSize(aBitmap.GetSizePixel());
pVD->SetOutputSizePixel(aBmpSize, false);
pVD->DrawBitmapEx(Point(), aBitmap);
m_xControl->append("", pEntry->GetName(), *pVD);
}
else
{
m_xControl->append_text(pEntry->GetName());
}
}
m_xControl->thaw();
}
void SvxLineLB::Append( const XDashEntry& rEntry, const BitmapEx& rBitmap )
{
if (!rBitmap.IsEmpty())
{
ScopedVclPtrInstance< VirtualDevice > pVD;
const Size aBmpSize(rBitmap.GetSizePixel());
pVD->SetOutputSizePixel(aBmpSize, false);
pVD->DrawBitmapEx(Point(), rBitmap);
m_xControl->append("", rEntry.GetName(), *pVD);
}
else
{
m_xControl->append_text(rEntry.GetName());
}
}
void SvxLineLB::Modify(const XDashEntry& rEntry, sal_Int32 nPos, const BitmapEx& rBitmap)
{
m_xControl->remove(nPos);
if (!rBitmap.IsEmpty())
{
ScopedVclPtrInstance< VirtualDevice > pVD;
const Size aBmpSize(rBitmap.GetSizePixel());
pVD->SetOutputSizePixel(aBmpSize, false);
pVD->DrawBitmapEx(Point(), rBitmap);
m_xControl->insert(nPos, "", rEntry.GetName(), nullptr, pVD);
}
else
{
m_xControl->insert_text(nPos, rEntry.GetName());
}
}
// Fills the listbox (provisional) with strings
LineEndLB::LineEndLB( vcl::Window* pParent, WinBits aWB )