Resolves: tdf#121246 crash in chart dialogs
Change-Id: I3bc720e44f5ea15749e6bc0f0fada3a17a783e23
Reviewed-on: https://gerrit.libreoffice.org/63463
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/chart2/source/controller/dialogs/tp_AxisPositions.cxx b/chart2/source/controller/dialogs/tp_AxisPositions.cxx
index fc4fbe1..4c098e6 100644
--- a/chart2/source/controller/dialogs/tp_AxisPositions.cxx
+++ b/chart2/source/controller/dialogs/tp_AxisPositions.cxx
@@ -39,46 +39,29 @@ using namespace ::com::sun::star;
namespace chart
{
AxisPositionsTabPage::AxisPositionsTabPage(vcl::Window* pWindow,const SfxItemSet& rInAttrs)
: SfxTabPage(pWindow
,"tp_AxisPositions"
,"modules/schart/ui/tp_AxisPositions.ui"
, &rInAttrs)
AxisPositionsTabPage::AxisPositionsTabPage(TabPageParent pWindow,const SfxItemSet& rInAttrs)
: SfxTabPage(pWindow ,"modules/schart/ui/tp_AxisPositions.ui" ,"tp_AxisPositions" , &rInAttrs)
, m_pNumFormatter(nullptr)
, m_bCrossingAxisIsCategoryAxis(false)
, m_aCategories()
, m_bSupportAxisPositioning(false)
, m_xFL_AxisLine(m_xBuilder->weld_frame("FL_AXIS_LINE"))
, m_xLB_CrossesAt(m_xBuilder->weld_combo_box("LB_CROSSES_OTHER_AXIS_AT"))
, m_xED_CrossesAt(m_xBuilder->weld_formatted_spin_button("EDT_CROSSES_OTHER_AXIS_AT"))
, m_xED_CrossesAtCategory(m_xBuilder->weld_combo_box( "EDT_CROSSES_OTHER_AXIS_AT_CATEGORY"))
, m_xCB_AxisBetweenCategories(m_xBuilder->weld_check_button("CB_AXIS_BETWEEN_CATEGORIES"))
, m_xFL_Labels(m_xBuilder->weld_frame("FL_LABELS"))
, m_xLB_PlaceLabels(m_xBuilder->weld_combo_box("LB_PLACE_LABELS"))
, m_xED_LabelDistance(m_xBuilder->weld_formatted_spin_button("EDT_AXIS_LABEL_DISTANCE"))
, m_xCB_TicksInner(m_xBuilder->weld_check_button("CB_TICKS_INNER"))
, m_xCB_TicksOuter(m_xBuilder->weld_check_button("CB_TICKS_OUTER"))
, m_xCB_MinorInner(m_xBuilder->weld_check_button("CB_MINOR_INNER"))
, m_xCB_MinorOuter(m_xBuilder->weld_check_button("CB_MINOR_OUTER"))
, m_xBxPlaceTicks(m_xBuilder->weld_widget("boxPLACE_TICKS"))
, m_xLB_PlaceTicks(m_xBuilder->weld_combo_box("LB_PLACE_TICKS"))
{
get(m_pFL_AxisLine, "FL_AXIS_LINE");
get(m_pLB_CrossesAt,"LB_CROSSES_OTHER_AXIS_AT");
get(m_pED_CrossesAt,"EDT_CROSSES_OTHER_AXIS_AT");
get(m_pED_CrossesAtCategory, "EDT_CROSSES_OTHER_AXIS_AT_CATEGORY");
get(m_pCB_AxisBetweenCategories, "CB_AXIS_BETWEEN_CATEGORIES");
get(m_pFL_Labels, "FL_LABELS");
get(m_pLB_PlaceLabels,"LB_PLACE_LABELS");
get(m_pED_LabelDistance,"EDT_AXIS_LABEL_DISTANCE");
get(m_pCB_TicksInner, "CB_TICKS_INNER");
get(m_pCB_TicksOuter, "CB_TICKS_OUTER");
get(m_pCB_MinorInner, "CB_MINOR_INNER");
get(m_pCB_MinorOuter, "CB_MINOR_OUTER");
get(m_pBxPlaceTicks, "boxPLACE_TICKS");
get(m_pLB_PlaceTicks, "LB_PLACE_TICKS");
// these are not used/implemented
// get(m_pCB_MajorGrid, "CB_MAJOR_GRID");
// get(m_pPB_MajorGrid, "PB_MAJOR_GRID");
// get(m_pCB_MinorGrid, "CB_MINOR_GRID");
// get(m_pPB_MinorGrid, "PB_MINOR_GRID");
m_pLB_CrossesAt->SetSelectHdl( LINK( this, AxisPositionsTabPage, CrossesAtSelectHdl ) );
m_pLB_CrossesAt->SetDropDownLineCount( m_pLB_CrossesAt->GetEntryCount() );
m_pLB_PlaceLabels->SetSelectHdl( LINK( this, AxisPositionsTabPage, PlaceLabelsSelectHdl ) );
m_pLB_PlaceLabels->SetDropDownLineCount( m_pLB_PlaceLabels->GetEntryCount() );
m_pLB_PlaceTicks->SetDropDownLineCount( m_pLB_PlaceTicks->GetEntryCount() );
m_xLB_CrossesAt->connect_changed(LINK(this, AxisPositionsTabPage, CrossesAtSelectHdl));
m_xLB_PlaceLabels->connect_changed(LINK(this, AxisPositionsTabPage, PlaceLabelsSelectHdl));
}
AxisPositionsTabPage::~AxisPositionsTabPage()
@@ -86,66 +69,47 @@ AxisPositionsTabPage::~AxisPositionsTabPage()
disposeOnce();
}
void AxisPositionsTabPage::dispose()
VclPtr<SfxTabPage> AxisPositionsTabPage::Create(TabPageParent pParent, const SfxItemSet* rOutAttrs)
{
m_pFL_AxisLine.clear();
m_pLB_CrossesAt.clear();
m_pED_CrossesAt.clear();
m_pED_CrossesAtCategory.clear();
m_pCB_AxisBetweenCategories.clear();
m_pFL_Labels.clear();
m_pLB_PlaceLabels.clear();
m_pED_LabelDistance.clear();
m_pCB_TicksInner.clear();
m_pCB_TicksOuter.clear();
m_pCB_MinorInner.clear();
m_pCB_MinorOuter.clear();
m_pBxPlaceTicks.clear();
m_pLB_PlaceTicks.clear();
SfxTabPage::dispose();
}
VclPtr<SfxTabPage> AxisPositionsTabPage::Create(TabPageParent pWindow,const SfxItemSet* rOutAttrs)
{
return VclPtr<AxisPositionsTabPage>::Create(pWindow.pParent, *rOutAttrs);
return VclPtr<AxisPositionsTabPage>::Create(pParent, *rOutAttrs);
}
bool AxisPositionsTabPage::FillItemSet(SfxItemSet* rOutAttrs)
{
// axis line
sal_Int32 nPos = m_pLB_CrossesAt->GetSelectedEntryPos();
sal_Int32 nPos = m_xLB_CrossesAt->get_active();
rOutAttrs->Put( SfxInt32Item( SCHATTR_AXIS_POSITION, nPos+1 ));
if( nPos==2 )
{
double fCrossover = m_pED_CrossesAt->GetValue();
double fCrossover = m_xED_CrossesAt->get_value();
if( m_bCrossingAxisIsCategoryAxis )
fCrossover = m_pED_CrossesAtCategory->GetSelectedEntryPos()+1;
fCrossover = m_xED_CrossesAtCategory->get_active()+1;
rOutAttrs->Put(SvxDoubleItem(fCrossover,SCHATTR_AXIS_POSITION_VALUE));
}
// labels
sal_Int32 nLabelPos = m_pLB_PlaceLabels->GetSelectedEntryPos();
if( nLabelPos != LISTBOX_ENTRY_NOTFOUND )
sal_Int32 nLabelPos = m_xLB_PlaceLabels->get_active();
if (nLabelPos != -1)
rOutAttrs->Put( SfxInt32Item( SCHATTR_AXIS_LABEL_POSITION, nLabelPos ));
// tick marks
long nTicks=0;
long nMinorTicks=0;
if(m_pCB_MinorInner->IsChecked())
if(m_xCB_MinorInner->get_active())
nMinorTicks|=CHAXIS_MARK_INNER;
if(m_pCB_MinorOuter->IsChecked())
if(m_xCB_MinorOuter->get_active())
nMinorTicks|=CHAXIS_MARK_OUTER;
if(m_pCB_TicksInner->IsChecked())
if(m_xCB_TicksInner->get_active())
nTicks|=CHAXIS_MARK_INNER;
if(m_pCB_TicksOuter->IsChecked())
if(m_xCB_TicksOuter->get_active())
nTicks|=CHAXIS_MARK_OUTER;
rOutAttrs->Put(SfxInt32Item(SCHATTR_AXIS_TICKS,nTicks));
rOutAttrs->Put(SfxInt32Item(SCHATTR_AXIS_HELPTICKS,nMinorTicks));
sal_Int32 nMarkPos = m_pLB_PlaceTicks->GetSelectedEntryPos();
if( nMarkPos != LISTBOX_ENTRY_NOTFOUND )
sal_Int32 nMarkPos = m_xLB_PlaceTicks->get_active();
if (nMarkPos != -1)
rOutAttrs->Put( SfxInt32Item( SCHATTR_AXIS_MARK_POSITION, nMarkPos ));
return true;
@@ -154,26 +118,24 @@ bool AxisPositionsTabPage::FillItemSet(SfxItemSet* rOutAttrs)
void AxisPositionsTabPage::Reset(const SfxItemSet* rInAttrs)
{
//init and enable controls
m_pED_CrossesAt->Show( !m_bCrossingAxisIsCategoryAxis );
m_pED_CrossesAtCategory->Show( m_bCrossingAxisIsCategoryAxis );
const sal_Int32 nMaxCount = LISTBOX_ENTRY_NOTFOUND;
if( m_bCrossingAxisIsCategoryAxis )
m_xED_CrossesAt->show( !m_bCrossingAxisIsCategoryAxis );
m_xED_CrossesAtCategory->show( m_bCrossingAxisIsCategoryAxis );
if (m_bCrossingAxisIsCategoryAxis)
{
for( sal_Int32 nN=0; nN<m_aCategories.getLength() && nN<nMaxCount; nN++ )
m_pED_CrossesAtCategory->InsertEntry( m_aCategories[nN] );
for( sal_Int32 nN=0; nN<m_aCategories.getLength(); nN++ )
m_xED_CrossesAtCategory->append_text(m_aCategories[nN]);
sal_Int32 nCount = m_pED_CrossesAtCategory->GetEntryCount();
sal_Int32 nCount = m_xED_CrossesAtCategory->get_count();
if( nCount>30 )
nCount=30;
m_pED_CrossesAtCategory->SetDropDownLineCount( nCount );
}
if( m_pLB_CrossesAt->GetEntryCount() > 3 )
if( m_xLB_CrossesAt->get_count() > 3 )
{
if( m_bCrossingAxisIsCategoryAxis )
m_pLB_CrossesAt->RemoveEntry(2);
m_xLB_CrossesAt->remove(2);
else
m_pLB_CrossesAt->RemoveEntry(3);
m_xLB_CrossesAt->remove(3);
}
//fill controls
@@ -193,9 +155,9 @@ void AxisPositionsTabPage::Reset(const SfxItemSet* rInAttrs)
else
nPos--;
if( nPos < m_pLB_CrossesAt->GetEntryCount() )
m_pLB_CrossesAt->SelectEntryPos( nPos );
CrossesAtSelectHdl( *m_pLB_CrossesAt );
if( nPos < m_xLB_CrossesAt->get_count() )
m_xLB_CrossesAt->set_active( nPos );
CrossesAtSelectHdl( *m_xLB_CrossesAt );
if( rInAttrs->GetItemState(SCHATTR_AXIS_POSITION_VALUE,true, &pPoolItem)== SfxItemState::SET || bZero )
{
@@ -203,71 +165,71 @@ void AxisPositionsTabPage::Reset(const SfxItemSet* rInAttrs)
if( !bZero )
fCrossover = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue();
if( m_bCrossingAxisIsCategoryAxis )
m_pED_CrossesAtCategory->SelectEntryPos( static_cast<sal_uInt16>(::rtl::math::round(fCrossover-1.0)) );
m_xED_CrossesAtCategory->set_active( static_cast<sal_uInt16>(::rtl::math::round(fCrossover-1.0)) );
else
m_pED_CrossesAt->SetValue(fCrossover);
m_xED_CrossesAt->set_value(fCrossover);
}
else
{
m_pED_CrossesAtCategory->SetNoSelection();
m_pED_CrossesAt->SetTextValue("");
m_xED_CrossesAtCategory->set_active(-1);
m_xED_CrossesAt->set_text("");
}
}
else
{
m_pLB_CrossesAt->SetNoSelection();
m_pED_CrossesAt->Enable( false );
m_xLB_CrossesAt->set_active(-1);
m_xED_CrossesAt->set_sensitive( false );
}
// Labels
if( rInAttrs->GetItemState( SCHATTR_AXIS_LABEL_POSITION, false, &pPoolItem ) == SfxItemState::SET )
{
sal_Int32 nPos = static_cast< const SfxInt32Item * >( pPoolItem )->GetValue();
if( nPos < m_pLB_PlaceLabels->GetEntryCount() )
m_pLB_PlaceLabels->SelectEntryPos( nPos );
if( nPos < m_xLB_PlaceLabels->get_count() )
m_xLB_PlaceLabels->set_active( nPos );
}
else
m_pLB_PlaceLabels->SetNoSelection();
PlaceLabelsSelectHdl( *m_pLB_PlaceLabels );
m_xLB_PlaceLabels->set_active(-1);
PlaceLabelsSelectHdl( *m_xLB_PlaceLabels );
// Tick marks
long nTicks = 0, nMinorTicks = 0;
if(rInAttrs->GetItemState(SCHATTR_AXIS_TICKS,true, &pPoolItem)== SfxItemState::SET)
if (rInAttrs->GetItemState(SCHATTR_AXIS_TICKS,true, &pPoolItem)== SfxItemState::SET)
nTicks = static_cast<const SfxInt32Item*>(pPoolItem)->GetValue();
if(rInAttrs->GetItemState(SCHATTR_AXIS_HELPTICKS,true, &pPoolItem)== SfxItemState::SET)
if (rInAttrs->GetItemState(SCHATTR_AXIS_HELPTICKS,true, &pPoolItem)== SfxItemState::SET)
nMinorTicks = static_cast<const SfxInt32Item*>(pPoolItem)->GetValue();
m_pCB_TicksInner->Check(bool(nTicks&CHAXIS_MARK_INNER));
m_pCB_TicksOuter->Check(bool(nTicks&CHAXIS_MARK_OUTER));
m_pCB_MinorInner->Check(bool(nMinorTicks&CHAXIS_MARK_INNER));
m_pCB_MinorOuter->Check(bool(nMinorTicks&CHAXIS_MARK_OUTER));
m_xCB_TicksInner->set_active(bool(nTicks&CHAXIS_MARK_INNER));
m_xCB_TicksOuter->set_active(bool(nTicks&CHAXIS_MARK_OUTER));
m_xCB_MinorInner->set_active(bool(nMinorTicks&CHAXIS_MARK_INNER));
m_xCB_MinorOuter->set_active(bool(nMinorTicks&CHAXIS_MARK_OUTER));
// Tick position
if( rInAttrs->GetItemState( SCHATTR_AXIS_MARK_POSITION, false, &pPoolItem ) == SfxItemState::SET )
{
sal_Int32 nPos = static_cast< const SfxInt32Item * >( pPoolItem )->GetValue();
if( nPos < m_pLB_PlaceTicks->GetEntryCount() )
m_pLB_PlaceTicks->SelectEntryPos( nPos );
if( nPos < m_xLB_PlaceTicks->get_count() )
m_xLB_PlaceTicks->set_active( nPos );
}
else
m_pLB_PlaceTicks->SetNoSelection();
m_xLB_PlaceTicks->set_active(-1);
if( !m_bSupportAxisPositioning )
{
m_pFL_AxisLine->Show(false);
m_xFL_AxisLine->show(false);
m_pFL_Labels->Show(false);
m_xFL_Labels->show(false);
m_pBxPlaceTicks->Show(false);
m_xBxPlaceTicks->show(false);
}
else if( !AxisHelper::isAxisPositioningEnabled() )
{
m_pFL_AxisLine->Enable(false);
m_xFL_AxisLine->set_sensitive(false);
m_pFL_Labels->Enable(false);
m_xFL_Labels->set_sensitive(false);
m_pBxPlaceTicks->Enable(false);
m_xBxPlaceTicks->set_sensitive(false);
//todo: maybe set a special help id to all those controls
}
@@ -284,14 +246,13 @@ DeactivateRC AxisPositionsTabPage::DeactivatePage(SfxItemSet* pItemSet)
void AxisPositionsTabPage::SetNumFormatter( SvNumberFormatter* pFormatter )
{
m_pNumFormatter = pFormatter;
m_pED_CrossesAt->SetFormatter( m_pNumFormatter );
m_pED_CrossesAt->UseInputStringForFormatting();
m_xED_CrossesAt->set_formatter(m_pNumFormatter);
const SfxPoolItem *pPoolItem = nullptr;
if( GetItemSet().GetItemState( SCHATTR_AXIS_CROSSING_MAIN_AXIS_NUMBERFORMAT, true, &pPoolItem ) == SfxItemState::SET )
{
sal_uLong nFmt = static_cast<sal_uLong>(static_cast<const SfxInt32Item*>(pPoolItem)->GetValue());
m_pED_CrossesAt->SetFormatKey( nFmt );
m_xED_CrossesAt->set_format_key( nFmt );
}
}
@@ -310,32 +271,32 @@ void AxisPositionsTabPage::SupportAxisPositioning( bool bSupportAxisPositioning
m_bSupportAxisPositioning = bSupportAxisPositioning;
}
IMPL_LINK_NOARG(AxisPositionsTabPage, CrossesAtSelectHdl, ListBox&, void)
IMPL_LINK_NOARG(AxisPositionsTabPage, CrossesAtSelectHdl, weld::ComboBox&, void)
{
sal_Int32 nPos = m_pLB_CrossesAt->GetSelectedEntryPos();
m_pED_CrossesAt->Show( (nPos==2) && !m_bCrossingAxisIsCategoryAxis );
m_pED_CrossesAtCategory->Show( (nPos==2) && m_bCrossingAxisIsCategoryAxis );
sal_Int32 nPos = m_xLB_CrossesAt->get_active();
m_xED_CrossesAt->show( (nPos==2) && !m_bCrossingAxisIsCategoryAxis );
m_xED_CrossesAtCategory->show( (nPos==2) && m_bCrossingAxisIsCategoryAxis );
if( m_pED_CrossesAt->GetText().isEmpty() )
m_pED_CrossesAt->SetValue(0.0);
if( m_pED_CrossesAtCategory->GetSelectedEntryCount() == 0 )
m_pED_CrossesAtCategory->SelectEntryPos(0);
if (m_xED_CrossesAt->get_text().isEmpty())
m_xED_CrossesAt->set_value(0.0);
if (m_xED_CrossesAtCategory->get_active() == -1)
m_xED_CrossesAtCategory->set_active(0);
PlaceLabelsSelectHdl( *m_pLB_PlaceLabels );
PlaceLabelsSelectHdl(*m_xLB_PlaceLabels);
}
IMPL_LINK_NOARG(AxisPositionsTabPage, PlaceLabelsSelectHdl, ListBox&, void)
IMPL_LINK_NOARG(AxisPositionsTabPage, PlaceLabelsSelectHdl, weld::ComboBox&, void)
{
sal_Int32 nLabelPos = m_pLB_PlaceLabels->GetSelectedEntryPos();
sal_Int32 nLabelPos = m_xLB_PlaceLabels->get_active();
bool bEnableTickmarkPlacement = (nLabelPos>1);
if( bEnableTickmarkPlacement )
{
sal_Int32 nAxisPos = m_pLB_CrossesAt->GetSelectedEntryPos();
sal_Int32 nAxisPos = m_xLB_CrossesAt->get_active();
if( nLabelPos-2 == nAxisPos )
bEnableTickmarkPlacement=false;
}
m_pBxPlaceTicks->Enable(bEnableTickmarkPlacement);
m_xBxPlaceTicks->set_sensitive(bEnableTickmarkPlacement);
}
} //namespace chart
diff --git a/chart2/source/controller/dialogs/tp_AxisPositions.hxx b/chart2/source/controller/dialogs/tp_AxisPositions.hxx
index 656e04f..1b4f2e0 100644
--- a/chart2/source/controller/dialogs/tp_AxisPositions.hxx
+++ b/chart2/source/controller/dialogs/tp_AxisPositions.hxx
@@ -20,9 +20,6 @@
#define INCLUDED_CHART2_SOURCE_CONTROLLER_DIALOGS_TP_AXISPOSITIONS_HXX
#include <sfx2/tabdlg.hxx>
#include <vcl/fmtfield.hxx>
#include <vcl/button.hxx>
#include <vcl/lstbox.hxx>
namespace chart
{
@@ -30,9 +27,8 @@ namespace chart
class AxisPositionsTabPage : public SfxTabPage
{
public:
AxisPositionsTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs );
AxisPositionsTabPage(TabPageParent pParent, const SfxItemSet& rInAttrs);
virtual ~AxisPositionsTabPage() override;
virtual void dispose() override;
static VclPtr<SfxTabPage> Create( TabPageParent pParent, const SfxItemSet* rInAttrs );
virtual bool FillItemSet( SfxItemSet* rOutAttrs ) override;
@@ -48,41 +44,35 @@ public:
void SupportAxisPositioning( bool bSupportAxisPositioning );
private: //methods:
DECL_LINK( CrossesAtSelectHdl, ListBox&, void );
DECL_LINK( PlaceLabelsSelectHdl, ListBox&, void );
DECL_LINK(CrossesAtSelectHdl, weld::ComboBox&, void);
DECL_LINK(PlaceLabelsSelectHdl, weld::ComboBox&, void);
private: //member:
VclPtr<VclFrame> m_pFL_AxisLine;
VclPtr<ListBox> m_pLB_CrossesAt;
VclPtr<FormattedField> m_pED_CrossesAt;
VclPtr<ComboBox> m_pED_CrossesAtCategory;
VclPtr<CheckBox> m_pCB_AxisBetweenCategories;
VclPtr<VclFrame> m_pFL_Labels;
VclPtr<ListBox> m_pLB_PlaceLabels;
VclPtr<FormattedField> m_pED_LabelDistance;
VclPtr<CheckBox> m_pCB_TicksInner;
VclPtr<CheckBox> m_pCB_TicksOuter;
VclPtr<CheckBox> m_pCB_MinorInner;
VclPtr<CheckBox> m_pCB_MinorOuter;
VclPtr<VclBox> m_pBxPlaceTicks;
VclPtr<ListBox> m_pLB_PlaceTicks;
// Not implemented
// VclPtr<CheckBox> m_pCB_MajorGrid;
// VclPtr<PushButton> m_pPB_MajorGrid;
// VclPtr<CheckBox> m_pCB_MinorGrid;
// VclPtr<PushButton> m_pPB_MinorGrid;
SvNumberFormatter* m_pNumFormatter;
bool m_bCrossingAxisIsCategoryAxis;
css::uno::Sequence< OUString > m_aCategories;
bool m_bSupportAxisPositioning;
std::unique_ptr<weld::Frame> m_xFL_AxisLine;
std::unique_ptr<weld::ComboBox> m_xLB_CrossesAt;
std::unique_ptr<weld::FormattedSpinButton> m_xED_CrossesAt;
std::unique_ptr<weld::ComboBox> m_xED_CrossesAtCategory;
std::unique_ptr<weld::CheckButton> m_xCB_AxisBetweenCategories;
std::unique_ptr<weld::Frame> m_xFL_Labels;
std::unique_ptr<weld::ComboBox> m_xLB_PlaceLabels;
std::unique_ptr<weld::FormattedSpinButton> m_xED_LabelDistance;
std::unique_ptr<weld::CheckButton> m_xCB_TicksInner;
std::unique_ptr<weld::CheckButton> m_xCB_TicksOuter;
std::unique_ptr<weld::CheckButton> m_xCB_MinorInner;
std::unique_ptr<weld::CheckButton> m_xCB_MinorOuter;
std::unique_ptr<weld::Widget> m_xBxPlaceTicks;
std::unique_ptr<weld::ComboBox> m_xLB_PlaceTicks;
};
} //namespace chart
diff --git a/chart2/source/controller/dialogs/tp_Scale.cxx b/chart2/source/controller/dialogs/tp_Scale.cxx
index b785414..21794cf 100644
--- a/chart2/source/controller/dialogs/tp_Scale.cxx
+++ b/chart2/source/controller/dialogs/tp_Scale.cxx
@@ -43,81 +43,61 @@ namespace chart
namespace
{
void lcl_setValue( FormattedField& rFmtField, double fValue )
void lcl_setValue(weld::FormattedSpinButton& rFmtField, double fValue)
{
rFmtField.SetValue( fValue );
rFmtField.SetDefaultValue( fValue );
rFmtField.set_value(fValue);
}
}
ScaleTabPage::ScaleTabPage(vcl::Window* pWindow,const SfxItemSet& rInAttrs) :
SfxTabPage(pWindow
, "tp_Scale"
, "modules/schart/ui/tp_Scale.ui"
, &rInAttrs),
fMin(0.0),
fMax(0.0),
fStepMain(0.0),
nStepHelp(0),
fOrigin(0.0),
m_nTimeResolution(1),
m_nMainTimeUnit(1),
m_nHelpTimeUnit(1),
m_nAxisType(chart2::AxisType::REALNUMBER),
m_bAllowDateAxis(false),
pNumFormatter(nullptr),
m_bShowAxisOrigin(false)
ScaleTabPage::ScaleTabPage(TabPageParent pWindow,const SfxItemSet& rInAttrs)
: SfxTabPage(pWindow, "modules/schart/ui/tp_Scale.ui", "tp_Scale", &rInAttrs)
, fMin(0.0)
, fMax(0.0)
, fStepMain(0.0)
, nStepHelp(0)
, fOrigin(0.0)
, m_nTimeResolution(1)
, m_nMainTimeUnit(1)
, m_nHelpTimeUnit(1)
, m_nAxisType(chart2::AxisType::REALNUMBER)
, m_bAllowDateAxis(false)
, pNumFormatter(nullptr)
, m_bShowAxisOrigin(false)
, m_xCbxReverse(m_xBuilder->weld_check_button("CBX_REVERSE"))
, m_xCbxLogarithm(m_xBuilder->weld_check_button("CBX_LOGARITHM"))
, m_xBxType(m_xBuilder->weld_widget("boxTYPE"))
, m_xLB_AxisType(m_xBuilder->weld_combo_box("LB_AXIS_TYPE"))
, m_xBxMinMax(m_xBuilder->weld_widget("gridMINMAX"))
, m_xFmtFldMin(m_xBuilder->weld_formatted_spin_button("EDT_MIN"))
, m_xCbxAutoMin(m_xBuilder->weld_check_button("CBX_AUTO_MIN"))
, m_xFmtFldMax(m_xBuilder->weld_formatted_spin_button("EDT_MAX"))
, m_xCbxAutoMax(m_xBuilder->weld_check_button("CBX_AUTO_MAX"))
, m_xBxResolution(m_xBuilder->weld_widget("boxRESOLUTION"))
, m_xLB_TimeResolution(m_xBuilder->weld_combo_box("LB_TIME_RESOLUTION"))
, m_xCbx_AutoTimeResolution(m_xBuilder->weld_check_button("CBX_AUTO_TIME_RESOLUTION"))
, m_xTxtMain(m_xBuilder->weld_label("TXT_STEP_MAIN"))
, m_xFmtFldStepMain(m_xBuilder->weld_formatted_spin_button("EDT_STEP_MAIN"))
, m_xMt_MainDateStep(m_xBuilder->weld_spin_button("MT_MAIN_DATE_STEP"))
, m_xLB_MainTimeUnit(m_xBuilder->weld_combo_box("LB_MAIN_TIME_UNIT"))
, m_xCbxAutoStepMain(m_xBuilder->weld_check_button("CBX_AUTO_STEP_MAIN"))
, m_xTxtHelpCount(m_xBuilder->weld_label("TXT_STEP_HELP_COUNT"))
, m_xTxtHelp(m_xBuilder->weld_label("TXT_STEP_HELP"))
, m_xMtStepHelp(m_xBuilder->weld_spin_button("MT_STEPHELP"))
, m_xLB_HelpTimeUnit(m_xBuilder->weld_combo_box("LB_HELP_TIME_UNIT"))
, m_xCbxAutoStepHelp(m_xBuilder->weld_check_button("CBX_AUTO_STEP_HELP"))
, m_xFmtFldOrigin(m_xBuilder->weld_formatted_spin_button("EDT_ORIGIN"))
, m_xCbxAutoOrigin(m_xBuilder->weld_check_button("CBX_AUTO_ORIGIN"))
, m_xBxOrigin(m_xBuilder->weld_widget("boxORIGIN"))
{
get(m_pCbxReverse, "CBX_REVERSE");
get(m_pCbxLogarithm, "CBX_LOGARITHM");
get(m_pLB_AxisType, "LB_AXIS_TYPE");
get(m_pBxType,"boxTYPE");
m_xCbxAutoMin->connect_toggled(LINK(this, ScaleTabPage, EnableValueHdl));
m_xCbxAutoMax->connect_toggled(LINK(this, ScaleTabPage, EnableValueHdl));
m_xCbxAutoStepMain->connect_toggled(LINK(this, ScaleTabPage, EnableValueHdl));
m_xCbxAutoStepHelp->connect_toggled(LINK(this, ScaleTabPage, EnableValueHdl));
m_xCbxAutoOrigin->connect_toggled(LINK(this, ScaleTabPage, EnableValueHdl));
m_xCbx_AutoTimeResolution->connect_toggled(LINK(this, ScaleTabPage, EnableValueHdl));
get(m_pBxMinMax, "gridMINMAX");
get(m_pFmtFldMin, "EDT_MIN");
get(m_pCbxAutoMin, "CBX_AUTO_MIN");
get(m_pFmtFldMax, "EDT_MAX");
get(m_pCbxAutoMax, "CBX_AUTO_MAX");
get(m_pBxResolution, "boxRESOLUTION");
get(m_pLB_TimeResolution, "LB_TIME_RESOLUTION");
get(m_pCbx_AutoTimeResolution, "CBX_AUTO_TIME_RESOLUTION");
get(m_pTxtMain, "TXT_STEP_MAIN");
get(m_pFmtFldStepMain, "EDT_STEP_MAIN");
get(m_pMt_MainDateStep, "MT_MAIN_DATE_STEP");
get(m_pLB_MainTimeUnit, "LB_MAIN_TIME_UNIT");
get(m_pCbxAutoStepMain, "CBX_AUTO_STEP_MAIN");
get(m_pMtStepHelp, "MT_STEPHELP");
get(m_pLB_HelpTimeUnit, "LB_HELP_TIME_UNIT");
get(m_pCbxAutoStepHelp, "CBX_AUTO_STEP_HELP");
get(m_pTxtHelpCount,"TXT_STEP_HELP_COUNT");
get(m_pTxtHelp,"TXT_STEP_HELP");
get(m_pBxOrigin,"boxORIGIN");
get(m_pFmtFldOrigin, "EDT_ORIGIN");
get(m_pCbxAutoOrigin, "CBX_AUTO_ORIGIN");
m_pCbxAutoMin->SetClickHdl(LINK(this, ScaleTabPage, EnableValueHdl));
m_pCbxAutoMax->SetClickHdl(LINK(this, ScaleTabPage, EnableValueHdl));
m_pCbxAutoStepMain->SetClickHdl(LINK(this, ScaleTabPage, EnableValueHdl));
m_pCbxAutoStepHelp->SetClickHdl(LINK(this, ScaleTabPage, EnableValueHdl));
m_pCbxAutoOrigin->SetClickHdl(LINK(this, ScaleTabPage, EnableValueHdl));
m_pCbx_AutoTimeResolution->SetClickHdl(LINK(this, ScaleTabPage, EnableValueHdl));
m_pLB_AxisType->SetDropDownLineCount(3);
m_pLB_AxisType->SetSelectHdl(LINK(this, ScaleTabPage, SelectAxisTypeHdl));
m_pLB_TimeResolution->SetDropDownLineCount(3);
m_pLB_MainTimeUnit->SetDropDownLineCount(3);
m_pLB_HelpTimeUnit->SetDropDownLineCount(3);
m_pFmtFldMin->SetModifyHdl(LINK(this, ScaleTabPage, FmtFieldModifiedHdl));
m_pFmtFldMax->SetModifyHdl(LINK(this, ScaleTabPage, FmtFieldModifiedHdl));
m_pFmtFldStepMain->SetModifyHdl(LINK(this, ScaleTabPage, FmtFieldModifiedHdl));
m_pFmtFldOrigin->SetModifyHdl(LINK(this, ScaleTabPage, FmtFieldModifiedHdl));
m_xLB_AxisType->connect_changed(LINK(this, ScaleTabPage, SelectAxisTypeHdl));
HideAllControls();
}
@@ -127,43 +107,6 @@ ScaleTabPage::~ScaleTabPage()
disposeOnce();
}
void ScaleTabPage::dispose()
{
m_pCbxReverse.clear();
m_pCbxLogarithm.clear();
m_pBxType.clear();
m_pLB_AxisType.clear();
m_pBxMinMax.clear();
m_pFmtFldMin.clear();
m_pCbxAutoMin.clear();
m_pFmtFldMax.clear();
m_pCbxAutoMax.clear();
m_pBxResolution.clear();
m_pLB_TimeResolution.clear();
m_pCbx_AutoTimeResolution.clear();
m_pTxtMain.clear();
m_pFmtFldStepMain.clear();
m_pMt_MainDateStep.clear();
m_pLB_MainTimeUnit.clear();
m_pCbxAutoStepMain.clear();
m_pTxtHelpCount.clear();
m_pTxtHelp.clear();
m_pMtStepHelp.clear();
m_pLB_HelpTimeUnit.clear();
m_pCbxAutoStepHelp.clear();
m_pFmtFldOrigin.clear();
m_pCbxAutoOrigin.clear();
m_pBxOrigin.clear();
SfxTabPage::dispose();
}
IMPL_STATIC_LINK(
ScaleTabPage, FmtFieldModifiedHdl, Edit&, rEdit, void )
{
FormattedField& rFmtField = static_cast<FormattedField&>(rEdit);
rFmtField.SetDefaultValue( rFmtField.GetValue() );
}
void ScaleTabPage::EnableControls()
{
bool bValueAxis = m_nAxisType == chart2::AxisType::REALNUMBER
@@ -171,77 +114,76 @@ void ScaleTabPage::EnableControls()
|| m_nAxisType == chart2::AxisType::DATE;
bool bDateAxis = m_nAxisType == chart2::AxisType::DATE;
m_pBxType->Show(m_bAllowDateAxis);
m_xBxType->show(m_bAllowDateAxis);
m_pCbxLogarithm->Show( bValueAxis && !bDateAxis );
m_xCbxLogarithm->show( bValueAxis && !bDateAxis );
m_pBxMinMax->Show(bValueAxis);
m_xBxMinMax->show(bValueAxis);
m_pTxtMain->Show( bValueAxis );
m_pCbxAutoStepMain->Show( bValueAxis );
m_xTxtMain->show( bValueAxis );
m_xCbxAutoStepMain->show( bValueAxis );
m_pTxtHelpCount->Show( bValueAxis && !bDateAxis );
m_pTxtHelp->Show( bDateAxis );
m_pMtStepHelp->Show( bValueAxis );
m_pCbxAutoStepHelp->Show( bValueAxis );
m_xTxtHelpCount->show( bValueAxis && !bDateAxis );
m_xTxtHelp->show( bDateAxis );
m_xMtStepHelp->show( bValueAxis );
m_xCbxAutoStepHelp->show( bValueAxis );
m_pBxOrigin->Show( m_bShowAxisOrigin && bValueAxis );
m_pBxResolution->Show( bDateAxis );
m_xBxOrigin->show( m_bShowAxisOrigin && bValueAxis );
m_xBxResolution->show( bDateAxis );
bool bWasDateAxis = m_pMt_MainDateStep->IsVisible();
bool bWasDateAxis = m_xMt_MainDateStep->get_visible();
if( bWasDateAxis != bDateAxis )
{
//transport value from one to other control
if( bWasDateAxis )
lcl_setValue( *m_pFmtFldStepMain, m_pMt_MainDateStep->GetValue() );
lcl_setValue( *m_xFmtFldStepMain, m_xMt_MainDateStep->get_value() );
else
m_pMt_MainDateStep->SetValue( static_cast<sal_Int32>(m_pFmtFldStepMain->GetValue()) );
m_xMt_MainDateStep->set_value(m_xFmtFldStepMain->get_value());
}
m_pFmtFldStepMain->Show( bValueAxis && !bDateAxis );
m_pMt_MainDateStep->Show( bDateAxis );
m_xFmtFldStepMain->show( bValueAxis && !bDateAxis );
m_xMt_MainDateStep->show( bDateAxis );
m_pLB_MainTimeUnit->Show( bDateAxis );
m_pLB_HelpTimeUnit->Show( bDateAxis );
m_xLB_MainTimeUnit->show( bDateAxis );
m_xLB_HelpTimeUnit->show( bDateAxis );
EnableValueHdl(m_pCbxAutoMin);
EnableValueHdl(m_pCbxAutoMax);
EnableValueHdl(m_pCbxAutoStepMain);
EnableValueHdl(m_pCbxAutoStepHelp);
EnableValueHdl(m_pCbxAutoOrigin);
EnableValueHdl(m_pCbx_AutoTimeResolution);
EnableValueHdl(*m_xCbxAutoMin);
EnableValueHdl(*m_xCbxAutoMax);
EnableValueHdl(*m_xCbxAutoStepMain);
EnableValueHdl(*m_xCbxAutoStepHelp);
EnableValueHdl(*m_xCbxAutoOrigin);
EnableValueHdl(*m_xCbx_AutoTimeResolution);
}
IMPL_LINK( ScaleTabPage, EnableValueHdl, Button *, pButton, void )
IMPL_LINK( ScaleTabPage, EnableValueHdl, weld::ToggleButton&, rCbx, void )
{
CheckBox * pCbx = static_cast<CheckBox*>(pButton);
bool bEnable = pCbx && !pCbx->IsChecked() && pCbx->IsEnabled();
if (pCbx == m_pCbxAutoMin)
bool bEnable = !rCbx.get_active() && rCbx.get_sensitive();
if (&rCbx == m_xCbxAutoMin.get())
{
m_pFmtFldMin->Enable( bEnable );
m_xFmtFldMin->set_sensitive( bEnable );
}
else if (pCbx == m_pCbxAutoMax)
else if (&rCbx == m_xCbxAutoMax.get())
{
m_pFmtFldMax->Enable( bEnable );
m_xFmtFldMax->set_sensitive( bEnable );
}
else if (pCbx == m_pCbxAutoStepMain)
else if (&rCbx == m_xCbxAutoStepMain.get())
{
m_pFmtFldStepMain->Enable( bEnable );
m_pMt_MainDateStep->Enable( bEnable );
m_pLB_MainTimeUnit->Enable( bEnable );
m_xFmtFldStepMain->set_sensitive( bEnable );
m_xMt_MainDateStep->set_sensitive( bEnable );
m_xLB_MainTimeUnit->set_sensitive( bEnable );
}
else if (pCbx == m_pCbxAutoStepHelp)
else if (&rCbx == m_xCbxAutoStepHelp.get())
{
m_pMtStepHelp->Enable( bEnable );
m_pLB_HelpTimeUnit->Enable( bEnable );
m_xMtStepHelp->set_sensitive( bEnable );
m_xLB_HelpTimeUnit->set_sensitive( bEnable );
}
else if (pCbx == m_pCbx_AutoTimeResolution)
else if (&rCbx == m_xCbx_AutoTimeResolution.get())
{
m_pLB_TimeResolution->Enable( bEnable );
m_xLB_TimeResolution->set_sensitive( bEnable );
}
else if (pCbx == m_pCbxAutoOrigin)
else if (&rCbx == m_xCbxAutoOrigin.get())
{
m_pFmtFldOrigin->Enable( bEnable );
m_xFmtFldOrigin->set_sensitive( bEnable );
}
}
@@ -252,22 +194,22 @@ enum AxisTypeListBoxEntry
TYPE_DATE=2
};
IMPL_LINK_NOARG(ScaleTabPage, SelectAxisTypeHdl, ListBox&, void)
IMPL_LINK_NOARG(ScaleTabPage, SelectAxisTypeHdl, weld::ComboBox&, void)
{
const sal_Int32 nPos = m_pLB_AxisType->GetSelectedEntryPos();
const sal_Int32 nPos = m_xLB_AxisType->get_active();
if( nPos==TYPE_DATE )
m_nAxisType = chart2::AxisType::DATE;
else
m_nAxisType = chart2::AxisType::CATEGORY;
if( m_nAxisType == chart2::AxisType::DATE )
m_pCbxLogarithm->Check(false);
m_xCbxLogarithm->set_active(false);
EnableControls();
SetNumFormat();
}
VclPtr<SfxTabPage> ScaleTabPage::Create(TabPageParent pWindow,const SfxItemSet* rOutAttrs)
VclPtr<SfxTabPage> ScaleTabPage::Create(TabPageParent pParent, const SfxItemSet* rOutAttrs)
{
return VclPtr<ScaleTabPage>::Create(pWindow.pParent, *rOutAttrs);
return VclPtr<ScaleTabPage>::Create(pParent, *rOutAttrs);
}
bool ScaleTabPage::FillItemSet(SfxItemSet* rOutAttrs)
@@ -276,27 +218,27 @@ bool ScaleTabPage::FillItemSet(SfxItemSet* rOutAttrs)
rOutAttrs->Put(SfxInt32Item(SCHATTR_AXISTYPE, m_nAxisType));
if(m_bAllowDateAxis)
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_AUTO_DATEAXIS, m_pLB_AxisType->GetSelectedEntryPos()==TYPE_AUTO));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_AUTO_DATEAXIS, m_xLB_AxisType->get_active()==TYPE_AUTO));
bool bAutoScale = false;
if( m_nAxisType==chart2::AxisType::CATEGORY )
bAutoScale = true;//reset scaling for category charts
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_AUTO_MIN ,bAutoScale || m_pCbxAutoMin->IsChecked()));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_AUTO_MAX ,bAutoScale || m_pCbxAutoMax->IsChecked()));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_AUTO_STEP_HELP,bAutoScale || m_pCbxAutoStepHelp->IsChecked()));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_AUTO_ORIGIN ,bAutoScale || m_pCbxAutoOrigin->IsChecked()));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_LOGARITHM ,m_pCbxLogarithm->IsChecked()));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_REVERSE ,m_pCbxReverse->IsChecked()));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_AUTO_MIN ,bAutoScale || m_xCbxAutoMin->get_active()));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_AUTO_MAX ,bAutoScale || m_xCbxAutoMax->get_active()));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_AUTO_STEP_HELP,bAutoScale || m_xCbxAutoStepHelp->get_active()));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_AUTO_ORIGIN ,bAutoScale || m_xCbxAutoOrigin->get_active()));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_LOGARITHM ,m_xCbxLogarithm->get_active()));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_REVERSE ,m_xCbxReverse->get_active()));
rOutAttrs->Put(SvxDoubleItem(fMax , SCHATTR_AXIS_MAX));
rOutAttrs->Put(SvxDoubleItem(fMin , SCHATTR_AXIS_MIN));
rOutAttrs->Put(SfxInt32Item(SCHATTR_AXIS_STEP_HELP, nStepHelp));
rOutAttrs->Put(SvxDoubleItem(fOrigin , SCHATTR_AXIS_ORIGIN));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_AUTO_STEP_MAIN,bAutoScale || m_pCbxAutoStepMain->IsChecked()));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_AUTO_STEP_MAIN,bAutoScale || m_xCbxAutoStepMain->get_active()));
rOutAttrs->Put(SvxDoubleItem(fStepMain,SCHATTR_AXIS_STEP_MAIN));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_AUTO_TIME_RESOLUTION,bAutoScale || m_pCbx_AutoTimeResolution->IsChecked()));
rOutAttrs->Put(SfxBoolItem(SCHATTR_AXIS_AUTO_TIME_RESOLUTION,bAutoScale || m_xCbx_AutoTimeResolution->get_active()));
rOutAttrs->Put(SfxInt32Item(SCHATTR_AXIS_TIME_RESOLUTION,m_nTimeResolution));
rOutAttrs->Put(SfxInt32Item(SCHATTR_AXIS_MAIN_TIME_UNIT,m_nMainTimeUnit));
@@ -332,79 +274,85 @@ void ScaleTabPage::Reset(const SfxItemSet* rInAttrs)
nPos=TYPE_AUTO;
else
nPos=TYPE_TEXT;
m_pLB_AxisType->SelectEntryPos( nPos );
m_xLB_AxisType->set_active( nPos );
}
m_pCbxAutoMin->Check();
m_pCbxAutoMax->Check();
m_pCbxAutoStepMain->Check();
m_pCbxAutoStepHelp->Check();
m_pCbxAutoOrigin->Check();
m_pCbx_AutoTimeResolution->Check();
m_xCbxAutoMin->set_active(true);
m_xCbxAutoMax->set_active(true);
m_xCbxAutoStepMain->set_active(true);
m_xCbxAutoStepHelp->set_active(true);
m_xCbxAutoOrigin->set_active(true);
m_xCbx_AutoTimeResolution->set_active(true);
if (rInAttrs->GetItemState(SCHATTR_AXIS_AUTO_MIN,true,&pPoolItem) == SfxItemState::SET)
m_pCbxAutoMin->Check(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
m_xCbxAutoMin->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
if (rInAttrs->GetItemState(SCHATTR_AXIS_MIN,true, &pPoolItem) == SfxItemState::SET)
{
fMin = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue();
lcl_setValue( *m_pFmtFldMin, fMin );
lcl_setValue( *m_xFmtFldMin, fMin );
m_xFmtFldMin->save_value();
}
if (rInAttrs->GetItemState(SCHATTR_AXIS_AUTO_MAX,true, &pPoolItem) == SfxItemState::SET)
m_pCbxAutoMax->Check(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
m_xCbxAutoMax->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
if (rInAttrs->GetItemState(SCHATTR_AXIS_MAX,true, &pPoolItem) == SfxItemState::SET)
{
fMax = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue();
lcl_setValue( *m_pFmtFldMax, fMax );
lcl_setValue( *m_xFmtFldMax, fMax );
m_xFmtFldMax->save_value();
}
if (rInAttrs->GetItemState(SCHATTR_AXIS_AUTO_STEP_MAIN,true, &pPoolItem) == SfxItemState::SET)
m_pCbxAutoStepMain->Check(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
m_xCbxAutoStepMain->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
if (rInAttrs->GetItemState(SCHATTR_AXIS_STEP_MAIN,true, &pPoolItem) == SfxItemState::SET)
{
fStepMain = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue();
lcl_setValue( *m_pFmtFldStepMain, fStepMain );
m_pMt_MainDateStep->SetValue( static_cast<sal_Int32>(fStepMain) );
lcl_setValue( *m_xFmtFldStepMain, fStepMain );
m_xFmtFldStepMain->save_value();
m_xMt_MainDateStep->set_value( static_cast<sal_Int32>(fStepMain) );
m_xMt_MainDateStep->save_value();
}
if (rInAttrs->GetItemState(SCHATTR_AXIS_AUTO_STEP_HELP,true, &pPoolItem) == SfxItemState::SET)
m_pCbxAutoStepHelp->Check(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
m_xCbxAutoStepHelp->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
if (rInAttrs->GetItemState(SCHATTR_AXIS_LOGARITHM,true, &pPoolItem) == SfxItemState::SET)
m_pCbxLogarithm->Check(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
m_xCbxLogarithm->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
if (rInAttrs->GetItemState(SCHATTR_AXIS_REVERSE,true, &pPoolItem) == SfxItemState::SET)
m_pCbxReverse->Check(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
m_xCbxReverse->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
if (rInAttrs->GetItemState(SCHATTR_AXIS_STEP_HELP,true, &pPoolItem) == SfxItemState::SET)
{
nStepHelp = static_cast<const SfxInt32Item*>(pPoolItem)->GetValue();
m_pMtStepHelp->SetValue( nStepHelp );
m_xMtStepHelp->set_value( nStepHelp );
m_xMtStepHelp->save_value();
}
if (rInAttrs->GetItemState(SCHATTR_AXIS_AUTO_ORIGIN,true, &pPoolItem) == SfxItemState::SET)
m_pCbxAutoOrigin->Check(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
m_xCbxAutoOrigin->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
if (rInAttrs->GetItemState(SCHATTR_AXIS_ORIGIN,true, &pPoolItem) == SfxItemState::SET)
{
fOrigin = static_cast<const SvxDoubleItem*>(pPoolItem)->GetValue();
lcl_setValue( *m_pFmtFldOrigin, fOrigin );
lcl_setValue( *m_xFmtFldOrigin, fOrigin );
m_xFmtFldOrigin->save_value();
}
if (rInAttrs->GetItemState(SCHATTR_AXIS_AUTO_TIME_RESOLUTION,true, &pPoolItem) == SfxItemState::SET)
m_pCbx_AutoTimeResolution->Check(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
m_xCbx_AutoTimeResolution->set_active(static_cast<const SfxBoolItem*>(pPoolItem)->GetValue());
if (rInAttrs->GetItemState(SCHATTR_AXIS_TIME_RESOLUTION,true, &pPoolItem) == SfxItemState::SET)
{
m_nTimeResolution = static_cast<const SfxInt32Item*>(pPoolItem)->GetValue();
m_pLB_TimeResolution->SelectEntryPos( m_nTimeResolution );
m_xLB_TimeResolution->set_active( m_nTimeResolution );
}
if (rInAttrs->GetItemState(SCHATTR_AXIS_MAIN_TIME_UNIT,true, &pPoolItem) == SfxItemState::SET)
{
m_nMainTimeUnit = static_cast<const SfxInt32Item*>(pPoolItem)->GetValue();
m_pLB_MainTimeUnit->SelectEntryPos( m_nMainTimeUnit );
m_xLB_MainTimeUnit->set_active( m_nMainTimeUnit );
}
if (rInAttrs->GetItemState(SCHATTR_AXIS_HELP_TIME_UNIT,true, &pPoolItem) == SfxItemState::SET)
{
m_nHelpTimeUnit = static_cast<const SfxInt32Item*>(pPoolItem)->GetValue();
m_pLB_HelpTimeUnit->SelectEntryPos( m_nHelpTimeUnit );
m_xLB_HelpTimeUnit->set_active( m_nHelpTimeUnit );
}
EnableControls();
@@ -421,101 +369,101 @@ DeactivateRC ScaleTabPage::DeactivatePage(SfxItemSet* pItemSet)
bool bDateAxis = m_nAxisType == chart2::AxisType::DATE;
sal_uInt32 nMinMaxOriginFmt = m_pFmtFldMax->GetFormatKey();
sal_uInt32 nMinMaxOriginFmt = m_xFmtFldMax->get_format_key();
if (pNumFormatter->GetType(nMinMaxOriginFmt) == SvNumFormatType::TEXT)
nMinMaxOriginFmt = 0;
// numberformat_text cause numbers to fail being numbers... Shouldn't happen, but can.
sal_uInt32 nStepFmt = m_pFmtFldStepMain->GetFormatKey();
sal_uInt32 nStepFmt = m_xFmtFldStepMain->get_format_key();
if (pNumFormatter->GetType(nStepFmt) == SvNumFormatType::TEXT)
nStepFmt = 0;
Control* pControl = nullptr;
weld::Widget* pControl = nullptr;
const char* pErrStrId = nullptr;
double fDummy;
fMax = m_pFmtFldMax->GetValue();
fMin = m_pFmtFldMin->GetValue();
fOrigin = m_pFmtFldOrigin->GetValue();
fStepMain = bDateAxis ? m_pMt_MainDateStep->GetValue() : m_pFmtFldStepMain->GetValue();
nStepHelp = static_cast< sal_Int32 >( m_pMtStepHelp->GetValue());
m_nTimeResolution = m_pLB_TimeResolution->GetSelectedEntryPos();
m_nMainTimeUnit = m_pLB_MainTimeUnit->GetSelectedEntryPos();
m_nHelpTimeUnit = m_pLB_HelpTimeUnit->GetSelectedEntryPos();
fMax = m_xFmtFldMax->get_value();
fMin = m_xFmtFldMin->get_value();
fOrigin = m_xFmtFldOrigin->get_value();
fStepMain = bDateAxis ? m_xMt_MainDateStep->get_value() : m_xFmtFldStepMain->get_value();
nStepHelp = m_xMtStepHelp->get_value();
m_nTimeResolution = m_xLB_TimeResolution->get_active();
m_nMainTimeUnit = m_xLB_MainTimeUnit->get_active();
m_nHelpTimeUnit = m_xLB_HelpTimeUnit->get_active();
if( m_nAxisType != chart2::AxisType::REALNUMBER )
m_pCbxLogarithm->Show( false );
m_xCbxLogarithm->show( false );
//check which entries need user action
if ( m_pCbxLogarithm->IsChecked() &&
( ( !m_pCbxAutoMin->IsChecked() && fMin <= 0.0 )
|| ( !m_pCbxAutoMax->IsChecked() && fMax <= 0.0 ) ) )
if ( m_xCbxLogarithm->get_active() &&
( ( !m_xCbxAutoMin->get_active() && fMin <= 0.0 )
|| ( !m_xCbxAutoMax->get_active() && fMax <= 0.0 ) ) )
{
pControl = m_pFmtFldMin;
pControl = m_xFmtFldMin.get();
pErrStrId = STR_BAD_LOGARITHM;
}
// check for entries that cannot be parsed for the current number format
else if ( m_pFmtFldMin->IsModified()
&& !m_pCbxAutoMin->IsChecked()
&& !pNumFormatter->IsNumberFormat( m_pFmtFldMin->GetText(), nMinMaxOriginFmt, fDummy))
else if ( m_xFmtFldMin->get_value_changed_from_saved()
&& !m_xCbxAutoMin->get_active()
&& !pNumFormatter->IsNumberFormat( m_xFmtFldMin->get_text(), nMinMaxOriginFmt, fDummy))
{
pControl = m_pFmtFldMin;
pControl = m_xFmtFldMin.get();
pErrStrId = STR_INVALID_NUMBER;
}
else if ( m_pFmtFldMax->IsModified()
&& !m_pCbxAutoMax->IsChecked()
&& !pNumFormatter->IsNumberFormat( m_pFmtFldMax->GetText(), nMinMaxOriginFmt, fDummy))
else if ( m_xFmtFldMax->get_value_changed_from_saved()
&& !m_xCbxAutoMax->get_active()
&& !pNumFormatter->IsNumberFormat( m_xFmtFldMax->get_text(), nMinMaxOriginFmt, fDummy))
{
pControl = m_pFmtFldMax;
pControl = m_xFmtFldMax.get();
pErrStrId = STR_INVALID_NUMBER;
}
else if ( !bDateAxis && m_pFmtFldStepMain->IsModified()
&& !m_pCbxAutoStepMain->IsChecked()
&& !pNumFormatter->IsNumberFormat( m_pFmtFldStepMain->GetText(), nStepFmt, fDummy))
else if ( !bDateAxis && m_xFmtFldStepMain->get_value_changed_from_saved()
&& !m_xCbxAutoStepMain->get_active()
&& !pNumFormatter->IsNumberFormat( m_xFmtFldStepMain->get_text(), nStepFmt, fDummy))
{
pControl = m_pFmtFldStepMain;
pControl = m_xFmtFldStepMain.get();
pErrStrId = STR_INVALID_NUMBER;
}
else if (m_pFmtFldOrigin->IsModified() && !m_pCbxAutoOrigin->IsChecked() &&
!pNumFormatter->IsNumberFormat( m_pFmtFldOrigin->GetText(), nMinMaxOriginFmt, fDummy))
else if (m_xFmtFldOrigin->get_value_changed_from_saved() && !m_xCbxAutoOrigin->get_active() &&
!pNumFormatter->IsNumberFormat( m_xFmtFldOrigin->get_text(), nMinMaxOriginFmt, fDummy))
{
pControl = m_pFmtFldOrigin;
pControl = m_xFmtFldOrigin.get();
pErrStrId = STR_INVALID_NUMBER;
}
else if (!m_pCbxAutoStepMain->IsChecked() && fStepMain <= 0.0)
else if (!m_xCbxAutoStepMain->get_active() && fStepMain <= 0.0)
{
pControl = m_pFmtFldStepMain;
pControl = m_xFmtFldStepMain.get();
pErrStrId = STR_STEP_GT_ZERO;
}
else if (!m_pCbxAutoMax->IsChecked() && !m_pCbxAutoMin->IsChecked() &&
else if (!m_xCbxAutoMax->get_active() && !m_xCbxAutoMin->get_active() &&
fMin >= fMax)
{
pControl = m_pFmtFldMin;
pControl = m_xFmtFldMin.get();
pErrStrId = STR_MIN_GREATER_MAX;
}
else if( bDateAxis )
{
if( !m_pCbxAutoStepMain->IsChecked() && !m_pCbxAutoStepHelp->IsChecked() )
if( !m_xCbxAutoStepMain->get_active() && !m_xCbxAutoStepHelp->get_active() )
{
if( m_nHelpTimeUnit > m_nMainTimeUnit )
{
pControl = m_pLB_MainTimeUnit;
pControl = m_xLB_MainTimeUnit.get();
pErrStrId = STR_INVALID_INTERVALS;
}
else if( m_nHelpTimeUnit == m_nMainTimeUnit && nStepHelp > fStepMain )
{
pControl = m_pLB_MainTimeUnit;
pControl = m_xLB_MainTimeUnit.get();
pErrStrId = STR_INVALID_INTERVALS;
}
}
if( !pErrStrId && !m_pCbx_AutoTimeResolution->IsChecked() )
if( !pErrStrId && !m_xCbx_AutoTimeResolution->get_active() )
{
if( (!m_pCbxAutoStepMain->IsChecked() && m_nTimeResolution > m_nMainTimeUnit )
if( (!m_xCbxAutoStepMain->get_active() && m_nTimeResolution > m_nMainTimeUnit )
||
(!m_pCbxAutoStepHelp->IsChecked() && m_nTimeResolution > m_nHelpTimeUnit )
(!m_xCbxAutoStepHelp->get_active() && m_nTimeResolution > m_nHelpTimeUnit )
)
{
pControl = m_pLB_TimeResolution;
pControl = m_xLB_TimeResolution.get();
pErrStrId = STR_INVALID_TIME_UNIT;
}
}
@@ -533,20 +481,10 @@ DeactivateRC ScaleTabPage::DeactivatePage(SfxItemSet* pItemSet)
void ScaleTabPage::SetNumFormatter( SvNumberFormatter* pFormatter )
{
pNumFormatter = pFormatter;
m_pFmtFldMax->SetFormatter( pNumFormatter );
m_pFmtFldMin->SetFormatter( pNumFormatter );
m_pFmtFldStepMain->SetFormatter( pNumFormatter );
m_pFmtFldOrigin->SetFormatter( pNumFormatter );
// #i6278# allow more decimal places than the output format. As
// the numbers shown in the edit fields are used for input, it makes more
// sense to display the values in the input format rather than the output
// format.
m_pFmtFldMax->UseInputStringForFormatting();
m_pFmtFldMin->UseInputStringForFormatting();
m_pFmtFldStepMain->UseInputStringForFormatting();
m_pFmtFldOrigin->UseInputStringForFormatting();
m_xFmtFldMax->set_formatter( pNumFormatter );
m_xFmtFldMin->set_formatter( pNumFormatter );
m_xFmtFldStepMain->set_formatter( pNumFormatter );
m_xFmtFldOrigin->set_formatter( pNumFormatter );
SetNumFormat();
}
@@ -558,9 +496,9 @@ void ScaleTabPage::SetNumFormat()
{
sal_uLong nFmt = static_cast<sal_uLong>(static_cast<const SfxInt32Item*>(pPoolItem)->GetValue());
m_pFmtFldMax->SetFormatKey( nFmt );
m_pFmtFldMin->SetFormatKey( nFmt );
m_pFmtFldOrigin->SetFormatKey( nFmt );
m_xFmtFldMax->set_format_key(nFmt);
m_xFmtFldMin->set_format_key(nFmt);
m_xFmtFldOrigin->set_format_key(nFmt);
if( pNumFormatter )
{
@@ -592,13 +530,13 @@ void ScaleTabPage::SetNumFormat()
else
nFmt = pNumFormatter->GetStandardFormat( SvNumFormatType::DATE );
m_pFmtFldMax->SetFormatKey( nFmt );
m_pFmtFldMin->SetFormatKey( nFmt );
m_pFmtFldOrigin->SetFormatKey( nFmt );
m_xFmtFldMax->set_format_key(nFmt);
m_xFmtFldMin->set_format_key(nFmt);
m_xFmtFldOrigin->set_format_key(nFmt);
}
}
m_pFmtFldStepMain->SetFormatKey( nFmt );
m_xFmtFldStepMain->set_format_key(nFmt);
}
}
@@ -609,7 +547,7 @@ void ScaleTabPage::ShowAxisOrigin( bool bShowOrigin )
m_bShowAxisOrigin = true;
}
bool ScaleTabPage::ShowWarning(const char* pResIdMessage, Control* pControl /* = NULL */ )
bool ScaleTabPage::ShowWarning(const char* pResIdMessage, weld::Widget* pControl /* = nullptr */)
{
if (pResIdMessage == nullptr)
return false;
@@ -618,12 +556,12 @@ bool ScaleTabPage::ShowWarning(const char* pResIdMessage, Control* pControl /* =
VclMessageType::Warning, VclButtonsType::Ok,
SchResId(pResIdMessage)));
xWarn->run();
if( pControl )
if (pControl)
{
pControl->GrabFocus();
Edit* pEdit = dynamic_cast<Edit*>(pControl);
if(pEdit)
pEdit->SetSelection( Selection( 0, SELECTION_MAX ));
pControl->grab_focus();
weld::Entry* pEdit = dynamic_cast<weld::Entry*>(pControl);
if (pEdit)
pEdit->select_region(0, -1);
}
return true;
}
@@ -635,20 +573,20 @@ void ScaleTabPage::HideAllControls()
// visibility of these controls depend on axis data type, and are
// set in EnableControls().
m_pBxType->Hide();
m_pCbxLogarithm->Hide();
m_pBxMinMax->Hide();
m_pTxtMain->Hide();
m_pFmtFldStepMain->Hide();
m_pMt_MainDateStep->Hide();
m_pLB_MainTimeUnit->Hide();
m_pCbxAutoStepMain->Hide();
m_pTxtHelpCount->Hide();
m_pTxtHelp->Hide();
m_pMtStepHelp->Hide();
m_pCbxAutoStepHelp->Hide();
m_pBxOrigin->Hide();
m_pBxResolution->Hide();
m_xBxType->hide();
m_xCbxLogarithm->hide();
m_xBxMinMax->hide();
m_xTxtMain->hide();
m_xFmtFldStepMain->hide();
m_xMt_MainDateStep->hide();
m_xLB_MainTimeUnit->hide();
m_xCbxAutoStepMain->hide();
m_xTxtHelpCount->hide();
m_xTxtHelp->hide();
m_xMtStepHelp->hide();
m_xCbxAutoStepHelp->hide();
m_xBxOrigin->hide();
m_xBxResolution->hide();
}
} //namespace chart
diff --git a/chart2/source/controller/dialogs/tp_Scale.hxx b/chart2/source/controller/dialogs/tp_Scale.hxx
index 8e6c7aa..49902e4 100644
--- a/chart2/source/controller/dialogs/tp_Scale.hxx
+++ b/chart2/source/controller/dialogs/tp_Scale.hxx
@@ -32,9 +32,8 @@ namespace chart
class ScaleTabPage : public SfxTabPage
{
public:
ScaleTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs );
ScaleTabPage(TabPageParent pParent, const SfxItemSet& rInAttrs);
virtual ~ScaleTabPage() override;
virtual void dispose() override;
static VclPtr<SfxTabPage> Create( TabPageParent pParent, const SfxItemSet* rInAttrs );
virtual bool FillItemSet( SfxItemSet* rOutAttrs ) override;
@@ -48,39 +47,6 @@ public:
void ShowAxisOrigin( bool bShowOrigin );
private:
VclPtr<CheckBox> m_pCbxReverse;
VclPtr<CheckBox> m_pCbxLogarithm;
VclPtr<VclBox> m_pBxType;
VclPtr<ListBox> m_pLB_AxisType;
VclPtr<VclGrid> m_pBxMinMax;
VclPtr<FormattedField> m_pFmtFldMin;
VclPtr<CheckBox> m_pCbxAutoMin;
VclPtr<FormattedField> m_pFmtFldMax;
VclPtr<CheckBox> m_pCbxAutoMax;
VclPtr<VclBox> m_pBxResolution;
VclPtr<ListBox> m_pLB_TimeResolution;
VclPtr<CheckBox> m_pCbx_AutoTimeResolution;
VclPtr<FixedText> m_pTxtMain;
VclPtr<FormattedField> m_pFmtFldStepMain;
VclPtr<MetricField> m_pMt_MainDateStep;
VclPtr<ListBox> m_pLB_MainTimeUnit;
VclPtr<CheckBox> m_pCbxAutoStepMain;
VclPtr<FixedText> m_pTxtHelpCount;
VclPtr<FixedText> m_pTxtHelp;
VclPtr<MetricField> m_pMtStepHelp;
VclPtr<ListBox> m_pLB_HelpTimeUnit;
VclPtr<CheckBox> m_pCbxAutoStepHelp;
VclPtr<FormattedField> m_pFmtFldOrigin;
VclPtr<CheckBox> m_pCbxAutoOrigin;
VclPtr<VclBox> m_pBxOrigin;
double fMin;
double fMax;
double fStepMain;
@@ -95,11 +61,36 @@ private:
bool m_bShowAxisOrigin;
std::unique_ptr<weld::CheckButton> m_xCbxReverse;
std::unique_ptr<weld::CheckButton> m_xCbxLogarithm;
std::unique_ptr<weld::Widget> m_xBxType;
std::unique_ptr<weld::ComboBox> m_xLB_AxisType;
std::unique_ptr<weld::Widget> m_xBxMinMax;
std::unique_ptr<weld::FormattedSpinButton> m_xFmtFldMin;
std::unique_ptr<weld::CheckButton> m_xCbxAutoMin;
std::unique_ptr<weld::FormattedSpinButton> m_xFmtFldMax;
std::unique_ptr<weld::CheckButton> m_xCbxAutoMax;
std::unique_ptr<weld::Widget> m_xBxResolution;
std::unique_ptr<weld::ComboBox> m_xLB_TimeResolution;
std::unique_ptr<weld::CheckButton> m_xCbx_AutoTimeResolution;
std::unique_ptr<weld::Label> m_xTxtMain;
std::unique_ptr<weld::FormattedSpinButton> m_xFmtFldStepMain;
std::unique_ptr<weld::SpinButton> m_xMt_MainDateStep;
std::unique_ptr<weld::ComboBox> m_xLB_MainTimeUnit;
std::unique_ptr<weld::CheckButton> m_xCbxAutoStepMain;
std::unique_ptr<weld::Label> m_xTxtHelpCount;
std::unique_ptr<weld::Label> m_xTxtHelp;
std::unique_ptr<weld::SpinButton> m_xMtStepHelp;
std::unique_ptr<weld::ComboBox> m_xLB_HelpTimeUnit;
std::unique_ptr<weld::CheckButton> m_xCbxAutoStepHelp;
std::unique_ptr<weld::FormattedSpinButton> m_xFmtFldOrigin;
std::unique_ptr<weld::CheckButton> m_xCbxAutoOrigin;
std::unique_ptr<weld::Widget> m_xBxOrigin;
void EnableControls();
DECL_LINK( SelectAxisTypeHdl, ListBox&, void );
DECL_LINK( EnableValueHdl, Button*, void );
DECL_STATIC_LINK( ScaleTabPage, FmtFieldModifiedHdl, Edit&, void);
DECL_LINK(SelectAxisTypeHdl, weld::ComboBox&, void);
DECL_LINK(EnableValueHdl, weld::ToggleButton&, void);
/** shows a warning window due to an invalid input.
@@ -114,7 +105,7 @@ private:
@return false, if nResIdMessage was 0, true otherwise
*/
bool ShowWarning(const char* pResIdMessage, Control* pControl);
bool ShowWarning(const char* pResIdMessage, weld::Widget* pControl);
void HideAllControls();
};
diff --git a/chart2/uiconfig/ui/tp_AxisPositions.ui b/chart2/uiconfig/ui/tp_AxisPositions.ui
index fa5cfbe..16fcff3 100644
--- a/chart2/uiconfig/ui/tp_AxisPositions.ui
+++ b/chart2/uiconfig/ui/tp_AxisPositions.ui
@@ -1,7 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface domain="chart">
<requires lib="gtk+" version="3.18"/>
<requires lib="LibreOffice" version="1.0"/>
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">100</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment2">
<property name="upper">100</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkBox" id="tp_AxisPositions">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -35,10 +45,10 @@
<object class="GtkLabel" id="FT_CROSSES_OTHER_AXIS_AT">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_AxisPositions|FT_CROSSES_OTHER_AXIS_AT">_Cross other axis at</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">LB_CROSSES_OTHER_AXIS_AT</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -50,9 +60,6 @@
<object class="GtkComboBoxText" id="LB_CROSSES_OTHER_AXIS_AT">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="row_span_column">0</property>
<property name="entry_text_column">0</property>
<property name="id_column">1</property>
<items>
<item translatable="yes" context="tp_AxisPositions|LB_CROSSES_OTHER_AXIS_AT">Start</item>
<item translatable="yes" context="tp_AxisPositions|LB_CROSSES_OTHER_AXIS_AT">End</item>
@@ -67,9 +74,11 @@
</packing>
</child>
<child>
<object class="svtlo-FormattedField" id="EDT_CROSSES_OTHER_AXIS_AT">
<object class="GtkSpinButton" id="EDT_CROSSES_OTHER_AXIS_AT">
<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">adjustment1</property>
</object>
<packing>
<property name="expand">False</property>
@@ -78,13 +87,14 @@
</packing>
</child>
<child>
<object class="GtkComboBox" id="EDT_CROSSES_OTHER_AXIS_AT_CATEGORY">
<object class="GtkComboBoxText" id="EDT_CROSSES_OTHER_AXIS_AT_CATEGORY">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="has_entry">True</property>
<child internal-child="entry">
<object class="GtkEntry" id="combobox-entry">
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="activates_default">True</property>
</object>
</child>
</object>
@@ -104,7 +114,7 @@
<child>
<object class="GtkCheckButton" id="CB_AXIS_BETWEEN_CATEGORIES">
<property name="label" translatable="yes" context="tp_AxisPositions|CB_AXIS_BETWEEN_CATEGORIES">Axis _between categories</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>
@@ -124,8 +134,8 @@
<object class="GtkLabel" id="TXT_AXIS_LINE">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_AxisPositions|TXT_AXIS_LINE">Axis Line</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
@@ -165,10 +175,10 @@
<object class="GtkLabel" id="FT_PLACE_LABELS">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_AxisPositions|FT_PLACE_LABELS">_Place labels</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">LB_PLACE_LABELS</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -180,8 +190,6 @@
<object class="GtkComboBoxText" id="LB_PLACE_LABELS">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="entry_text_column">0</property>
<property name="id_column">1</property>
<items>
<item translatable="yes" context="tp_AxisPositions|LB_PLACE_LABELS">Near axis</item>
<item translatable="yes" context="tp_AxisPositions|LB_PLACE_LABELS">Near axis (other side)</item>
@@ -210,10 +218,10 @@
<child>
<object class="GtkLabel" id="FT_AXIS_LABEL_DISTANCE">
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_AxisPositions|FT_AXIS_LABEL_DISTANCE">_Distance</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">EDT_AXIS_LABEL_DISTANCE</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -222,8 +230,10 @@
</packing>
</child>
<child>
<object class="svtlo-FormattedField" id="EDT_AXIS_LABEL_DISTANCE">
<property name="can_focus">False</property>
<object class="GtkSpinButton" id="EDT_AXIS_LABEL_DISTANCE">
<property name="can_focus">True</property>
<property name="activates_default">True</property>
<property name="adjustment">adjustment2</property>
</object>
<packing>
<property name="expand">False</property>
@@ -246,8 +256,8 @@
<object class="GtkLabel" id="TXT_FL_LABELS">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_AxisPositions|TXT_FL_LABELS">Labels</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
@@ -288,8 +298,8 @@
<object class="GtkLabel" id="FT_MAJOR">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_AxisPositions|FT_MAJOR">Major:</property>
<property name="xalign">0</property>
<accessibility>
<relation type="label-for" target="CB_TICKS_INNER"/>
<relation type="label-for" target="CB_TICKS_OUTER"/>
@@ -298,16 +308,14 @@
<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_MINOR">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_AxisPositions|FT_MINOR">Minor:</property>
<property name="xalign">0</property>
<accessibility>
<relation type="label-for" target="CB_MINOR_INNER"/>
<relation type="label-for" target="CB_MINOR_OUTER"/>
@@ -316,15 +324,13 @@
<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="GtkCheckButton" id="CB_TICKS_INNER">
<property name="label" translatable="yes" context="tp_AxisPositions|CB_TICKS_INNER">_Inner</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>
@@ -336,15 +342,13 @@
<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="GtkCheckButton" id="CB_TICKS_OUTER">
<property name="label" translatable="yes" context="tp_AxisPositions|CB_TICKS_OUTER">_Outer</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>
@@ -356,15 +360,13 @@
<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="GtkCheckButton" id="CB_MINOR_INNER">
<property name="label" translatable="yes" context="tp_AxisPositions|CB_MINOR_INNER">I_nner</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>
@@ -376,15 +378,13 @@
<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="GtkCheckButton" id="CB_MINOR_OUTER">
<property name="label" translatable="yes" context="tp_AxisPositions|CB_MINOR_OUTER">O_uter</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>
@@ -396,8 +396,6 @@
<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>
</object>
@@ -416,10 +414,10 @@
<object class="GtkLabel" id="FT_PLACE_TICKS">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_AxisPositions|FT_PLACE_TICKS">Place _marks</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">LB_PLACE_TICKS</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -431,8 +429,6 @@
<object class="GtkComboBoxText" id="LB_PLACE_TICKS">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="entry_text_column">0</property>
<property name="id_column">1</property>
<items>
<item translatable="yes" context="tp_AxisPositions|LB_PLACE_TICKS">At labels</item>
<item translatable="yes" context="tp_AxisPositions|LB_PLACE_TICKS">At axis</item>
@@ -460,8 +456,8 @@
<object class="GtkLabel" id="TXT_FL_TICKS">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_AxisPositions|TXT_FL_TICKS">Interval Marks</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
@@ -495,7 +491,7 @@
<object class="GtkCheckButton" id="CB_MAJOR_GRID">
<property name="label" translatable="yes" context="tp_AxisPositions|CB_MAJOR_GRID">Show major _grid</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="relief">half</property>
<property name="use_underline">True</property>
@@ -505,15 +501,13 @@
<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="GtkCheckButton" id="CB_MINOR_GRID">
<property name="label" translatable="yes" context="tp_AxisPositions|CB_MINOR_GRID">_Show minor grid</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>
@@ -522,30 +516,26 @@
<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="GtkButton" id="PB_MAJOR_GRID">
<property name="label" translatable="yes" context="tp_AxisPositions|PB_MAJOR_GRID">Mo_re...</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>
<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="GtkButton" id="PB_MINOR_GRID">
<property name="label" translatable="yes" context="tp_AxisPositions|PB_MINOR_GRID">Mor_e...</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="xalign">0.49000000953674316</property>
@@ -553,8 +543,6 @@
<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>
</object>
@@ -565,8 +553,8 @@
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_AxisPositions|label2">Grids</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
diff --git a/chart2/uiconfig/ui/tp_Scale.ui b/chart2/uiconfig/ui/tp_Scale.ui
index 5257efc..6b5b1cf 100644
--- a/chart2/uiconfig/ui/tp_Scale.ui
+++ b/chart2/uiconfig/ui/tp_Scale.ui
@@ -1,34 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface domain="chart">
<requires lib="gtk+" version="3.18"/>
<requires lib="LibreOffice" version="1.0"/>
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">100</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment2">
<property name="upper">100</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment3">
<property name="upper">100</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment4">
<property name="upper">100</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustmentINTERVAL">
<property name="lower">1</property>
<property name="upper">100</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkListStore" id="liststoreDATE">
<columns>
<!-- column-name gchararray1 -->
<column type="gchararray"/>
<!-- column-name guint1 -->
<column type="guint"/>
</columns>
<data>
<row>
<col id="0" translatable="yes" context="tp_Scale|liststoreDATE">Days</col>
<col id="1">0</col>
</row>
<row>
<col id="0" translatable="yes" context="tp_Scale|liststoreDATE">Months</col>
<col id="1">1</col>
</row>
<row>
<col id="0" translatable="yes" context="tp_Scale|liststoreDATE">Years</col>
<col id="1">2</col>
</row>
</data>
<object class="GtkAdjustment" id="adjustmentINTERVAL1">
<property name="lower">1</property>
<property name="upper">100</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkFrame" id="tp_Scale">
<property name="visible">True</property>
@@ -58,7 +62,7 @@
<object class="GtkCheckButton" id="CBX_REVERSE">
<property name="label" translatable="yes" context="tp_Scale|CBX_REVERSE">_Reverse direction</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>
@@ -74,7 +78,7 @@
<object class="GtkCheckButton" id="CBX_LOGARITHM">
<property name="label" translatable="yes" context="tp_Scale|CBX_LOGARITHM">_Logarithmic scale</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>
@@ -95,10 +99,10 @@
<object class="GtkLabel" id="TXT_AXIS_TYPE">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_Scale|TXT_AXIS_TYPE">T_ype</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">LB_AXIS_TYPE</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -110,8 +114,6 @@
<object class="GtkComboBoxText" id="LB_AXIS_TYPE">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="entry_text_column">0</property>
<property name="id_column">1</property>
<items>
<item translatable="yes" context="tp_Scale|LB_AXIS_TYPE">Automatic</item>
<item translatable="yes" context="tp_Scale|LB_AXIS_TYPE">Text</item>
@@ -148,39 +150,35 @@
<object class="GtkLabel" id="TXT_MIN">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_Scale|TXT_MIN">_Minimum</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">EDT_MIN</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="TXT_MAX">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_Scale|TXT_MAX">Ma_ximum</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">EDT_MAX</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="GtkCheckButton" id="CBX_AUTO_MIN">
<property name="label" translatable="yes" context="tp_Scale|CBX_AUTO_MIN">_Automatic</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>
@@ -189,15 +187,13 @@
<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="GtkCheckButton" id="CBX_AUTO_MAX">
<property name="label" translatable="yes" context="tp_Scale|CBX_AUTO_MAX">A_utomatic</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>
@@ -206,32 +202,32 @@
<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="svtlo-FormattedField" id="EDT_MIN">
<object class="GtkSpinButton" id="EDT_MIN">
<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="width_chars">10</property>
<property name="adjustment">adjustment1</property>
</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="svtlo-FormattedField" id="EDT_MAX">
<object class="GtkSpinButton" id="EDT_MAX">
<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="width_chars">10</property>
<property name="adjustment">adjustment2</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>
</object>
@@ -250,10 +246,10 @@
<object class="GtkLabel" id="TXT_TIME_RESOLUTION">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_Scale|TXT_TIME_RESOLUTION">R_esolution</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">LB_TIME_RESOLUTION</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -262,10 +258,14 @@
</packing>
</child>
<child>
<object class="GtkComboBox" id="LB_TIME_RESOLUTION">
<object class="GtkComboBoxText" id="LB_TIME_RESOLUTION">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="model">liststoreDATE</property>
<items>
<item id="0" translatable="yes" context="tp_Scale|liststoreDATE">Days</item>
<item id="1" translatable="yes" context="tp_Scale|liststoreDATE">Months</item>
<item id="2" translatable="yes" context="tp_Scale|liststoreDATE">Years</item>
</items>
</object>
<packing>
<property name="expand">False</property>
@@ -277,7 +277,7 @@
<object class="GtkCheckButton" id="CBX_AUTO_TIME_RESOLUTION">
<property name="label" translatable="yes" context="tp_Scale|CBX_AUTO_TIME_RESOLUTION">Automat_ic</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>
@@ -305,9 +305,9 @@
<object class="GtkLabel" id="TXT_STEP_MAIN">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_Scale|TXT_STEP_MAIN">Ma_jor interval</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -326,9 +326,11 @@
<property name="can_focus">False</property>
<property name="spacing">12</property>
<child>
<object class="GtkSpinButton" id="MT_MAIN_DATE_STEP:0">
<object class="GtkSpinButton" id="MT_MAIN_DATE_STEP">
<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="width_chars">10</property>
<property name="adjustment">adjustmentINTERVAL</property>
</object>
<packing>
@@ -338,10 +340,14 @@
</packing>
</child>
<child>
<object class="GtkComboBox" id="LB_MAIN_TIME_UNIT">
<object class="GtkComboBoxText" id="LB_MAIN_TIME_UNIT">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="model">liststoreDATE</property>
<items>
<item id="0" translatable="yes" context="tp_Scale|liststoreDATE">Days</item>
<item id="1" translatable="yes" context="tp_Scale|liststoreDATE">Months</item>
<item id="2" translatable="yes" context="tp_Scale|liststoreDATE">Years</item>
</items>
</object>
<packing>
<property name="expand">False</property>
@@ -357,9 +363,12 @@
</packing>
</child>
<child>
<object class="svtlo-FormattedField" id="EDT_STEP_MAIN">
<object class="GtkSpinButton" id="EDT_STEP_MAIN">
<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="width_chars">10</property>
<property name="adjustment">adjustment4</property>
</object>
<packing>
<property name="expand">False</property>
@@ -378,7 +387,7 @@
<object class="GtkCheckButton" id="CBX_AUTO_STEP_MAIN">
<property name="label" translatable="yes" context="tp_Scale|CBX_AUTO_STEP_MAIN">Au_tomatic</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>
@@ -411,9 +420,9 @@
<object class="GtkLabel" id="TXT_STEP_HELP">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_Scale|TXT_STEP_HELP">Minor inter_val</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -425,9 +434,9 @@
<object class="GtkLabel" id="TXT_STEP_HELP_COUNT">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_Scale|TXT_STEP_HELP_COUNT">Minor inter_val count</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -443,10 +452,12 @@
</packing>
</child>
<child>
<object class="GtkSpinButton" id="MT_STEPHELP:0">
<object class="GtkSpinButton" id="MT_STEPHELP">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="adjustment">adjustmentINTERVAL</property>
<property name="can_focus">True</property>
<property name="activates_default">True</property>
<property name="width_chars">10</property>
<property name="adjustment">adjustmentINTERVAL1</property>
</object>
<packing>
<property name="expand">False</property>
@@ -455,10 +466,14 @@
</packing>
</child>
<child>
<object class="GtkComboBox" id="LB_HELP_TIME_UNIT">
<object class="GtkComboBoxText" id="LB_HELP_TIME_UNIT">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="model">liststoreDATE</property>
<items>
<item id="0" translatable="yes" context="tp_Scale|liststoreDATE">Days</item>
<item id="1" translatable="yes" context="tp_Scale|liststoreDATE">Months</item>
<item id="2" translatable="yes" context="tp_Scale|liststoreDATE">Years</item>
</items>
</object>
<packing>
<property name="expand">False</property>
@@ -470,7 +485,7 @@
<object class="GtkCheckButton" id="CBX_AUTO_STEP_HELP">
<property name="label" translatable="yes" context="tp_Scale|CBX_AUTO_STEP_HELP">Aut_omatic</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>
@@ -498,9 +513,9 @@
<object class="GtkLabel" id="TXT_ORIGIN">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_Scale|TXT_ORIGIN">Re_ference value</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -509,9 +524,12 @@
</packing>
</child>
<child>
<object class="svtlo-FormattedField" id="EDT_ORIGIN:0">
<object class="GtkSpinButton" id="EDT_ORIGIN">
<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="width_chars">10</property>
<property name="adjustment">adjustment3</property>
</object>
<packing>
<property name="expand">False</property>
@@ -523,7 +541,7 @@
<object class="GtkCheckButton" id="CBX_AUTO_ORIGIN">
<property name="label" translatable="yes" context="tp_Scale|CBX_AUTO_ORIGIN">Automat_ic</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>
@@ -550,8 +568,8 @@
<object class="GtkLabel" id="FL_SCALE">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="tp_Scale|FL_SCALE">Scale</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
@@ -563,10 +581,10 @@
<widget name="LB_AXIS_TYPE"/>
<widget name="EDT_MIN"/>
<widget name="EDT_MAX"/>
<widget name="MT_MAIN_DATE_STEP:0"/>
<widget name="MT_MAIN_DATE_STEP"/>
<widget name="EDT_STEP_MAIN"/>
<widget name="MT_STEPHELP:0"/>
<widget name="EDT_ORIGIN:0"/>
<widget name="MT_STEPHELP"/>
<widget name="EDT_ORIGIN"/>
<widget name="LB_TIME_RESOLUTION"/>
<widget name="LB_MAIN_TIME_UNIT"/>
<widget name="LB_HELP_TIME_UNIT"/>
diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in
index 8d9c6d0..1f1e3cd 100644
--- a/extras/source/glade/libreoffice-catalog.xml.in
+++ b/extras/source/glade/libreoffice-catalog.xml.in
@@ -175,9 +175,6 @@
<glade-widget-class title="AutoComplete MultiLine Edit" name="cuilo-AutoCompleteMultiListBox"
generic-name="MultiLineEdit" parent="GtkTextView"
icon-name="widget-gtk-textview"/>
<glade-widget-class title="SvtFormattedField" name="svtlo-FormattedField"
generic-name="Formatted Field" parent="GtkSpinButton"
icon-name="widget-gtk-textentry"/>
<glade-widget-class title="Address MultiLine Edit" name="swuilo-AddressMultiLineEdit"
generic-name="AddressMultiLineEdit" parent="GtkTextView"
icon-name="widget-gtk-textview"/>
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index dcc59a2..a5a0c7c 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -715,6 +715,8 @@ public:
}
virtual void set_formatter(SvNumberFormatter* pFormatter) = 0;
virtual sal_Int32 get_format_key() const = 0;
virtual void set_format_key(sal_Int32 nFormatKey) = 0;
void connect_value_changed(const Link<FormattedSpinButton&, void>& rLink)
{
diff --git a/solenv/sanitizers/ui/modules/schart.suppr b/solenv/sanitizers/ui/modules/schart.suppr
index cabe450..d26296f 100644
--- a/solenv/sanitizers/ui/modules/schart.suppr
+++ b/solenv/sanitizers/ui/modules/schart.suppr
@@ -29,6 +29,7 @@ chart2/uiconfig/ui/tp_axisLabel.ui://GtkSpinButton[@id='OrientDegree'] no-labell
chart2/uiconfig/ui/tp_axisLabel.ui://GtkLabel[@id='degreeL'] orphan-label
chart2/uiconfig/ui/tp_axisLabel.ui://GtkLabel[@id='labelABCD'] orphan-label
chart2/uiconfig/ui/tp_axisLabel.ui://GtkLabel[@id='textdirL'] orphan-label
chart2/uiconfig/ui/tp_AxisPositions.ui://GtkSpinButton[@id='EDT_CROSSES_OTHER_AXIS_AT'] no-labelled-by
chart2/uiconfig/ui/tp_ChartType.ui://GtkLabel[@id='FT_CAPTION_FOR_WIZARD'] orphan-label
chart2/uiconfig/ui/tp_ChartType.ui://GtkTreeView[@id='charttype:border'] no-labelled-by
chart2/uiconfig/ui/tp_DataLabel.ui://GtkLabel[@id='CT_LABEL_DIAL'] orphan-label
@@ -50,15 +51,15 @@ chart2/uiconfig/ui/tp_RangeChooser.ui://GtkLabel[@id='FT_CAPTION_FOR_WIZARD'] or
chart2/uiconfig/ui/tp_RangeChooser.ui://GtkLabel[@id='STR_PAGE_DATA_RANGE'] orphan-label
chart2/uiconfig/ui/tp_SeriesToAxis.ui://GtkLabel[@id='FT_MISSING_VALUES'] orphan-label
chart2/uiconfig/ui/tp_Scale.ui://GtkLabel[@id='TXT_STEP_MAIN'] orphan-label
chart2/uiconfig/ui/tp_Scale.ui://GtkSpinButton[@id='MT_MAIN_DATE_STEP:0'] no-labelled-by
chart2/uiconfig/ui/tp_Scale.ui://GtkSpinButton[@id='MT_MAIN_DATE_STEP'] no-labelled-by
chart2/uiconfig/ui/tp_Scale.ui://GtkComboBox[@id='LB_MAIN_TIME_UNIT'] no-labelled-by
chart2/uiconfig/ui/tp_Scale.ui://svtlo-FormattedField[@id='EDT_STEP_MAIN'] no-labelled-by
chart2/uiconfig/ui/tp_Scale.ui://GtkSpinButton[@id='EDT_STEP_MAIN'] no-labelled-by
chart2/uiconfig/ui/tp_Scale.ui://GtkLabel[@id='TXT_STEP_HELP'] orphan-label
chart2/uiconfig/ui/tp_Scale.ui://GtkLabel[@id='TXT_STEP_HELP_COUNT'] orphan-label
chart2/uiconfig/ui/tp_Scale.ui://GtkSpinButton[@id='MT_STEPHELP:0'] no-labelled-by
chart2/uiconfig/ui/tp_Scale.ui://GtkSpinButton[@id='MT_STEPHELP'] no-labelled-by
chart2/uiconfig/ui/tp_Scale.ui://GtkComboBox[@id='LB_HELP_TIME_UNIT'] no-labelled-by
chart2/uiconfig/ui/tp_Scale.ui://GtkLabel[@id='TXT_ORIGIN'] orphan-label
chart2/uiconfig/ui/tp_Scale.ui://svtlo-FormattedField[@id='EDT_ORIGIN:0'] no-labelled-by
chart2/uiconfig/ui/tp_Scale.ui://GtkSpinButton[@id='EDT_ORIGIN'] no-labelled-by
chart2/uiconfig/ui/tp_Trendline.ui://GtkLabel[@id='label3'] orphan-label
chart2/uiconfig/ui/tp_Trendline.ui://GtkSpinButton[@id='degree'] no-labelled-by
chart2/uiconfig/ui/tp_Trendline.ui://GtkLabel[@id='label4'] orphan-label
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 82f1138..ade8338 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -2093,6 +2093,11 @@ public:
: SalInstanceEntry(pButton, bTakeOwnership)
, m_xButton(pButton)
{
// #i6278# allow more decimal places than the output format. As
// the numbers shown in the edit fields are used for input, it makes more
// sense to display the values in the input format rather than the output
// format.
m_xButton->UseInputStringForFormatting();
}
virtual double get_value() const override
@@ -2121,6 +2126,16 @@ public:
{
m_xButton->SetFormatter(pFormatter);
}
virtual sal_Int32 get_format_key() const override
{
return m_xButton->GetFormatKey();
}
virtual void set_format_key(sal_Int32 nFormatKey) override
{
m_xButton->SetFormatKey(nFormatKey);
}
};
class SalInstanceLabel : public SalInstanceWidget, public virtual weld::Label
diff --git a/vcl/source/control/fmtfield.cxx b/vcl/source/control/fmtfield.cxx
index 280bf06..d9e2b01 100644
--- a/vcl/source/control/fmtfield.cxx
+++ b/vcl/source/control/fmtfield.cxx
@@ -320,8 +320,6 @@ FormattedField::FormattedField(vcl::Window* pParent, WinBits nStyle)
{
}
VCL_BUILDER_FACTORY_ARGS(FormattedField, WB_BORDER | WB_SPIN)
void FormattedField::SetText(const OUString& rStr)
{
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index d23daa5..2ffe595 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -4540,7 +4540,7 @@ private:
}
else
{
m_pFormatter->GetOutputString(dVal, m_nFormatKey, sNewText, &m_pLastOutputColor);
m_pFormatter->GetInputLineString(dVal, m_nFormatKey, sNewText);
}
set_text(sNewText);
return true;
@@ -4658,6 +4658,16 @@ public:
signal_output();
}
virtual sal_Int32 get_format_key() const override
{
return m_nFormatKey;
}
virtual void set_format_key(sal_Int32 nFormatKey) override
{
m_nFormatKey = nFormatKey;
}
virtual ~GtkInstanceFormattedSpinButton() override
{
g_signal_handler_disconnect(m_pButton, m_nInputSignalId);