Index: sc/inc/global.hxx =================================================================== RCS file: /cvs/sc/sc/inc/global.hxx,v retrieving revision 1.42 diff -u -p -u -r1.42 global.hxx --- sc/inc/global.hxx 13 Jan 2005 17:21:00 -0000 1.42 +++ sc/inc/global.hxx 11 Apr 2005 11:36:29 -0000 @@ -818,7 +818,11 @@ enum ScQueryOp SC_TOPVAL, SC_BOTVAL, SC_TOPPERC, - SC_BOTPERC + SC_BOTPERC, + SC_CONTAINS, + SC_DOES_NOT_CONTAIN, + SC_BEGINS_WITH, + SC_ENDS_WITH }; // ----------------------------------------------------------------------- Index: sc/source/ui/src/filter.src =================================================================== RCS file: /cvs/sc/sc/source/ui/src/filter.src,v retrieving revision 1.54 diff -u -p -u -r1.54 filter.src --- sc/source/ui/src/filter.src 18 Mar 2005 15:17:32 -0000 1.54 +++ sc/source/ui/src/filter.src 11 Apr 2005 11:36:29 -0000 @@ -180,16 +180,20 @@ ModelessDialog RID_SCDLG_FILTER }; stringlist [ en-US ] = { - < "=" ; Default ; > ; + < "Equals" ; Default ; > ; < "<" ; Default ; > ; < ">" ; Default ; > ; < "<=" ; Default ; > ; < ">=" ; Default ; > ; - < "<>" ; Default ; > ; + < "Not equals" ; Default ; > ; < "Largest" ; Default ; > ; < "Smallest" ; Default ; > ; < "Largest %" ; Default ; > ; < "Smallest %" ; Default ; > ; + < "Contains" ; Default ; > ; + < "Does not Contain" ; Default ; > ; + < "Begins with" ; Default ; > ; + < "Ends with" ; Default ; > ; }; }; ListBox LB_COND2 @@ -214,16 +218,20 @@ ModelessDialog RID_SCDLG_FILTER }; stringlist [ en-US ] = { - < "=" ; Default ; > ; + < "Equals" ; Default ; > ; < "<" ; Default ; > ; < ">" ; Default ; > ; < "<=" ; Default ; > ; < ">=" ; Default ; > ; - < "<>" ; Default ; > ; + < "Not equals" ; Default ; > ; < "Largest" ; Default ; > ; < "Smallest" ; Default ; > ; < "Largest %" ; Default ; > ; < "Smallest %" ; Default ; > ; + < "Contains" ; Default ; > ; + < "Does not Contain" ; Default ; > ; + < "Begins with" ; Default ; > ; + < "Ends with" ; Default ; > ; }; }; ListBox LB_COND3 @@ -248,16 +256,20 @@ ModelessDialog RID_SCDLG_FILTER }; stringlist [ en-US ] = { - < "=" ; Default ; > ; + < "Equals" ; Default ; > ; < "<" ; Default ; > ; < ">" ; Default ; > ; < "<=" ; Default ; > ; < ">=" ; Default ; > ; - < "<>" ; Default ; > ; + < "Not equals" ; Default ; > ; < "Largest" ; Default ; > ; < "Smallest" ; Default ; > ; < "Largest %" ; Default ; > ; < "Smallest %" ; Default ; > ; + < "Contains" ; Default ; > ; + < "Does not Contain" ; Default ; > ; + < "Begins with" ; Default ; > ; + < "Ends with" ; Default ; > ; }; }; ComboBox ED_VAL1 --- sc/source/ui/dbgui/filtdlg.cxx 2004-07-23 16:21:24.000000000 +0530 +++ sc/source/ui/dbgui/filtdlg.cxx 2006-02-18 21:43:53.163351280 +0530 @@ -572,6 +572,8 @@ ScQueryItem* ScFilterDlg::GetOutputItem( bCopyPosOk = ( SCA_VALID == (nResult & SCA_VALID) ); } + theParam.bRegExp = aBtnRegExp.IsChecked(); + for ( i = 0; i < 3; i++ ) { USHORT nField = aFieldLbArr[i]->GetSelectEntryPos(); @@ -605,6 +607,39 @@ ScQueryItem* ScFilterDlg::GetOutputItem( } else { + String tmp; + if (eOp == SC_BEGINS_WITH) + { + tmp.AssignAscii("^"); + tmp.Append(aStrVal); + tmp.AppendAscii(".*"); + aStrVal.Assign(tmp); + eOp = SC_EQUAL; + theParam.bRegExp = TRUE; + } + else if (eOp == SC_ENDS_WITH) + { + tmp.AssignAscii(".*"); + tmp.Append(aStrVal); + tmp.AppendAscii("$"); + aStrVal.Assign(tmp); + eOp = SC_EQUAL; + theParam.bRegExp = TRUE; + } + else if (eOp == SC_CONTAINS || eOp == SC_DOES_NOT_CONTAIN) + { + tmp.AssignAscii(".*"); + tmp.Append(aStrVal); + tmp.AppendAscii(".*"); + aStrVal.Assign (tmp); + theParam.bRegExp = TRUE; + } + + if (eOp == SC_CONTAINS) + eOp = SC_EQUAL; + else if (eOp == SC_DOES_NOT_CONTAIN) + eOp = SC_NOT_EQUAL; + *rEntry.pStr = aStrVal; rEntry.nVal = 0; rEntry.bQueryByString = TRUE; @@ -642,7 +677,7 @@ ScQueryItem* ScFilterDlg::GetOutputItem( theParam.bByRow = TRUE; theParam.bDuplicate = !aBtnUnique.IsChecked(); theParam.bCaseSens = aBtnCase.IsChecked(); - theParam.bRegExp = aBtnRegExp.IsChecked(); + theParam.bDestPers = aBtnDestPers.IsChecked(); // nur die drei eingestellten - alles andere zuruecksetzen