[Libreoffice-commits] core.git: 3 commits - sc/inc sc/source
Markus Mohrhard
markus.mohrhard at collabora.co.uk
Sat Mar 28 11:56:09 PDT 2015
sc/inc/globstr.hrc | 5 +
sc/source/ui/condformat/condformatdlgentry.cxx | 83 +++++++++++++++++++------
sc/source/ui/inc/condformatdlg.hrc | 2
sc/source/ui/inc/condformatdlgentry.hxx | 10 ++-
sc/source/ui/src/condformatdlg.src | 6 +
sc/source/ui/src/globstr.src | 8 ++
6 files changed, 92 insertions(+), 22 deletions(-)
New commits:
commit 73779a5ba01d513d1eee498b77ef985bd1c9f1fc
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sat Mar 28 19:19:04 2015 +0100
show warning also for existing entries, related tdf#42897
Change-Id: I80e215387852a1aa4ca0165ba62f307389abee32
diff --git a/sc/source/ui/condformat/condformatdlgentry.cxx b/sc/source/ui/condformat/condformatdlgentry.cxx
index ce184d6..a7ea722 100644
--- a/sc/source/ui/condformat/condformatdlgentry.cxx
+++ b/sc/source/ui/condformat/condformatdlgentry.cxx
@@ -215,12 +215,15 @@ ScConditionFrmtEntry::ScConditionFrmtEntry( vcl::Window* pParent, ScDocument* pD
maEdVal1.Show();
maEdVal1.SetText(pFormatEntry->GetExpression(maPos, 0));
maEdVal2.Hide();
+ OnEdChanged(&maEdVal1);
break;
case 2:
maEdVal1.Show();
maEdVal1.SetText(pFormatEntry->GetExpression(maPos, 0));
+ OnEdChanged(&maEdVal1);
maEdVal2.Show();
maEdVal2.SetText(pFormatEntry->GetExpression(maPos, 1));
+ OnEdChanged(&maEdVal2);
break;
}
}
commit c276ca28262c4dc690849d89aa246a308dba1b25
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sat Mar 28 19:13:40 2015 +0100
let it sound a bit less dramatic, related tdf#42897
Change-Id: Ie387f8e12efb1624ff56d7e25afd27deb0f1135b
diff --git a/sc/source/ui/condformat/condformatdlgentry.cxx b/sc/source/ui/condformat/condformatdlgentry.cxx
index 4fd949d..ce184d6 100644
--- a/sc/source/ui/condformat/condformatdlgentry.cxx
+++ b/sc/source/ui/condformat/condformatdlgentry.cxx
@@ -299,7 +299,7 @@ IMPL_LINK(ScConditionFrmtEntry, OnEdChanged, Edit*, pEdit)
( ( op == ocBad ) && ( t == formula::svString ) )
)
{
- pEdit->SetControlBackground(COL_LIGHTRED);
+ pEdit->SetControlBackground(COL_YELLOW);
maFtVal.SetText(ScGlobal::GetRscString(STR_UNQUOTED_STRING));
return 0;
}
diff --git a/sc/source/ui/src/globstr.src b/sc/source/ui/src/globstr.src
index 616342b..40b6b93 100644
--- a/sc/source/ui/src/globstr.src
+++ b/sc/source/ui/src/globstr.src
@@ -2083,7 +2083,7 @@ Resource RID_GLOBSTR
};
String STR_UNQUOTED_STRING
{
- Text [ en-US ] = "Strings must be quoted, otherwise they might be interpreted as an address or col/row name!";
+ Text [ en-US ] = "Strings without quotes are interpreted as column/row labels.";
};
String STR_ENTER_VALUE
{
commit fd28dea50930797652afbdce6992bea08c56caa0
Author: Laszlo Kis-Adam <dfighter1985 at gmail.com>
Date: Fri Mar 20 02:14:38 2015 +0100
tdf#42897 Warn the user if string without quote is entered as condition value.
Change-Id: I5b30b608c0192b434ff237513ed7fbbf5af43f11
diff --git a/sc/inc/globstr.hrc b/sc/inc/globstr.hrc
index eab98cc..9ef50d5 100644
--- a/sc/inc/globstr.hrc
+++ b/sc/inc/globstr.hrc
@@ -695,7 +695,10 @@
#define STR_UNDO_CONDFORMAT 531
#define STR_UNDO_FORMULA_TO_VALUE 532
-#define SC_GLOBSTR_STR_COUNT 533 /**< the count of permanently resident strings */
+#define STR_UNQUOTED_STRING 533
+#define STR_ENTER_VALUE 534
+
+#define SC_GLOBSTR_STR_COUNT 535 /**< the count of permanently resident strings */
#endif
diff --git a/sc/source/ui/condformat/condformatdlgentry.cxx b/sc/source/ui/condformat/condformatdlgentry.cxx
index 87c7f45..4fd949d 100644
--- a/sc/source/ui/condformat/condformatdlgentry.cxx
+++ b/sc/source/ui/condformat/condformatdlgentry.cxx
@@ -23,9 +23,11 @@
#include <svx/drawitem.hxx>
#include <vcl/msgbox.hxx>
#include <vcl/settings.hxx>
+#include <formula/token.hxx>
#include "tokenarray.hxx"
#include "stlpool.hxx"
#include "tabvwsh.hxx"
+#include "simpleformulacalc.hxx"
#include "colorformat.hxx"
@@ -124,23 +126,6 @@ void ScCondFrmtEntry::Deselect()
SetHeight();
}
-IMPL_LINK(ScCondFrmtEntry, EdModifyHdl, Edit*, pEdit)
-{
- OUString aFormula = pEdit->GetText();
- ScCompiler aComp( mpDoc, maPos );
- aComp.SetGrammar( mpDoc->GetGrammar() );
- boost::scoped_ptr<ScTokenArray> mpCode(aComp.CompileString(aFormula));
- if(mpCode->GetCodeError())
- {
- pEdit->SetControlBackground(COL_LIGHTRED);
- }
- else
- {
- pEdit->SetControlBackground(GetSettings().GetStyleSettings().GetWindowColor());
- }
- return 0;
-}
-
//condition
namespace {
@@ -197,6 +182,7 @@ ScConditionFrmtEntry::ScConditionFrmtEntry( vcl::Window* pParent, ScDocument* pD
maLbCondType( this, ScResId( LB_CELLIS_TYPE ) ),
maEdVal1( this, NULL, NULL, ScResId( ED_VAL1 ) ),
maEdVal2( this, NULL, NULL, ScResId( ED_VAL2 ) ),
+ maFtVal( this, ScResId( FT_VAL ) ),
maFtStyle( this, ScResId( FT_STYLE ) ),
maLbStyle( this, ScResId( LB_STYLE ) ),
maWdPreview( this, ScResId( WD_PREVIEW ) ),
@@ -256,8 +242,8 @@ void ScConditionFrmtEntry::Init(ScCondFormatDlg* pDialogParent)
maEdVal1.SetStyle( maEdVal1.GetStyle() | WB_FORCECTRLBACKGROUND );
maEdVal2.SetStyle( maEdVal2.GetStyle() | WB_FORCECTRLBACKGROUND );
- maEdVal1.SetModifyHdl( LINK( this, ScCondFrmtEntry, EdModifyHdl ) );
- maEdVal2.SetModifyHdl( LINK( this, ScCondFrmtEntry, EdModifyHdl ) );
+ maEdVal1.SetModifyHdl( LINK( this, ScConditionFrmtEntry, OnEdChanged ) );
+ maEdVal2.SetModifyHdl( LINK( this, ScConditionFrmtEntry, OnEdChanged ) );
FillStyleListBox( mpDoc, maLbStyle );
maLbStyle.SetSelectHdl( LINK( this, ScConditionFrmtEntry, StyleSelectHdl ) );
@@ -283,6 +269,59 @@ ScFormatEntry* ScConditionFrmtEntry::createConditionEntry() const
return pEntry;
}
+IMPL_LINK(ScConditionFrmtEntry, OnEdChanged, Edit*, pEdit)
+{
+ OUString aFormula = pEdit->GetText();
+
+ if( aFormula.isEmpty() )
+ {
+ maFtVal.SetText(ScGlobal::GetRscString(STR_ENTER_VALUE));
+ return 0;
+ }
+
+ ScCompiler aComp( mpDoc, maPos );
+ aComp.SetGrammar( mpDoc->GetGrammar() );
+ boost::scoped_ptr<ScTokenArray> ta(aComp.CompileString(aFormula));
+
+ // Error, warn the user
+ if( ta->GetCodeError() )
+ {
+ pEdit->SetControlBackground(COL_LIGHTRED);
+ maFtVal.SetText(ScGlobal::GetRscString(STR_VALID_DEFERROR));
+ return 0;
+ }
+
+ // Recognized col/row name or string token, warn the user
+ formula::FormulaToken* token = ta->First();
+ formula::StackVar t = token->GetType();
+ OpCode op = token->GetOpCode();
+ if( ( op == ocColRowName ) ||
+ ( ( op == ocBad ) && ( t == formula::svString ) )
+ )
+ {
+ pEdit->SetControlBackground(COL_LIGHTRED);
+ maFtVal.SetText(ScGlobal::GetRscString(STR_UNQUOTED_STRING));
+ return 0;
+ }
+
+ pEdit->SetControlBackground(GetSettings().GetStyleSettings().GetWindowColor());
+ maFtVal.SetText("");
+ return 0;
+}
+
+void ScConditionFrmtEntry::Select()
+{
+ maFtVal.Show();
+ ScCondFrmtEntry::Select();
+}
+
+void ScConditionFrmtEntry::Deselect()
+{
+ maFtVal.Hide();
+ ScCondFrmtEntry::Deselect();
+}
+
+
sal_Int32 ScConditionFrmtEntry::ConditionModeToEntryPos( ScConditionMode eMode ) const
{
for ( sal_Int32 i = 0; i < NUM_COND_ENTRIES; ++i )
@@ -994,14 +1033,17 @@ IMPL_LINK_NOARG( ScConditionFrmtEntry, ConditionTypeSelectHdl )
case 0:
maEdVal1.Hide();
maEdVal2.Hide();
+ maFtVal.Hide();
break;
case 1:
maEdVal1.Show();
maEdVal2.Hide();
+ maFtVal.Show();
break;
case 2:
maEdVal1.Show();
maEdVal2.Show();
+ maFtVal.Show();
break;
}
diff --git a/sc/source/ui/inc/condformatdlg.hrc b/sc/source/ui/inc/condformatdlg.hrc
index 5aa27e6..af801f5 100644
--- a/sc/source/ui/inc/condformatdlg.hrc
+++ b/sc/source/ui/inc/condformatdlg.hrc
@@ -55,4 +55,6 @@
#define FT_ICON_SET_ENTRY_TEXT 49
#define ED_ICON_SET_ENTRY_VALUE 50
+#define FT_VAL 51
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/inc/condformatdlgentry.hxx b/sc/source/ui/inc/condformatdlgentry.hxx
index 99b3c7f..0ed7a5b 100644
--- a/sc/source/ui/inc/condformatdlgentry.hxx
+++ b/sc/source/ui/inc/condformatdlgentry.hxx
@@ -59,8 +59,8 @@ protected:
DECL_LINK( EdModifyHdl, Edit* );
- void Select();
- void Deselect();
+ virtual void Select();
+ virtual void Deselect();
virtual OUString GetExpressionString() = 0;
@@ -88,6 +88,7 @@ class ScConditionFrmtEntry : public ScCondFrmtEntry, public SfxListener
ListBox maLbCondType;
formula::RefEdit maEdVal1;
formula::RefEdit maEdVal2;
+ FixedText maFtVal;
FixedText maFtStyle;
ListBox maLbStyle;
SvxFontPrevWindow maWdPreview;
@@ -103,6 +104,7 @@ class ScConditionFrmtEntry : public ScCondFrmtEntry, public SfxListener
void Init(ScCondFormatDlg* pDialogParent);
DECL_LINK( StyleSelectHdl, void* );
DECL_LINK( ConditionTypeSelectHdl, void* );
+ DECL_LINK( OnEdChanged, Edit* );
// Searches the lookup table for the entry position, given condition mode
sal_Int32 ConditionModeToEntryPos( ScConditionMode eMode ) const;
@@ -111,6 +113,10 @@ class ScConditionFrmtEntry : public ScCondFrmtEntry, public SfxListener
// Returns the number of edit fields used for a given condition mode
sal_Int32 GetNumberEditFields( ScConditionMode eMode ) const;
+protected:
+ virtual void Select() SAL_OVERRIDE;
+ virtual void Deselect() SAL_OVERRIDE;
+
public:
ScConditionFrmtEntry( vcl::Window* pParent, ScDocument* pDoc, ScCondFormatDlg* pDialogParent,
const ScAddress& rPos, const ScCondFormatEntry* pFormatEntry = NULL );
diff --git a/sc/source/ui/src/condformatdlg.src b/sc/source/ui/src/condformatdlg.src
index 68e91e9..d086dca 100644
--- a/sc/source/ui/src/condformatdlg.src
+++ b/sc/source/ui/src/condformatdlg.src
@@ -190,6 +190,12 @@ Control RID_COND_ENTRY
Text [ en-US ] = "Example";
Border = TRUE;
};
+ FixedText FT_VAL
+ {
+ Pos = MAP_APPFONT( 5, 48 );
+ Size = MAP_APPFONT( 300, 12 );
+ Text[ en-US ] = "Enter a value!";
+ };
Edit ED_COL_SCALE_MIN
{
Pos = MAP_APPFONT( 5, 48 );
diff --git a/sc/source/ui/src/globstr.src b/sc/source/ui/src/globstr.src
index 94be7b8..616342b 100644
--- a/sc/source/ui/src/globstr.src
+++ b/sc/source/ui/src/globstr.src
@@ -2081,6 +2081,14 @@ Resource RID_GLOBSTR
{
Text [ en-US ] = "Convert Formula To Value";
};
+ String STR_UNQUOTED_STRING
+ {
+ Text [ en-US ] = "Strings must be quoted, otherwise they might be interpreted as an address or col/row name!";
+ };
+ String STR_ENTER_VALUE
+ {
+ Text[ en-US ] = "Enter a value!";
+ };
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list