Files
libreoffice/sw/source/ui/uiview/viewsrch.cxx

836 lines
27 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
re-base on ALv2 code. Includes: Patches contributed by Oliver-Rainer Wittmann sw34bf06: #i117783# - Writer's implementation of XPagePrintable - apply print settings to new printing routines http://svn.apache.org/viewvc?view=revision&revision=1172115 sw34bf06: #o12311627# use <rtl_random> methods to create unique ids for list styles and list ids http://svn.apache.org/viewvc?view=revision&revision=1172112 sw34bf06 #i114725#,#i115828# - method <SwDoc::ClearDoc()> - clear list structures completely http://svn.apache.org/viewvc?view=revision&revision=1172122 i#118572 - remove ui string and help content regarding usage of Java Mail in Writer's Mail Merge as Java Mail is not used. http://svn.apache.org/viewvc?view=revision&revision=1197035 Patches contributed by Mathias Bauer cws mba34issues01: #i117718#: provide filter name in case storage of medium does not allow to detect one http://svn.apache.org/viewvc?view=revision&revision=1172350 cws mba34issues01: #i117721#: directly provide parameters retrieved from SfxMedium http://svn.apache.org/viewvc?view=revision&revision=1172353 gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 http://svn.apache.org/viewvc?view=revision&revision=1396797 http://svn.apache.org/viewvc?view=revision&revision=1397315 cws mba34issues01: #i117723#: convert assertion into trace http://svn.apache.org/viewvc?view=revision&revision=1172355 cws mba34issues01: #i117699#: keep layout alive until swdoc dies http://svn.apache.org/viewvc?view=revision&revision=1172362 cws mba34issues01: #i117943#: missing color attributes in RTF clipboard http://svn.apache.org/viewvc?view=revision&revision=1172363 Patch contributed by Henning Brinkmann imported patch i#103878 http://svn.apache.org/viewvc?view=revision&revision=1172109 Patches contributed by Michael Stahl sw34bf06: #i117955#: WW8 export: disable storing of section breaks in endnotes http://svn.apache.org/viewvc?view=revision&revision=1172119 Patch contributed by imacat Fixed the Asian language work count. http://svn.apache.org/viewvc?view=revision&revision=1241345 Patch contributed by Pedro Giffuni i#20878 - Add comment with BZ issue for reference. http://svn.apache.org/viewvc?view=revision&revision=1244517 Patch contributed by Andre Fischer Do not add targets for junit tests when junit is disabled. http://svn.apache.org/viewvc?view=revision&revision=1241508 add writerperfect dependency.
2011-03-31 10:05:04 +02:00
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
2000-09-18 16:15:01 +00:00
#include <string>
#include <boost/scoped_ptr.hpp>
2001-03-27 20:47:24 +00:00
#include <hintids.hxx>
#include <com/sun/star/util/SearchOptions.hpp>
#include <svl/cjkoptions.hxx>
#include <svl/ctloptions.hxx>
2000-09-18 16:15:01 +00:00
#include <svx/pageitem.hxx>
#include <svl/whiter.hxx>
2000-09-18 16:15:01 +00:00
#include <sfx2/dispatch.hxx>
#include <svl/stritem.hxx>
#include <unotools/textsearch.hxx>
#include <svl/itempool.hxx>
#include <svl/eitem.hxx>
2009-12-10 23:06:35 +01:00
#include <svl/srchitem.hxx>
2010-10-17 00:19:29 -05:00
#include <sal/macros.h>
2000-09-18 16:15:01 +00:00
#include <sfx2/request.hxx>
#include <svx/srchdlg.hxx>
#include <svx/dialmgr.hxx>
#include <svx/dialogs.hrc>
2000-09-18 16:15:01 +00:00
#include <vcl/msgbox.hxx>
#include <vcl/wrkwin.hxx>
#include "editeng/unolingu.hxx"
#include <swmodule.hxx>
2000-09-18 16:15:01 +00:00
#include <swwait.hxx>
2001-03-27 20:47:24 +00:00
#include <workctrl.hxx>
#include <view.hxx>
#include <wrtsh.hxx>
#include <swundo.hxx> // fuer Undo-Ids
#include <uitool.hxx>
#include <cmdid.h>
#include <docsh.hxx>
#include <doc.hxx>
#include <unocrsr.hxx>
2000-09-18 16:15:01 +00:00
2001-03-27 20:47:24 +00:00
#include <view.hrc>
#include <SwRewriter.hxx>
#include <comcore.hrc>
2000-09-18 16:15:01 +00:00
#include "PostItMgr.hxx"
using namespace com::sun::star;
using namespace ::com::sun::star::i18n;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::util;
2000-09-18 16:15:01 +00:00
/*--------------------------------------------------------------------
Beschreibung: Search Parameter
--------------------------------------------------------------------*/
struct SwSearchOptions
{
SwDocPositions eStart, eEnd;
sal_Bool bDontWrap;
2000-09-18 16:15:01 +00:00
SwSearchOptions( SwWrtShell* pSh, sal_Bool bBackward );
2000-09-18 16:15:01 +00:00
};
inline Window* GetParentWindow( SvxSearchDialog* m_pSrchDlg )
2000-09-18 16:15:01 +00:00
{
Window* pWin;
if( m_pSrchDlg && m_pSrchDlg->IsVisible() )
pWin = m_pSrchDlg;
2000-09-18 16:15:01 +00:00
else
pWin = 0;
return pWin;
}
inline void ShowNotFoundInfoBox( SvxSearchDialog* m_pSrchDlg )
{
Window* pParentWindow = GetParentWindow( m_pSrchDlg );
InfoBox aBox( pParentWindow, SW_RES(MSG_NOT_FOUND));
if (pParentWindow)
{
aBox.SetText(pParentWindow->GetText());
}
else
{
aBox.SetText(SVX_RESSTR(RID_SVXSTR_FINDBAR_FIND));
}
aBox.Execute();
}
void SwView::ExecSearch(SfxRequest& rReq, sal_Bool bNoMessage)
2000-09-18 16:15:01 +00:00
{
const SfxItemSet* pArgs = rReq.GetArgs();
const SfxPoolItem* pItem = 0;
const sal_uInt16 nId = SvxSearchDialogWrapper::GetChildWindowId();
2002-06-27 08:01:46 +00:00
SvxSearchDialogWrapper *pWrp = (SvxSearchDialogWrapper*)GetViewFrame()->GetChildWindow(nId);
sal_Bool bQuiet = sal_False;
if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(SID_SEARCH_QUIET, sal_False, &pItem))
bQuiet = ((const SfxBoolItem*) pItem)->GetValue();
sal_Bool bApi = bQuiet | bNoMessage;
2000-09-18 16:15:01 +00:00
sal_uInt16 nSlot = rReq.GetSlot();
if (nSlot == FN_REPEAT_SEARCH && !m_pSrchItem)
2000-09-18 16:15:01 +00:00
{
if(bApi)
{
rReq.SetReturnValue(SfxBoolItem(nSlot, sal_False));
2000-09-18 16:15:01 +00:00
nSlot = 0;
}
}
if( m_pWrtShell->IsBlockMode() )
m_pWrtShell->LeaveBlockMode();
2000-09-18 16:15:01 +00:00
switch (nSlot)
{
// erstmal Nichts tun
case SID_SEARCH_ITEM:
{
delete m_pSrchItem;
m_pSrchItem = (SvxSearchItem*) pArgs->Get(SID_SEARCH_ITEM).Clone();
2000-09-18 16:15:01 +00:00
}
break;
case FID_SEARCH_ON:
m_bJustOpened = true;
2000-09-18 16:15:01 +00:00
GetViewFrame()->GetBindings().Invalidate(SID_SEARCH_ITEM);
break;
case FID_SEARCH_OFF:
if(pArgs)
{
// Dialog abmelden
delete m_pSrchItem;
m_pSrchItem = (SvxSearchItem*) pArgs->Get(SID_SEARCH_ITEM).Clone();
2000-09-18 16:15:01 +00:00
DELETEZ( m_pSrchList );
DELETEZ( m_pReplList );
2000-09-18 16:15:01 +00:00
if ( pWrp )
{
m_pSrchDlg = static_cast <SvxSearchDialog*> (pWrp->getDialog ());
2000-09-18 16:15:01 +00:00
// die Search / Replace -Items merken wir uns
const SearchAttrItemList* pList = m_pSrchDlg->GetSearchItemList();
2000-09-18 16:15:01 +00:00
if( pList && pList->Count() )
m_pSrchList = new SearchAttrItemList( *pList );
2000-09-18 16:15:01 +00:00
if( 0 != (pList = m_pSrchDlg->GetReplaceItemList() ) &&
2000-09-18 16:15:01 +00:00
pList->Count() )
m_pReplList = new SearchAttrItemList( *pList );
2000-09-18 16:15:01 +00:00
}
}
break;
case FN_REPEAT_SEARCH:
case FID_SEARCH_NOW:
{
2000-09-18 16:15:01 +00:00
{
if(FID_SEARCH_NOW == nSlot && !rReq.IsAPI())
SwView::SetMoveType(NID_SRCH_REP);
if ( pWrp )
{
m_pSrchDlg = static_cast <SvxSearchDialog*> (pWrp->getDialog ());
2000-09-18 16:15:01 +00:00
}
else
m_pSrchDlg = 0;
2000-09-18 16:15:01 +00:00
}
if (m_pSrchDlg)
2000-09-18 16:15:01 +00:00
{
DELETEZ( m_pSrchList );
DELETEZ( m_pReplList );
2000-09-18 16:15:01 +00:00
const SearchAttrItemList* pList = m_pSrchDlg->GetSearchItemList();
2000-09-18 16:15:01 +00:00
if( pList && pList->Count() )
m_pSrchList = new SearchAttrItemList( *pList );
2000-09-18 16:15:01 +00:00
if( 0 != (pList = m_pSrchDlg->GetReplaceItemList() ) &&
2000-09-18 16:15:01 +00:00
pList->Count() )
m_pReplList = new SearchAttrItemList( *pList );
2000-09-18 16:15:01 +00:00
}
if (nSlot == FN_REPEAT_SEARCH)
{
OSL_ENSURE(m_pSrchItem, "SearchItem missing");
if( !m_pSrchItem )
m_pSrchItem = new SvxSearchItem(SID_SEARCH_ITEM);
2000-09-18 16:15:01 +00:00
}
else
{
// SearchItem aus Request besorgen
OSL_ENSURE(pArgs, "Args missing");
if ( pArgs )
{
delete m_pSrchItem;
m_pSrchItem = (SvxSearchItem*) pArgs->Get(SID_SEARCH_ITEM).Clone();
}
2000-09-18 16:15:01 +00:00
}
switch (m_pSrchItem->GetCommand())
2000-09-18 16:15:01 +00:00
{
case SVX_SEARCHCMD_FIND:
{
sal_Bool bRet = SearchAndWrap(bApi);
2000-09-18 16:15:01 +00:00
if( bRet )
Scroll(m_pWrtShell->GetCharRect().SVRect());
2000-09-18 16:15:01 +00:00
rReq.SetReturnValue(SfxBoolItem(nSlot, bRet));
}
break;
case SVX_SEARCHCMD_FIND_ALL:
{
sal_Bool bRet = SearchAll();
2000-09-18 16:15:01 +00:00
if( !bRet )
{
if( !bApi )
{
ShowNotFoundInfoBox( m_pSrchDlg );
2000-09-18 16:15:01 +00:00
}
m_bFound = sal_False;
2000-09-18 16:15:01 +00:00
}
rReq.SetReturnValue(SfxBoolItem(nSlot, bRet));
}
break;
case SVX_SEARCHCMD_REPLACE:
{
// 1) Selektion ersetzen (nicht. wenn nur Attribute ersetzt
// werden sollen)
//JP 27.04.95: warum ?
// was ist, wenn man das gefundene nur attributieren will??
sal_uInt16 nCmd = SVX_SEARCHCMD_FIND;
if( m_pSrchItem->GetReplaceString().Len() ||
!m_pReplList )
2000-09-18 16:15:01 +00:00
{
// Verhindern, dass - falls der Suchstring im
// Ersetzungsstring enthalten ist - der ersetzte String
// noch einmal gefunden wird.
sal_Bool bBack = m_pSrchItem->GetBackward();
2000-09-18 16:15:01 +00:00
if (bBack)
m_pWrtShell->Push();
String aReplace( m_pSrchItem->GetReplaceString() );
SearchOptions aTmp( m_pSrchItem->GetSearchOptions() );
String *pBackRef = ReplaceBackReferences( aTmp, m_pWrtShell->GetCrsr() );
if( pBackRef )
m_pSrchItem->SetReplaceString( *pBackRef );
2000-09-18 16:15:01 +00:00
Replace();
if( pBackRef )
{
m_pSrchItem->SetReplaceString( aReplace );
delete pBackRef;
}
2000-09-18 16:15:01 +00:00
if (bBack)
{
m_pWrtShell->Pop();
m_pWrtShell->SwapPam();
2000-09-18 16:15:01 +00:00
}
}
else if( m_pReplList )
2000-09-18 16:15:01 +00:00
nCmd = SVX_SEARCHCMD_REPLACE;
// 2) Weiter suchen (ohne zu ersetzen!)
sal_uInt16 nOldCmd = m_pSrchItem->GetCommand();
m_pSrchItem->SetCommand( nCmd );
sal_Bool bRet = SearchAndWrap(bApi);
2000-09-18 16:15:01 +00:00
if( bRet )
Scroll( m_pWrtShell->GetCharRect().SVRect());
m_pSrchItem->SetCommand( nOldCmd );
2000-09-18 16:15:01 +00:00
rReq.SetReturnValue(SfxBoolItem(nSlot, bRet));
}
break;
case SVX_SEARCHCMD_REPLACE_ALL:
{
SwSearchOptions aOpts( m_pWrtShell, m_pSrchItem->GetBackward() );
m_bExtra = sal_False;
sal_uLong nFound;
2000-09-18 16:15:01 +00:00
{ //Scope for SwWait-Object
SwWait aWait( *GetDocShell(), sal_True );
m_pWrtShell->StartAllAction();
if (!m_pSrchItem->GetSelection())
{
// if we don't want to search in the selection...
m_pWrtShell->KillSelection(0, false);
// i#8288 "replace all" should not change cursor
// position, so save current cursor
m_pWrtShell->Push();
if (DOCPOS_START == aOpts.eEnd)
{
m_pWrtShell->EndDoc();
}
else
{
m_pWrtShell->SttDoc();
}
}
2000-09-18 16:15:01 +00:00
nFound = FUNC_Search( aOpts );
if (!m_pSrchItem->GetSelection())
{
// create it just to overwrite it with stack cursor
m_pWrtShell->CreateCrsr();
// i#8288 restore the original cursor position
m_pWrtShell->Pop(false);
}
m_pWrtShell->EndAllAction();
2000-09-18 16:15:01 +00:00
}
rReq.SetReturnValue(SfxBoolItem(nSlot, nFound != 0 && ULONG_MAX != nFound));
2000-09-18 16:15:01 +00:00
if( !nFound )
{
if( !bApi )
{
ShowNotFoundInfoBox( m_pSrchDlg );
2000-09-18 16:15:01 +00:00
}
m_bFound = sal_False;
2000-09-18 16:15:01 +00:00
return;
}
if( !bApi && ULONG_MAX != nFound)
2000-09-18 16:15:01 +00:00
{
String aText( SW_RES( STR_NB_REPLACED ) );
const xub_StrLen nPos = aText.Search( OUString("XX") );
2000-09-18 16:15:01 +00:00
aText.Erase( nPos, 2 );
aText.Insert( OUString::number( nFound ), nPos );
Window* pParentWindow = GetParentWindow( m_pSrchDlg );
2000-09-18 16:15:01 +00:00
InfoBox( pParentWindow, aText ).Execute();
}
}
break;
}
uno::Reference< frame::XDispatchRecorder > xRecorder =
GetViewFrame()->GetBindings().GetRecorder();
//prevent additional dialogs in recorded macros
if ( xRecorder.is() )
rReq.AppendItem(SfxBoolItem(SID_SEARCH_QUIET, sal_True));
2002-06-27 08:01:46 +00:00
rReq.Done();
}
break;
2000-09-18 16:15:01 +00:00
case FID_SEARCH_SEARCHSET:
case FID_SEARCH_REPLACESET:
{
static const sal_uInt16 aNormalAttr[] =
2000-09-18 16:15:01 +00:00
{
/* 0 */ RES_CHRATR_CASEMAP, RES_CHRATR_CASEMAP,
/* 2 */ RES_CHRATR_COLOR, RES_CHRATR_POSTURE,
/* 4 */ RES_CHRATR_SHADOWED, RES_CHRATR_WORDLINEMODE,
/* 6 */ RES_CHRATR_BLINK, RES_CHRATR_BLINK,
/* 8 */ RES_CHRATR_BACKGROUND, RES_CHRATR_BACKGROUND,
/*10 */ RES_CHRATR_ROTATE, RES_CHRATR_ROTATE,
/*12 */ RES_CHRATR_SCALEW, RES_CHRATR_RELIEF,
// insert position for CJK/CTL attributes!
/*14 */ RES_PARATR_LINESPACING, RES_PARATR_HYPHENZONE,
/*16 */ RES_PARATR_REGISTER, RES_PARATR_REGISTER,
/*18 */ RES_PARATR_VERTALIGN, RES_PARATR_VERTALIGN,
/*20 */ RES_LR_SPACE, RES_UL_SPACE,
/*22 */ SID_ATTR_PARA_MODEL, SID_ATTR_PARA_KEEP,
/*24 */ 0
2000-09-18 16:15:01 +00:00
};
static const sal_uInt16 aCJKAttr[] =
{
RES_CHRATR_CJK_FONT, RES_CHRATR_CJK_WEIGHT,
RES_CHRATR_EMPHASIS_MARK, RES_CHRATR_TWO_LINES,
RES_PARATR_SCRIPTSPACE, RES_PARATR_FORBIDDEN_RULES
};
static const sal_uInt16 aCTLAttr[] =
{
RES_CHRATR_CTL_FONT, RES_CHRATR_CTL_WEIGHT
};
2011-10-29 13:24:48 +02:00
std::vector<sal_uInt16> aArr;
aArr.insert( aArr.begin(), aNormalAttr,
aNormalAttr + SAL_N_ELEMENTS( aNormalAttr ));
if( SW_MOD()->GetCTLOptions().IsCTLFontEnabled() )
2011-10-29 13:24:48 +02:00
{
aArr.insert( aArr.begin() + 14, aCTLAttr,
aCTLAttr + SAL_N_ELEMENTS( aCTLAttr ));
}
SvtCJKOptions aCJKOpt;
if( aCJKOpt.IsAnyEnabled() )
2011-10-29 13:24:48 +02:00
{
aArr.insert( aArr.begin() + 14, aCJKAttr,
aCJKAttr + SAL_N_ELEMENTS( aCJKAttr ));
}
SfxItemSet aSet( m_pWrtShell->GetAttrPool(), &aArr[0] );
sal_uInt16 nWhich = SID_SEARCH_SEARCHSET;
2000-09-18 16:15:01 +00:00
if ( FID_SEARCH_REPLACESET == nSlot )
{
nWhich = SID_SEARCH_REPLACESET;
if ( m_pReplList )
2000-09-18 16:15:01 +00:00
{
m_pReplList->Get( aSet );
DELETEZ( m_pReplList );
2000-09-18 16:15:01 +00:00
}
}
else if ( m_pSrchList )
2000-09-18 16:15:01 +00:00
{
m_pSrchList->Get( aSet );
DELETEZ( m_pSrchList );
2000-09-18 16:15:01 +00:00
}
rReq.SetReturnValue( SvxSetItem( nWhich, aSet ) );
}
break;
default:
#if OSL_DEBUG_LEVEL > 1
2000-09-18 16:15:01 +00:00
if(nSlot)
{
OString sStr("nSlot: " + OString::number(nSlot) + " wrong Dispatcher (viewsrch.cxx)");
2011-07-27 21:50:02 +01:00
OSL_FAIL(sStr.getStr());
2000-09-18 16:15:01 +00:00
}
#endif
return;
}
}
sal_Bool SwView::SearchAndWrap(sal_Bool bApi)
2000-09-18 16:15:01 +00:00
{
SwSearchOptions aOpts( m_pWrtShell, m_pSrchItem->GetBackward() );
2000-09-18 16:15:01 +00:00
// Startposition der Suche fuer WrapAround merken
// Start- / EndAction wegen vielleicht bestehender Selektionen
// aus 'Suche alle'
m_pWrtShell->StartAllAction();
m_pWrtShell->Push();
2000-09-18 16:15:01 +00:00
// falls in selektierten Bereichen gesucht werden soll, duerfen sie
// nicht aufgehoben werden
if (!m_pSrchItem->GetSelection())
m_pWrtShell->KillSelection(0, false);
2000-09-18 16:15:01 +00:00
SwWait *pWait = new SwWait( *GetDocShell(), sal_True );
2000-09-18 16:15:01 +00:00
if( FUNC_Search( aOpts ) )
{
m_bFound = sal_True;
if(m_pWrtShell->IsSelFrmMode())
2000-09-18 16:15:01 +00:00
{
m_pWrtShell->UnSelectFrm();
m_pWrtShell->LeaveSelFrmMode();
2000-09-18 16:15:01 +00:00
}
m_pWrtShell->Pop();
m_pWrtShell->EndAllAction();
2000-09-18 16:15:01 +00:00
delete pWait;
return sal_True;
2000-09-18 16:15:01 +00:00
}
delete pWait, pWait = 0;
// Suchen in den Sonderbereichen, wenn keine
// Suche in Selektionen vorliegt. Bei Suche in Selektionen
// wird ohnehin in diesen Sonderbereichen gesucht
bool bHasSrchInOther = m_bExtra;
if (!m_pSrchItem->GetSelection() && !m_bExtra )
2000-09-18 16:15:01 +00:00
{
m_bExtra = true;
2000-09-18 16:15:01 +00:00
if( FUNC_Search( aOpts ) )
{
m_bFound = sal_True;
m_pWrtShell->Pop();
m_pWrtShell->EndAllAction();
return sal_True;
2000-09-18 16:15:01 +00:00
}
m_bExtra = false;
2000-09-18 16:15:01 +00:00
}
else
m_bExtra = !m_bExtra;
2000-09-18 16:15:01 +00:00
const sal_uInt16 nId = SvxSearchDialogWrapper::GetChildWindowId();
2000-09-18 16:15:01 +00:00
SvxSearchDialogWrapper *pWrp = (SvxSearchDialogWrapper*)GetViewFrame()->GetChildWindow(nId);
m_pSrchDlg = pWrp ? static_cast <SvxSearchDialog*> (pWrp->getDialog ()) : 0;
2000-09-18 16:15:01 +00:00
// falls Startposition am Dokumentende / -anfang
if (aOpts.bDontWrap)
{
m_pWrtShell->EndAllAction();
2000-09-18 16:15:01 +00:00
if( !bApi )
{
ShowNotFoundInfoBox( m_pSrchDlg );
2000-09-18 16:15:01 +00:00
}
m_bFound = sal_False;
m_pWrtShell->Pop();
return sal_False;
2000-09-18 16:15:01 +00:00
}
m_pWrtShell->EndAllAction();
2000-09-18 16:15:01 +00:00
// noch mal mit WrapAround versuchen?
if( bApi || RET_NO == QueryBox( GetParentWindow( m_pSrchDlg ),
2000-09-18 16:15:01 +00:00
SW_RES( DOCPOS_START == aOpts.eEnd
? MSG_SEARCH_START
: MSG_SEARCH_END )
).Execute() )
{
m_bFound = sal_False;
m_pWrtShell->Pop();
return sal_False;
2000-09-18 16:15:01 +00:00
}
m_pWrtShell->StartAllAction();
m_pWrtShell->Pop(sal_False);
pWait = new SwWait( *GetDocShell(), sal_True );
2000-09-18 16:15:01 +00:00
bool bSrchBkwrd = DOCPOS_START == aOpts.eEnd;
2000-09-18 16:15:01 +00:00
aOpts.eEnd = bSrchBkwrd ? DOCPOS_START : DOCPOS_END;
aOpts.eStart = bSrchBkwrd ? DOCPOS_END : DOCPOS_START;
if (bHasSrchInOther)
{
m_pWrtShell->ClearMark();
2000-09-18 16:15:01 +00:00
if (bSrchBkwrd)
m_pWrtShell->EndDoc();
2000-09-18 16:15:01 +00:00
else
m_pWrtShell->SttDoc();
2000-09-18 16:15:01 +00:00
}
m_bFound = 0 != FUNC_Search( aOpts );
m_pWrtShell->EndAllAction();
2000-09-18 16:15:01 +00:00
delete pWait;
if ( m_bFound )
return m_bFound;
2000-09-18 16:15:01 +00:00
if(!bApi)
{
ShowNotFoundInfoBox( m_pSrchDlg );
2000-09-18 16:15:01 +00:00
}
return m_bFound = sal_False;
2000-09-18 16:15:01 +00:00
}
sal_Bool SwView::SearchAll(sal_uInt16* pFound)
2000-09-18 16:15:01 +00:00
{
SwWait aWait( *GetDocShell(), sal_True );
m_pWrtShell->StartAllAction();
2000-09-18 16:15:01 +00:00
SwSearchOptions aOpts( m_pWrtShell, m_pSrchItem->GetBackward() );
2000-09-18 16:15:01 +00:00
if (!m_pSrchItem->GetSelection())
2000-09-18 16:15:01 +00:00
{
// bestehende Selektionen aufheben,
// wenn nicht in selektierten Bereichen gesucht werden soll
m_pWrtShell->KillSelection(0, false);
2000-09-18 16:15:01 +00:00
if( DOCPOS_START == aOpts.eEnd )
m_pWrtShell->EndDoc();
2000-09-18 16:15:01 +00:00
else
m_pWrtShell->SttDoc();
2000-09-18 16:15:01 +00:00
}
m_bExtra = false;
sal_uInt16 nFound = (sal_uInt16)FUNC_Search( aOpts );
2000-09-18 16:15:01 +00:00
if(pFound)
*pFound = nFound;
m_bFound = 0 != nFound;
2000-09-18 16:15:01 +00:00
m_pWrtShell->EndAllAction();
return m_bFound;
2000-09-18 16:15:01 +00:00
}
void SwView::Replace()
{
SwWait aWait( *GetDocShell(), sal_True );
2000-09-18 16:15:01 +00:00
m_pWrtShell->StartAllAction();
2000-09-18 16:15:01 +00:00
if( m_pSrchItem->GetPattern() ) // Vorlagen?
{
SwRewriter aRewriter;
aRewriter.AddRule(UndoArg1, m_pSrchItem->GetSearchString());
aRewriter.AddRule(UndoArg2, SW_RESSTR(STR_YIELDS));
aRewriter.AddRule(UndoArg3, m_pSrchItem->GetReplaceString());
m_pWrtShell->StartUndo(UNDO_UI_REPLACE_STYLE, &aRewriter);
m_pWrtShell->SetTxtFmtColl( m_pWrtShell->GetParaStyle(
m_pSrchItem->GetReplaceString(),
2000-09-18 16:15:01 +00:00
SwWrtShell::GETSTYLE_CREATESOME ));
m_pWrtShell->EndUndo();
}
2000-09-18 16:15:01 +00:00
else
{
if (GetPostItMgr()->HasActiveSidebarWin())
GetPostItMgr()->Replace(m_pSrchItem);
2000-09-18 16:15:01 +00:00
sal_Bool bReqReplace = true;
if(m_pWrtShell->HasSelection())
{
/* check that the selection match the search string*/
//save state
SwPosition aStartPos = (* m_pWrtShell->GetSwCrsr()->Start());
SwPosition aEndPos = (* m_pWrtShell->GetSwCrsr()->End());
sal_Bool bHasSelection = m_pSrchItem->GetSelection();
sal_uInt16 nOldCmd = m_pSrchItem->GetCommand();
//set state for checking if current selection has a match
m_pSrchItem->SetCommand( SVX_SEARCHCMD_FIND );
m_pSrchItem->SetSelection(true);
//check if it matchs
SwSearchOptions aOpts( m_pWrtShell, m_pSrchItem->GetBackward() );
if( ! FUNC_Search(aOpts) )
{
//no matching therefore should not replace selection
// => remove selection
if(! m_pSrchItem->GetBackward() )
{
(* m_pWrtShell->GetSwCrsr()->Start()) = aStartPos;
(* m_pWrtShell->GetSwCrsr()->End()) = aEndPos;
}
else
{
(* m_pWrtShell->GetSwCrsr()->Start()) = aEndPos;
(* m_pWrtShell->GetSwCrsr()->End()) = aStartPos;
}
bReqReplace = false;
}
//set back old search state
m_pSrchItem->SetCommand( nOldCmd );
m_pSrchItem->SetSelection(bHasSelection);
}
/*
* remove current selection
* otherwise it is always replaced
* no matter if the search string exists or not in the selection
* Now the selection is removed and the next matching string is selected
*/
if( bReqReplace )
2000-09-18 16:15:01 +00:00
{
sal_Bool bReplaced = m_pWrtShell->SwEditShell::Replace( m_pSrchItem->GetReplaceString(),
m_pSrchItem->GetRegExp());
if( bReplaced && m_pReplList && m_pReplList->Count() && m_pWrtShell->HasSelection() )
2000-09-18 16:15:01 +00:00
{
SfxItemSet aReplSet( m_pWrtShell->GetAttrPool(),
aTxtFmtCollSetRange );
if( m_pReplList->Get( aReplSet ).Count() )
{
::SfxToSwPageDescAttr( *m_pWrtShell, aReplSet );
m_pWrtShell->SwEditShell::SetAttr( aReplSet );
}
2000-09-18 16:15:01 +00:00
}
}
}
m_pWrtShell->EndAllAction();
2000-09-18 16:15:01 +00:00
}
SwSearchOptions::SwSearchOptions( SwWrtShell* pSh, sal_Bool bBackward )
2000-09-18 16:15:01 +00:00
{
eStart = DOCPOS_CURR;
if( bBackward )
{
eEnd = DOCPOS_START;
bDontWrap = pSh->IsEndOfDoc();
}
else
{
eEnd = DOCPOS_END;
bDontWrap = pSh->IsStartOfDoc();
}
}
sal_uLong SwView::FUNC_Search( const SwSearchOptions& rOptions )
2000-09-18 16:15:01 +00:00
{
sal_Bool bDoReplace = m_pSrchItem->GetCommand() == SVX_SEARCHCMD_REPLACE ||
m_pSrchItem->GetCommand() == SVX_SEARCHCMD_REPLACE_ALL;
2000-09-18 16:15:01 +00:00
int eRanges = m_pSrchItem->GetSelection() ?
FND_IN_SEL : m_bExtra ? FND_IN_OTHER : FND_IN_BODY;
if (m_pSrchItem->GetCommand() == SVX_SEARCHCMD_FIND_ALL ||
m_pSrchItem->GetCommand() == SVX_SEARCHCMD_REPLACE_ALL)
2000-09-18 16:15:01 +00:00
eRanges |= FND_IN_SELALL;
m_pWrtShell->SttSelect();
2000-09-18 16:15:01 +00:00
Merge commit 'ooo/DEV300_m101' into integration/dev300_m101 Conflicts: starmath/inc/applicat.hxx starmath/inc/dialog.hxx starmath/inc/document.hxx starmath/inc/edit.hxx starmath/inc/format.hxx starmath/inc/node.hxx starmath/inc/parse.hxx starmath/inc/rect.hxx starmath/inc/smdll.hxx starmath/inc/smmod.hxx starmath/inc/starmath.hrc starmath/inc/symbol.hxx starmath/inc/toolbox.hxx starmath/inc/utility.hxx starmath/inc/view.hxx starmath/prj/build.lst starmath/qa/cppunit/version.map starmath/sdi/smslots.sdi starmath/source/accessibility.cxx starmath/source/cfgitem.cxx starmath/source/cfgitem.hxx starmath/source/config.cxx starmath/source/dialog.cxx starmath/source/document.cxx starmath/source/edit.cxx starmath/source/format.cxx starmath/source/makefile.mk starmath/source/math_pch.cxx starmath/source/mathmlexport.cxx starmath/source/mathmlimport.cxx starmath/source/mathtype.cxx starmath/source/node.cxx starmath/source/parse.cxx starmath/source/rect.cxx starmath/source/register.cxx starmath/source/smdetect.cxx starmath/source/smdll.cxx starmath/source/smmod.cxx starmath/source/smres.src starmath/source/symbol.cxx starmath/source/toolbox.cxx starmath/source/unomodel.cxx starmath/source/utility.cxx starmath/source/view.cxx sw/JunitTest_sw_unoapi.mk sw/Library_swd.mk sw/Makefile sw/inc/IDocumentFieldsAccess.hxx sw/inc/IDocumentSettingAccess.hxx sw/inc/IDocumentUndoRedo.hxx sw/inc/IShellCursorSupplier.hxx sw/inc/SwUndoField.hxx sw/inc/acmplwrd.hxx sw/inc/authfld.hxx sw/inc/bparr.hxx sw/inc/calbck.hxx sw/inc/calc.hxx sw/inc/ccoll.hxx sw/inc/cellatr.hxx sw/inc/cellfml.hxx sw/inc/chpfld.hxx sw/inc/cmdid.h sw/inc/crsrsh.hxx sw/inc/crstate.hxx sw/inc/dbfld.hxx sw/inc/dbmgr.hxx sw/inc/dcontact.hxx sw/inc/ddefld.hxx sw/inc/doc.hxx sw/inc/docary.hxx sw/inc/docsh.hxx sw/inc/docstat.hxx sw/inc/docstyle.hxx sw/inc/docufld.hxx sw/inc/editsh.hxx sw/inc/errhdl.hxx sw/inc/expfld.hxx sw/inc/fchrfmt.hxx sw/inc/fesh.hxx sw/inc/fldbas.hxx sw/inc/flddat.hxx sw/inc/flddropdown.hxx sw/inc/flypos.hxx sw/inc/fmtanchr.hxx sw/inc/fmtautofmt.hxx sw/inc/fmtclds.hxx sw/inc/fmtcnct.hxx sw/inc/fmtcol.hxx sw/inc/fmtfsize.hxx sw/inc/fmtftn.hxx sw/inc/fmtftntx.hxx sw/inc/fmthdft.hxx sw/inc/fmtinfmt.hxx sw/inc/fmtline.hxx sw/inc/fmtornt.hxx sw/inc/fmtpdsc.hxx sw/inc/fmtruby.hxx sw/inc/fmtsrnd.hxx sw/inc/fmturl.hxx sw/inc/fmtwrapinfluenceonobjpos.hxx sw/inc/format.hxx sw/inc/frmatr.hxx sw/inc/frmfmt.hxx sw/inc/grfatr.hxx sw/inc/helpid.h sw/inc/hintids.hxx sw/inc/hints.hxx sw/inc/htmltbl.hxx sw/inc/inetfld.hxx sw/inc/io.hxx sw/inc/iodetect.hxx sw/inc/itabenum.hxx sw/inc/ndarr.hxx sw/inc/ndgrf.hxx sw/inc/ndindex.hxx sw/inc/ndnotxt.hxx sw/inc/ndole.hxx sw/inc/ndtxt.hxx sw/inc/ndtyp.hxx sw/inc/node.hxx sw/inc/numrule.hxx sw/inc/pagedesc.hxx sw/inc/pagepreviewlayout.hxx sw/inc/pam.hxx sw/inc/paratr.hxx sw/inc/poolfmt.awk sw/inc/poolfmt.hxx sw/inc/printdata.hxx sw/inc/reffld.hxx sw/inc/shellio.hxx sw/inc/shellres.hxx sw/inc/swabstdlg.hxx sw/inc/swatrset.hxx sw/inc/swerror.h sw/inc/swprtopt.hxx sw/inc/swtable.hxx sw/inc/swtypes.hxx sw/inc/tblafmt.hxx sw/inc/tgrditem.hxx sw/inc/tox.hxx sw/inc/undobj.hxx sw/inc/unocoll.hxx sw/inc/unoframe.hxx sw/inc/unoprnms.hxx sw/inc/usrfld.hxx sw/inc/viewopt.hxx sw/inc/viewsh.hxx sw/inc/viscrs.hxx sw/prj/build.lst sw/qa/complex/accessibility/makefile.mk sw/qa/core/Test-BigPtrArray.cxx sw/qa/core/makefile.mk sw/sdi/makefile.mk sw/source/core/access/makefile.mk sw/source/core/access/textmarkuphelper.cxx sw/source/core/attr/calbck.cxx sw/source/core/attr/cellatr.cxx sw/source/core/attr/fmtwrapinfluenceonobjpos.cxx sw/source/core/attr/format.cxx sw/source/core/attr/hints.cxx sw/source/core/bastyp/calc.cxx sw/source/core/bastyp/init.cxx sw/source/core/bastyp/makefile.mk sw/source/core/bastyp/swcache.cxx sw/source/core/crsr/bookmrk.cxx sw/source/core/crsr/callnk.cxx sw/source/core/crsr/crsrsh.cxx sw/source/core/crsr/crstrvl.cxx sw/source/core/crsr/findattr.cxx sw/source/core/crsr/findcoll.cxx sw/source/core/crsr/makefile.mk sw/source/core/crsr/pam.cxx sw/source/core/crsr/swcrsr.cxx sw/source/core/crsr/trvltbl.cxx sw/source/core/crsr/unocrsr.cxx sw/source/core/crsr/viscrs.cxx sw/source/core/doc/acmplwrd.cxx sw/source/core/doc/doc.cxx sw/source/core/doc/docbm.cxx sw/source/core/doc/doccomp.cxx sw/source/core/doc/docdesc.cxx sw/source/core/doc/docdraw.cxx sw/source/core/doc/docedt.cxx sw/source/core/doc/docfld.cxx sw/source/core/doc/docfly.cxx sw/source/core/doc/docfmt.cxx sw/source/core/doc/docftn.cxx sw/source/core/doc/docglbl.cxx sw/source/core/doc/docglos.cxx sw/source/core/doc/doclay.cxx sw/source/core/doc/docnew.cxx sw/source/core/doc/docnum.cxx sw/source/core/doc/docredln.cxx sw/source/core/doc/docruby.cxx sw/source/core/doc/docsort.cxx sw/source/core/doc/docstat.cxx sw/source/core/doc/doctxm.cxx sw/source/core/doc/fmtcol.cxx sw/source/core/doc/gctable.cxx sw/source/core/doc/htmltbl.cxx sw/source/core/doc/makefile.mk sw/source/core/doc/number.cxx sw/source/core/doc/poolfmt.cxx sw/source/core/doc/tblafmt.cxx sw/source/core/doc/tblcpy.cxx sw/source/core/doc/tblrwcl.cxx sw/source/core/docnode/makefile.mk sw/source/core/docnode/ndcopy.cxx sw/source/core/docnode/ndnum.cxx sw/source/core/docnode/ndsect.cxx sw/source/core/docnode/ndtbl.cxx sw/source/core/docnode/ndtbl1.cxx sw/source/core/docnode/node.cxx sw/source/core/docnode/node2lay.cxx sw/source/core/docnode/nodes.cxx sw/source/core/docnode/section.cxx sw/source/core/docnode/swbaslnk.cxx sw/source/core/draw/dcontact.cxx sw/source/core/draw/dflyobj.cxx sw/source/core/draw/drawdoc.cxx sw/source/core/draw/dview.cxx sw/source/core/draw/makefile.mk sw/source/core/edit/autofmt.cxx sw/source/core/edit/edattr.cxx sw/source/core/edit/eddel.cxx sw/source/core/edit/edfcol.cxx sw/source/core/edit/edfld.cxx sw/source/core/edit/edfldexp.cxx sw/source/core/edit/edfmt.cxx sw/source/core/edit/edglss.cxx sw/source/core/edit/editsh.cxx sw/source/core/edit/edlingu.cxx sw/source/core/edit/ednumber.cxx sw/source/core/edit/edsect.cxx sw/source/core/edit/edtab.cxx sw/source/core/edit/edtox.cxx sw/source/core/edit/edundo.cxx sw/source/core/edit/makefile.mk sw/source/core/except/dbgloop.cxx sw/source/core/except/errhdl.cxx sw/source/core/fields/authfld.cxx sw/source/core/fields/cellfml.cxx sw/source/core/fields/chpfld.cxx sw/source/core/fields/dbfld.cxx sw/source/core/fields/ddefld.cxx sw/source/core/fields/ddetbl.cxx sw/source/core/fields/docufld.cxx sw/source/core/fields/expfld.cxx sw/source/core/fields/fldbas.cxx sw/source/core/fields/flddat.cxx sw/source/core/fields/flddropdown.cxx sw/source/core/fields/macrofld.cxx sw/source/core/fields/makefile.mk sw/source/core/fields/reffld.cxx sw/source/core/fields/scrptfld.cxx sw/source/core/fields/tblcalc.cxx sw/source/core/fields/usrfld.cxx sw/source/core/frmedt/fecopy.cxx sw/source/core/frmedt/fedesc.cxx sw/source/core/frmedt/fefly1.cxx sw/source/core/frmedt/feshview.cxx sw/source/core/frmedt/fetab.cxx sw/source/core/frmedt/fews.cxx sw/source/core/frmedt/makefile.mk sw/source/core/frmedt/tblsel.cxx sw/source/core/graphic/grfatr.cxx sw/source/core/inc/SwUndoFmt.hxx sw/source/core/inc/SwUndoTOXChange.hxx sw/source/core/inc/anchoredobjectposition.hxx sw/source/core/inc/dbgloop.hxx sw/source/core/inc/drawfont.hxx sw/source/core/inc/flowfrm.hxx sw/source/core/inc/frame.hxx sw/source/core/inc/frmtool.hxx sw/source/core/inc/layact.hxx sw/source/core/inc/layfrm.hxx sw/source/core/inc/notxtfrm.hxx sw/source/core/inc/rolbck.hxx sw/source/core/inc/rootfrm.hxx sw/source/core/inc/scriptinfo.hxx sw/source/core/inc/swblocks.hxx sw/source/core/inc/swcache.hxx sw/source/core/inc/tabfrm.hxx sw/source/core/inc/txmsrt.hxx sw/source/core/inc/undoflystrattr.hxx sw/source/core/inc/viewimp.hxx sw/source/core/layout/atrfrm.cxx sw/source/core/layout/calcmove.cxx sw/source/core/layout/dbg_lay.cxx sw/source/core/layout/findfrm.cxx sw/source/core/layout/flowfrm.cxx sw/source/core/layout/fly.cxx sw/source/core/layout/flycnt.cxx sw/source/core/layout/flyincnt.cxx sw/source/core/layout/flylay.cxx sw/source/core/layout/frmtool.cxx sw/source/core/layout/ftnfrm.cxx sw/source/core/layout/layact.cxx sw/source/core/layout/laycache.cxx sw/source/core/layout/makefile.mk sw/source/core/layout/objectformatter.cxx sw/source/core/layout/pagechg.cxx sw/source/core/layout/pagedesc.cxx sw/source/core/layout/paintfrm.cxx sw/source/core/layout/sectfrm.cxx sw/source/core/layout/tabfrm.cxx sw/source/core/layout/trvlfrm.cxx sw/source/core/layout/unusedf.cxx sw/source/core/layout/wsfrm.cxx sw/source/core/makefile.mk sw/source/core/objectpositioning/anchoredobjectposition.cxx sw/source/core/objectpositioning/ascharanchoredobjectposition.cxx sw/source/core/objectpositioning/makefile.mk sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx sw/source/core/objectpositioning/tolayoutanchoredobjectposition.cxx sw/source/core/ole/ndole.cxx sw/source/core/para/makefile.mk sw/source/core/para/paratr.cxx sw/source/core/sw3io/makefile.mk sw/source/core/sw3io/sw3convert.cxx sw/source/core/swg/SwXMLTextBlocks.cxx sw/source/core/swg/makefile.mk sw/source/core/swg/swblocks.cxx sw/source/core/table/swnewtable.cxx sw/source/core/table/swtable.cxx sw/source/core/text/EnhancedPDFExportHelper.cxx sw/source/core/text/atrstck.cxx sw/source/core/text/frmcrsr.cxx sw/source/core/text/frmform.cxx sw/source/core/text/itrcrsr.cxx sw/source/core/text/itrform2.cxx sw/source/core/text/makefile.mk sw/source/core/text/porlay.cxx sw/source/core/text/pormulti.cxx sw/source/core/text/txtfld.cxx sw/source/core/text/txtfrm.cxx sw/source/core/text/txtio.cxx sw/source/core/tox/makefile.mk sw/source/core/tox/txmsrt.cxx sw/source/core/txtnode/fmtatr2.cxx sw/source/core/txtnode/fntcache.cxx sw/source/core/txtnode/fntcap.cxx sw/source/core/txtnode/makefile.mk sw/source/core/txtnode/ndhints.cxx sw/source/core/txtnode/ndtxt.cxx sw/source/core/txtnode/swfont.cxx sw/source/core/txtnode/thints.cxx sw/source/core/txtnode/txtatr2.cxx sw/source/core/txtnode/txtedt.cxx sw/source/core/undo/SwUndoField.cxx sw/source/core/undo/SwUndoPageDesc.cxx sw/source/core/undo/SwUndoTOXChange.cxx sw/source/core/undo/docundo.cxx sw/source/core/undo/makefile.mk sw/source/core/undo/rolbck.cxx sw/source/core/undo/unbkmk.cxx sw/source/core/undo/undel.cxx sw/source/core/undo/undobj.cxx sw/source/core/undo/undobj1.cxx sw/source/core/undo/unfmco.cxx sw/source/core/undo/unins.cxx sw/source/core/undo/unnum.cxx sw/source/core/undo/unoutl.cxx sw/source/core/undo/unredln.cxx sw/source/core/undo/unsect.cxx sw/source/core/undo/unsort.cxx sw/source/core/undo/unspnd.cxx sw/source/core/undo/untbl.cxx sw/source/core/unocore/makefile.mk sw/source/core/unocore/swunohelper.cxx sw/source/core/unocore/unobkm.cxx sw/source/core/unocore/unocoll.cxx sw/source/core/unocore/unocrsrhelper.cxx sw/source/core/unocore/unodraw.cxx sw/source/core/unocore/unofield.cxx sw/source/core/unocore/unoframe.cxx sw/source/core/unocore/unomap.cxx sw/source/core/unocore/unoprnms.cxx sw/source/core/unocore/unoredlines.cxx sw/source/core/unocore/unosett.cxx sw/source/core/unocore/unosrch.cxx sw/source/core/unocore/unostyle.cxx sw/source/core/unocore/unotbl.cxx sw/source/core/view/vdraw.cxx sw/source/core/view/viewimp.cxx sw/source/core/view/viewpg.cxx sw/source/core/view/viewsh.cxx sw/source/core/view/vnew.cxx sw/source/core/view/vprint.cxx sw/source/filter/ascii/ascatr.cxx sw/source/filter/ascii/makefile.mk sw/source/filter/ascii/wrtasc.cxx sw/source/filter/basflt/fltini.cxx sw/source/filter/basflt/iodetect.cxx sw/source/filter/basflt/makefile.mk sw/source/filter/html/SwAppletImpl.cxx sw/source/filter/html/css1atr.cxx sw/source/filter/html/htmlatr.cxx sw/source/filter/html/htmlbas.cxx sw/source/filter/html/htmlcss1.cxx sw/source/filter/html/htmlfly.cxx sw/source/filter/html/htmlftn.cxx sw/source/filter/html/htmlgrin.cxx sw/source/filter/html/htmlnum.cxx sw/source/filter/html/htmlplug.cxx sw/source/filter/html/htmltab.cxx sw/source/filter/html/makefile.mk sw/source/filter/html/parcss1.cxx sw/source/filter/html/svxcss1.cxx sw/source/filter/html/swhtml.cxx sw/source/filter/inc/msfilter.hxx sw/source/filter/inc/wrtswtbl.hxx sw/source/filter/rtf/makefile.mk sw/source/filter/rtf/rtffly.cxx sw/source/filter/rtf/rtfnum.cxx sw/source/filter/rtf/rtftbl.cxx sw/source/filter/rtf/swparrtf.cxx sw/source/filter/rtf/swparrtf.hxx sw/source/filter/writer/makefile.mk sw/source/filter/writer/writer.cxx sw/source/filter/writer/wrt_fn.cxx sw/source/filter/writer/wrtswtbl.cxx sw/source/filter/ww1/fltshell.cxx sw/source/filter/ww1/makefile.mk sw/source/filter/ww1/w1class.cxx sw/source/filter/ww1/w1class.hxx sw/source/filter/ww1/w1filter.cxx sw/source/filter/ww1/w1par.cxx sw/source/filter/ww1/w1sprm.cxx sw/source/filter/ww1/w1struct.hxx sw/source/filter/ww8/README-rtf.txt sw/source/filter/ww8/attributeoutputbase.hxx sw/source/filter/ww8/docxattributeoutput.cxx sw/source/filter/ww8/docxattributeoutput.hxx sw/source/filter/ww8/docxexport.cxx sw/source/filter/ww8/docxexport.hxx sw/source/filter/ww8/docxexportfilter.cxx sw/source/filter/ww8/dump/dump8.cxx sw/source/filter/ww8/dump/dump8a.cxx sw/source/filter/ww8/dump/msvbasic.cxx sw/source/filter/ww8/dump/msvbasic.hxx sw/source/filter/ww8/dump/ww8darr.cxx sw/source/filter/ww8/dump/ww8darr.hxx sw/source/filter/ww8/dump/ww8dout.cxx sw/source/filter/ww8/dump/ww8dout.hxx sw/source/filter/ww8/dump/ww8scan.cxx sw/source/filter/ww8/dump/ww8scan.hxx sw/source/filter/ww8/dump/ww8struc.hxx sw/source/filter/ww8/makefile.mk sw/source/filter/ww8/rtfattributeoutput.cxx sw/source/filter/ww8/rtfattributeoutput.hxx sw/source/filter/ww8/rtfexport.cxx sw/source/filter/ww8/rtfexport.hxx sw/source/filter/ww8/rtfexportfilter.cxx sw/source/filter/ww8/rtfexportfilter.hxx sw/source/filter/ww8/rtfimportfilter.cxx sw/source/filter/ww8/rtfimportfilter.hxx sw/source/filter/ww8/rtfsdrexport.cxx sw/source/filter/ww8/rtfsdrexport.hxx sw/source/filter/ww8/writerhelper.cxx sw/source/filter/ww8/writerwordglue.cxx sw/source/filter/ww8/wrtw8esh.cxx sw/source/filter/ww8/wrtw8nds.cxx sw/source/filter/ww8/wrtw8num.cxx sw/source/filter/ww8/wrtw8sty.cxx sw/source/filter/ww8/wrtww8.cxx sw/source/filter/ww8/wrtww8.hxx sw/source/filter/ww8/wrtww8gr.cxx sw/source/filter/ww8/ww8atr.cxx sw/source/filter/ww8/ww8attributeoutput.hxx sw/source/filter/ww8/ww8graf.cxx sw/source/filter/ww8/ww8graf.hxx sw/source/filter/ww8/ww8graf2.cxx sw/source/filter/ww8/ww8par.cxx sw/source/filter/ww8/ww8par.hxx sw/source/filter/ww8/ww8par2.cxx sw/source/filter/ww8/ww8par3.cxx sw/source/filter/ww8/ww8par5.cxx sw/source/filter/ww8/ww8par6.cxx sw/source/filter/ww8/ww8scan.cxx sw/source/filter/ww8/ww8scan.hxx sw/source/filter/ww8/ww8struc.hxx sw/source/filter/xml/makefile.mk sw/source/filter/xml/xmlimpit.cxx sw/source/filter/xml/xmltble.cxx sw/source/filter/xml/xmltbli.cxx sw/source/ui/app/appenv.cxx sw/source/ui/app/apphdl.cxx sw/source/ui/app/applab.cxx sw/source/ui/app/appopt.cxx sw/source/ui/app/docsh.cxx sw/source/ui/app/docsh2.cxx sw/source/ui/app/docshini.cxx sw/source/ui/app/docst.cxx sw/source/ui/app/docstyle.cxx sw/source/ui/app/makefile.mk sw/source/ui/app/mn.src sw/source/ui/app/swmodul1.cxx sw/source/ui/cctrl/makefile.mk sw/source/ui/cctrl/swlbox.cxx sw/source/ui/chrdlg/break.cxx sw/source/ui/chrdlg/ccoll.cxx sw/source/ui/chrdlg/chardlg.cxx sw/source/ui/chrdlg/drpcps.cxx sw/source/ui/chrdlg/makefile.mk sw/source/ui/chrdlg/numpara.cxx sw/source/ui/chrdlg/pardlg.cxx sw/source/ui/chrdlg/swuiccoll.cxx sw/source/ui/config/barcfg.cxx sw/source/ui/config/caption.cxx sw/source/ui/config/cfgitems.cxx sw/source/ui/config/fontcfg.cxx sw/source/ui/config/mailconfigpage.cxx sw/source/ui/config/makefile.mk sw/source/ui/config/modcfg.cxx sw/source/ui/config/optcomp.cxx sw/source/ui/config/optload.cxx sw/source/ui/config/optpage.cxx sw/source/ui/config/prtopt.cxx sw/source/ui/config/uinums.cxx sw/source/ui/config/usrpref.cxx sw/source/ui/config/viewopt.cxx sw/source/ui/dbui/dbinsdlg.cxx sw/source/ui/dbui/dbmgr.cxx sw/source/ui/dbui/dbtree.cxx sw/source/ui/dbui/makefile.mk sw/source/ui/dbui/mmaddressblockpage.cxx sw/source/ui/dbui/mmdocselectpage.cxx sw/source/ui/dbui/mmoutputpage.cxx sw/source/ui/dbui/swdbtoolsclient.cxx sw/source/ui/dialog/abstract.cxx sw/source/ui/dialog/ascfldlg.cxx sw/source/ui/dialog/macassgn.cxx sw/source/ui/dialog/makefile.mk sw/source/ui/dialog/regionsw.cxx sw/source/ui/dialog/swdlgfact.cxx sw/source/ui/dialog/swdlgfact.hxx sw/source/ui/dialog/uiregionsw.cxx sw/source/ui/dochdl/gloshdl.cxx sw/source/ui/dochdl/makefile.mk sw/source/ui/dochdl/swdtflvr.cxx sw/source/ui/docvw/PostItMgr.cxx sw/source/ui/docvw/SidebarWin.cxx sw/source/ui/docvw/edtdd.cxx sw/source/ui/docvw/edtwin.cxx sw/source/ui/docvw/edtwin2.cxx sw/source/ui/docvw/edtwin3.cxx sw/source/ui/docvw/makefile.mk sw/source/ui/docvw/romenu.cxx sw/source/ui/docvw/romenu.hxx sw/source/ui/docvw/srcedtw.cxx sw/source/ui/envelp/envfmt.cxx sw/source/ui/envelp/envimg.cxx sw/source/ui/envelp/envlop1.cxx sw/source/ui/envelp/envprt.cxx sw/source/ui/envelp/label1.cxx sw/source/ui/envelp/labfmt.cxx sw/source/ui/envelp/labprt.cxx sw/source/ui/envelp/mailmrge.cxx sw/source/ui/envelp/makefile.mk sw/source/ui/fldui/flddb.cxx sw/source/ui/fldui/flddinf.cxx sw/source/ui/fldui/flddok.cxx sw/source/ui/fldui/fldedt.cxx sw/source/ui/fldui/fldfunc.cxx sw/source/ui/fldui/fldmgr.cxx sw/source/ui/fldui/fldpage.cxx sw/source/ui/fldui/fldref.cxx sw/source/ui/fldui/fldtdlg.cxx sw/source/ui/fldui/fldvar.cxx sw/source/ui/fldui/fldwrap.cxx sw/source/ui/fldui/inpdlg.cxx sw/source/ui/fldui/makefile.mk sw/source/ui/fmtui/makefile.mk sw/source/ui/fmtui/tmpdlg.cxx sw/source/ui/frmdlg/colmgr.cxx sw/source/ui/frmdlg/column.cxx sw/source/ui/frmdlg/cption.cxx sw/source/ui/frmdlg/frmdlg.cxx sw/source/ui/frmdlg/frmmgr.cxx sw/source/ui/frmdlg/frmpage.cxx sw/source/ui/frmdlg/makefile.mk sw/source/ui/frmdlg/wrap.cxx sw/source/ui/globdoc/makefile.mk sw/source/ui/inc/bmpwin.hxx sw/source/ui/inc/colmgr.hxx sw/source/ui/inc/column.hxx sw/source/ui/inc/envimg.hxx sw/source/ui/inc/envlop.hxx sw/source/ui/inc/frmpage.hxx sw/source/ui/inc/inputwin.hxx sw/source/ui/inc/javaedit.hxx sw/source/ui/inc/num.hxx sw/source/ui/inc/optpage.hxx sw/source/ui/inc/regionsw.hxx sw/source/ui/inc/split.hxx sw/source/ui/inc/swlbox.hxx sw/source/ui/inc/swmn_tmpl.hrc sw/source/ui/inc/swuiidxmrk.hxx sw/source/ui/inc/tabsh.hxx sw/source/ui/inc/toxmgr.hxx sw/source/ui/inc/uiitems.hxx sw/source/ui/inc/view.hxx sw/source/ui/inc/workctrl.hxx sw/source/ui/inc/wrap.hxx sw/source/ui/inc/wrtsh.hxx sw/source/ui/index/cnttab.cxx sw/source/ui/index/makefile.mk sw/source/ui/index/toxmgr.cxx sw/source/ui/lingu/hhcwrp.cxx sw/source/ui/lingu/makefile.mk sw/source/ui/lingu/olmenu.cxx sw/source/ui/misc/bookmark.cxx sw/source/ui/misc/docfnote.cxx sw/source/ui/misc/glosbib.cxx sw/source/ui/misc/glosdoc.cxx sw/source/ui/misc/glshell.cxx sw/source/ui/misc/insfnote.cxx sw/source/ui/misc/linenum.cxx sw/source/ui/misc/makefile.mk sw/source/ui/misc/num.cxx sw/source/ui/misc/numberingtypelistbox.cxx sw/source/ui/misc/outline.cxx sw/source/ui/misc/pgfnote.cxx sw/source/ui/misc/pggrid.cxx sw/source/ui/misc/redlndlg.cxx sw/source/ui/misc/srtdlg.cxx sw/source/ui/misc/swmodalredlineacceptdlg.cxx sw/source/ui/ribbar/conarc.cxx sw/source/ui/ribbar/drawbase.cxx sw/source/ui/ribbar/inputwin.cxx sw/source/ui/ribbar/inputwin.src sw/source/ui/ribbar/makefile.mk sw/source/ui/ribbar/tbxanchr.cxx sw/source/ui/ribbar/workctrl.cxx sw/source/ui/ribbar/workctrl.src sw/source/ui/shells/annotsh.cxx sw/source/ui/shells/basesh.cxx sw/source/ui/shells/beziersh.cxx sw/source/ui/shells/drawdlg.cxx sw/source/ui/shells/drwbassh.cxx sw/source/ui/shells/drwtxtex.cxx sw/source/ui/shells/drwtxtsh.cxx sw/source/ui/shells/frmsh.cxx sw/source/ui/shells/grfsh.cxx sw/source/ui/shells/grfshex.cxx sw/source/ui/shells/makefile.mk sw/source/ui/shells/tabsh.cxx sw/source/ui/shells/textfld.cxx sw/source/ui/shells/textglos.cxx sw/source/ui/shells/textsh.cxx sw/source/ui/shells/textsh1.cxx sw/source/ui/shells/txtattr.cxx sw/source/ui/shells/txtcrsr.cxx sw/source/ui/shells/txtnum.cxx sw/source/ui/table/convert.cxx sw/source/ui/table/instable.cxx sw/source/ui/table/makefile.mk sw/source/ui/table/swtablerep.cxx sw/source/ui/table/tabledlg.cxx sw/source/ui/table/tablemgr.cxx sw/source/ui/table/tablepg.hxx sw/source/ui/table/tautofmt.cxx sw/source/ui/uiview/formatclipboard.cxx sw/source/ui/uiview/makefile.mk sw/source/ui/uiview/pview.cxx sw/source/ui/uiview/pview.src sw/source/ui/uiview/scroll.cxx sw/source/ui/uiview/srcview.cxx sw/source/ui/uiview/swcli.cxx sw/source/ui/uiview/uivwimp.cxx sw/source/ui/uiview/view.cxx sw/source/ui/uiview/view1.cxx sw/source/ui/uiview/view2.cxx sw/source/ui/uiview/viewcoll.cxx sw/source/ui/uiview/viewdlg2.cxx sw/source/ui/uiview/viewling.cxx sw/source/ui/uiview/viewmdi.cxx sw/source/ui/uiview/viewport.cxx sw/source/ui/uiview/viewprt.cxx sw/source/ui/uiview/viewsrch.cxx sw/source/ui/uiview/viewtab.cxx sw/source/ui/uno/SwXDocumentSettings.cxx sw/source/ui/uno/SwXPrintPreviewSettings.cxx sw/source/ui/uno/SwXPrintPreviewSettings.hxx sw/source/ui/uno/unoatxt.cxx sw/source/ui/uno/unomod.cxx sw/source/ui/uno/unotxdoc.cxx sw/source/ui/uno/unotxvw.cxx sw/source/ui/utlui/attrdesc.cxx sw/source/ui/utlui/content.cxx sw/source/ui/utlui/glbltree.cxx sw/source/ui/utlui/initui.cxx sw/source/ui/utlui/makefile.mk sw/source/ui/utlui/navipi.cxx sw/source/ui/utlui/navipi.src sw/source/ui/utlui/numfmtlb.cxx sw/source/ui/utlui/prcntfld.cxx sw/source/ui/utlui/uiitems.cxx sw/source/ui/utlui/uitool.cxx sw/source/ui/utlui/unotools.cxx sw/source/ui/utlui/viewlayoutctrl.cxx sw/source/ui/utlui/zoomctrl.cxx sw/source/ui/vba/makefile.mk sw/source/ui/vba/service.cxx sw/source/ui/web/makefile.mk sw/source/ui/wrtsh/makefile.mk sw/source/ui/wrtsh/wrtsh1.cxx sw/source/ui/wrtsh/wrtsh2.cxx sw/source/ui/wrtsh/wrtsh4.cxx sw/source/ui/wrtsh/wrtundo.cxx sw/util/hidother.src sw/util/makefile.mk sw/util/msword.map
2011-03-14 16:51:14 +00:00
static sal_uInt16 aSearchAttrRange[] = {
2000-09-18 16:15:01 +00:00
RES_FRMATR_BEGIN, RES_FRMATR_END-1,
RES_CHRATR_BEGIN, RES_CHRATR_END-1,
RES_PARATR_BEGIN, RES_PARATR_END-1,
SID_ATTR_PARA_MODEL, SID_ATTR_PARA_KEEP,
0 };
SfxItemSet aSrchSet( m_pWrtShell->GetAttrPool(), aSearchAttrRange);
if( m_pSrchList && m_pSrchList->Count() )
2000-09-18 16:15:01 +00:00
{
m_pSrchList->Get( aSrchSet );
2000-09-18 16:15:01 +00:00
/* -- Seitenumbruch mit Seitenvorlage */
::SfxToSwPageDescAttr( *m_pWrtShell, aSrchSet );
2000-09-18 16:15:01 +00:00
}
SfxItemSet* pReplSet = 0;
if( bDoReplace && m_pReplList && m_pReplList->Count() )
2000-09-18 16:15:01 +00:00
{
pReplSet = new SfxItemSet( m_pWrtShell->GetAttrPool(),
2000-09-18 16:15:01 +00:00
aSearchAttrRange );
m_pReplList->Get( *pReplSet );
2000-09-18 16:15:01 +00:00
/* -- Seitenumbruch mit Seitenvorlage */
::SfxToSwPageDescAttr( *m_pWrtShell, *pReplSet );
2000-09-18 16:15:01 +00:00
if( !pReplSet->Count() ) // schade, die Attribute
DELETEZ( pReplSet ); // kennen wir nicht
}
//
// build SearchOptions to be used
//
SearchOptions aSearchOpt( m_pSrchItem->GetSearchOptions() );
aSearchOpt.Locale = GetAppLanguageTag().getLocale();
if( !bDoReplace )
aSearchOpt.replaceString = aEmptyStr;
sal_uLong nFound;
2000-09-18 16:15:01 +00:00
if( aSrchSet.Count() || ( pReplSet && pReplSet->Count() ))
{
nFound = m_pWrtShell->SearchAttr(
2000-09-18 16:15:01 +00:00
aSrchSet,
!m_pSrchItem->GetPattern(),
2000-09-18 16:15:01 +00:00
rOptions.eStart,
rOptions.eEnd,
FindRanges(eRanges),
m_pSrchItem->GetSearchString().Len() ? &aSearchOpt : 0,
2000-09-18 16:15:01 +00:00
pReplSet );
}
else if( m_pSrchItem->GetPattern() )
2000-09-18 16:15:01 +00:00
{
// Suchen (und ersetzen) von Vorlagen
const String sRplStr( m_pSrchItem->GetReplaceString() );
nFound = m_pWrtShell->SearchTempl( m_pSrchItem->GetSearchString(),
2000-09-18 16:15:01 +00:00
rOptions.eStart,
rOptions.eEnd,
FindRanges(eRanges),
2001-09-13 14:27:15 +00:00
bDoReplace ? &sRplStr : 0 );
2000-09-18 16:15:01 +00:00
}
else
{
// Normale Suche
nFound = m_pWrtShell->SearchPattern(aSearchOpt, m_pSrchItem->GetNotes(),
2000-09-18 16:15:01 +00:00
rOptions.eStart,
rOptions.eEnd,
FindRanges(eRanges),
bDoReplace );
}
m_pWrtShell->EndSelect();
2000-09-18 16:15:01 +00:00
return nFound;
}
2011-11-15 15:13:00 +01:00
Dialog* SwView::GetSearchDialog()
2000-09-18 16:15:01 +00:00
{
const sal_uInt16 nId = SvxSearchDialogWrapper::GetChildWindowId();
2000-09-18 16:15:01 +00:00
SvxSearchDialogWrapper *pWrp = (SvxSearchDialogWrapper*)SfxViewFrame::Current()->GetChildWindow(nId);
if ( pWrp )
m_pSrchDlg = pWrp->getDialog ();
2000-09-18 16:15:01 +00:00
else
m_pSrchDlg = 0;
return m_pSrchDlg;
2000-09-18 16:15:01 +00:00
}
void SwView::StateSearch(SfxItemSet &rSet)
{
SfxWhichIter aIter(rSet);
sal_uInt16 nWhich = aIter.FirstWhich();
2000-09-18 16:15:01 +00:00
while(nWhich)
{
switch(nWhich)
{
case SID_SEARCH_OPTIONS:
{
sal_uInt16 nOpt = 0xFFFF;
2000-09-18 16:15:01 +00:00
if( GetDocShell()->IsReadOnly() )
nOpt &= ~( SEARCH_OPTIONS_REPLACE |
SEARCH_OPTIONS_REPLACE_ALL );
rSet.Put( SfxUInt16Item( SID_SEARCH_OPTIONS, nOpt));
}
break;
case SID_SEARCH_ITEM:
{
if ( !m_pSrchItem )
2000-09-18 16:15:01 +00:00
{
m_pSrchItem = new SvxSearchItem( SID_SEARCH_ITEM );
m_pSrchItem->SetFamily(SFX_STYLE_FAMILY_PARA);
m_pSrchItem->SetSearchString( m_pWrtShell->GetSelTxt() );
2000-09-18 16:15:01 +00:00
}
if( m_bJustOpened && m_pWrtShell->IsSelection() )
2000-09-18 16:15:01 +00:00
{
String aTxt;
if( 1 == m_pWrtShell->GetCrsrCnt() &&
( aTxt = m_pWrtShell->SwCrsrShell::GetSelTxt() ).Len() )
2000-09-18 16:15:01 +00:00
{
m_pSrchItem->SetSearchString( aTxt );
m_pSrchItem->SetSelection( sal_False );
2000-09-18 16:15:01 +00:00
}
else
m_pSrchItem->SetSelection( sal_True );
2000-09-18 16:15:01 +00:00
}
m_bJustOpened = false;
rSet.Put( *m_pSrchItem );
2000-09-18 16:15:01 +00:00
}
break;
}
nWhich = aIter.NextWhich();
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */