summaryrefslogtreecommitdiff
path: root/chart2/source/controller/dialogs/tp_Scale.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'chart2/source/controller/dialogs/tp_Scale.cxx')
-rw-r--r--chart2/source/controller/dialogs/tp_Scale.cxx152
1 files changed, 58 insertions, 94 deletions
diff --git a/chart2/source/controller/dialogs/tp_Scale.cxx b/chart2/source/controller/dialogs/tp_Scale.cxx
index c2bf42744a50..d799fd31b89d 100644
--- a/chart2/source/controller/dialogs/tp_Scale.cxx
+++ b/chart2/source/controller/dialogs/tp_Scale.cxx
@@ -37,6 +37,7 @@
#include "Strings.hrc"
#include "chartview/ChartSfxItemIds.hxx"
#include "NoWarningThisInCTOR.hxx"
+#include "AxisHelper.hxx"
#ifndef _SVX_SVXIDS_HRC
#include <svx/svxids.hrc>
@@ -74,7 +75,7 @@ namespace chart
namespace
{
-void lcl_shiftControls( Control& rEdit, CheckBox& rAuto, long nNewXPos )
+void lcl_shiftControls( Control& rEdit, Control& rAuto, long nNewXPos )
{
Point aPos( rEdit.GetPosPixel() );
long nShift = nNewXPos - aPos.X();
@@ -86,12 +87,24 @@ void lcl_shiftControls( Control& rEdit, CheckBox& rAuto, long nNewXPos )
rAuto.SetPosPixel(aPos);
}
+void lcl_placeControlsAtY( Control& rTop, Control& rBottom, long nNewYPos )
+{
+ Point aPos( rTop.GetPosPixel() );
+ long nShift = nNewYPos - aPos.Y();
+ aPos.Y() = nNewYPos;
+ rTop.SetPosPixel(aPos);
+
+ aPos = rBottom.GetPosPixel();
+ aPos.Y() += nShift;
+ rBottom.SetPosPixel(aPos);
+}
+
}
ScaleTabPage::ScaleTabPage(Window* pWindow,const SfxItemSet& rInAttrs) :
- SfxTabPage(pWindow, SchResId(TP_SCALE_Y), rInAttrs),
+ SfxTabPage(pWindow, SchResId(TP_SCALE), rInAttrs),
- aFlScale(this, SchResId(FL_SCALE_Y)),
+ aFlScale(this, SchResId(FL_SCALE)),
aTxtMin (this, SchResId (TXT_MIN)),
aFmtFldMin(this, SchResId(EDT_MIN)),
aCbxAutoMin(this, SchResId(CBX_AUTO_MIN)),
@@ -104,27 +117,22 @@ ScaleTabPage::ScaleTabPage(Window* pWindow,const SfxItemSet& rInAttrs) :
aTxtHelp (this, SchResId (TXT_STEP_HELP)),
aMtStepHelp (this, SchResId (MT_STEPHELP)),
aCbxAutoStepHelp(this, SchResId(CBX_AUTO_STEP_HELP)),
+
aTxtOrigin (this, SchResId (TXT_ORIGIN)),
aFmtFldOrigin(this, SchResId(EDT_ORIGIN)),
aCbxAutoOrigin(this, SchResId(CBX_AUTO_ORIGIN)),
+
aCbxLogarithm(this, SchResId(CBX_LOGARITHM)),
aCbxReverse(this, SchResId(CBX_REVERSE)),
- aFlTicks(this,SchResId(FL_TICKS)),
- aCbxTicksInner(this, SchResId(CBX_TICKS_INNER)),
- aCbxTicksOuter(this, SchResId(CBX_TICKS_OUTER)),
-
- aFlHelpTicks(this,SchResId(FL_HELPTICKS)),
- aCbxHelpTicksInner(this, SchResId(CBX_HELPTICKS_INNER)),
- aCbxHelpTicksOuter(this, SchResId(CBX_HELPTICKS_OUTER)),
-
fMin(0.0),
fMax(0.0),
fStepMain(0.0),
nStepHelp(0),
fOrigin(0.0),
nAxisType(chart2::AxisType::REALNUMBER),
- pNumFormatter(NULL)
+ pNumFormatter(NULL),
+ m_bShowAxisOrigin(false)
{
FreeResource();
SetExchangeSupport();
@@ -167,37 +175,6 @@ ScaleTabPage::ScaleTabPage(Window* pWindow,const SfxItemSet& rInAttrs) :
lcl_shiftControls( aFmtFldStepMain, aCbxAutoStepMain, nNewXPos );
lcl_shiftControls( aMtStepHelp, aCbxAutoStepHelp, nNewXPos );
lcl_shiftControls( aFmtFldOrigin, aCbxAutoOrigin, nNewXPos );
-
- //tickmark controls
- long nCheckWidth = 1 + ::std::max( aCbxTicksInner.CalcMinimumSize().Width(), aCbxHelpTicksInner.CalcMinimumSize().Width() );
- aSize = aCbxTicksInner.GetSizePixel();
- aSize.Width() = nCheckWidth;
-
- long nCheckDistance = aCbxTicksInner.LogicToPixel( Size(RSC_SP_CTRL_X, 0), MapMode(MAP_APPFONT) ).Width();
- long nNewCheckXPos = aCbxTicksInner.GetPosPixel().X() + nCheckWidth + nCheckDistance;
-
- aCbxTicksOuter.SetSizePixel( aCbxTicksOuter.CalcMinimumSize() );
- aCbxHelpTicksOuter.SetSizePixel( aCbxHelpTicksOuter.CalcMinimumSize() );
-
- nWidthOfOtherControls = aCbxTicksOuter.GetSizePixel().Width();
- nLeftSpace = nDialogWidth - nNewCheckXPos - nWidthOfOtherControls;
-
- if(nLeftSpace>=0)
- {
- aCbxTicksInner.SetSizePixel(aSize);
- aCbxHelpTicksInner.SetSizePixel(aSize);
-
- if( nNewCheckXPos < nNewXPos && (nDialogWidth - nNewXPos - nWidthOfOtherControls)>=0 )
- nNewCheckXPos = nNewXPos;//alignement looks nicer
-
- Point aPos( aCbxTicksOuter.GetPosPixel() );
- aPos.X() = nNewCheckXPos;
- aCbxTicksOuter.SetPosPixel(aPos);
-
- aPos = aCbxHelpTicksOuter.GetPosPixel();
- aPos.X() = nNewCheckXPos;
- aCbxHelpTicksOuter.SetPosPixel(aPos);
- }
}
}
@@ -224,12 +201,20 @@ void ScaleTabPage::EnableControls()
aTxtHelp.Enable( bEnableForValueOrPercentAxis );
aMtStepHelp.Enable( bEnableForValueOrPercentAxis );
aCbxAutoStepHelp.Enable( bEnableForValueOrPercentAxis );
- aTxtOrigin.Enable( bEnableForValueOrPercentAxis );
- aFmtFldOrigin.Enable( bEnableForValueOrPercentAxis );
- aCbxAutoOrigin.Enable( bEnableForValueOrPercentAxis );
aCbxLogarithm.Enable( bEnableForValueOrPercentAxis );
+
+ aTxtOrigin.Show( m_bShowAxisOrigin && bEnableForValueOrPercentAxis );
+ aFmtFldOrigin.Show( m_bShowAxisOrigin && bEnableForValueOrPercentAxis );
+ aCbxAutoOrigin.Show( m_bShowAxisOrigin && bEnableForValueOrPercentAxis );
+
+ long nNewYPos = aTxtOrigin.GetPosPixel().Y();
+ if( m_bShowAxisOrigin )
+ nNewYPos += ( aTxtOrigin.GetPosPixel().Y() - aTxtHelp.GetPosPixel().Y() );
+ lcl_placeControlsAtY( aCbxLogarithm, aCbxReverse, nNewYPos );
}
+
+
IMPL_LINK( ScaleTabPage, EnableValueHdl, CheckBox *, pCbx )
{
if (pCbx == &aCbxAutoMin)
@@ -265,21 +250,6 @@ BOOL ScaleTabPage::FillItemSet(SfxItemSet& rOutAttrs)
{
DBG_ASSERT( pNumFormatter, "No NumberFormatter available" );
- long nTicks=0;
- long nHelpTicks=0;
-
- if(aCbxHelpTicksInner.IsChecked())
- nHelpTicks|=CHAXIS_MARK_INNER;
- if(aCbxHelpTicksOuter.IsChecked())
- nHelpTicks|=CHAXIS_MARK_OUTER;
- if(aCbxTicksInner.IsChecked())
- nTicks|=CHAXIS_MARK_INNER;
- if(aCbxTicksOuter.IsChecked())
- nTicks|=CHAXIS_MARK_OUTER;
-
- rOutAttrs.Put(SfxInt32Item(SCHATTR_AXIS_TICKS,nTicks));
- rOutAttrs.Put(SfxInt32Item(SCHATTR_AXIS_HELPTICKS,nHelpTicks));
-
rOutAttrs.Put(SfxBoolItem(SCHATTR_AXIS_AUTO_MIN ,aCbxAutoMin.IsChecked()));
rOutAttrs.Put(SfxBoolItem(SCHATTR_AXIS_AUTO_MAX ,aCbxAutoMax.IsChecked()));
rOutAttrs.Put(SfxBoolItem(SCHATTR_AXIS_AUTO_STEP_HELP,aCbxAutoStepHelp.IsChecked()));
@@ -311,17 +281,6 @@ void ScaleTabPage::Reset(const SfxItemSet& rInAttrs)
EnableControls();
}
- long nTicks=0,nHelpTicks=0;
- if(rInAttrs.GetItemState(SCHATTR_AXIS_TICKS,TRUE, &pPoolItem)== SFX_ITEM_SET)
- nTicks=((const SfxInt32Item*)pPoolItem)->GetValue();
- if(rInAttrs.GetItemState(SCHATTR_AXIS_HELPTICKS,TRUE, &pPoolItem)== SFX_ITEM_SET)
- nHelpTicks=((const SfxInt32Item*)pPoolItem)->GetValue();
-
- aCbxHelpTicksInner.Check(BOOL(nHelpTicks&CHAXIS_MARK_INNER));
- aCbxHelpTicksOuter.Check(BOOL(nHelpTicks&CHAXIS_MARK_OUTER));
- aCbxTicksInner.Check(BOOL(nTicks&CHAXIS_MARK_INNER));
- aCbxTicksOuter.Check(BOOL(nTicks&CHAXIS_MARK_OUTER));
-
if (rInAttrs.GetItemState(SCHATTR_AXIS_AUTO_MIN,TRUE,&pPoolItem) == SFX_ITEM_SET)
aCbxAutoMin.Check(((const SfxBoolItem*)pPoolItem)->GetValue());
@@ -421,17 +380,6 @@ int ScaleTabPage::DeactivatePage(SfxItemSet* pItemSet)
pEdit = &aFmtFldStepMain;
nErrStrId = STR_STEP_GT_ZERO;
}
- //user often forgets to switch visibility of help tickmarks on
- if( !aCbxAutoStepHelp.IsChecked() && aMtStepHelp.IsModified() && nStepHelp > 1
- && !aCbxHelpTicksInner.IsChecked() && !aCbxHelpTicksOuter.IsChecked() )
- //&& !aCbxHelpTicksInner.IsModified() && !aCbxHelpTicksOuter.IsModified() )
- {
- //check help ticks like main ticks
- if(aCbxTicksInner.IsChecked())
- aCbxHelpTicksInner.Check();
- if(aCbxTicksOuter.IsChecked())
- aCbxHelpTicksOuter.Check();
- }
//check wich entries need user action
@@ -511,24 +459,40 @@ void ScaleTabPage::SetNumFormat()
aFmtFldMin.SetFormatKey( nFmt );
aFmtFldOrigin.SetFormatKey( nFmt );
- // for steps use standard format if date or time format is chosen
- short eType = pNumFormatter->GetType( nFmt );
- if( pNumFormatter &&
- ( eType == NUMBERFORMAT_DATE ||
- eType == NUMBERFORMAT_TIME ||
- eType == NUMBERFORMAT_DATETIME ) )
+ if( pNumFormatter )
{
- const SvNumberformat* pFormat = pNumFormatter->GetEntry( nFmt );
- if( pFormat )
- nFmt = pNumFormatter->GetStandardFormat( pFormat->GetLanguage());
- else
- nFmt = pNumFormatter->GetStandardIndex();
+ short eType = pNumFormatter->GetType( nFmt );
+ if( eType == NUMBERFORMAT_DATE )
+ {
+ // for intervals use standard format for dates (so you can enter a number of days)
+ const SvNumberformat* pFormat = pNumFormatter->GetEntry( nFmt );
+ if( pFormat )
+ nFmt = pNumFormatter->GetStandardIndex( pFormat->GetLanguage());
+ else
+ nFmt = pNumFormatter->GetStandardIndex();
+ }
+ else if( eType == NUMBERFORMAT_DATETIME )
+ {
+ // for intervals use time format for date times
+ const SvNumberformat* pFormat = pNumFormatter->GetEntry( nFmt );
+ if( pFormat )
+ nFmt = pNumFormatter->GetStandardFormat( NUMBERFORMAT_TIME, pFormat->GetLanguage() );
+ else
+ nFmt = pNumFormatter->GetStandardFormat( NUMBERFORMAT_TIME );
+ }
}
aFmtFldStepMain.SetFormatKey( nFmt );
}
}
+void ScaleTabPage::ShowAxisOrigin( bool bShowOrigin )
+{
+ m_bShowAxisOrigin = bShowOrigin;
+ if( !AxisHelper::isAxisPositioningEnabled() )
+ m_bShowAxisOrigin = true;
+}
+
bool ScaleTabPage::ShowWarning( USHORT nResIdMessage, Edit * pControl /* = NULL */ )
{
if( nResIdMessage == 0 )