1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_sc.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski // INCLUDE -------------------------------------------------------------------
28*b1cdbd2cSJim Jagielski
29*b1cdbd2cSJim Jagielski #include "scitems.hxx"
30*b1cdbd2cSJim Jagielski #include <editeng/boxitem.hxx>
31*b1cdbd2cSJim Jagielski #include <svl/srchitem.hxx>
32*b1cdbd2cSJim Jagielski #include <sfx2/linkmgr.hxx>
33*b1cdbd2cSJim Jagielski #include <sfx2/bindings.hxx>
34*b1cdbd2cSJim Jagielski #include <vcl/virdev.hxx>
35*b1cdbd2cSJim Jagielski #include <sfx2/app.hxx>
36*b1cdbd2cSJim Jagielski
37*b1cdbd2cSJim Jagielski #include "undoblk.hxx"
38*b1cdbd2cSJim Jagielski #include "sc.hrc"
39*b1cdbd2cSJim Jagielski #include "globstr.hrc"
40*b1cdbd2cSJim Jagielski #include "global.hxx"
41*b1cdbd2cSJim Jagielski #include "rangenam.hxx"
42*b1cdbd2cSJim Jagielski #include "arealink.hxx"
43*b1cdbd2cSJim Jagielski #include "patattr.hxx"
44*b1cdbd2cSJim Jagielski #include "target.hxx"
45*b1cdbd2cSJim Jagielski #include "document.hxx"
46*b1cdbd2cSJim Jagielski #include "docpool.hxx"
47*b1cdbd2cSJim Jagielski #include "table.hxx"
48*b1cdbd2cSJim Jagielski #include "docsh.hxx"
49*b1cdbd2cSJim Jagielski #include "tabvwsh.hxx"
50*b1cdbd2cSJim Jagielski #include "undoolk.hxx"
51*b1cdbd2cSJim Jagielski #include "undoutil.hxx"
52*b1cdbd2cSJim Jagielski #include "chgtrack.hxx"
53*b1cdbd2cSJim Jagielski #include "dociter.hxx"
54*b1cdbd2cSJim Jagielski #include "cell.hxx"
55*b1cdbd2cSJim Jagielski #include "paramisc.hxx"
56*b1cdbd2cSJim Jagielski #include "postit.hxx"
57*b1cdbd2cSJim Jagielski #include "docuno.hxx"
58*b1cdbd2cSJim Jagielski
59*b1cdbd2cSJim Jagielski // STATIC DATA ---------------------------------------------------------------
60*b1cdbd2cSJim Jagielski
61*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoDeleteContents, SfxUndoAction);
62*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoFillTable, SfxUndoAction);
63*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoSelectionAttr, SfxUndoAction);
64*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoAutoFill, SfxUndoAction);
65*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoMerge, SfxUndoAction);
66*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoAutoFormat, SfxUndoAction);
67*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoReplace, SfxUndoAction);
68*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoTabOp, SfxUndoAction);
69*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoConversion, SfxUndoAction);
70*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoRefConversion, SfxUndoAction);
71*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoRefreshLink, SfxUndoAction);
72*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoInsertAreaLink, SfxUndoAction);
73*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoRemoveAreaLink, SfxUndoAction);
74*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoUpdateAreaLink, SfxUndoAction);
75*b1cdbd2cSJim Jagielski
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielski // To Do:
78*b1cdbd2cSJim Jagielski /*A*/ // SetOptimalHeight auf Dokument, wenn keine View
79*b1cdbd2cSJim Jagielski
80*b1cdbd2cSJim Jagielski
81*b1cdbd2cSJim Jagielski //============================================================================
82*b1cdbd2cSJim Jagielski // class ScUndoDeleteContents
83*b1cdbd2cSJim Jagielski //
84*b1cdbd2cSJim Jagielski // Inhalte loeschen
85*b1cdbd2cSJim Jagielski
86*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
87*b1cdbd2cSJim Jagielski
ScUndoDeleteContents(ScDocShell * pNewDocShell,const ScMarkData & rMark,const ScRange & rRange,ScDocument * pNewUndoDoc,sal_Bool bNewMulti,sal_uInt16 nNewFlags,sal_Bool bObjects)88*b1cdbd2cSJim Jagielski ScUndoDeleteContents::ScUndoDeleteContents(
89*b1cdbd2cSJim Jagielski ScDocShell* pNewDocShell,
90*b1cdbd2cSJim Jagielski const ScMarkData& rMark, const ScRange& rRange,
91*b1cdbd2cSJim Jagielski ScDocument* pNewUndoDoc, sal_Bool bNewMulti,
92*b1cdbd2cSJim Jagielski sal_uInt16 nNewFlags, sal_Bool bObjects )
93*b1cdbd2cSJim Jagielski //
94*b1cdbd2cSJim Jagielski : ScSimpleUndo( pNewDocShell ),
95*b1cdbd2cSJim Jagielski //
96*b1cdbd2cSJim Jagielski aRange ( rRange ),
97*b1cdbd2cSJim Jagielski aMarkData ( rMark ),
98*b1cdbd2cSJim Jagielski pUndoDoc ( pNewUndoDoc ),
99*b1cdbd2cSJim Jagielski pDrawUndo ( NULL ),
100*b1cdbd2cSJim Jagielski nFlags ( nNewFlags ),
101*b1cdbd2cSJim Jagielski bMulti ( bNewMulti ) // ueberliquid
102*b1cdbd2cSJim Jagielski {
103*b1cdbd2cSJim Jagielski if (bObjects)
104*b1cdbd2cSJim Jagielski pDrawUndo = GetSdrUndoAction( pDocShell->GetDocument() );
105*b1cdbd2cSJim Jagielski
106*b1cdbd2cSJim Jagielski if ( !(aMarkData.IsMarked() || aMarkData.IsMultiMarked()) ) // keine Zelle markiert:
107*b1cdbd2cSJim Jagielski aMarkData.SetMarkArea( aRange ); // Zelle unter Cursor markieren
108*b1cdbd2cSJim Jagielski
109*b1cdbd2cSJim Jagielski SetChangeTrack();
110*b1cdbd2cSJim Jagielski }
111*b1cdbd2cSJim Jagielski
112*b1cdbd2cSJim Jagielski
113*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
114*b1cdbd2cSJim Jagielski
~ScUndoDeleteContents()115*b1cdbd2cSJim Jagielski __EXPORT ScUndoDeleteContents::~ScUndoDeleteContents()
116*b1cdbd2cSJim Jagielski {
117*b1cdbd2cSJim Jagielski delete pUndoDoc;
118*b1cdbd2cSJim Jagielski DeleteSdrUndoAction( pDrawUndo );
119*b1cdbd2cSJim Jagielski }
120*b1cdbd2cSJim Jagielski
121*b1cdbd2cSJim Jagielski
122*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
123*b1cdbd2cSJim Jagielski
GetComment() const124*b1cdbd2cSJim Jagielski String __EXPORT ScUndoDeleteContents::GetComment() const
125*b1cdbd2cSJim Jagielski {
126*b1cdbd2cSJim Jagielski return ScGlobal::GetRscString( STR_UNDO_DELETECONTENTS ); // "Loeschen"
127*b1cdbd2cSJim Jagielski }
128*b1cdbd2cSJim Jagielski
129*b1cdbd2cSJim Jagielski
SetChangeTrack()130*b1cdbd2cSJim Jagielski void ScUndoDeleteContents::SetChangeTrack()
131*b1cdbd2cSJim Jagielski {
132*b1cdbd2cSJim Jagielski ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
133*b1cdbd2cSJim Jagielski if ( pChangeTrack && (nFlags & IDF_CONTENTS) )
134*b1cdbd2cSJim Jagielski pChangeTrack->AppendContentRange( aRange, pUndoDoc,
135*b1cdbd2cSJim Jagielski nStartChangeAction, nEndChangeAction );
136*b1cdbd2cSJim Jagielski else
137*b1cdbd2cSJim Jagielski nStartChangeAction = nEndChangeAction = 0;
138*b1cdbd2cSJim Jagielski }
139*b1cdbd2cSJim Jagielski
140*b1cdbd2cSJim Jagielski
141*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
142*b1cdbd2cSJim Jagielski
DoChange(const sal_Bool bUndo)143*b1cdbd2cSJim Jagielski void ScUndoDeleteContents::DoChange( const sal_Bool bUndo )
144*b1cdbd2cSJim Jagielski {
145*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
146*b1cdbd2cSJim Jagielski
147*b1cdbd2cSJim Jagielski SetViewMarkData( aMarkData );
148*b1cdbd2cSJim Jagielski
149*b1cdbd2cSJim Jagielski sal_uInt16 nExtFlags = 0;
150*b1cdbd2cSJim Jagielski
151*b1cdbd2cSJim Jagielski if (bUndo) // nur Undo
152*b1cdbd2cSJim Jagielski {
153*b1cdbd2cSJim Jagielski sal_uInt16 nUndoFlags = IDF_NONE; // entweder alle oder keine Inhalte kopieren
154*b1cdbd2cSJim Jagielski if (nFlags & IDF_CONTENTS) // (es sind nur die richtigen ins UndoDoc kopiert worden)
155*b1cdbd2cSJim Jagielski nUndoFlags |= IDF_CONTENTS;
156*b1cdbd2cSJim Jagielski if (nFlags & IDF_ATTRIB)
157*b1cdbd2cSJim Jagielski nUndoFlags |= IDF_ATTRIB;
158*b1cdbd2cSJim Jagielski if (nFlags & IDF_EDITATTR) // Edit-Engine-Attribute
159*b1cdbd2cSJim Jagielski nUndoFlags |= IDF_STRING; // -> Zellen werden geaendert
160*b1cdbd2cSJim Jagielski // do not create clones of note captions, they will be restored via drawing undo
161*b1cdbd2cSJim Jagielski nUndoFlags |= IDF_NOCAPTIONS;
162*b1cdbd2cSJim Jagielski
163*b1cdbd2cSJim Jagielski ScRange aCopyRange = aRange;
164*b1cdbd2cSJim Jagielski SCTAB nTabCount = pDoc->GetTableCount();
165*b1cdbd2cSJim Jagielski aCopyRange.aStart.SetTab(0);
166*b1cdbd2cSJim Jagielski aCopyRange.aEnd.SetTab(nTabCount-1);
167*b1cdbd2cSJim Jagielski
168*b1cdbd2cSJim Jagielski pUndoDoc->CopyToDocument( aCopyRange, nUndoFlags, bMulti, pDoc, &aMarkData );
169*b1cdbd2cSJim Jagielski
170*b1cdbd2cSJim Jagielski DoSdrUndoAction( pDrawUndo, pDoc );
171*b1cdbd2cSJim Jagielski
172*b1cdbd2cSJim Jagielski ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
173*b1cdbd2cSJim Jagielski if ( pChangeTrack )
174*b1cdbd2cSJim Jagielski pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
175*b1cdbd2cSJim Jagielski
176*b1cdbd2cSJim Jagielski pDocShell->UpdatePaintExt( nExtFlags, aRange ); // content after the change
177*b1cdbd2cSJim Jagielski }
178*b1cdbd2cSJim Jagielski else // nur Redo
179*b1cdbd2cSJim Jagielski {
180*b1cdbd2cSJim Jagielski pDocShell->UpdatePaintExt( nExtFlags, aRange ); // content before the change
181*b1cdbd2cSJim Jagielski
182*b1cdbd2cSJim Jagielski aMarkData.MarkToMulti();
183*b1cdbd2cSJim Jagielski RedoSdrUndoAction( pDrawUndo );
184*b1cdbd2cSJim Jagielski // do not delete objects and note captions, they have been removed via drawing undo
185*b1cdbd2cSJim Jagielski sal_uInt16 nRedoFlags = (nFlags & ~IDF_OBJECTS) | IDF_NOCAPTIONS;
186*b1cdbd2cSJim Jagielski pDoc->DeleteSelection( nRedoFlags, aMarkData );
187*b1cdbd2cSJim Jagielski aMarkData.MarkToSimple();
188*b1cdbd2cSJim Jagielski
189*b1cdbd2cSJim Jagielski SetChangeTrack();
190*b1cdbd2cSJim Jagielski }
191*b1cdbd2cSJim Jagielski
192*b1cdbd2cSJim Jagielski ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
193*b1cdbd2cSJim Jagielski if ( !( (pViewShell) && pViewShell->AdjustRowHeight(
194*b1cdbd2cSJim Jagielski aRange.aStart.Row(), aRange.aEnd.Row() ) ) )
195*b1cdbd2cSJim Jagielski /*A*/ pDocShell->PostPaint( aRange, PAINT_GRID | PAINT_EXTRAS, nExtFlags );
196*b1cdbd2cSJim Jagielski
197*b1cdbd2cSJim Jagielski pDocShell->PostDataChanged();
198*b1cdbd2cSJim Jagielski if (pViewShell)
199*b1cdbd2cSJim Jagielski pViewShell->CellContentChanged();
200*b1cdbd2cSJim Jagielski
201*b1cdbd2cSJim Jagielski ShowTable( aRange );
202*b1cdbd2cSJim Jagielski }
203*b1cdbd2cSJim Jagielski
204*b1cdbd2cSJim Jagielski
205*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
206*b1cdbd2cSJim Jagielski
Undo()207*b1cdbd2cSJim Jagielski void __EXPORT ScUndoDeleteContents::Undo()
208*b1cdbd2cSJim Jagielski {
209*b1cdbd2cSJim Jagielski BeginUndo();
210*b1cdbd2cSJim Jagielski DoChange( sal_True );
211*b1cdbd2cSJim Jagielski EndUndo();
212*b1cdbd2cSJim Jagielski
213*b1cdbd2cSJim Jagielski // #i97876# Spreadsheet data changes are not notified
214*b1cdbd2cSJim Jagielski ScModelObj* pModelObj = ScModelObj::getImplementation( pDocShell->GetModel() );
215*b1cdbd2cSJim Jagielski if ( pModelObj && pModelObj->HasChangesListeners() )
216*b1cdbd2cSJim Jagielski {
217*b1cdbd2cSJim Jagielski ScRangeList aChangeRanges;
218*b1cdbd2cSJim Jagielski aChangeRanges.Append( aRange );
219*b1cdbd2cSJim Jagielski pModelObj->NotifyChanges( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "cell-change" ) ), aChangeRanges );
220*b1cdbd2cSJim Jagielski }
221*b1cdbd2cSJim Jagielski }
222*b1cdbd2cSJim Jagielski
223*b1cdbd2cSJim Jagielski
224*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
225*b1cdbd2cSJim Jagielski
Redo()226*b1cdbd2cSJim Jagielski void __EXPORT ScUndoDeleteContents::Redo()
227*b1cdbd2cSJim Jagielski {
228*b1cdbd2cSJim Jagielski BeginRedo();
229*b1cdbd2cSJim Jagielski DoChange( sal_False );
230*b1cdbd2cSJim Jagielski EndRedo();
231*b1cdbd2cSJim Jagielski
232*b1cdbd2cSJim Jagielski // #i97876# Spreadsheet data changes are not notified
233*b1cdbd2cSJim Jagielski ScModelObj* pModelObj = ScModelObj::getImplementation( pDocShell->GetModel() );
234*b1cdbd2cSJim Jagielski if ( pModelObj && pModelObj->HasChangesListeners() )
235*b1cdbd2cSJim Jagielski {
236*b1cdbd2cSJim Jagielski ScRangeList aChangeRanges;
237*b1cdbd2cSJim Jagielski aChangeRanges.Append( aRange );
238*b1cdbd2cSJim Jagielski pModelObj->NotifyChanges( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "cell-change" ) ), aChangeRanges );
239*b1cdbd2cSJim Jagielski }
240*b1cdbd2cSJim Jagielski }
241*b1cdbd2cSJim Jagielski
242*b1cdbd2cSJim Jagielski
243*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
244*b1cdbd2cSJim Jagielski
Repeat(SfxRepeatTarget & rTarget)245*b1cdbd2cSJim Jagielski void __EXPORT ScUndoDeleteContents::Repeat(SfxRepeatTarget& rTarget)
246*b1cdbd2cSJim Jagielski {
247*b1cdbd2cSJim Jagielski if (rTarget.ISA(ScTabViewTarget))
248*b1cdbd2cSJim Jagielski ((ScTabViewTarget&)rTarget).GetViewShell()->DeleteContents( nFlags, sal_True );
249*b1cdbd2cSJim Jagielski }
250*b1cdbd2cSJim Jagielski
251*b1cdbd2cSJim Jagielski
252*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
253*b1cdbd2cSJim Jagielski
CanRepeat(SfxRepeatTarget & rTarget) const254*b1cdbd2cSJim Jagielski sal_Bool __EXPORT ScUndoDeleteContents::CanRepeat(SfxRepeatTarget& rTarget) const
255*b1cdbd2cSJim Jagielski {
256*b1cdbd2cSJim Jagielski return (rTarget.ISA(ScTabViewTarget));
257*b1cdbd2cSJim Jagielski }
258*b1cdbd2cSJim Jagielski
259*b1cdbd2cSJim Jagielski
260*b1cdbd2cSJim Jagielski //============================================================================
261*b1cdbd2cSJim Jagielski // class ScUndoFillTable
262*b1cdbd2cSJim Jagielski //
263*b1cdbd2cSJim Jagielski // Tabellen ausfuellen
264*b1cdbd2cSJim Jagielski // (Bearbeiten|Ausfuellen|...)
265*b1cdbd2cSJim Jagielski
266*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
267*b1cdbd2cSJim Jagielski
ScUndoFillTable(ScDocShell * pNewDocShell,const ScMarkData & rMark,SCCOL nStartX,SCROW nStartY,SCTAB nStartZ,SCCOL nEndX,SCROW nEndY,SCTAB nEndZ,ScDocument * pNewUndoDoc,sal_Bool bNewMulti,SCTAB nSrc,sal_uInt16 nFlg,sal_uInt16 nFunc,sal_Bool bSkip,sal_Bool bLink)268*b1cdbd2cSJim Jagielski ScUndoFillTable::ScUndoFillTable( ScDocShell* pNewDocShell,
269*b1cdbd2cSJim Jagielski const ScMarkData& rMark,
270*b1cdbd2cSJim Jagielski SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
271*b1cdbd2cSJim Jagielski SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
272*b1cdbd2cSJim Jagielski ScDocument* pNewUndoDoc, sal_Bool bNewMulti, SCTAB nSrc,
273*b1cdbd2cSJim Jagielski sal_uInt16 nFlg, sal_uInt16 nFunc, sal_Bool bSkip, sal_Bool bLink )
274*b1cdbd2cSJim Jagielski //
275*b1cdbd2cSJim Jagielski : ScSimpleUndo( pNewDocShell ),
276*b1cdbd2cSJim Jagielski //
277*b1cdbd2cSJim Jagielski aRange ( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ),
278*b1cdbd2cSJim Jagielski aMarkData ( rMark ),
279*b1cdbd2cSJim Jagielski pUndoDoc ( pNewUndoDoc ),
280*b1cdbd2cSJim Jagielski nFlags ( nFlg ),
281*b1cdbd2cSJim Jagielski nFunction ( nFunc ),
282*b1cdbd2cSJim Jagielski nSrcTab ( nSrc ),
283*b1cdbd2cSJim Jagielski bMulti ( bNewMulti ),
284*b1cdbd2cSJim Jagielski bSkipEmpty ( bSkip ),
285*b1cdbd2cSJim Jagielski bAsLink ( bLink )
286*b1cdbd2cSJim Jagielski {
287*b1cdbd2cSJim Jagielski SetChangeTrack();
288*b1cdbd2cSJim Jagielski }
289*b1cdbd2cSJim Jagielski
290*b1cdbd2cSJim Jagielski
291*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
292*b1cdbd2cSJim Jagielski
~ScUndoFillTable()293*b1cdbd2cSJim Jagielski __EXPORT ScUndoFillTable::~ScUndoFillTable()
294*b1cdbd2cSJim Jagielski {
295*b1cdbd2cSJim Jagielski delete pUndoDoc;
296*b1cdbd2cSJim Jagielski }
297*b1cdbd2cSJim Jagielski
298*b1cdbd2cSJim Jagielski
299*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
300*b1cdbd2cSJim Jagielski
GetComment() const301*b1cdbd2cSJim Jagielski String __EXPORT ScUndoFillTable::GetComment() const
302*b1cdbd2cSJim Jagielski {
303*b1cdbd2cSJim Jagielski return ScGlobal::GetRscString( STR_FILL_TAB );
304*b1cdbd2cSJim Jagielski }
305*b1cdbd2cSJim Jagielski
306*b1cdbd2cSJim Jagielski
SetChangeTrack()307*b1cdbd2cSJim Jagielski void ScUndoFillTable::SetChangeTrack()
308*b1cdbd2cSJim Jagielski {
309*b1cdbd2cSJim Jagielski ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
310*b1cdbd2cSJim Jagielski if ( pChangeTrack )
311*b1cdbd2cSJim Jagielski {
312*b1cdbd2cSJim Jagielski SCTAB nTabCount = pDocShell->GetDocument()->GetTableCount();
313*b1cdbd2cSJim Jagielski ScRange aWorkRange(aRange);
314*b1cdbd2cSJim Jagielski nStartChangeAction = 0;
315*b1cdbd2cSJim Jagielski sal_uLong nTmpAction;
316*b1cdbd2cSJim Jagielski for ( SCTAB i = 0; i < nTabCount; i++ )
317*b1cdbd2cSJim Jagielski {
318*b1cdbd2cSJim Jagielski if (i != nSrcTab && aMarkData.GetTableSelect(i))
319*b1cdbd2cSJim Jagielski {
320*b1cdbd2cSJim Jagielski aWorkRange.aStart.SetTab(i);
321*b1cdbd2cSJim Jagielski aWorkRange.aEnd.SetTab(i);
322*b1cdbd2cSJim Jagielski pChangeTrack->AppendContentRange( aWorkRange, pUndoDoc,
323*b1cdbd2cSJim Jagielski nTmpAction, nEndChangeAction );
324*b1cdbd2cSJim Jagielski if ( !nStartChangeAction )
325*b1cdbd2cSJim Jagielski nStartChangeAction = nTmpAction;
326*b1cdbd2cSJim Jagielski }
327*b1cdbd2cSJim Jagielski }
328*b1cdbd2cSJim Jagielski }
329*b1cdbd2cSJim Jagielski else
330*b1cdbd2cSJim Jagielski nStartChangeAction = nEndChangeAction = 0;
331*b1cdbd2cSJim Jagielski }
332*b1cdbd2cSJim Jagielski
333*b1cdbd2cSJim Jagielski
334*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
335*b1cdbd2cSJim Jagielski
DoChange(const sal_Bool bUndo)336*b1cdbd2cSJim Jagielski void ScUndoFillTable::DoChange( const sal_Bool bUndo )
337*b1cdbd2cSJim Jagielski {
338*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
339*b1cdbd2cSJim Jagielski
340*b1cdbd2cSJim Jagielski SetViewMarkData( aMarkData );
341*b1cdbd2cSJim Jagielski
342*b1cdbd2cSJim Jagielski if (bUndo) // nur Undo
343*b1cdbd2cSJim Jagielski {
344*b1cdbd2cSJim Jagielski SCTAB nTabCount = pDoc->GetTableCount();
345*b1cdbd2cSJim Jagielski ScRange aWorkRange(aRange);
346*b1cdbd2cSJim Jagielski for ( SCTAB i = 0; i < nTabCount; i++ )
347*b1cdbd2cSJim Jagielski if (i != nSrcTab && aMarkData.GetTableSelect(i))
348*b1cdbd2cSJim Jagielski {
349*b1cdbd2cSJim Jagielski aWorkRange.aStart.SetTab(i);
350*b1cdbd2cSJim Jagielski aWorkRange.aEnd.SetTab(i);
351*b1cdbd2cSJim Jagielski if (bMulti)
352*b1cdbd2cSJim Jagielski pDoc->DeleteSelectionTab( i, IDF_ALL, aMarkData );
353*b1cdbd2cSJim Jagielski else
354*b1cdbd2cSJim Jagielski pDoc->DeleteAreaTab( aWorkRange, IDF_ALL );
355*b1cdbd2cSJim Jagielski pUndoDoc->CopyToDocument( aWorkRange, IDF_ALL, bMulti, pDoc, &aMarkData );
356*b1cdbd2cSJim Jagielski }
357*b1cdbd2cSJim Jagielski
358*b1cdbd2cSJim Jagielski ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
359*b1cdbd2cSJim Jagielski if ( pChangeTrack )
360*b1cdbd2cSJim Jagielski pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
361*b1cdbd2cSJim Jagielski }
362*b1cdbd2cSJim Jagielski else // nur Redo
363*b1cdbd2cSJim Jagielski {
364*b1cdbd2cSJim Jagielski aMarkData.MarkToMulti();
365*b1cdbd2cSJim Jagielski pDoc->FillTabMarked( nSrcTab, aMarkData, nFlags, nFunction, bSkipEmpty, bAsLink );
366*b1cdbd2cSJim Jagielski aMarkData.MarkToSimple();
367*b1cdbd2cSJim Jagielski SetChangeTrack();
368*b1cdbd2cSJim Jagielski }
369*b1cdbd2cSJim Jagielski
370*b1cdbd2cSJim Jagielski pDocShell->PostPaint(0,0,0,MAXCOL,MAXROW,MAXTAB, PAINT_GRID|PAINT_EXTRAS);
371*b1cdbd2cSJim Jagielski pDocShell->PostDataChanged();
372*b1cdbd2cSJim Jagielski
373*b1cdbd2cSJim Jagielski // CellContentChanged kommt mit der Markierung
374*b1cdbd2cSJim Jagielski
375*b1cdbd2cSJim Jagielski ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
376*b1cdbd2cSJim Jagielski if (pViewShell)
377*b1cdbd2cSJim Jagielski {
378*b1cdbd2cSJim Jagielski SCTAB nTab = pViewShell->GetViewData()->GetTabNo();
379*b1cdbd2cSJim Jagielski if ( !aMarkData.GetTableSelect(nTab) )
380*b1cdbd2cSJim Jagielski pViewShell->SetTabNo( nSrcTab );
381*b1cdbd2cSJim Jagielski
382*b1cdbd2cSJim Jagielski pViewShell->DoneBlockMode(); // gibt sonst Probleme, weil Markierung auf falscher Tabelle
383*b1cdbd2cSJim Jagielski }
384*b1cdbd2cSJim Jagielski }
385*b1cdbd2cSJim Jagielski
386*b1cdbd2cSJim Jagielski
387*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
388*b1cdbd2cSJim Jagielski
Undo()389*b1cdbd2cSJim Jagielski void __EXPORT ScUndoFillTable::Undo()
390*b1cdbd2cSJim Jagielski {
391*b1cdbd2cSJim Jagielski BeginUndo();
392*b1cdbd2cSJim Jagielski DoChange( sal_True );
393*b1cdbd2cSJim Jagielski EndUndo();
394*b1cdbd2cSJim Jagielski }
395*b1cdbd2cSJim Jagielski
396*b1cdbd2cSJim Jagielski
397*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
398*b1cdbd2cSJim Jagielski
Redo()399*b1cdbd2cSJim Jagielski void __EXPORT ScUndoFillTable::Redo()
400*b1cdbd2cSJim Jagielski {
401*b1cdbd2cSJim Jagielski BeginRedo();
402*b1cdbd2cSJim Jagielski DoChange( sal_False );
403*b1cdbd2cSJim Jagielski EndRedo();
404*b1cdbd2cSJim Jagielski }
405*b1cdbd2cSJim Jagielski
406*b1cdbd2cSJim Jagielski
407*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
408*b1cdbd2cSJim Jagielski
Repeat(SfxRepeatTarget & rTarget)409*b1cdbd2cSJim Jagielski void __EXPORT ScUndoFillTable::Repeat(SfxRepeatTarget& rTarget)
410*b1cdbd2cSJim Jagielski {
411*b1cdbd2cSJim Jagielski if (rTarget.ISA(ScTabViewTarget))
412*b1cdbd2cSJim Jagielski ((ScTabViewTarget&)rTarget).GetViewShell()->FillTab( nFlags, nFunction, bSkipEmpty, bAsLink );
413*b1cdbd2cSJim Jagielski }
414*b1cdbd2cSJim Jagielski
415*b1cdbd2cSJim Jagielski
416*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
417*b1cdbd2cSJim Jagielski
CanRepeat(SfxRepeatTarget & rTarget) const418*b1cdbd2cSJim Jagielski sal_Bool __EXPORT ScUndoFillTable::CanRepeat(SfxRepeatTarget& rTarget) const
419*b1cdbd2cSJim Jagielski {
420*b1cdbd2cSJim Jagielski return (rTarget.ISA(ScTabViewTarget));
421*b1cdbd2cSJim Jagielski }
422*b1cdbd2cSJim Jagielski
423*b1cdbd2cSJim Jagielski
424*b1cdbd2cSJim Jagielski //============================================================================
425*b1cdbd2cSJim Jagielski // class ScUndoSelectionAttr
426*b1cdbd2cSJim Jagielski //
427*b1cdbd2cSJim Jagielski // Zellformat aendern
428*b1cdbd2cSJim Jagielski
429*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
430*b1cdbd2cSJim Jagielski
ScUndoSelectionAttr(ScDocShell * pNewDocShell,const ScMarkData & rMark,SCCOL nStartX,SCROW nStartY,SCTAB nStartZ,SCCOL nEndX,SCROW nEndY,SCTAB nEndZ,ScDocument * pNewUndoDoc,sal_Bool bNewMulti,const ScPatternAttr * pNewApply,const SvxBoxItem * pNewOuter,const SvxBoxInfoItem * pNewInner)431*b1cdbd2cSJim Jagielski ScUndoSelectionAttr::ScUndoSelectionAttr( ScDocShell* pNewDocShell,
432*b1cdbd2cSJim Jagielski const ScMarkData& rMark,
433*b1cdbd2cSJim Jagielski SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
434*b1cdbd2cSJim Jagielski SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
435*b1cdbd2cSJim Jagielski ScDocument* pNewUndoDoc, sal_Bool bNewMulti,
436*b1cdbd2cSJim Jagielski const ScPatternAttr* pNewApply,
437*b1cdbd2cSJim Jagielski const SvxBoxItem* pNewOuter, const SvxBoxInfoItem* pNewInner )
438*b1cdbd2cSJim Jagielski //
439*b1cdbd2cSJim Jagielski : ScSimpleUndo( pNewDocShell ),
440*b1cdbd2cSJim Jagielski //
441*b1cdbd2cSJim Jagielski aMarkData ( rMark ),
442*b1cdbd2cSJim Jagielski aRange ( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ),
443*b1cdbd2cSJim Jagielski pUndoDoc ( pNewUndoDoc ),
444*b1cdbd2cSJim Jagielski bMulti ( bNewMulti )
445*b1cdbd2cSJim Jagielski {
446*b1cdbd2cSJim Jagielski ScDocumentPool* pPool = pDocShell->GetDocument()->GetPool();
447*b1cdbd2cSJim Jagielski pApplyPattern = (ScPatternAttr*) &pPool->Put( *pNewApply );
448*b1cdbd2cSJim Jagielski pLineOuter = pNewOuter ? (SvxBoxItem*) &pPool->Put( *pNewOuter ) : NULL;
449*b1cdbd2cSJim Jagielski pLineInner = pNewInner ? (SvxBoxInfoItem*) &pPool->Put( *pNewInner ) : NULL;
450*b1cdbd2cSJim Jagielski }
451*b1cdbd2cSJim Jagielski
452*b1cdbd2cSJim Jagielski
453*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
454*b1cdbd2cSJim Jagielski
~ScUndoSelectionAttr()455*b1cdbd2cSJim Jagielski __EXPORT ScUndoSelectionAttr::~ScUndoSelectionAttr()
456*b1cdbd2cSJim Jagielski {
457*b1cdbd2cSJim Jagielski ScDocumentPool* pPool = pDocShell->GetDocument()->GetPool();
458*b1cdbd2cSJim Jagielski pPool->Remove(*pApplyPattern);
459*b1cdbd2cSJim Jagielski if (pLineOuter)
460*b1cdbd2cSJim Jagielski pPool->Remove(*pLineOuter);
461*b1cdbd2cSJim Jagielski if (pLineInner)
462*b1cdbd2cSJim Jagielski pPool->Remove(*pLineInner);
463*b1cdbd2cSJim Jagielski
464*b1cdbd2cSJim Jagielski delete pUndoDoc;
465*b1cdbd2cSJim Jagielski }
466*b1cdbd2cSJim Jagielski
467*b1cdbd2cSJim Jagielski
468*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
469*b1cdbd2cSJim Jagielski
GetComment() const470*b1cdbd2cSJim Jagielski String __EXPORT ScUndoSelectionAttr::GetComment() const
471*b1cdbd2cSJim Jagielski {
472*b1cdbd2cSJim Jagielski //"Attribute" "/Linien"
473*b1cdbd2cSJim Jagielski return ScGlobal::GetRscString( pLineOuter ? STR_UNDO_SELATTRLINES : STR_UNDO_SELATTR );
474*b1cdbd2cSJim Jagielski }
475*b1cdbd2cSJim Jagielski
476*b1cdbd2cSJim Jagielski
477*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
478*b1cdbd2cSJim Jagielski
DoChange(const sal_Bool bUndo)479*b1cdbd2cSJim Jagielski void ScUndoSelectionAttr::DoChange( const sal_Bool bUndo )
480*b1cdbd2cSJim Jagielski {
481*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
482*b1cdbd2cSJim Jagielski
483*b1cdbd2cSJim Jagielski SetViewMarkData( aMarkData );
484*b1cdbd2cSJim Jagielski
485*b1cdbd2cSJim Jagielski ScRange aEffRange( aRange );
486*b1cdbd2cSJim Jagielski if ( pDoc->HasAttrib( aEffRange, HASATTR_MERGED ) ) // zusammengefasste Zellen?
487*b1cdbd2cSJim Jagielski pDoc->ExtendMerge( aEffRange );
488*b1cdbd2cSJim Jagielski
489*b1cdbd2cSJim Jagielski sal_uInt16 nExtFlags = 0;
490*b1cdbd2cSJim Jagielski pDocShell->UpdatePaintExt( nExtFlags, aEffRange );
491*b1cdbd2cSJim Jagielski
492*b1cdbd2cSJim Jagielski if (bUndo) // nur bei Undo
493*b1cdbd2cSJim Jagielski {
494*b1cdbd2cSJim Jagielski ScRange aCopyRange = aRange;
495*b1cdbd2cSJim Jagielski SCTAB nTabCount = pDoc->GetTableCount();
496*b1cdbd2cSJim Jagielski aCopyRange.aStart.SetTab(0);
497*b1cdbd2cSJim Jagielski aCopyRange.aEnd.SetTab(nTabCount-1);
498*b1cdbd2cSJim Jagielski pUndoDoc->CopyToDocument( aCopyRange, IDF_ATTRIB, bMulti, pDoc, &aMarkData );
499*b1cdbd2cSJim Jagielski }
500*b1cdbd2cSJim Jagielski else // nur bei Redo
501*b1cdbd2cSJim Jagielski {
502*b1cdbd2cSJim Jagielski aMarkData.MarkToMulti();
503*b1cdbd2cSJim Jagielski pDoc->ApplySelectionPattern( *pApplyPattern, aMarkData );
504*b1cdbd2cSJim Jagielski aMarkData.MarkToSimple();
505*b1cdbd2cSJim Jagielski
506*b1cdbd2cSJim Jagielski if (pLineOuter)
507*b1cdbd2cSJim Jagielski pDoc->ApplySelectionFrame( aMarkData, pLineOuter, pLineInner );
508*b1cdbd2cSJim Jagielski }
509*b1cdbd2cSJim Jagielski
510*b1cdbd2cSJim Jagielski ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
511*b1cdbd2cSJim Jagielski if ( !( (pViewShell) && pViewShell->AdjustBlockHeight() ) )
512*b1cdbd2cSJim Jagielski /*A*/ pDocShell->PostPaint( aEffRange, PAINT_GRID | PAINT_EXTRAS, nExtFlags );
513*b1cdbd2cSJim Jagielski
514*b1cdbd2cSJim Jagielski ShowTable( aRange );
515*b1cdbd2cSJim Jagielski }
516*b1cdbd2cSJim Jagielski
517*b1cdbd2cSJim Jagielski
518*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
519*b1cdbd2cSJim Jagielski
Undo()520*b1cdbd2cSJim Jagielski void __EXPORT ScUndoSelectionAttr::Undo()
521*b1cdbd2cSJim Jagielski {
522*b1cdbd2cSJim Jagielski BeginUndo();
523*b1cdbd2cSJim Jagielski DoChange( sal_True );
524*b1cdbd2cSJim Jagielski EndUndo();
525*b1cdbd2cSJim Jagielski }
526*b1cdbd2cSJim Jagielski
527*b1cdbd2cSJim Jagielski
528*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
529*b1cdbd2cSJim Jagielski
Redo()530*b1cdbd2cSJim Jagielski void __EXPORT ScUndoSelectionAttr::Redo()
531*b1cdbd2cSJim Jagielski {
532*b1cdbd2cSJim Jagielski BeginRedo();
533*b1cdbd2cSJim Jagielski DoChange( sal_False );
534*b1cdbd2cSJim Jagielski EndRedo();
535*b1cdbd2cSJim Jagielski }
536*b1cdbd2cSJim Jagielski
537*b1cdbd2cSJim Jagielski
538*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
539*b1cdbd2cSJim Jagielski
Repeat(SfxRepeatTarget & rTarget)540*b1cdbd2cSJim Jagielski void __EXPORT ScUndoSelectionAttr::Repeat(SfxRepeatTarget& rTarget)
541*b1cdbd2cSJim Jagielski {
542*b1cdbd2cSJim Jagielski if (rTarget.ISA(ScTabViewTarget))
543*b1cdbd2cSJim Jagielski {
544*b1cdbd2cSJim Jagielski ScTabViewShell& rViewShell = *((ScTabViewTarget&)rTarget).GetViewShell();
545*b1cdbd2cSJim Jagielski if (pLineOuter)
546*b1cdbd2cSJim Jagielski rViewShell.ApplyPatternLines( *pApplyPattern, pLineOuter, pLineInner, sal_True );
547*b1cdbd2cSJim Jagielski else
548*b1cdbd2cSJim Jagielski rViewShell.ApplySelectionPattern( *pApplyPattern, sal_True );
549*b1cdbd2cSJim Jagielski }
550*b1cdbd2cSJim Jagielski }
551*b1cdbd2cSJim Jagielski
552*b1cdbd2cSJim Jagielski
553*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
554*b1cdbd2cSJim Jagielski
CanRepeat(SfxRepeatTarget & rTarget) const555*b1cdbd2cSJim Jagielski sal_Bool __EXPORT ScUndoSelectionAttr::CanRepeat(SfxRepeatTarget& rTarget) const
556*b1cdbd2cSJim Jagielski {
557*b1cdbd2cSJim Jagielski return (rTarget.ISA(ScTabViewTarget));
558*b1cdbd2cSJim Jagielski }
559*b1cdbd2cSJim Jagielski
560*b1cdbd2cSJim Jagielski
561*b1cdbd2cSJim Jagielski //============================================================================
562*b1cdbd2cSJim Jagielski // class ScUndoAutoFill
563*b1cdbd2cSJim Jagielski //
564*b1cdbd2cSJim Jagielski // Auto-Fill (nur einfache Bloecke)
565*b1cdbd2cSJim Jagielski
566*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
567*b1cdbd2cSJim Jagielski
ScUndoAutoFill(ScDocShell * pNewDocShell,const ScRange & rRange,const ScRange & rSourceArea,ScDocument * pNewUndoDoc,const ScMarkData & rMark,FillDir eNewFillDir,FillCmd eNewFillCmd,FillDateCmd eNewFillDateCmd,double fNewStartValue,double fNewStepValue,double fNewMaxValue,sal_uInt16 nMaxShIndex)568*b1cdbd2cSJim Jagielski ScUndoAutoFill::ScUndoAutoFill( ScDocShell* pNewDocShell,
569*b1cdbd2cSJim Jagielski const ScRange& rRange, const ScRange& rSourceArea,
570*b1cdbd2cSJim Jagielski ScDocument* pNewUndoDoc, const ScMarkData& rMark,
571*b1cdbd2cSJim Jagielski FillDir eNewFillDir, FillCmd eNewFillCmd, FillDateCmd eNewFillDateCmd,
572*b1cdbd2cSJim Jagielski double fNewStartValue, double fNewStepValue, double fNewMaxValue,
573*b1cdbd2cSJim Jagielski sal_uInt16 nMaxShIndex )
574*b1cdbd2cSJim Jagielski //
575*b1cdbd2cSJim Jagielski : ScBlockUndo( pNewDocShell, rRange, SC_UNDO_AUTOHEIGHT ),
576*b1cdbd2cSJim Jagielski //
577*b1cdbd2cSJim Jagielski aSource ( rSourceArea ),
578*b1cdbd2cSJim Jagielski aMarkData ( rMark ),
579*b1cdbd2cSJim Jagielski pUndoDoc ( pNewUndoDoc ),
580*b1cdbd2cSJim Jagielski eFillDir ( eNewFillDir ),
581*b1cdbd2cSJim Jagielski eFillCmd ( eNewFillCmd ),
582*b1cdbd2cSJim Jagielski eFillDateCmd ( eNewFillDateCmd ),
583*b1cdbd2cSJim Jagielski fStartValue ( fNewStartValue ),
584*b1cdbd2cSJim Jagielski fStepValue ( fNewStepValue ),
585*b1cdbd2cSJim Jagielski fMaxValue ( fNewMaxValue ),
586*b1cdbd2cSJim Jagielski nMaxSharedIndex ( nMaxShIndex)
587*b1cdbd2cSJim Jagielski {
588*b1cdbd2cSJim Jagielski SetChangeTrack();
589*b1cdbd2cSJim Jagielski }
590*b1cdbd2cSJim Jagielski
591*b1cdbd2cSJim Jagielski
592*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
593*b1cdbd2cSJim Jagielski
~ScUndoAutoFill()594*b1cdbd2cSJim Jagielski __EXPORT ScUndoAutoFill::~ScUndoAutoFill()
595*b1cdbd2cSJim Jagielski {
596*b1cdbd2cSJim Jagielski pDocShell->GetDocument()->EraseNonUsedSharedNames(nMaxSharedIndex);
597*b1cdbd2cSJim Jagielski delete pUndoDoc;
598*b1cdbd2cSJim Jagielski }
599*b1cdbd2cSJim Jagielski
600*b1cdbd2cSJim Jagielski
601*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
602*b1cdbd2cSJim Jagielski
GetComment() const603*b1cdbd2cSJim Jagielski String __EXPORT ScUndoAutoFill::GetComment() const
604*b1cdbd2cSJim Jagielski {
605*b1cdbd2cSJim Jagielski return ScGlobal::GetRscString( STR_UNDO_AUTOFILL ); //"Ausfuellen"
606*b1cdbd2cSJim Jagielski }
607*b1cdbd2cSJim Jagielski
608*b1cdbd2cSJim Jagielski
SetChangeTrack()609*b1cdbd2cSJim Jagielski void ScUndoAutoFill::SetChangeTrack()
610*b1cdbd2cSJim Jagielski {
611*b1cdbd2cSJim Jagielski ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
612*b1cdbd2cSJim Jagielski if ( pChangeTrack )
613*b1cdbd2cSJim Jagielski pChangeTrack->AppendContentRange( aBlockRange, pUndoDoc,
614*b1cdbd2cSJim Jagielski nStartChangeAction, nEndChangeAction );
615*b1cdbd2cSJim Jagielski else
616*b1cdbd2cSJim Jagielski nStartChangeAction = nEndChangeAction = 0;
617*b1cdbd2cSJim Jagielski }
618*b1cdbd2cSJim Jagielski
619*b1cdbd2cSJim Jagielski
620*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
621*b1cdbd2cSJim Jagielski
Undo()622*b1cdbd2cSJim Jagielski void __EXPORT ScUndoAutoFill::Undo()
623*b1cdbd2cSJim Jagielski {
624*b1cdbd2cSJim Jagielski BeginUndo();
625*b1cdbd2cSJim Jagielski
626*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
627*b1cdbd2cSJim Jagielski
628*b1cdbd2cSJim Jagielski SCTAB nTabCount = pDoc->GetTableCount();
629*b1cdbd2cSJim Jagielski for (SCTAB nTab=0; nTab<nTabCount; nTab++)
630*b1cdbd2cSJim Jagielski {
631*b1cdbd2cSJim Jagielski if (aMarkData.GetTableSelect(nTab))
632*b1cdbd2cSJim Jagielski {
633*b1cdbd2cSJim Jagielski ScRange aWorkRange = aBlockRange;
634*b1cdbd2cSJim Jagielski aWorkRange.aStart.SetTab(nTab);
635*b1cdbd2cSJim Jagielski aWorkRange.aEnd.SetTab(nTab);
636*b1cdbd2cSJim Jagielski
637*b1cdbd2cSJim Jagielski sal_uInt16 nExtFlags = 0;
638*b1cdbd2cSJim Jagielski pDocShell->UpdatePaintExt( nExtFlags, aWorkRange );
639*b1cdbd2cSJim Jagielski pDoc->DeleteAreaTab( aWorkRange, IDF_AUTOFILL );
640*b1cdbd2cSJim Jagielski pUndoDoc->CopyToDocument( aWorkRange, IDF_AUTOFILL, sal_False, pDoc );
641*b1cdbd2cSJim Jagielski
642*b1cdbd2cSJim Jagielski pDoc->ExtendMerge( aWorkRange, sal_True );
643*b1cdbd2cSJim Jagielski pDocShell->PostPaint( aWorkRange, PAINT_GRID, nExtFlags );
644*b1cdbd2cSJim Jagielski }
645*b1cdbd2cSJim Jagielski }
646*b1cdbd2cSJim Jagielski pDocShell->PostDataChanged();
647*b1cdbd2cSJim Jagielski ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
648*b1cdbd2cSJim Jagielski if (pViewShell)
649*b1cdbd2cSJim Jagielski pViewShell->CellContentChanged();
650*b1cdbd2cSJim Jagielski
651*b1cdbd2cSJim Jagielski // Shared-Names loeschen
652*b1cdbd2cSJim Jagielski // Falls Undo ins Dokument gespeichert
653*b1cdbd2cSJim Jagielski // => automatisches Loeschen am Ende
654*b1cdbd2cSJim Jagielski // umarbeiten!!
655*b1cdbd2cSJim Jagielski
656*b1cdbd2cSJim Jagielski String aName = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("___SC_"));
657*b1cdbd2cSJim Jagielski aName += String::CreateFromInt32(nMaxSharedIndex);
658*b1cdbd2cSJim Jagielski aName += '_';
659*b1cdbd2cSJim Jagielski ScRangeName* pRangeName = pDoc->GetRangeName();
660*b1cdbd2cSJim Jagielski sal_Bool bHasFound = sal_False;
661*b1cdbd2cSJim Jagielski for (sal_uInt16 i = 0; i < pRangeName->GetCount(); i++)
662*b1cdbd2cSJim Jagielski {
663*b1cdbd2cSJim Jagielski ScRangeData* pRangeData = (*pRangeName)[i];
664*b1cdbd2cSJim Jagielski if (pRangeData)
665*b1cdbd2cSJim Jagielski {
666*b1cdbd2cSJim Jagielski String aRName;
667*b1cdbd2cSJim Jagielski pRangeData->GetName(aRName);
668*b1cdbd2cSJim Jagielski if (aRName.Search(aName) != STRING_NOTFOUND)
669*b1cdbd2cSJim Jagielski {
670*b1cdbd2cSJim Jagielski pRangeName->AtFree(i);
671*b1cdbd2cSJim Jagielski bHasFound = sal_True;
672*b1cdbd2cSJim Jagielski }
673*b1cdbd2cSJim Jagielski }
674*b1cdbd2cSJim Jagielski }
675*b1cdbd2cSJim Jagielski if (bHasFound)
676*b1cdbd2cSJim Jagielski pRangeName->SetSharedMaxIndex(pRangeName->GetSharedMaxIndex()-1);
677*b1cdbd2cSJim Jagielski
678*b1cdbd2cSJim Jagielski ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
679*b1cdbd2cSJim Jagielski if ( pChangeTrack )
680*b1cdbd2cSJim Jagielski pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
681*b1cdbd2cSJim Jagielski
682*b1cdbd2cSJim Jagielski EndUndo();
683*b1cdbd2cSJim Jagielski }
684*b1cdbd2cSJim Jagielski
685*b1cdbd2cSJim Jagielski
686*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
687*b1cdbd2cSJim Jagielski
Redo()688*b1cdbd2cSJim Jagielski void __EXPORT ScUndoAutoFill::Redo()
689*b1cdbd2cSJim Jagielski {
690*b1cdbd2cSJim Jagielski BeginRedo();
691*b1cdbd2cSJim Jagielski
692*b1cdbd2cSJim Jagielski //! Tabellen selektieren
693*b1cdbd2cSJim Jagielski
694*b1cdbd2cSJim Jagielski SCCOLROW nCount = 0;
695*b1cdbd2cSJim Jagielski switch (eFillDir)
696*b1cdbd2cSJim Jagielski {
697*b1cdbd2cSJim Jagielski case FILL_TO_BOTTOM:
698*b1cdbd2cSJim Jagielski nCount = aBlockRange.aEnd.Row() - aSource.aEnd.Row();
699*b1cdbd2cSJim Jagielski break;
700*b1cdbd2cSJim Jagielski case FILL_TO_RIGHT:
701*b1cdbd2cSJim Jagielski nCount = aBlockRange.aEnd.Col() - aSource.aEnd.Col();
702*b1cdbd2cSJim Jagielski break;
703*b1cdbd2cSJim Jagielski case FILL_TO_TOP:
704*b1cdbd2cSJim Jagielski nCount = aSource.aStart.Row() - aBlockRange.aStart.Row();
705*b1cdbd2cSJim Jagielski break;
706*b1cdbd2cSJim Jagielski case FILL_TO_LEFT:
707*b1cdbd2cSJim Jagielski nCount = aSource.aStart.Col() - aBlockRange.aStart.Col();
708*b1cdbd2cSJim Jagielski break;
709*b1cdbd2cSJim Jagielski }
710*b1cdbd2cSJim Jagielski
711*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
712*b1cdbd2cSJim Jagielski if ( fStartValue != MAXDOUBLE )
713*b1cdbd2cSJim Jagielski {
714*b1cdbd2cSJim Jagielski SCCOL nValX = (eFillDir == FILL_TO_LEFT) ? aSource.aEnd.Col() : aSource.aStart.Col();
715*b1cdbd2cSJim Jagielski SCROW nValY = (eFillDir == FILL_TO_TOP ) ? aSource.aEnd.Row() : aSource.aStart.Row();
716*b1cdbd2cSJim Jagielski SCTAB nTab = aSource.aStart.Tab();
717*b1cdbd2cSJim Jagielski pDoc->SetValue( nValX, nValY, nTab, fStartValue );
718*b1cdbd2cSJim Jagielski }
719*b1cdbd2cSJim Jagielski pDoc->Fill( aSource.aStart.Col(), aSource.aStart.Row(),
720*b1cdbd2cSJim Jagielski aSource.aEnd.Col(), aSource.aEnd.Row(),
721*b1cdbd2cSJim Jagielski aMarkData, nCount,
722*b1cdbd2cSJim Jagielski eFillDir, eFillCmd, eFillDateCmd,
723*b1cdbd2cSJim Jagielski fStepValue, fMaxValue );
724*b1cdbd2cSJim Jagielski
725*b1cdbd2cSJim Jagielski SetChangeTrack();
726*b1cdbd2cSJim Jagielski
727*b1cdbd2cSJim Jagielski pDocShell->PostPaint( aBlockRange, PAINT_GRID );
728*b1cdbd2cSJim Jagielski pDocShell->PostDataChanged();
729*b1cdbd2cSJim Jagielski ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
730*b1cdbd2cSJim Jagielski if (pViewShell)
731*b1cdbd2cSJim Jagielski pViewShell->CellContentChanged();
732*b1cdbd2cSJim Jagielski
733*b1cdbd2cSJim Jagielski EndRedo();
734*b1cdbd2cSJim Jagielski }
735*b1cdbd2cSJim Jagielski
736*b1cdbd2cSJim Jagielski
737*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
738*b1cdbd2cSJim Jagielski
Repeat(SfxRepeatTarget & rTarget)739*b1cdbd2cSJim Jagielski void __EXPORT ScUndoAutoFill::Repeat(SfxRepeatTarget& rTarget)
740*b1cdbd2cSJim Jagielski {
741*b1cdbd2cSJim Jagielski if (rTarget.ISA(ScTabViewTarget))
742*b1cdbd2cSJim Jagielski {
743*b1cdbd2cSJim Jagielski ScTabViewShell& rViewShell = *((ScTabViewTarget&)rTarget).GetViewShell();
744*b1cdbd2cSJim Jagielski if (eFillCmd==FILL_SIMPLE)
745*b1cdbd2cSJim Jagielski rViewShell.FillSimple( eFillDir, sal_True );
746*b1cdbd2cSJim Jagielski else
747*b1cdbd2cSJim Jagielski rViewShell.FillSeries( eFillDir, eFillCmd, eFillDateCmd,
748*b1cdbd2cSJim Jagielski fStartValue, fStepValue, fMaxValue, sal_True );
749*b1cdbd2cSJim Jagielski }
750*b1cdbd2cSJim Jagielski }
751*b1cdbd2cSJim Jagielski
752*b1cdbd2cSJim Jagielski
753*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
754*b1cdbd2cSJim Jagielski
CanRepeat(SfxRepeatTarget & rTarget) const755*b1cdbd2cSJim Jagielski sal_Bool __EXPORT ScUndoAutoFill::CanRepeat(SfxRepeatTarget& rTarget) const
756*b1cdbd2cSJim Jagielski {
757*b1cdbd2cSJim Jagielski return (rTarget.ISA(ScTabViewTarget));
758*b1cdbd2cSJim Jagielski }
759*b1cdbd2cSJim Jagielski
760*b1cdbd2cSJim Jagielski
761*b1cdbd2cSJim Jagielski //============================================================================
762*b1cdbd2cSJim Jagielski // class ScUndoMerge
763*b1cdbd2cSJim Jagielski //
764*b1cdbd2cSJim Jagielski // Zellen zusammenfassen / Zusammenfassung aufheben
765*b1cdbd2cSJim Jagielski
766*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
767*b1cdbd2cSJim Jagielski
ScUndoMerge(ScDocShell * pNewDocShell,SCCOL nStartX,SCROW nStartY,SCTAB nStartZ,SCCOL nEndX,SCROW nEndY,SCTAB nEndZ,bool bMergeContents,ScDocument * pUndoDoc,SdrUndoAction * pDrawUndo)768*b1cdbd2cSJim Jagielski ScUndoMerge::ScUndoMerge( ScDocShell* pNewDocShell,
769*b1cdbd2cSJim Jagielski SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
770*b1cdbd2cSJim Jagielski SCCOL nEndX, SCROW nEndY, SCTAB nEndZ,
771*b1cdbd2cSJim Jagielski bool bMergeContents, ScDocument* pUndoDoc, SdrUndoAction* pDrawUndo )
772*b1cdbd2cSJim Jagielski //
773*b1cdbd2cSJim Jagielski : ScSimpleUndo( pNewDocShell ),
774*b1cdbd2cSJim Jagielski //
775*b1cdbd2cSJim Jagielski maRange( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ),
776*b1cdbd2cSJim Jagielski mbMergeContents( bMergeContents ),
777*b1cdbd2cSJim Jagielski mpUndoDoc( pUndoDoc ),
778*b1cdbd2cSJim Jagielski mpDrawUndo( pDrawUndo )
779*b1cdbd2cSJim Jagielski {
780*b1cdbd2cSJim Jagielski }
781*b1cdbd2cSJim Jagielski
782*b1cdbd2cSJim Jagielski
783*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
784*b1cdbd2cSJim Jagielski
~ScUndoMerge()785*b1cdbd2cSJim Jagielski ScUndoMerge::~ScUndoMerge()
786*b1cdbd2cSJim Jagielski {
787*b1cdbd2cSJim Jagielski delete mpUndoDoc;
788*b1cdbd2cSJim Jagielski DeleteSdrUndoAction( mpDrawUndo );
789*b1cdbd2cSJim Jagielski }
790*b1cdbd2cSJim Jagielski
791*b1cdbd2cSJim Jagielski
792*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
793*b1cdbd2cSJim Jagielski
GetComment() const794*b1cdbd2cSJim Jagielski String ScUndoMerge::GetComment() const
795*b1cdbd2cSJim Jagielski {
796*b1cdbd2cSJim Jagielski return ScGlobal::GetRscString( STR_UNDO_MERGE );
797*b1cdbd2cSJim Jagielski }
798*b1cdbd2cSJim Jagielski
799*b1cdbd2cSJim Jagielski
800*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
801*b1cdbd2cSJim Jagielski
DoChange(bool bUndo) const802*b1cdbd2cSJim Jagielski void ScUndoMerge::DoChange( bool bUndo ) const
803*b1cdbd2cSJim Jagielski {
804*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
805*b1cdbd2cSJim Jagielski
806*b1cdbd2cSJim Jagielski ScUndoUtil::MarkSimpleBlock( pDocShell, maRange );
807*b1cdbd2cSJim Jagielski
808*b1cdbd2cSJim Jagielski if (bUndo)
809*b1cdbd2cSJim Jagielski // remove merge (contents are copied back below from undo document)
810*b1cdbd2cSJim Jagielski pDoc->RemoveMerge( maRange.aStart.Col(), maRange.aStart.Row(), maRange.aStart.Tab() );
811*b1cdbd2cSJim Jagielski else
812*b1cdbd2cSJim Jagielski // repeat merge, but do not remove note captions (will be done by drawing redo below)
813*b1cdbd2cSJim Jagielski /*!*/ pDoc->DoMerge( maRange.aStart.Tab(),
814*b1cdbd2cSJim Jagielski maRange.aStart.Col(), maRange.aStart.Row(),
815*b1cdbd2cSJim Jagielski maRange.aEnd.Col(), maRange.aEnd.Row(), false );
816*b1cdbd2cSJim Jagielski
817*b1cdbd2cSJim Jagielski // undo -> copy back deleted contents
818*b1cdbd2cSJim Jagielski if (bUndo && mpUndoDoc)
819*b1cdbd2cSJim Jagielski {
820*b1cdbd2cSJim Jagielski pDoc->DeleteAreaTab( maRange, IDF_CONTENTS|IDF_NOCAPTIONS );
821*b1cdbd2cSJim Jagielski mpUndoDoc->CopyToDocument( maRange, IDF_ALL|IDF_NOCAPTIONS, sal_False, pDoc );
822*b1cdbd2cSJim Jagielski }
823*b1cdbd2cSJim Jagielski
824*b1cdbd2cSJim Jagielski // redo -> merge contents again
825*b1cdbd2cSJim Jagielski else if (!bUndo && mbMergeContents)
826*b1cdbd2cSJim Jagielski {
827*b1cdbd2cSJim Jagielski /*!*/ pDoc->DoMergeContents( maRange.aStart.Tab(),
828*b1cdbd2cSJim Jagielski maRange.aStart.Col(), maRange.aStart.Row(),
829*b1cdbd2cSJim Jagielski maRange.aEnd.Col(), maRange.aEnd.Row() );
830*b1cdbd2cSJim Jagielski }
831*b1cdbd2cSJim Jagielski
832*b1cdbd2cSJim Jagielski if (bUndo)
833*b1cdbd2cSJim Jagielski DoSdrUndoAction( mpDrawUndo, pDoc );
834*b1cdbd2cSJim Jagielski else
835*b1cdbd2cSJim Jagielski RedoSdrUndoAction( mpDrawUndo );
836*b1cdbd2cSJim Jagielski
837*b1cdbd2cSJim Jagielski sal_Bool bDidPaint = sal_False;
838*b1cdbd2cSJim Jagielski ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
839*b1cdbd2cSJim Jagielski if ( pViewShell )
840*b1cdbd2cSJim Jagielski {
841*b1cdbd2cSJim Jagielski pViewShell->SetTabNo( maRange.aStart.Tab() );
842*b1cdbd2cSJim Jagielski bDidPaint = pViewShell->AdjustRowHeight( maRange.aStart.Row(), maRange.aEnd.Row() );
843*b1cdbd2cSJim Jagielski }
844*b1cdbd2cSJim Jagielski
845*b1cdbd2cSJim Jagielski if (!bDidPaint)
846*b1cdbd2cSJim Jagielski ScUndoUtil::PaintMore( pDocShell, maRange );
847*b1cdbd2cSJim Jagielski
848*b1cdbd2cSJim Jagielski ShowTable( maRange );
849*b1cdbd2cSJim Jagielski }
850*b1cdbd2cSJim Jagielski
851*b1cdbd2cSJim Jagielski
852*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
853*b1cdbd2cSJim Jagielski
Undo()854*b1cdbd2cSJim Jagielski void ScUndoMerge::Undo()
855*b1cdbd2cSJim Jagielski {
856*b1cdbd2cSJim Jagielski BeginUndo();
857*b1cdbd2cSJim Jagielski DoChange( true );
858*b1cdbd2cSJim Jagielski EndUndo();
859*b1cdbd2cSJim Jagielski }
860*b1cdbd2cSJim Jagielski
861*b1cdbd2cSJim Jagielski
862*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
863*b1cdbd2cSJim Jagielski
Redo()864*b1cdbd2cSJim Jagielski void ScUndoMerge::Redo()
865*b1cdbd2cSJim Jagielski {
866*b1cdbd2cSJim Jagielski BeginRedo();
867*b1cdbd2cSJim Jagielski DoChange( false );
868*b1cdbd2cSJim Jagielski EndRedo();
869*b1cdbd2cSJim Jagielski }
870*b1cdbd2cSJim Jagielski
871*b1cdbd2cSJim Jagielski
872*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
873*b1cdbd2cSJim Jagielski
Repeat(SfxRepeatTarget & rTarget)874*b1cdbd2cSJim Jagielski void ScUndoMerge::Repeat(SfxRepeatTarget& rTarget)
875*b1cdbd2cSJim Jagielski {
876*b1cdbd2cSJim Jagielski if (rTarget.ISA(ScTabViewTarget))
877*b1cdbd2cSJim Jagielski {
878*b1cdbd2cSJim Jagielski ScTabViewShell& rViewShell = *((ScTabViewTarget&)rTarget).GetViewShell();
879*b1cdbd2cSJim Jagielski sal_Bool bCont = sal_False;
880*b1cdbd2cSJim Jagielski rViewShell.MergeCells( sal_False, bCont, sal_True );
881*b1cdbd2cSJim Jagielski }
882*b1cdbd2cSJim Jagielski }
883*b1cdbd2cSJim Jagielski
884*b1cdbd2cSJim Jagielski
885*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
886*b1cdbd2cSJim Jagielski
CanRepeat(SfxRepeatTarget & rTarget) const887*b1cdbd2cSJim Jagielski sal_Bool ScUndoMerge::CanRepeat(SfxRepeatTarget& rTarget) const
888*b1cdbd2cSJim Jagielski {
889*b1cdbd2cSJim Jagielski return (rTarget.ISA(ScTabViewTarget));
890*b1cdbd2cSJim Jagielski }
891*b1cdbd2cSJim Jagielski
892*b1cdbd2cSJim Jagielski
893*b1cdbd2cSJim Jagielski //============================================================================
894*b1cdbd2cSJim Jagielski // class ScUndoAutoFormat
895*b1cdbd2cSJim Jagielski //
896*b1cdbd2cSJim Jagielski // Auto-Format (nur einfache Bloecke)
897*b1cdbd2cSJim Jagielski
898*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
899*b1cdbd2cSJim Jagielski
ScUndoAutoFormat(ScDocShell * pNewDocShell,const ScRange & rRange,ScDocument * pNewUndoDoc,const ScMarkData & rMark,sal_Bool bNewSize,sal_uInt16 nNewFormatNo)900*b1cdbd2cSJim Jagielski ScUndoAutoFormat::ScUndoAutoFormat( ScDocShell* pNewDocShell,
901*b1cdbd2cSJim Jagielski const ScRange& rRange, ScDocument* pNewUndoDoc,
902*b1cdbd2cSJim Jagielski const ScMarkData& rMark, sal_Bool bNewSize, sal_uInt16 nNewFormatNo )
903*b1cdbd2cSJim Jagielski //
904*b1cdbd2cSJim Jagielski : ScBlockUndo( pNewDocShell, rRange, bNewSize ? SC_UNDO_MANUALHEIGHT : SC_UNDO_AUTOHEIGHT ),
905*b1cdbd2cSJim Jagielski //
906*b1cdbd2cSJim Jagielski pUndoDoc ( pNewUndoDoc ),
907*b1cdbd2cSJim Jagielski aMarkData ( rMark ),
908*b1cdbd2cSJim Jagielski bSize ( bNewSize ),
909*b1cdbd2cSJim Jagielski nFormatNo ( nNewFormatNo )
910*b1cdbd2cSJim Jagielski {
911*b1cdbd2cSJim Jagielski }
912*b1cdbd2cSJim Jagielski
913*b1cdbd2cSJim Jagielski
914*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
915*b1cdbd2cSJim Jagielski
~ScUndoAutoFormat()916*b1cdbd2cSJim Jagielski __EXPORT ScUndoAutoFormat::~ScUndoAutoFormat()
917*b1cdbd2cSJim Jagielski {
918*b1cdbd2cSJim Jagielski delete pUndoDoc;
919*b1cdbd2cSJim Jagielski }
920*b1cdbd2cSJim Jagielski
921*b1cdbd2cSJim Jagielski
922*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
923*b1cdbd2cSJim Jagielski
GetComment() const924*b1cdbd2cSJim Jagielski String __EXPORT ScUndoAutoFormat::GetComment() const
925*b1cdbd2cSJim Jagielski {
926*b1cdbd2cSJim Jagielski return ScGlobal::GetRscString( STR_UNDO_AUTOFORMAT ); //"Auto-Format"
927*b1cdbd2cSJim Jagielski }
928*b1cdbd2cSJim Jagielski
929*b1cdbd2cSJim Jagielski
930*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
931*b1cdbd2cSJim Jagielski
Undo()932*b1cdbd2cSJim Jagielski void __EXPORT ScUndoAutoFormat::Undo()
933*b1cdbd2cSJim Jagielski {
934*b1cdbd2cSJim Jagielski BeginUndo();
935*b1cdbd2cSJim Jagielski
936*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
937*b1cdbd2cSJim Jagielski
938*b1cdbd2cSJim Jagielski // Attribute
939*b1cdbd2cSJim Jagielski // pDoc->DeleteAreaTab( aBlockRange, IDF_ATTRIB );
940*b1cdbd2cSJim Jagielski // pUndoDoc->CopyToDocument( aBlockRange, IDF_ATTRIB, sal_False, pDoc );
941*b1cdbd2cSJim Jagielski
942*b1cdbd2cSJim Jagielski SCTAB nTabCount = pDoc->GetTableCount();
943*b1cdbd2cSJim Jagielski pDoc->DeleteArea( aBlockRange.aStart.Col(), aBlockRange.aStart.Row(),
944*b1cdbd2cSJim Jagielski aBlockRange.aEnd.Col(), aBlockRange.aEnd.Row(),
945*b1cdbd2cSJim Jagielski aMarkData, IDF_ATTRIB );
946*b1cdbd2cSJim Jagielski ScRange aCopyRange = aBlockRange;
947*b1cdbd2cSJim Jagielski aCopyRange.aStart.SetTab(0);
948*b1cdbd2cSJim Jagielski aCopyRange.aEnd.SetTab(nTabCount-1);
949*b1cdbd2cSJim Jagielski pUndoDoc->CopyToDocument( aCopyRange, IDF_ATTRIB, sal_False, pDoc, &aMarkData );
950*b1cdbd2cSJim Jagielski
951*b1cdbd2cSJim Jagielski // Zellhoehen und -breiten (IDF_NONE)
952*b1cdbd2cSJim Jagielski if (bSize)
953*b1cdbd2cSJim Jagielski {
954*b1cdbd2cSJim Jagielski SCCOL nStartX = aBlockRange.aStart.Col();
955*b1cdbd2cSJim Jagielski SCROW nStartY = aBlockRange.aStart.Row();
956*b1cdbd2cSJim Jagielski SCTAB nStartZ = aBlockRange.aStart.Tab();
957*b1cdbd2cSJim Jagielski SCCOL nEndX = aBlockRange.aEnd.Col();
958*b1cdbd2cSJim Jagielski SCROW nEndY = aBlockRange.aEnd.Row();
959*b1cdbd2cSJim Jagielski SCTAB nEndZ = aBlockRange.aEnd.Tab();
960*b1cdbd2cSJim Jagielski
961*b1cdbd2cSJim Jagielski pUndoDoc->CopyToDocument( nStartX, 0, 0, nEndX, MAXROW, nTabCount-1,
962*b1cdbd2cSJim Jagielski IDF_NONE, sal_False, pDoc, &aMarkData );
963*b1cdbd2cSJim Jagielski pUndoDoc->CopyToDocument( 0, nStartY, 0, MAXCOL, nEndY, nTabCount-1,
964*b1cdbd2cSJim Jagielski IDF_NONE, sal_False, pDoc, &aMarkData );
965*b1cdbd2cSJim Jagielski pDocShell->PostPaint( 0, 0, nStartZ, MAXCOL, MAXROW, nEndZ,
966*b1cdbd2cSJim Jagielski PAINT_GRID | PAINT_LEFT | PAINT_TOP, SC_PF_LINES );
967*b1cdbd2cSJim Jagielski }
968*b1cdbd2cSJim Jagielski else
969*b1cdbd2cSJim Jagielski pDocShell->PostPaint( aBlockRange, PAINT_GRID, SC_PF_LINES );
970*b1cdbd2cSJim Jagielski
971*b1cdbd2cSJim Jagielski EndUndo();
972*b1cdbd2cSJim Jagielski }
973*b1cdbd2cSJim Jagielski
974*b1cdbd2cSJim Jagielski
975*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
976*b1cdbd2cSJim Jagielski
Redo()977*b1cdbd2cSJim Jagielski void __EXPORT ScUndoAutoFormat::Redo()
978*b1cdbd2cSJim Jagielski {
979*b1cdbd2cSJim Jagielski BeginRedo();
980*b1cdbd2cSJim Jagielski
981*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
982*b1cdbd2cSJim Jagielski
983*b1cdbd2cSJim Jagielski SCCOL nStartX = aBlockRange.aStart.Col();
984*b1cdbd2cSJim Jagielski SCROW nStartY = aBlockRange.aStart.Row();
985*b1cdbd2cSJim Jagielski SCTAB nStartZ = aBlockRange.aStart.Tab();
986*b1cdbd2cSJim Jagielski SCCOL nEndX = aBlockRange.aEnd.Col();
987*b1cdbd2cSJim Jagielski SCROW nEndY = aBlockRange.aEnd.Row();
988*b1cdbd2cSJim Jagielski SCTAB nEndZ = aBlockRange.aEnd.Tab();
989*b1cdbd2cSJim Jagielski
990*b1cdbd2cSJim Jagielski pDoc->AutoFormat( nStartX, nStartY, nEndX, nEndY, nFormatNo, aMarkData );
991*b1cdbd2cSJim Jagielski
992*b1cdbd2cSJim Jagielski if (bSize)
993*b1cdbd2cSJim Jagielski {
994*b1cdbd2cSJim Jagielski VirtualDevice aVirtDev;
995*b1cdbd2cSJim Jagielski Fraction aZoomX(1,1);
996*b1cdbd2cSJim Jagielski Fraction aZoomY = aZoomX;
997*b1cdbd2cSJim Jagielski double nPPTX,nPPTY;
998*b1cdbd2cSJim Jagielski ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
999*b1cdbd2cSJim Jagielski if (pViewShell)
1000*b1cdbd2cSJim Jagielski {
1001*b1cdbd2cSJim Jagielski ScViewData* pData = pViewShell->GetViewData();
1002*b1cdbd2cSJim Jagielski nPPTX = pData->GetPPTX();
1003*b1cdbd2cSJim Jagielski nPPTY = pData->GetPPTY();
1004*b1cdbd2cSJim Jagielski aZoomX = pData->GetZoomX();
1005*b1cdbd2cSJim Jagielski aZoomY = pData->GetZoomY();
1006*b1cdbd2cSJim Jagielski }
1007*b1cdbd2cSJim Jagielski else
1008*b1cdbd2cSJim Jagielski {
1009*b1cdbd2cSJim Jagielski // Zoom auf 100 lassen
1010*b1cdbd2cSJim Jagielski nPPTX = ScGlobal::nScreenPPTX;
1011*b1cdbd2cSJim Jagielski nPPTY = ScGlobal::nScreenPPTY;
1012*b1cdbd2cSJim Jagielski }
1013*b1cdbd2cSJim Jagielski
1014*b1cdbd2cSJim Jagielski sal_Bool bFormula = sal_False; //! merken
1015*b1cdbd2cSJim Jagielski
1016*b1cdbd2cSJim Jagielski for (SCTAB nTab=nStartZ; nTab<=nEndZ; nTab++)
1017*b1cdbd2cSJim Jagielski {
1018*b1cdbd2cSJim Jagielski ScMarkData aDestMark;
1019*b1cdbd2cSJim Jagielski aDestMark.SelectOneTable( nTab );
1020*b1cdbd2cSJim Jagielski aDestMark.SetMarkArea( ScRange( nStartX, nStartY, nTab, nEndX, nEndY, nTab ) );
1021*b1cdbd2cSJim Jagielski aDestMark.MarkToMulti();
1022*b1cdbd2cSJim Jagielski
1023*b1cdbd2cSJim Jagielski // wie SC_SIZE_VISOPT
1024*b1cdbd2cSJim Jagielski SCROW nLastRow = -1;
1025*b1cdbd2cSJim Jagielski for (SCROW nRow=nStartY; nRow<=nEndY; nRow++)
1026*b1cdbd2cSJim Jagielski {
1027*b1cdbd2cSJim Jagielski sal_uInt8 nOld = pDoc->GetRowFlags(nRow,nTab);
1028*b1cdbd2cSJim Jagielski bool bHidden = pDoc->RowHidden(nRow, nTab, nLastRow);
1029*b1cdbd2cSJim Jagielski if ( !bHidden && ( nOld & CR_MANUALSIZE ) )
1030*b1cdbd2cSJim Jagielski pDoc->SetRowFlags( nRow, nTab, nOld & ~CR_MANUALSIZE );
1031*b1cdbd2cSJim Jagielski }
1032*b1cdbd2cSJim Jagielski pDoc->SetOptimalHeight( nStartY, nEndY, nTab, 0, &aVirtDev,
1033*b1cdbd2cSJim Jagielski nPPTX, nPPTY, aZoomX, aZoomY, sal_False );
1034*b1cdbd2cSJim Jagielski
1035*b1cdbd2cSJim Jagielski SCCOL nLastCol = -1;
1036*b1cdbd2cSJim Jagielski for (SCCOL nCol=nStartX; nCol<=nEndX; nCol++)
1037*b1cdbd2cSJim Jagielski if (!pDoc->ColHidden(nCol, nTab, nLastCol))
1038*b1cdbd2cSJim Jagielski {
1039*b1cdbd2cSJim Jagielski sal_uInt16 nThisSize = STD_EXTRA_WIDTH + pDoc->GetOptimalColWidth( nCol, nTab,
1040*b1cdbd2cSJim Jagielski &aVirtDev, nPPTX, nPPTY, aZoomX, aZoomY, bFormula,
1041*b1cdbd2cSJim Jagielski &aDestMark );
1042*b1cdbd2cSJim Jagielski pDoc->SetColWidth( nCol, nTab, nThisSize );
1043*b1cdbd2cSJim Jagielski pDoc->ShowCol( nCol, nTab, sal_True );
1044*b1cdbd2cSJim Jagielski }
1045*b1cdbd2cSJim Jagielski }
1046*b1cdbd2cSJim Jagielski
1047*b1cdbd2cSJim Jagielski pDocShell->PostPaint( 0, 0, nStartZ,
1048*b1cdbd2cSJim Jagielski MAXCOL, MAXROW, nEndZ,
1049*b1cdbd2cSJim Jagielski PAINT_GRID | PAINT_LEFT | PAINT_TOP, SC_PF_LINES);
1050*b1cdbd2cSJim Jagielski }
1051*b1cdbd2cSJim Jagielski else
1052*b1cdbd2cSJim Jagielski pDocShell->PostPaint( aBlockRange, PAINT_GRID, SC_PF_LINES );
1053*b1cdbd2cSJim Jagielski
1054*b1cdbd2cSJim Jagielski EndRedo();
1055*b1cdbd2cSJim Jagielski }
1056*b1cdbd2cSJim Jagielski
1057*b1cdbd2cSJim Jagielski
1058*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1059*b1cdbd2cSJim Jagielski
Repeat(SfxRepeatTarget & rTarget)1060*b1cdbd2cSJim Jagielski void __EXPORT ScUndoAutoFormat::Repeat(SfxRepeatTarget& rTarget)
1061*b1cdbd2cSJim Jagielski {
1062*b1cdbd2cSJim Jagielski if (rTarget.ISA(ScTabViewTarget))
1063*b1cdbd2cSJim Jagielski ((ScTabViewTarget&)rTarget).GetViewShell()->AutoFormat( nFormatNo, sal_True );
1064*b1cdbd2cSJim Jagielski }
1065*b1cdbd2cSJim Jagielski
1066*b1cdbd2cSJim Jagielski
1067*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1068*b1cdbd2cSJim Jagielski
CanRepeat(SfxRepeatTarget & rTarget) const1069*b1cdbd2cSJim Jagielski sal_Bool __EXPORT ScUndoAutoFormat::CanRepeat(SfxRepeatTarget& rTarget) const
1070*b1cdbd2cSJim Jagielski {
1071*b1cdbd2cSJim Jagielski return (rTarget.ISA(ScTabViewTarget));
1072*b1cdbd2cSJim Jagielski }
1073*b1cdbd2cSJim Jagielski
1074*b1cdbd2cSJim Jagielski
1075*b1cdbd2cSJim Jagielski //============================================================================
1076*b1cdbd2cSJim Jagielski // class ScUndoReplace
1077*b1cdbd2cSJim Jagielski //
1078*b1cdbd2cSJim Jagielski // Ersetzen
1079*b1cdbd2cSJim Jagielski
1080*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1081*b1cdbd2cSJim Jagielski
ScUndoReplace(ScDocShell * pNewDocShell,const ScMarkData & rMark,SCCOL nCurX,SCROW nCurY,SCTAB nCurZ,const String & rNewUndoStr,ScDocument * pNewUndoDoc,const SvxSearchItem * pItem)1082*b1cdbd2cSJim Jagielski ScUndoReplace::ScUndoReplace( ScDocShell* pNewDocShell, const ScMarkData& rMark,
1083*b1cdbd2cSJim Jagielski SCCOL nCurX, SCROW nCurY, SCTAB nCurZ,
1084*b1cdbd2cSJim Jagielski const String& rNewUndoStr, ScDocument* pNewUndoDoc,
1085*b1cdbd2cSJim Jagielski const SvxSearchItem* pItem )
1086*b1cdbd2cSJim Jagielski //
1087*b1cdbd2cSJim Jagielski : ScSimpleUndo( pNewDocShell ),
1088*b1cdbd2cSJim Jagielski //
1089*b1cdbd2cSJim Jagielski aCursorPos ( nCurX, nCurY, nCurZ ),
1090*b1cdbd2cSJim Jagielski aMarkData ( rMark ),
1091*b1cdbd2cSJim Jagielski aUndoStr ( rNewUndoStr ),
1092*b1cdbd2cSJim Jagielski pUndoDoc ( pNewUndoDoc )
1093*b1cdbd2cSJim Jagielski {
1094*b1cdbd2cSJim Jagielski pSearchItem = new SvxSearchItem( *pItem );
1095*b1cdbd2cSJim Jagielski SetChangeTrack();
1096*b1cdbd2cSJim Jagielski }
1097*b1cdbd2cSJim Jagielski
1098*b1cdbd2cSJim Jagielski
1099*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1100*b1cdbd2cSJim Jagielski
~ScUndoReplace()1101*b1cdbd2cSJim Jagielski __EXPORT ScUndoReplace::~ScUndoReplace()
1102*b1cdbd2cSJim Jagielski {
1103*b1cdbd2cSJim Jagielski delete pUndoDoc;
1104*b1cdbd2cSJim Jagielski delete pSearchItem;
1105*b1cdbd2cSJim Jagielski }
1106*b1cdbd2cSJim Jagielski
1107*b1cdbd2cSJim Jagielski
1108*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1109*b1cdbd2cSJim Jagielski
SetChangeTrack()1110*b1cdbd2cSJim Jagielski void ScUndoReplace::SetChangeTrack()
1111*b1cdbd2cSJim Jagielski {
1112*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
1113*b1cdbd2cSJim Jagielski ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
1114*b1cdbd2cSJim Jagielski if ( pChangeTrack )
1115*b1cdbd2cSJim Jagielski {
1116*b1cdbd2cSJim Jagielski if ( pUndoDoc )
1117*b1cdbd2cSJim Jagielski { //! im UndoDoc stehen nur die geaenderten Zellen,
1118*b1cdbd2cSJim Jagielski // deswegen per Iterator moeglich
1119*b1cdbd2cSJim Jagielski pChangeTrack->AppendContentsIfInRefDoc( pUndoDoc,
1120*b1cdbd2cSJim Jagielski nStartChangeAction, nEndChangeAction );
1121*b1cdbd2cSJim Jagielski }
1122*b1cdbd2cSJim Jagielski else
1123*b1cdbd2cSJim Jagielski {
1124*b1cdbd2cSJim Jagielski nStartChangeAction = pChangeTrack->GetActionMax() + 1;
1125*b1cdbd2cSJim Jagielski ScChangeActionContent* pContent = new ScChangeActionContent(
1126*b1cdbd2cSJim Jagielski ScRange( aCursorPos) );
1127*b1cdbd2cSJim Jagielski pContent->SetOldValue( aUndoStr, pDoc );
1128*b1cdbd2cSJim Jagielski pContent->SetNewValue( pDoc->GetCell( aCursorPos ), pDoc );
1129*b1cdbd2cSJim Jagielski pChangeTrack->Append( pContent );
1130*b1cdbd2cSJim Jagielski nEndChangeAction = pChangeTrack->GetActionMax();
1131*b1cdbd2cSJim Jagielski }
1132*b1cdbd2cSJim Jagielski }
1133*b1cdbd2cSJim Jagielski else
1134*b1cdbd2cSJim Jagielski nStartChangeAction = nEndChangeAction = 0;
1135*b1cdbd2cSJim Jagielski }
1136*b1cdbd2cSJim Jagielski
1137*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1138*b1cdbd2cSJim Jagielski
GetComment() const1139*b1cdbd2cSJim Jagielski String __EXPORT ScUndoReplace::GetComment() const
1140*b1cdbd2cSJim Jagielski {
1141*b1cdbd2cSJim Jagielski return ScGlobal::GetRscString( STR_UNDO_REPLACE ); // "Ersetzen"
1142*b1cdbd2cSJim Jagielski }
1143*b1cdbd2cSJim Jagielski
1144*b1cdbd2cSJim Jagielski
1145*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1146*b1cdbd2cSJim Jagielski
Undo()1147*b1cdbd2cSJim Jagielski void __EXPORT ScUndoReplace::Undo()
1148*b1cdbd2cSJim Jagielski {
1149*b1cdbd2cSJim Jagielski BeginUndo();
1150*b1cdbd2cSJim Jagielski
1151*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
1152*b1cdbd2cSJim Jagielski ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
1153*b1cdbd2cSJim Jagielski
1154*b1cdbd2cSJim Jagielski ShowTable( aCursorPos.Tab() );
1155*b1cdbd2cSJim Jagielski
1156*b1cdbd2cSJim Jagielski if (pUndoDoc) // nur bei ReplaceAll !!
1157*b1cdbd2cSJim Jagielski {
1158*b1cdbd2cSJim Jagielski DBG_ASSERT(pSearchItem->GetCommand() == SVX_SEARCHCMD_REPLACE_ALL,
1159*b1cdbd2cSJim Jagielski "ScUndoReplace:: Falscher Modus");
1160*b1cdbd2cSJim Jagielski
1161*b1cdbd2cSJim Jagielski SetViewMarkData( aMarkData );
1162*b1cdbd2cSJim Jagielski
1163*b1cdbd2cSJim Jagielski //! markierte Tabellen
1164*b1cdbd2cSJim Jagielski //! Bereich merken ?
1165*b1cdbd2cSJim Jagielski
1166*b1cdbd2cSJim Jagielski // Undo-Dokument hat keine Zeilen-/Spalten-Infos, also mit bColRowFlags = FALSE
1167*b1cdbd2cSJim Jagielski // kopieren, um Outline-Gruppen nicht kaputtzumachen.
1168*b1cdbd2cSJim Jagielski
1169*b1cdbd2cSJim Jagielski sal_uInt16 nUndoFlags = (pSearchItem->GetPattern()) ? IDF_ATTRIB : IDF_CONTENTS;
1170*b1cdbd2cSJim Jagielski pUndoDoc->CopyToDocument( 0, 0, 0,
1171*b1cdbd2cSJim Jagielski MAXCOL, MAXROW, MAXTAB,
1172*b1cdbd2cSJim Jagielski nUndoFlags, sal_False, pDoc, NULL, sal_False ); // ohne Row-Flags
1173*b1cdbd2cSJim Jagielski pDocShell->PostPaintGridAll();
1174*b1cdbd2cSJim Jagielski }
1175*b1cdbd2cSJim Jagielski else if (pSearchItem->GetPattern() &&
1176*b1cdbd2cSJim Jagielski pSearchItem->GetCommand() == SVX_SEARCHCMD_REPLACE)
1177*b1cdbd2cSJim Jagielski {
1178*b1cdbd2cSJim Jagielski String aTempStr = pSearchItem->GetSearchString(); // vertauschen
1179*b1cdbd2cSJim Jagielski pSearchItem->SetSearchString(pSearchItem->GetReplaceString());
1180*b1cdbd2cSJim Jagielski pSearchItem->SetReplaceString(aTempStr);
1181*b1cdbd2cSJim Jagielski pDoc->ReplaceStyle( *pSearchItem,
1182*b1cdbd2cSJim Jagielski aCursorPos.Col(), aCursorPos.Row(), aCursorPos.Tab(),
1183*b1cdbd2cSJim Jagielski aMarkData, sal_True);
1184*b1cdbd2cSJim Jagielski pSearchItem->SetReplaceString(pSearchItem->GetSearchString());
1185*b1cdbd2cSJim Jagielski pSearchItem->SetSearchString(aTempStr);
1186*b1cdbd2cSJim Jagielski if (pViewShell)
1187*b1cdbd2cSJim Jagielski pViewShell->MoveCursorAbs( aCursorPos.Col(), aCursorPos.Row(),
1188*b1cdbd2cSJim Jagielski SC_FOLLOW_JUMP, sal_False, sal_False );
1189*b1cdbd2cSJim Jagielski pDocShell->PostPaintGridAll();
1190*b1cdbd2cSJim Jagielski }
1191*b1cdbd2cSJim Jagielski else if (pSearchItem->GetCellType() == SVX_SEARCHIN_NOTE)
1192*b1cdbd2cSJim Jagielski {
1193*b1cdbd2cSJim Jagielski ScPostIt* pNote = pDoc->GetNote( aCursorPos );
1194*b1cdbd2cSJim Jagielski DBG_ASSERT( pNote, "ScUndoReplace::Undo - cell does not contain a note" );
1195*b1cdbd2cSJim Jagielski if (pNote)
1196*b1cdbd2cSJim Jagielski pNote->SetText( aCursorPos, aUndoStr );
1197*b1cdbd2cSJim Jagielski if (pViewShell)
1198*b1cdbd2cSJim Jagielski pViewShell->MoveCursorAbs( aCursorPos.Col(), aCursorPos.Row(),
1199*b1cdbd2cSJim Jagielski SC_FOLLOW_JUMP, sal_False, sal_False );
1200*b1cdbd2cSJim Jagielski }
1201*b1cdbd2cSJim Jagielski else
1202*b1cdbd2cSJim Jagielski {
1203*b1cdbd2cSJim Jagielski // #78889# aUndoStr may contain line breaks
1204*b1cdbd2cSJim Jagielski if ( aUndoStr.Search('\n') != STRING_NOTFOUND )
1205*b1cdbd2cSJim Jagielski pDoc->PutCell( aCursorPos, new ScEditCell( aUndoStr, pDoc ) );
1206*b1cdbd2cSJim Jagielski else
1207*b1cdbd2cSJim Jagielski pDoc->SetString( aCursorPos.Col(), aCursorPos.Row(), aCursorPos.Tab(), aUndoStr );
1208*b1cdbd2cSJim Jagielski if (pViewShell)
1209*b1cdbd2cSJim Jagielski pViewShell->MoveCursorAbs( aCursorPos.Col(), aCursorPos.Row(),
1210*b1cdbd2cSJim Jagielski SC_FOLLOW_JUMP, sal_False, sal_False );
1211*b1cdbd2cSJim Jagielski pDocShell->PostPaintGridAll();
1212*b1cdbd2cSJim Jagielski }
1213*b1cdbd2cSJim Jagielski
1214*b1cdbd2cSJim Jagielski ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
1215*b1cdbd2cSJim Jagielski if ( pChangeTrack )
1216*b1cdbd2cSJim Jagielski pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
1217*b1cdbd2cSJim Jagielski
1218*b1cdbd2cSJim Jagielski EndUndo();
1219*b1cdbd2cSJim Jagielski }
1220*b1cdbd2cSJim Jagielski
1221*b1cdbd2cSJim Jagielski
1222*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1223*b1cdbd2cSJim Jagielski
Redo()1224*b1cdbd2cSJim Jagielski void __EXPORT ScUndoReplace::Redo()
1225*b1cdbd2cSJim Jagielski {
1226*b1cdbd2cSJim Jagielski BeginRedo();
1227*b1cdbd2cSJim Jagielski
1228*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
1229*b1cdbd2cSJim Jagielski ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
1230*b1cdbd2cSJim Jagielski
1231*b1cdbd2cSJim Jagielski if (pViewShell)
1232*b1cdbd2cSJim Jagielski pViewShell->MoveCursorAbs( aCursorPos.Col(), aCursorPos.Row(),
1233*b1cdbd2cSJim Jagielski SC_FOLLOW_JUMP, sal_False, sal_False );
1234*b1cdbd2cSJim Jagielski if (pUndoDoc)
1235*b1cdbd2cSJim Jagielski {
1236*b1cdbd2cSJim Jagielski if (pViewShell)
1237*b1cdbd2cSJim Jagielski {
1238*b1cdbd2cSJim Jagielski SetViewMarkData( aMarkData );
1239*b1cdbd2cSJim Jagielski
1240*b1cdbd2cSJim Jagielski pViewShell->SearchAndReplace( pSearchItem, sal_False, sal_True );
1241*b1cdbd2cSJim Jagielski }
1242*b1cdbd2cSJim Jagielski }
1243*b1cdbd2cSJim Jagielski else if (pSearchItem->GetPattern() &&
1244*b1cdbd2cSJim Jagielski pSearchItem->GetCommand() == SVX_SEARCHCMD_REPLACE)
1245*b1cdbd2cSJim Jagielski {
1246*b1cdbd2cSJim Jagielski pDoc->ReplaceStyle( *pSearchItem,
1247*b1cdbd2cSJim Jagielski aCursorPos.Col(), aCursorPos.Row(), aCursorPos.Tab(),
1248*b1cdbd2cSJim Jagielski aMarkData, sal_True);
1249*b1cdbd2cSJim Jagielski pDocShell->PostPaintGridAll();
1250*b1cdbd2cSJim Jagielski }
1251*b1cdbd2cSJim Jagielski else
1252*b1cdbd2cSJim Jagielski if (pViewShell)
1253*b1cdbd2cSJim Jagielski pViewShell->SearchAndReplace( pSearchItem, sal_False, sal_True );
1254*b1cdbd2cSJim Jagielski
1255*b1cdbd2cSJim Jagielski SetChangeTrack();
1256*b1cdbd2cSJim Jagielski
1257*b1cdbd2cSJim Jagielski EndRedo();
1258*b1cdbd2cSJim Jagielski }
1259*b1cdbd2cSJim Jagielski
1260*b1cdbd2cSJim Jagielski
1261*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1262*b1cdbd2cSJim Jagielski
Repeat(SfxRepeatTarget & rTarget)1263*b1cdbd2cSJim Jagielski void __EXPORT ScUndoReplace::Repeat(SfxRepeatTarget& rTarget)
1264*b1cdbd2cSJim Jagielski {
1265*b1cdbd2cSJim Jagielski if (rTarget.ISA(ScTabViewTarget))
1266*b1cdbd2cSJim Jagielski ((ScTabViewTarget&)rTarget).GetViewShell()->SearchAndReplace( pSearchItem, sal_True, sal_False );
1267*b1cdbd2cSJim Jagielski }
1268*b1cdbd2cSJim Jagielski
1269*b1cdbd2cSJim Jagielski
1270*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1271*b1cdbd2cSJim Jagielski
CanRepeat(SfxRepeatTarget & rTarget) const1272*b1cdbd2cSJim Jagielski sal_Bool __EXPORT ScUndoReplace::CanRepeat(SfxRepeatTarget& rTarget) const
1273*b1cdbd2cSJim Jagielski {
1274*b1cdbd2cSJim Jagielski return (rTarget.ISA(ScTabViewTarget));
1275*b1cdbd2cSJim Jagielski }
1276*b1cdbd2cSJim Jagielski
1277*b1cdbd2cSJim Jagielski
1278*b1cdbd2cSJim Jagielski //============================================================================
1279*b1cdbd2cSJim Jagielski // class ScUndoTabOp
1280*b1cdbd2cSJim Jagielski //
1281*b1cdbd2cSJim Jagielski // Mehrfachoperation (nur einfache Bloecke)
1282*b1cdbd2cSJim Jagielski
1283*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1284*b1cdbd2cSJim Jagielski
ScUndoTabOp(ScDocShell * pNewDocShell,SCCOL nStartX,SCROW nStartY,SCTAB nStartZ,SCCOL nEndX,SCROW nEndY,SCTAB nEndZ,ScDocument * pNewUndoDoc,const ScRefAddress & rFormulaCell,const ScRefAddress & rFormulaEnd,const ScRefAddress & rRowCell,const ScRefAddress & rColCell,sal_uInt8 nMd)1285*b1cdbd2cSJim Jagielski ScUndoTabOp::ScUndoTabOp( ScDocShell* pNewDocShell,
1286*b1cdbd2cSJim Jagielski SCCOL nStartX, SCROW nStartY, SCTAB nStartZ,
1287*b1cdbd2cSJim Jagielski SCCOL nEndX, SCROW nEndY, SCTAB nEndZ, ScDocument* pNewUndoDoc,
1288*b1cdbd2cSJim Jagielski const ScRefAddress& rFormulaCell,
1289*b1cdbd2cSJim Jagielski const ScRefAddress& rFormulaEnd,
1290*b1cdbd2cSJim Jagielski const ScRefAddress& rRowCell,
1291*b1cdbd2cSJim Jagielski const ScRefAddress& rColCell,
1292*b1cdbd2cSJim Jagielski sal_uInt8 nMd )
1293*b1cdbd2cSJim Jagielski //
1294*b1cdbd2cSJim Jagielski : ScSimpleUndo( pNewDocShell ),
1295*b1cdbd2cSJim Jagielski //
1296*b1cdbd2cSJim Jagielski aRange ( nStartX, nStartY, nStartZ, nEndX, nEndY, nEndZ ),
1297*b1cdbd2cSJim Jagielski pUndoDoc ( pNewUndoDoc ),
1298*b1cdbd2cSJim Jagielski theFormulaCell ( rFormulaCell ),
1299*b1cdbd2cSJim Jagielski theFormulaEnd ( rFormulaEnd ),
1300*b1cdbd2cSJim Jagielski theRowCell ( rRowCell ),
1301*b1cdbd2cSJim Jagielski theColCell ( rColCell ),
1302*b1cdbd2cSJim Jagielski nMode ( nMd )
1303*b1cdbd2cSJim Jagielski {
1304*b1cdbd2cSJim Jagielski }
1305*b1cdbd2cSJim Jagielski
1306*b1cdbd2cSJim Jagielski
1307*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1308*b1cdbd2cSJim Jagielski
~ScUndoTabOp()1309*b1cdbd2cSJim Jagielski __EXPORT ScUndoTabOp::~ScUndoTabOp()
1310*b1cdbd2cSJim Jagielski {
1311*b1cdbd2cSJim Jagielski delete pUndoDoc;
1312*b1cdbd2cSJim Jagielski }
1313*b1cdbd2cSJim Jagielski
1314*b1cdbd2cSJim Jagielski
1315*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1316*b1cdbd2cSJim Jagielski
GetComment() const1317*b1cdbd2cSJim Jagielski String __EXPORT ScUndoTabOp::GetComment() const
1318*b1cdbd2cSJim Jagielski {
1319*b1cdbd2cSJim Jagielski return ScGlobal::GetRscString( STR_UNDO_TABOP ); // "Mehrfachoperation"
1320*b1cdbd2cSJim Jagielski }
1321*b1cdbd2cSJim Jagielski
1322*b1cdbd2cSJim Jagielski
1323*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1324*b1cdbd2cSJim Jagielski
Undo()1325*b1cdbd2cSJim Jagielski void __EXPORT ScUndoTabOp::Undo()
1326*b1cdbd2cSJim Jagielski {
1327*b1cdbd2cSJim Jagielski BeginUndo();
1328*b1cdbd2cSJim Jagielski
1329*b1cdbd2cSJim Jagielski ScUndoUtil::MarkSimpleBlock( pDocShell, aRange );
1330*b1cdbd2cSJim Jagielski
1331*b1cdbd2cSJim Jagielski sal_uInt16 nExtFlags = 0;
1332*b1cdbd2cSJim Jagielski pDocShell->UpdatePaintExt( nExtFlags, aRange );
1333*b1cdbd2cSJim Jagielski
1334*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
1335*b1cdbd2cSJim Jagielski pDoc->DeleteAreaTab( aRange,IDF_ALL & ~IDF_NOTE );
1336*b1cdbd2cSJim Jagielski pUndoDoc->CopyToDocument( aRange, IDF_ALL & ~IDF_NOTE, sal_False, pDoc );
1337*b1cdbd2cSJim Jagielski pDocShell->PostPaint( aRange, PAINT_GRID, nExtFlags );
1338*b1cdbd2cSJim Jagielski pDocShell->PostDataChanged();
1339*b1cdbd2cSJim Jagielski ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
1340*b1cdbd2cSJim Jagielski if (pViewShell)
1341*b1cdbd2cSJim Jagielski pViewShell->CellContentChanged();
1342*b1cdbd2cSJim Jagielski
1343*b1cdbd2cSJim Jagielski EndUndo();
1344*b1cdbd2cSJim Jagielski }
1345*b1cdbd2cSJim Jagielski
1346*b1cdbd2cSJim Jagielski
1347*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1348*b1cdbd2cSJim Jagielski
Redo()1349*b1cdbd2cSJim Jagielski void __EXPORT ScUndoTabOp::Redo()
1350*b1cdbd2cSJim Jagielski {
1351*b1cdbd2cSJim Jagielski BeginRedo();
1352*b1cdbd2cSJim Jagielski
1353*b1cdbd2cSJim Jagielski ScUndoUtil::MarkSimpleBlock( pDocShell, aRange );
1354*b1cdbd2cSJim Jagielski
1355*b1cdbd2cSJim Jagielski ScTabOpParam aParam( theFormulaCell, theFormulaEnd,
1356*b1cdbd2cSJim Jagielski theRowCell, theColCell,
1357*b1cdbd2cSJim Jagielski nMode );
1358*b1cdbd2cSJim Jagielski
1359*b1cdbd2cSJim Jagielski ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
1360*b1cdbd2cSJim Jagielski if (pViewShell)
1361*b1cdbd2cSJim Jagielski pViewShell->TabOp( aParam, sal_False);
1362*b1cdbd2cSJim Jagielski
1363*b1cdbd2cSJim Jagielski EndRedo();
1364*b1cdbd2cSJim Jagielski }
1365*b1cdbd2cSJim Jagielski
1366*b1cdbd2cSJim Jagielski
1367*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1368*b1cdbd2cSJim Jagielski
Repeat(SfxRepeatTarget &)1369*b1cdbd2cSJim Jagielski void __EXPORT ScUndoTabOp::Repeat(SfxRepeatTarget& /* rTarget */)
1370*b1cdbd2cSJim Jagielski {
1371*b1cdbd2cSJim Jagielski }
1372*b1cdbd2cSJim Jagielski
1373*b1cdbd2cSJim Jagielski
1374*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1375*b1cdbd2cSJim Jagielski
CanRepeat(SfxRepeatTarget &) const1376*b1cdbd2cSJim Jagielski sal_Bool __EXPORT ScUndoTabOp::CanRepeat(SfxRepeatTarget& /* rTarget */) const
1377*b1cdbd2cSJim Jagielski {
1378*b1cdbd2cSJim Jagielski return sal_False;
1379*b1cdbd2cSJim Jagielski }
1380*b1cdbd2cSJim Jagielski
1381*b1cdbd2cSJim Jagielski
1382*b1cdbd2cSJim Jagielski //============================================================================
1383*b1cdbd2cSJim Jagielski // class ScUndoConversion
1384*b1cdbd2cSJim Jagielski //
1385*b1cdbd2cSJim Jagielski // Spelling
1386*b1cdbd2cSJim Jagielski
1387*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1388*b1cdbd2cSJim Jagielski
ScUndoConversion(ScDocShell * pNewDocShell,const ScMarkData & rMark,SCCOL nCurX,SCROW nCurY,SCTAB nCurZ,ScDocument * pNewUndoDoc,SCCOL nNewX,SCROW nNewY,SCTAB nNewZ,ScDocument * pNewRedoDoc,const ScConversionParam & rConvParam)1389*b1cdbd2cSJim Jagielski ScUndoConversion::ScUndoConversion(
1390*b1cdbd2cSJim Jagielski ScDocShell* pNewDocShell, const ScMarkData& rMark,
1391*b1cdbd2cSJim Jagielski SCCOL nCurX, SCROW nCurY, SCTAB nCurZ, ScDocument* pNewUndoDoc,
1392*b1cdbd2cSJim Jagielski SCCOL nNewX, SCROW nNewY, SCTAB nNewZ, ScDocument* pNewRedoDoc,
1393*b1cdbd2cSJim Jagielski const ScConversionParam& rConvParam ) :
1394*b1cdbd2cSJim Jagielski ScSimpleUndo( pNewDocShell ),
1395*b1cdbd2cSJim Jagielski aMarkData( rMark ),
1396*b1cdbd2cSJim Jagielski aCursorPos( nCurX, nCurY, nCurZ ),
1397*b1cdbd2cSJim Jagielski pUndoDoc( pNewUndoDoc ),
1398*b1cdbd2cSJim Jagielski aNewCursorPos( nNewX, nNewY, nNewZ ),
1399*b1cdbd2cSJim Jagielski pRedoDoc( pNewRedoDoc ),
1400*b1cdbd2cSJim Jagielski maConvParam( rConvParam )
1401*b1cdbd2cSJim Jagielski {
1402*b1cdbd2cSJim Jagielski SetChangeTrack();
1403*b1cdbd2cSJim Jagielski }
1404*b1cdbd2cSJim Jagielski
1405*b1cdbd2cSJim Jagielski
1406*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1407*b1cdbd2cSJim Jagielski
~ScUndoConversion()1408*b1cdbd2cSJim Jagielski __EXPORT ScUndoConversion::~ScUndoConversion()
1409*b1cdbd2cSJim Jagielski {
1410*b1cdbd2cSJim Jagielski delete pUndoDoc;
1411*b1cdbd2cSJim Jagielski delete pRedoDoc;
1412*b1cdbd2cSJim Jagielski }
1413*b1cdbd2cSJim Jagielski
1414*b1cdbd2cSJim Jagielski
1415*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1416*b1cdbd2cSJim Jagielski
SetChangeTrack()1417*b1cdbd2cSJim Jagielski void ScUndoConversion::SetChangeTrack()
1418*b1cdbd2cSJim Jagielski {
1419*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
1420*b1cdbd2cSJim Jagielski ScChangeTrack* pChangeTrack = pDoc->GetChangeTrack();
1421*b1cdbd2cSJim Jagielski if ( pChangeTrack )
1422*b1cdbd2cSJim Jagielski {
1423*b1cdbd2cSJim Jagielski if ( pUndoDoc )
1424*b1cdbd2cSJim Jagielski pChangeTrack->AppendContentsIfInRefDoc( pUndoDoc,
1425*b1cdbd2cSJim Jagielski nStartChangeAction, nEndChangeAction );
1426*b1cdbd2cSJim Jagielski else
1427*b1cdbd2cSJim Jagielski {
1428*b1cdbd2cSJim Jagielski DBG_ERROR( "ScUndoConversion::SetChangeTrack: kein UndoDoc" );
1429*b1cdbd2cSJim Jagielski nStartChangeAction = nEndChangeAction = 0;
1430*b1cdbd2cSJim Jagielski }
1431*b1cdbd2cSJim Jagielski }
1432*b1cdbd2cSJim Jagielski else
1433*b1cdbd2cSJim Jagielski nStartChangeAction = nEndChangeAction = 0;
1434*b1cdbd2cSJim Jagielski }
1435*b1cdbd2cSJim Jagielski
1436*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1437*b1cdbd2cSJim Jagielski
GetComment() const1438*b1cdbd2cSJim Jagielski String ScUndoConversion::GetComment() const
1439*b1cdbd2cSJim Jagielski {
1440*b1cdbd2cSJim Jagielski String aText;
1441*b1cdbd2cSJim Jagielski switch( maConvParam.GetType() )
1442*b1cdbd2cSJim Jagielski {
1443*b1cdbd2cSJim Jagielski case SC_CONVERSION_SPELLCHECK: aText = ScGlobal::GetRscString( STR_UNDO_SPELLING ); break;
1444*b1cdbd2cSJim Jagielski case SC_CONVERSION_HANGULHANJA: aText = ScGlobal::GetRscString( STR_UNDO_HANGULHANJA ); break;
1445*b1cdbd2cSJim Jagielski case SC_CONVERSION_CHINESE_TRANSL: aText = ScGlobal::GetRscString( STR_UNDO_CHINESE_TRANSLATION ); break;
1446*b1cdbd2cSJim Jagielski default: DBG_ERRORFILE( "ScUndoConversion::GetComment - unknown conversion type" );
1447*b1cdbd2cSJim Jagielski }
1448*b1cdbd2cSJim Jagielski return aText;
1449*b1cdbd2cSJim Jagielski }
1450*b1cdbd2cSJim Jagielski
1451*b1cdbd2cSJim Jagielski
1452*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1453*b1cdbd2cSJim Jagielski
DoChange(ScDocument * pRefDoc,const ScAddress & rCursorPos)1454*b1cdbd2cSJim Jagielski void ScUndoConversion::DoChange( ScDocument* pRefDoc, const ScAddress& rCursorPos )
1455*b1cdbd2cSJim Jagielski {
1456*b1cdbd2cSJim Jagielski if (pRefDoc)
1457*b1cdbd2cSJim Jagielski {
1458*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
1459*b1cdbd2cSJim Jagielski ShowTable( rCursorPos.Tab() );
1460*b1cdbd2cSJim Jagielski
1461*b1cdbd2cSJim Jagielski SetViewMarkData( aMarkData );
1462*b1cdbd2cSJim Jagielski
1463*b1cdbd2cSJim Jagielski SCTAB nTabCount = pDoc->GetTableCount();
1464*b1cdbd2cSJim Jagielski // Undo/Redo-doc has only selected tables
1465*b1cdbd2cSJim Jagielski
1466*b1cdbd2cSJim Jagielski sal_Bool bMulti = aMarkData.IsMultiMarked();
1467*b1cdbd2cSJim Jagielski pRefDoc->CopyToDocument( 0, 0, 0,
1468*b1cdbd2cSJim Jagielski MAXCOL, MAXROW, nTabCount-1,
1469*b1cdbd2cSJim Jagielski IDF_CONTENTS, bMulti, pDoc, &aMarkData );
1470*b1cdbd2cSJim Jagielski pDocShell->PostPaintGridAll();
1471*b1cdbd2cSJim Jagielski }
1472*b1cdbd2cSJim Jagielski else
1473*b1cdbd2cSJim Jagielski {
1474*b1cdbd2cSJim Jagielski DBG_ERROR("Kein Un-/RedoDoc bei Un-/RedoSpelling");
1475*b1cdbd2cSJim Jagielski }
1476*b1cdbd2cSJim Jagielski }
1477*b1cdbd2cSJim Jagielski
1478*b1cdbd2cSJim Jagielski
1479*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1480*b1cdbd2cSJim Jagielski
Undo()1481*b1cdbd2cSJim Jagielski void ScUndoConversion::Undo()
1482*b1cdbd2cSJim Jagielski {
1483*b1cdbd2cSJim Jagielski BeginUndo();
1484*b1cdbd2cSJim Jagielski DoChange( pUndoDoc, aCursorPos );
1485*b1cdbd2cSJim Jagielski ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
1486*b1cdbd2cSJim Jagielski if ( pChangeTrack )
1487*b1cdbd2cSJim Jagielski pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
1488*b1cdbd2cSJim Jagielski EndUndo();
1489*b1cdbd2cSJim Jagielski }
1490*b1cdbd2cSJim Jagielski
1491*b1cdbd2cSJim Jagielski
1492*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1493*b1cdbd2cSJim Jagielski
Redo()1494*b1cdbd2cSJim Jagielski void ScUndoConversion::Redo()
1495*b1cdbd2cSJim Jagielski {
1496*b1cdbd2cSJim Jagielski BeginRedo();
1497*b1cdbd2cSJim Jagielski DoChange( pRedoDoc, aNewCursorPos );
1498*b1cdbd2cSJim Jagielski SetChangeTrack();
1499*b1cdbd2cSJim Jagielski EndRedo();
1500*b1cdbd2cSJim Jagielski }
1501*b1cdbd2cSJim Jagielski
1502*b1cdbd2cSJim Jagielski
1503*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1504*b1cdbd2cSJim Jagielski
Repeat(SfxRepeatTarget & rTarget)1505*b1cdbd2cSJim Jagielski void ScUndoConversion::Repeat( SfxRepeatTarget& rTarget )
1506*b1cdbd2cSJim Jagielski {
1507*b1cdbd2cSJim Jagielski if( rTarget.ISA( ScTabViewTarget ) )
1508*b1cdbd2cSJim Jagielski ((ScTabViewTarget&)rTarget).GetViewShell()->DoSheetConversion( maConvParam, sal_True );
1509*b1cdbd2cSJim Jagielski }
1510*b1cdbd2cSJim Jagielski
1511*b1cdbd2cSJim Jagielski
1512*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1513*b1cdbd2cSJim Jagielski
CanRepeat(SfxRepeatTarget & rTarget) const1514*b1cdbd2cSJim Jagielski sal_Bool ScUndoConversion::CanRepeat(SfxRepeatTarget& rTarget) const
1515*b1cdbd2cSJim Jagielski {
1516*b1cdbd2cSJim Jagielski return rTarget.ISA( ScTabViewTarget );
1517*b1cdbd2cSJim Jagielski }
1518*b1cdbd2cSJim Jagielski
1519*b1cdbd2cSJim Jagielski
1520*b1cdbd2cSJim Jagielski //============================================================================
1521*b1cdbd2cSJim Jagielski // class ScUndoRefConversion
1522*b1cdbd2cSJim Jagielski //
1523*b1cdbd2cSJim Jagielski // cell reference conversion
1524*b1cdbd2cSJim Jagielski
1525*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1526*b1cdbd2cSJim Jagielski
ScUndoRefConversion(ScDocShell * pNewDocShell,const ScRange & aMarkRange,const ScMarkData & rMark,ScDocument * pNewUndoDoc,ScDocument * pNewRedoDoc,sal_Bool bNewMulti,sal_uInt16 nNewFlag)1527*b1cdbd2cSJim Jagielski ScUndoRefConversion::ScUndoRefConversion( ScDocShell* pNewDocShell,
1528*b1cdbd2cSJim Jagielski const ScRange& aMarkRange, const ScMarkData& rMark,
1529*b1cdbd2cSJim Jagielski ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc, sal_Bool bNewMulti, sal_uInt16 nNewFlag) :
1530*b1cdbd2cSJim Jagielski ScSimpleUndo( pNewDocShell ),
1531*b1cdbd2cSJim Jagielski aMarkData ( rMark ),
1532*b1cdbd2cSJim Jagielski pUndoDoc ( pNewUndoDoc ),
1533*b1cdbd2cSJim Jagielski pRedoDoc ( pNewRedoDoc ),
1534*b1cdbd2cSJim Jagielski aRange ( aMarkRange ),
1535*b1cdbd2cSJim Jagielski bMulti ( bNewMulti ),
1536*b1cdbd2cSJim Jagielski nFlags ( nNewFlag )
1537*b1cdbd2cSJim Jagielski {
1538*b1cdbd2cSJim Jagielski SetChangeTrack();
1539*b1cdbd2cSJim Jagielski }
1540*b1cdbd2cSJim Jagielski
~ScUndoRefConversion()1541*b1cdbd2cSJim Jagielski __EXPORT ScUndoRefConversion::~ScUndoRefConversion()
1542*b1cdbd2cSJim Jagielski {
1543*b1cdbd2cSJim Jagielski delete pUndoDoc;
1544*b1cdbd2cSJim Jagielski delete pRedoDoc;
1545*b1cdbd2cSJim Jagielski }
1546*b1cdbd2cSJim Jagielski
GetComment() const1547*b1cdbd2cSJim Jagielski String __EXPORT ScUndoRefConversion::GetComment() const
1548*b1cdbd2cSJim Jagielski {
1549*b1cdbd2cSJim Jagielski return ScGlobal::GetRscString( STR_UNDO_ENTERDATA ); // "Eingabe"
1550*b1cdbd2cSJim Jagielski }
1551*b1cdbd2cSJim Jagielski
SetChangeTrack()1552*b1cdbd2cSJim Jagielski void ScUndoRefConversion::SetChangeTrack()
1553*b1cdbd2cSJim Jagielski {
1554*b1cdbd2cSJim Jagielski ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
1555*b1cdbd2cSJim Jagielski if ( pChangeTrack && (nFlags & IDF_FORMULA) )
1556*b1cdbd2cSJim Jagielski pChangeTrack->AppendContentsIfInRefDoc( pUndoDoc,
1557*b1cdbd2cSJim Jagielski nStartChangeAction, nEndChangeAction );
1558*b1cdbd2cSJim Jagielski else
1559*b1cdbd2cSJim Jagielski nStartChangeAction = nEndChangeAction = 0;
1560*b1cdbd2cSJim Jagielski }
1561*b1cdbd2cSJim Jagielski
DoChange(ScDocument * pRefDoc)1562*b1cdbd2cSJim Jagielski void ScUndoRefConversion::DoChange( ScDocument* pRefDoc)
1563*b1cdbd2cSJim Jagielski {
1564*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
1565*b1cdbd2cSJim Jagielski
1566*b1cdbd2cSJim Jagielski ShowTable(aRange);
1567*b1cdbd2cSJim Jagielski
1568*b1cdbd2cSJim Jagielski SetViewMarkData( aMarkData );
1569*b1cdbd2cSJim Jagielski
1570*b1cdbd2cSJim Jagielski ScRange aCopyRange = aRange;
1571*b1cdbd2cSJim Jagielski SCTAB nTabCount = pDoc->GetTableCount();
1572*b1cdbd2cSJim Jagielski aCopyRange.aStart.SetTab(0);
1573*b1cdbd2cSJim Jagielski aCopyRange.aEnd.SetTab(nTabCount-1);
1574*b1cdbd2cSJim Jagielski pRefDoc->CopyToDocument( aCopyRange, nFlags, bMulti, pDoc, &aMarkData );
1575*b1cdbd2cSJim Jagielski pDocShell->PostPaint( aRange, PAINT_GRID);
1576*b1cdbd2cSJim Jagielski pDocShell->PostDataChanged();
1577*b1cdbd2cSJim Jagielski ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
1578*b1cdbd2cSJim Jagielski if (pViewShell)
1579*b1cdbd2cSJim Jagielski pViewShell->CellContentChanged();
1580*b1cdbd2cSJim Jagielski }
Undo()1581*b1cdbd2cSJim Jagielski void __EXPORT ScUndoRefConversion::Undo()
1582*b1cdbd2cSJim Jagielski {
1583*b1cdbd2cSJim Jagielski BeginUndo();
1584*b1cdbd2cSJim Jagielski if (pUndoDoc)
1585*b1cdbd2cSJim Jagielski DoChange(pUndoDoc);
1586*b1cdbd2cSJim Jagielski ScChangeTrack* pChangeTrack = pDocShell->GetDocument()->GetChangeTrack();
1587*b1cdbd2cSJim Jagielski if ( pChangeTrack )
1588*b1cdbd2cSJim Jagielski pChangeTrack->Undo( nStartChangeAction, nEndChangeAction );
1589*b1cdbd2cSJim Jagielski EndUndo();
1590*b1cdbd2cSJim Jagielski }
1591*b1cdbd2cSJim Jagielski
Redo()1592*b1cdbd2cSJim Jagielski void __EXPORT ScUndoRefConversion::Redo()
1593*b1cdbd2cSJim Jagielski {
1594*b1cdbd2cSJim Jagielski BeginRedo();
1595*b1cdbd2cSJim Jagielski if (pRedoDoc)
1596*b1cdbd2cSJim Jagielski DoChange(pRedoDoc);
1597*b1cdbd2cSJim Jagielski SetChangeTrack();
1598*b1cdbd2cSJim Jagielski EndRedo();
1599*b1cdbd2cSJim Jagielski }
1600*b1cdbd2cSJim Jagielski
Repeat(SfxRepeatTarget & rTarget)1601*b1cdbd2cSJim Jagielski void __EXPORT ScUndoRefConversion::Repeat(SfxRepeatTarget& rTarget)
1602*b1cdbd2cSJim Jagielski {
1603*b1cdbd2cSJim Jagielski if (rTarget.ISA(ScTabViewTarget))
1604*b1cdbd2cSJim Jagielski ((ScTabViewTarget&)rTarget).GetViewShell()->DoRefConversion();
1605*b1cdbd2cSJim Jagielski }
1606*b1cdbd2cSJim Jagielski
CanRepeat(SfxRepeatTarget & rTarget) const1607*b1cdbd2cSJim Jagielski sal_Bool __EXPORT ScUndoRefConversion::CanRepeat(SfxRepeatTarget& rTarget) const
1608*b1cdbd2cSJim Jagielski {
1609*b1cdbd2cSJim Jagielski return (rTarget.ISA(ScTabViewTarget));
1610*b1cdbd2cSJim Jagielski }
1611*b1cdbd2cSJim Jagielski //============================================================================
1612*b1cdbd2cSJim Jagielski // class ScUndoRefreshLink
1613*b1cdbd2cSJim Jagielski //
1614*b1cdbd2cSJim Jagielski // Link aktualisieren / aendern
1615*b1cdbd2cSJim Jagielski
1616*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1617*b1cdbd2cSJim Jagielski
ScUndoRefreshLink(ScDocShell * pNewDocShell,ScDocument * pNewUndoDoc)1618*b1cdbd2cSJim Jagielski ScUndoRefreshLink::ScUndoRefreshLink( ScDocShell* pNewDocShell,
1619*b1cdbd2cSJim Jagielski ScDocument* pNewUndoDoc )
1620*b1cdbd2cSJim Jagielski //
1621*b1cdbd2cSJim Jagielski : ScSimpleUndo( pNewDocShell ),
1622*b1cdbd2cSJim Jagielski //
1623*b1cdbd2cSJim Jagielski pUndoDoc( pNewUndoDoc ),
1624*b1cdbd2cSJim Jagielski pRedoDoc( NULL )
1625*b1cdbd2cSJim Jagielski {
1626*b1cdbd2cSJim Jagielski }
1627*b1cdbd2cSJim Jagielski
1628*b1cdbd2cSJim Jagielski
1629*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1630*b1cdbd2cSJim Jagielski
~ScUndoRefreshLink()1631*b1cdbd2cSJim Jagielski __EXPORT ScUndoRefreshLink::~ScUndoRefreshLink()
1632*b1cdbd2cSJim Jagielski {
1633*b1cdbd2cSJim Jagielski delete pUndoDoc;
1634*b1cdbd2cSJim Jagielski delete pRedoDoc;
1635*b1cdbd2cSJim Jagielski }
1636*b1cdbd2cSJim Jagielski
1637*b1cdbd2cSJim Jagielski
1638*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1639*b1cdbd2cSJim Jagielski
GetComment() const1640*b1cdbd2cSJim Jagielski String __EXPORT ScUndoRefreshLink::GetComment() const
1641*b1cdbd2cSJim Jagielski {
1642*b1cdbd2cSJim Jagielski return ScGlobal::GetRscString( STR_UNDO_UPDATELINK );
1643*b1cdbd2cSJim Jagielski }
1644*b1cdbd2cSJim Jagielski
1645*b1cdbd2cSJim Jagielski
1646*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1647*b1cdbd2cSJim Jagielski
Undo()1648*b1cdbd2cSJim Jagielski void __EXPORT ScUndoRefreshLink::Undo()
1649*b1cdbd2cSJim Jagielski {
1650*b1cdbd2cSJim Jagielski BeginUndo();
1651*b1cdbd2cSJim Jagielski
1652*b1cdbd2cSJim Jagielski sal_Bool bMakeRedo = !pRedoDoc;
1653*b1cdbd2cSJim Jagielski if (bMakeRedo)
1654*b1cdbd2cSJim Jagielski pRedoDoc = new ScDocument( SCDOCMODE_UNDO );
1655*b1cdbd2cSJim Jagielski
1656*b1cdbd2cSJim Jagielski sal_Bool bFirst = sal_True;
1657*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
1658*b1cdbd2cSJim Jagielski SCTAB nCount = pDoc->GetTableCount();
1659*b1cdbd2cSJim Jagielski for (SCTAB nTab=0; nTab<nCount; nTab++)
1660*b1cdbd2cSJim Jagielski if (pUndoDoc->HasTable(nTab))
1661*b1cdbd2cSJim Jagielski {
1662*b1cdbd2cSJim Jagielski ScRange aRange(0,0,nTab,MAXCOL,MAXROW,nTab);
1663*b1cdbd2cSJim Jagielski if (bMakeRedo)
1664*b1cdbd2cSJim Jagielski {
1665*b1cdbd2cSJim Jagielski if (bFirst)
1666*b1cdbd2cSJim Jagielski pRedoDoc->InitUndo( pDoc, nTab, nTab, sal_True, sal_True );
1667*b1cdbd2cSJim Jagielski else
1668*b1cdbd2cSJim Jagielski pRedoDoc->AddUndoTab( nTab, nTab, sal_True, sal_True );
1669*b1cdbd2cSJim Jagielski bFirst = sal_False;
1670*b1cdbd2cSJim Jagielski pDoc->CopyToDocument(aRange, IDF_ALL, sal_False, pRedoDoc);
1671*b1cdbd2cSJim Jagielski // pRedoDoc->TransferDrawPage( pDoc, nTab, nTab );
1672*b1cdbd2cSJim Jagielski pRedoDoc->SetLink( nTab,
1673*b1cdbd2cSJim Jagielski pDoc->GetLinkMode(nTab),
1674*b1cdbd2cSJim Jagielski pDoc->GetLinkDoc(nTab),
1675*b1cdbd2cSJim Jagielski pDoc->GetLinkFlt(nTab),
1676*b1cdbd2cSJim Jagielski pDoc->GetLinkOpt(nTab),
1677*b1cdbd2cSJim Jagielski pDoc->GetLinkTab(nTab),
1678*b1cdbd2cSJim Jagielski pDoc->GetLinkRefreshDelay(nTab) );
1679*b1cdbd2cSJim Jagielski pRedoDoc->SetTabBgColor( nTab, pDoc->GetTabBgColor(nTab) );
1680*b1cdbd2cSJim Jagielski }
1681*b1cdbd2cSJim Jagielski
1682*b1cdbd2cSJim Jagielski pDoc->DeleteAreaTab( aRange,IDF_ALL );
1683*b1cdbd2cSJim Jagielski pUndoDoc->CopyToDocument( aRange, IDF_ALL, sal_False, pDoc );
1684*b1cdbd2cSJim Jagielski // pDoc->TransferDrawPage( pUndoDoc, nTab, nTab );
1685*b1cdbd2cSJim Jagielski pDoc->SetLink( nTab, pUndoDoc->GetLinkMode(nTab), pUndoDoc->GetLinkDoc(nTab),
1686*b1cdbd2cSJim Jagielski pUndoDoc->GetLinkFlt(nTab), pUndoDoc->GetLinkOpt(nTab),
1687*b1cdbd2cSJim Jagielski pUndoDoc->GetLinkTab(nTab),
1688*b1cdbd2cSJim Jagielski pUndoDoc->GetLinkRefreshDelay(nTab) );
1689*b1cdbd2cSJim Jagielski pDoc->SetTabBgColor( nTab, pUndoDoc->GetTabBgColor(nTab) );
1690*b1cdbd2cSJim Jagielski }
1691*b1cdbd2cSJim Jagielski
1692*b1cdbd2cSJim Jagielski pDocShell->PostPaintGridAll();
1693*b1cdbd2cSJim Jagielski pDocShell->PostPaintExtras();
1694*b1cdbd2cSJim Jagielski
1695*b1cdbd2cSJim Jagielski EndUndo();
1696*b1cdbd2cSJim Jagielski }
1697*b1cdbd2cSJim Jagielski
1698*b1cdbd2cSJim Jagielski
1699*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1700*b1cdbd2cSJim Jagielski
Redo()1701*b1cdbd2cSJim Jagielski void __EXPORT ScUndoRefreshLink::Redo()
1702*b1cdbd2cSJim Jagielski {
1703*b1cdbd2cSJim Jagielski DBG_ASSERT(pRedoDoc, "Kein RedoDoc bei ScUndoRefreshLink::Redo");
1704*b1cdbd2cSJim Jagielski
1705*b1cdbd2cSJim Jagielski BeginUndo();
1706*b1cdbd2cSJim Jagielski
1707*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
1708*b1cdbd2cSJim Jagielski SCTAB nCount = pDoc->GetTableCount();
1709*b1cdbd2cSJim Jagielski for (SCTAB nTab=0; nTab<nCount; nTab++)
1710*b1cdbd2cSJim Jagielski if (pRedoDoc->HasTable(nTab))
1711*b1cdbd2cSJim Jagielski {
1712*b1cdbd2cSJim Jagielski ScRange aRange(0,0,nTab,MAXCOL,MAXROW,nTab);
1713*b1cdbd2cSJim Jagielski
1714*b1cdbd2cSJim Jagielski pDoc->DeleteAreaTab( aRange, IDF_ALL );
1715*b1cdbd2cSJim Jagielski pRedoDoc->CopyToDocument( aRange, IDF_ALL, sal_False, pDoc );
1716*b1cdbd2cSJim Jagielski // pDoc->TransferDrawPage( pRedoDoc, nTab, nTab );
1717*b1cdbd2cSJim Jagielski pDoc->SetLink( nTab,
1718*b1cdbd2cSJim Jagielski pRedoDoc->GetLinkMode(nTab),
1719*b1cdbd2cSJim Jagielski pRedoDoc->GetLinkDoc(nTab),
1720*b1cdbd2cSJim Jagielski pRedoDoc->GetLinkFlt(nTab),
1721*b1cdbd2cSJim Jagielski pRedoDoc->GetLinkOpt(nTab),
1722*b1cdbd2cSJim Jagielski pRedoDoc->GetLinkTab(nTab),
1723*b1cdbd2cSJim Jagielski pRedoDoc->GetLinkRefreshDelay(nTab) );
1724*b1cdbd2cSJim Jagielski pDoc->SetTabBgColor( nTab, pRedoDoc->GetTabBgColor(nTab) );
1725*b1cdbd2cSJim Jagielski }
1726*b1cdbd2cSJim Jagielski
1727*b1cdbd2cSJim Jagielski pDocShell->PostPaintGridAll();
1728*b1cdbd2cSJim Jagielski pDocShell->PostPaintExtras();
1729*b1cdbd2cSJim Jagielski
1730*b1cdbd2cSJim Jagielski EndUndo();
1731*b1cdbd2cSJim Jagielski }
1732*b1cdbd2cSJim Jagielski
1733*b1cdbd2cSJim Jagielski
1734*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1735*b1cdbd2cSJim Jagielski
Repeat(SfxRepeatTarget &)1736*b1cdbd2cSJim Jagielski void __EXPORT ScUndoRefreshLink::Repeat(SfxRepeatTarget& /* rTarget */)
1737*b1cdbd2cSJim Jagielski {
1738*b1cdbd2cSJim Jagielski // gippsnich
1739*b1cdbd2cSJim Jagielski }
1740*b1cdbd2cSJim Jagielski
1741*b1cdbd2cSJim Jagielski
1742*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1743*b1cdbd2cSJim Jagielski
CanRepeat(SfxRepeatTarget &) const1744*b1cdbd2cSJim Jagielski sal_Bool __EXPORT ScUndoRefreshLink::CanRepeat(SfxRepeatTarget& /* rTarget */) const
1745*b1cdbd2cSJim Jagielski {
1746*b1cdbd2cSJim Jagielski return sal_False;
1747*b1cdbd2cSJim Jagielski }
1748*b1cdbd2cSJim Jagielski
1749*b1cdbd2cSJim Jagielski
1750*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1751*b1cdbd2cSJim Jagielski
lcl_FindAreaLink(sfx2::LinkManager * pLinkManager,const String & rDoc,const String & rFlt,const String & rOpt,const String & rSrc,const ScRange & rDest)1752*b1cdbd2cSJim Jagielski ScAreaLink* lcl_FindAreaLink( sfx2::LinkManager* pLinkManager, const String& rDoc,
1753*b1cdbd2cSJim Jagielski const String& rFlt, const String& rOpt,
1754*b1cdbd2cSJim Jagielski const String& rSrc, const ScRange& rDest )
1755*b1cdbd2cSJim Jagielski {
1756*b1cdbd2cSJim Jagielski const ::sfx2::SvBaseLinks& rLinks = pLinkManager->GetLinks();
1757*b1cdbd2cSJim Jagielski sal_uInt16 nCount = pLinkManager->GetLinks().Count();
1758*b1cdbd2cSJim Jagielski for (sal_uInt16 i=0; i<nCount; i++)
1759*b1cdbd2cSJim Jagielski {
1760*b1cdbd2cSJim Jagielski ::sfx2::SvBaseLink* pBase = *rLinks[i];
1761*b1cdbd2cSJim Jagielski if (pBase->ISA(ScAreaLink))
1762*b1cdbd2cSJim Jagielski if ( ((ScAreaLink*)pBase)->IsEqual( rDoc, rFlt, rOpt, rSrc, rDest ) )
1763*b1cdbd2cSJim Jagielski return (ScAreaLink*)pBase;
1764*b1cdbd2cSJim Jagielski }
1765*b1cdbd2cSJim Jagielski
1766*b1cdbd2cSJim Jagielski DBG_ERROR("ScAreaLink nicht gefunden");
1767*b1cdbd2cSJim Jagielski return NULL;
1768*b1cdbd2cSJim Jagielski }
1769*b1cdbd2cSJim Jagielski
1770*b1cdbd2cSJim Jagielski
1771*b1cdbd2cSJim Jagielski //============================================================================
1772*b1cdbd2cSJim Jagielski // class ScUndoInsertAreaLink
1773*b1cdbd2cSJim Jagielski //
1774*b1cdbd2cSJim Jagielski // Bereichs-Verknuepfung einfuegen
1775*b1cdbd2cSJim Jagielski
1776*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1777*b1cdbd2cSJim Jagielski
ScUndoInsertAreaLink(ScDocShell * pShell,const String & rDoc,const String & rFlt,const String & rOpt,const String & rArea,const ScRange & rDestRange,sal_uLong nRefresh)1778*b1cdbd2cSJim Jagielski ScUndoInsertAreaLink::ScUndoInsertAreaLink( ScDocShell* pShell,
1779*b1cdbd2cSJim Jagielski const String& rDoc,
1780*b1cdbd2cSJim Jagielski const String& rFlt, const String& rOpt,
1781*b1cdbd2cSJim Jagielski const String& rArea, const ScRange& rDestRange,
1782*b1cdbd2cSJim Jagielski sal_uLong nRefresh )
1783*b1cdbd2cSJim Jagielski //
1784*b1cdbd2cSJim Jagielski : ScSimpleUndo ( pShell ),
1785*b1cdbd2cSJim Jagielski //
1786*b1cdbd2cSJim Jagielski aDocName ( rDoc ),
1787*b1cdbd2cSJim Jagielski aFltName ( rFlt ),
1788*b1cdbd2cSJim Jagielski aOptions ( rOpt ),
1789*b1cdbd2cSJim Jagielski aAreaName ( rArea ),
1790*b1cdbd2cSJim Jagielski aRange ( rDestRange ),
1791*b1cdbd2cSJim Jagielski nRefreshDelay ( nRefresh )
1792*b1cdbd2cSJim Jagielski {
1793*b1cdbd2cSJim Jagielski }
1794*b1cdbd2cSJim Jagielski
1795*b1cdbd2cSJim Jagielski
1796*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1797*b1cdbd2cSJim Jagielski
~ScUndoInsertAreaLink()1798*b1cdbd2cSJim Jagielski __EXPORT ScUndoInsertAreaLink::~ScUndoInsertAreaLink()
1799*b1cdbd2cSJim Jagielski {
1800*b1cdbd2cSJim Jagielski }
1801*b1cdbd2cSJim Jagielski
1802*b1cdbd2cSJim Jagielski
1803*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1804*b1cdbd2cSJim Jagielski
GetComment() const1805*b1cdbd2cSJim Jagielski String __EXPORT ScUndoInsertAreaLink::GetComment() const
1806*b1cdbd2cSJim Jagielski {
1807*b1cdbd2cSJim Jagielski return ScGlobal::GetRscString( STR_UNDO_INSERTAREALINK );
1808*b1cdbd2cSJim Jagielski }
1809*b1cdbd2cSJim Jagielski
1810*b1cdbd2cSJim Jagielski
1811*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1812*b1cdbd2cSJim Jagielski
Undo()1813*b1cdbd2cSJim Jagielski void __EXPORT ScUndoInsertAreaLink::Undo()
1814*b1cdbd2cSJim Jagielski {
1815*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
1816*b1cdbd2cSJim Jagielski sfx2::LinkManager* pLinkManager = pDoc->GetLinkManager();
1817*b1cdbd2cSJim Jagielski
1818*b1cdbd2cSJim Jagielski ScAreaLink* pLink = lcl_FindAreaLink( pLinkManager, aDocName, aFltName, aOptions,
1819*b1cdbd2cSJim Jagielski aAreaName, aRange );
1820*b1cdbd2cSJim Jagielski if (pLink)
1821*b1cdbd2cSJim Jagielski pLinkManager->Remove( pLink );
1822*b1cdbd2cSJim Jagielski
1823*b1cdbd2cSJim Jagielski SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); // Navigator
1824*b1cdbd2cSJim Jagielski }
1825*b1cdbd2cSJim Jagielski
1826*b1cdbd2cSJim Jagielski
1827*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1828*b1cdbd2cSJim Jagielski
Redo()1829*b1cdbd2cSJim Jagielski void __EXPORT ScUndoInsertAreaLink::Redo()
1830*b1cdbd2cSJim Jagielski {
1831*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
1832*b1cdbd2cSJim Jagielski sfx2::LinkManager* pLinkManager = pDoc->GetLinkManager();
1833*b1cdbd2cSJim Jagielski
1834*b1cdbd2cSJim Jagielski ScAreaLink* pLink = new ScAreaLink( pDocShell, aDocName, aFltName, aOptions,
1835*b1cdbd2cSJim Jagielski aAreaName, aRange.aStart, nRefreshDelay );
1836*b1cdbd2cSJim Jagielski pLink->SetInCreate( sal_True );
1837*b1cdbd2cSJim Jagielski pLink->SetDestArea( aRange );
1838*b1cdbd2cSJim Jagielski pLinkManager->InsertFileLink( *pLink, OBJECT_CLIENT_FILE, aDocName, &aFltName, &aAreaName );
1839*b1cdbd2cSJim Jagielski pLink->Update();
1840*b1cdbd2cSJim Jagielski pLink->SetInCreate( sal_False );
1841*b1cdbd2cSJim Jagielski
1842*b1cdbd2cSJim Jagielski SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); // Navigator
1843*b1cdbd2cSJim Jagielski }
1844*b1cdbd2cSJim Jagielski
1845*b1cdbd2cSJim Jagielski
1846*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1847*b1cdbd2cSJim Jagielski
Repeat(SfxRepeatTarget &)1848*b1cdbd2cSJim Jagielski void __EXPORT ScUndoInsertAreaLink::Repeat(SfxRepeatTarget& /* rTarget */)
1849*b1cdbd2cSJim Jagielski {
1850*b1cdbd2cSJim Jagielski //! ....
1851*b1cdbd2cSJim Jagielski }
1852*b1cdbd2cSJim Jagielski
1853*b1cdbd2cSJim Jagielski
1854*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1855*b1cdbd2cSJim Jagielski
CanRepeat(SfxRepeatTarget &) const1856*b1cdbd2cSJim Jagielski sal_Bool __EXPORT ScUndoInsertAreaLink::CanRepeat(SfxRepeatTarget& /* rTarget */) const
1857*b1cdbd2cSJim Jagielski {
1858*b1cdbd2cSJim Jagielski return sal_False;
1859*b1cdbd2cSJim Jagielski }
1860*b1cdbd2cSJim Jagielski
1861*b1cdbd2cSJim Jagielski
1862*b1cdbd2cSJim Jagielski //============================================================================
1863*b1cdbd2cSJim Jagielski // class ScUndoRemoveAreaLink
1864*b1cdbd2cSJim Jagielski //
1865*b1cdbd2cSJim Jagielski // Bereichs-Verknuepfung loeschen
1866*b1cdbd2cSJim Jagielski
1867*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1868*b1cdbd2cSJim Jagielski
ScUndoRemoveAreaLink(ScDocShell * pShell,const String & rDoc,const String & rFlt,const String & rOpt,const String & rArea,const ScRange & rDestRange,sal_uLong nRefresh)1869*b1cdbd2cSJim Jagielski ScUndoRemoveAreaLink::ScUndoRemoveAreaLink( ScDocShell* pShell,
1870*b1cdbd2cSJim Jagielski const String& rDoc, const String& rFlt, const String& rOpt,
1871*b1cdbd2cSJim Jagielski const String& rArea, const ScRange& rDestRange,
1872*b1cdbd2cSJim Jagielski sal_uLong nRefresh )
1873*b1cdbd2cSJim Jagielski //
1874*b1cdbd2cSJim Jagielski : ScSimpleUndo ( pShell ),
1875*b1cdbd2cSJim Jagielski //
1876*b1cdbd2cSJim Jagielski aDocName ( rDoc ),
1877*b1cdbd2cSJim Jagielski aFltName ( rFlt ),
1878*b1cdbd2cSJim Jagielski aOptions ( rOpt ),
1879*b1cdbd2cSJim Jagielski aAreaName ( rArea ),
1880*b1cdbd2cSJim Jagielski aRange ( rDestRange ),
1881*b1cdbd2cSJim Jagielski nRefreshDelay ( nRefresh )
1882*b1cdbd2cSJim Jagielski {
1883*b1cdbd2cSJim Jagielski }
1884*b1cdbd2cSJim Jagielski
1885*b1cdbd2cSJim Jagielski
1886*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1887*b1cdbd2cSJim Jagielski
~ScUndoRemoveAreaLink()1888*b1cdbd2cSJim Jagielski __EXPORT ScUndoRemoveAreaLink::~ScUndoRemoveAreaLink()
1889*b1cdbd2cSJim Jagielski {
1890*b1cdbd2cSJim Jagielski }
1891*b1cdbd2cSJim Jagielski
1892*b1cdbd2cSJim Jagielski
1893*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1894*b1cdbd2cSJim Jagielski
GetComment() const1895*b1cdbd2cSJim Jagielski String __EXPORT ScUndoRemoveAreaLink::GetComment() const
1896*b1cdbd2cSJim Jagielski {
1897*b1cdbd2cSJim Jagielski return ScGlobal::GetRscString( STR_UNDO_REMOVELINK ); //! eigener Text ??
1898*b1cdbd2cSJim Jagielski }
1899*b1cdbd2cSJim Jagielski
1900*b1cdbd2cSJim Jagielski
1901*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1902*b1cdbd2cSJim Jagielski
Undo()1903*b1cdbd2cSJim Jagielski void __EXPORT ScUndoRemoveAreaLink::Undo()
1904*b1cdbd2cSJim Jagielski {
1905*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
1906*b1cdbd2cSJim Jagielski sfx2::LinkManager* pLinkManager = pDoc->GetLinkManager();
1907*b1cdbd2cSJim Jagielski
1908*b1cdbd2cSJim Jagielski ScAreaLink* pLink = new ScAreaLink( pDocShell, aDocName, aFltName, aOptions,
1909*b1cdbd2cSJim Jagielski aAreaName, aRange.aStart, nRefreshDelay );
1910*b1cdbd2cSJim Jagielski pLink->SetInCreate( sal_True );
1911*b1cdbd2cSJim Jagielski pLink->SetDestArea( aRange );
1912*b1cdbd2cSJim Jagielski pLinkManager->InsertFileLink( *pLink, OBJECT_CLIENT_FILE, aDocName, &aFltName, &aAreaName );
1913*b1cdbd2cSJim Jagielski pLink->Update();
1914*b1cdbd2cSJim Jagielski pLink->SetInCreate( sal_False );
1915*b1cdbd2cSJim Jagielski
1916*b1cdbd2cSJim Jagielski SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); // Navigator
1917*b1cdbd2cSJim Jagielski }
1918*b1cdbd2cSJim Jagielski
1919*b1cdbd2cSJim Jagielski
1920*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1921*b1cdbd2cSJim Jagielski
Redo()1922*b1cdbd2cSJim Jagielski void __EXPORT ScUndoRemoveAreaLink::Redo()
1923*b1cdbd2cSJim Jagielski {
1924*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
1925*b1cdbd2cSJim Jagielski sfx2::LinkManager* pLinkManager = pDoc->GetLinkManager();
1926*b1cdbd2cSJim Jagielski
1927*b1cdbd2cSJim Jagielski ScAreaLink* pLink = lcl_FindAreaLink( pLinkManager, aDocName, aFltName, aOptions,
1928*b1cdbd2cSJim Jagielski aAreaName, aRange );
1929*b1cdbd2cSJim Jagielski if (pLink)
1930*b1cdbd2cSJim Jagielski pLinkManager->Remove( pLink );
1931*b1cdbd2cSJim Jagielski
1932*b1cdbd2cSJim Jagielski SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREALINKS_CHANGED ) ); // Navigator
1933*b1cdbd2cSJim Jagielski }
1934*b1cdbd2cSJim Jagielski
1935*b1cdbd2cSJim Jagielski
1936*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1937*b1cdbd2cSJim Jagielski
Repeat(SfxRepeatTarget &)1938*b1cdbd2cSJim Jagielski void __EXPORT ScUndoRemoveAreaLink::Repeat(SfxRepeatTarget& /* rTarget */)
1939*b1cdbd2cSJim Jagielski {
1940*b1cdbd2cSJim Jagielski // gippsnich
1941*b1cdbd2cSJim Jagielski }
1942*b1cdbd2cSJim Jagielski
1943*b1cdbd2cSJim Jagielski
1944*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1945*b1cdbd2cSJim Jagielski
CanRepeat(SfxRepeatTarget &) const1946*b1cdbd2cSJim Jagielski sal_Bool __EXPORT ScUndoRemoveAreaLink::CanRepeat(SfxRepeatTarget& /* rTarget */) const
1947*b1cdbd2cSJim Jagielski {
1948*b1cdbd2cSJim Jagielski return sal_False;
1949*b1cdbd2cSJim Jagielski }
1950*b1cdbd2cSJim Jagielski
1951*b1cdbd2cSJim Jagielski
1952*b1cdbd2cSJim Jagielski //============================================================================
1953*b1cdbd2cSJim Jagielski // class ScUndoUpdateAreaLink
1954*b1cdbd2cSJim Jagielski //
1955*b1cdbd2cSJim Jagielski // Bereichs-Verknuepfung aktualisieren
1956*b1cdbd2cSJim Jagielski
1957*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1958*b1cdbd2cSJim Jagielski
ScUndoUpdateAreaLink(ScDocShell * pShell,const String & rOldD,const String & rOldF,const String & rOldO,const String & rOldA,const ScRange & rOldR,sal_uLong nOldRD,const String & rNewD,const String & rNewF,const String & rNewO,const String & rNewA,const ScRange & rNewR,sal_uLong nNewRD,ScDocument * pUndo,ScDocument * pRedo,sal_Bool bDoInsert)1959*b1cdbd2cSJim Jagielski ScUndoUpdateAreaLink::ScUndoUpdateAreaLink( ScDocShell* pShell,
1960*b1cdbd2cSJim Jagielski const String& rOldD, const String& rOldF, const String& rOldO,
1961*b1cdbd2cSJim Jagielski const String& rOldA, const ScRange& rOldR, sal_uLong nOldRD,
1962*b1cdbd2cSJim Jagielski const String& rNewD, const String& rNewF, const String& rNewO,
1963*b1cdbd2cSJim Jagielski const String& rNewA, const ScRange& rNewR, sal_uLong nNewRD,
1964*b1cdbd2cSJim Jagielski ScDocument* pUndo, ScDocument* pRedo, sal_Bool bDoInsert )
1965*b1cdbd2cSJim Jagielski //
1966*b1cdbd2cSJim Jagielski : ScSimpleUndo( pShell ),
1967*b1cdbd2cSJim Jagielski //
1968*b1cdbd2cSJim Jagielski aOldDoc ( rOldD ),
1969*b1cdbd2cSJim Jagielski aOldFlt ( rOldF ),
1970*b1cdbd2cSJim Jagielski aOldOpt ( rOldO ),
1971*b1cdbd2cSJim Jagielski aOldArea ( rOldA ),
1972*b1cdbd2cSJim Jagielski aOldRange ( rOldR ),
1973*b1cdbd2cSJim Jagielski aNewDoc ( rNewD ),
1974*b1cdbd2cSJim Jagielski aNewFlt ( rNewF ),
1975*b1cdbd2cSJim Jagielski aNewOpt ( rNewO ),
1976*b1cdbd2cSJim Jagielski aNewArea ( rNewA ),
1977*b1cdbd2cSJim Jagielski aNewRange ( rNewR ),
1978*b1cdbd2cSJim Jagielski pUndoDoc ( pUndo ),
1979*b1cdbd2cSJim Jagielski pRedoDoc ( pRedo ),
1980*b1cdbd2cSJim Jagielski nOldRefresh ( nOldRD ),
1981*b1cdbd2cSJim Jagielski nNewRefresh ( nNewRD ),
1982*b1cdbd2cSJim Jagielski bWithInsert ( bDoInsert )
1983*b1cdbd2cSJim Jagielski {
1984*b1cdbd2cSJim Jagielski DBG_ASSERT( aOldRange.aStart == aNewRange.aStart, "AreaLink verschoben ?" );
1985*b1cdbd2cSJim Jagielski }
1986*b1cdbd2cSJim Jagielski
1987*b1cdbd2cSJim Jagielski
1988*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1989*b1cdbd2cSJim Jagielski
~ScUndoUpdateAreaLink()1990*b1cdbd2cSJim Jagielski __EXPORT ScUndoUpdateAreaLink::~ScUndoUpdateAreaLink()
1991*b1cdbd2cSJim Jagielski {
1992*b1cdbd2cSJim Jagielski delete pUndoDoc;
1993*b1cdbd2cSJim Jagielski delete pRedoDoc;
1994*b1cdbd2cSJim Jagielski }
1995*b1cdbd2cSJim Jagielski
1996*b1cdbd2cSJim Jagielski
1997*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
1998*b1cdbd2cSJim Jagielski
GetComment() const1999*b1cdbd2cSJim Jagielski String __EXPORT ScUndoUpdateAreaLink::GetComment() const
2000*b1cdbd2cSJim Jagielski {
2001*b1cdbd2cSJim Jagielski return ScGlobal::GetRscString( STR_UNDO_UPDATELINK ); //! eigener Text ??
2002*b1cdbd2cSJim Jagielski }
2003*b1cdbd2cSJim Jagielski
2004*b1cdbd2cSJim Jagielski
2005*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
2006*b1cdbd2cSJim Jagielski
DoChange(const sal_Bool bUndo) const2007*b1cdbd2cSJim Jagielski void ScUndoUpdateAreaLink::DoChange( const sal_Bool bUndo ) const
2008*b1cdbd2cSJim Jagielski {
2009*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
2010*b1cdbd2cSJim Jagielski
2011*b1cdbd2cSJim Jagielski SCCOL nEndX = Max( aOldRange.aEnd.Col(), aNewRange.aEnd.Col() );
2012*b1cdbd2cSJim Jagielski SCROW nEndY = Max( aOldRange.aEnd.Row(), aNewRange.aEnd.Row() );
2013*b1cdbd2cSJim Jagielski SCTAB nEndZ = Max( aOldRange.aEnd.Tab(), aNewRange.aEnd.Tab() ); //?
2014*b1cdbd2cSJim Jagielski
2015*b1cdbd2cSJim Jagielski if ( bUndo )
2016*b1cdbd2cSJim Jagielski {
2017*b1cdbd2cSJim Jagielski if ( bWithInsert )
2018*b1cdbd2cSJim Jagielski {
2019*b1cdbd2cSJim Jagielski pDoc->FitBlock( aNewRange, aOldRange );
2020*b1cdbd2cSJim Jagielski pDoc->DeleteAreaTab( aOldRange, IDF_ALL & ~IDF_NOTE );
2021*b1cdbd2cSJim Jagielski pUndoDoc->UndoToDocument( aOldRange, IDF_ALL & ~IDF_NOTE, sal_False, pDoc );
2022*b1cdbd2cSJim Jagielski }
2023*b1cdbd2cSJim Jagielski else
2024*b1cdbd2cSJim Jagielski {
2025*b1cdbd2cSJim Jagielski ScRange aCopyRange( aOldRange.aStart, ScAddress(nEndX,nEndY,nEndZ) );
2026*b1cdbd2cSJim Jagielski pDoc->DeleteAreaTab( aCopyRange, IDF_ALL & ~IDF_NOTE );
2027*b1cdbd2cSJim Jagielski pUndoDoc->CopyToDocument( aCopyRange, IDF_ALL & ~IDF_NOTE, sal_False, pDoc );
2028*b1cdbd2cSJim Jagielski }
2029*b1cdbd2cSJim Jagielski }
2030*b1cdbd2cSJim Jagielski else
2031*b1cdbd2cSJim Jagielski {
2032*b1cdbd2cSJim Jagielski if ( bWithInsert )
2033*b1cdbd2cSJim Jagielski {
2034*b1cdbd2cSJim Jagielski pDoc->FitBlock( aOldRange, aNewRange );
2035*b1cdbd2cSJim Jagielski pDoc->DeleteAreaTab( aNewRange, IDF_ALL & ~IDF_NOTE );
2036*b1cdbd2cSJim Jagielski pRedoDoc->CopyToDocument( aNewRange, IDF_ALL & ~IDF_NOTE, sal_False, pDoc );
2037*b1cdbd2cSJim Jagielski }
2038*b1cdbd2cSJim Jagielski else
2039*b1cdbd2cSJim Jagielski {
2040*b1cdbd2cSJim Jagielski ScRange aCopyRange( aOldRange.aStart, ScAddress(nEndX,nEndY,nEndZ) );
2041*b1cdbd2cSJim Jagielski pDoc->DeleteAreaTab( aCopyRange, IDF_ALL & ~IDF_NOTE );
2042*b1cdbd2cSJim Jagielski pRedoDoc->CopyToDocument( aCopyRange, IDF_ALL & ~IDF_NOTE, sal_False, pDoc );
2043*b1cdbd2cSJim Jagielski }
2044*b1cdbd2cSJim Jagielski }
2045*b1cdbd2cSJim Jagielski
2046*b1cdbd2cSJim Jagielski ScRange aWorkRange( aNewRange.aStart, ScAddress( nEndX, nEndY, nEndZ ) );
2047*b1cdbd2cSJim Jagielski pDoc->ExtendMerge( aWorkRange, sal_True );
2048*b1cdbd2cSJim Jagielski
2049*b1cdbd2cSJim Jagielski // Paint
2050*b1cdbd2cSJim Jagielski
2051*b1cdbd2cSJim Jagielski if ( aNewRange.aEnd.Col() != aOldRange.aEnd.Col() )
2052*b1cdbd2cSJim Jagielski aWorkRange.aEnd.SetCol(MAXCOL);
2053*b1cdbd2cSJim Jagielski if ( aNewRange.aEnd.Row() != aOldRange.aEnd.Row() )
2054*b1cdbd2cSJim Jagielski aWorkRange.aEnd.SetRow(MAXROW);
2055*b1cdbd2cSJim Jagielski
2056*b1cdbd2cSJim Jagielski if ( !pDocShell->AdjustRowHeight( aWorkRange.aStart.Row(), aWorkRange.aEnd.Row(), aWorkRange.aStart.Tab() ) )
2057*b1cdbd2cSJim Jagielski pDocShell->PostPaint( aWorkRange, PAINT_GRID );
2058*b1cdbd2cSJim Jagielski
2059*b1cdbd2cSJim Jagielski pDocShell->PostDataChanged();
2060*b1cdbd2cSJim Jagielski ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
2061*b1cdbd2cSJim Jagielski if (pViewShell)
2062*b1cdbd2cSJim Jagielski pViewShell->CellContentChanged();
2063*b1cdbd2cSJim Jagielski }
2064*b1cdbd2cSJim Jagielski
2065*b1cdbd2cSJim Jagielski
2066*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
2067*b1cdbd2cSJim Jagielski
Undo()2068*b1cdbd2cSJim Jagielski void __EXPORT ScUndoUpdateAreaLink::Undo()
2069*b1cdbd2cSJim Jagielski {
2070*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
2071*b1cdbd2cSJim Jagielski sfx2::LinkManager* pLinkManager = pDoc->GetLinkManager();
2072*b1cdbd2cSJim Jagielski ScAreaLink* pLink = lcl_FindAreaLink( pLinkManager, aNewDoc, aNewFlt, aNewOpt,
2073*b1cdbd2cSJim Jagielski aNewArea, aNewRange );
2074*b1cdbd2cSJim Jagielski if (pLink)
2075*b1cdbd2cSJim Jagielski {
2076*b1cdbd2cSJim Jagielski pLink->SetSource( aOldDoc, aOldFlt, aOldOpt, aOldArea ); // alte Werte im Link
2077*b1cdbd2cSJim Jagielski pLink->SetDestArea( aOldRange );
2078*b1cdbd2cSJim Jagielski pLink->SetRefreshDelay( nOldRefresh );
2079*b1cdbd2cSJim Jagielski }
2080*b1cdbd2cSJim Jagielski
2081*b1cdbd2cSJim Jagielski DoChange(sal_True);
2082*b1cdbd2cSJim Jagielski }
2083*b1cdbd2cSJim Jagielski
2084*b1cdbd2cSJim Jagielski
2085*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
2086*b1cdbd2cSJim Jagielski
Redo()2087*b1cdbd2cSJim Jagielski void __EXPORT ScUndoUpdateAreaLink::Redo()
2088*b1cdbd2cSJim Jagielski {
2089*b1cdbd2cSJim Jagielski ScDocument* pDoc = pDocShell->GetDocument();
2090*b1cdbd2cSJim Jagielski sfx2::LinkManager* pLinkManager = pDoc->GetLinkManager();
2091*b1cdbd2cSJim Jagielski ScAreaLink* pLink = lcl_FindAreaLink( pLinkManager, aOldDoc, aOldFlt, aOldOpt,
2092*b1cdbd2cSJim Jagielski aOldArea, aOldRange );
2093*b1cdbd2cSJim Jagielski if (pLink)
2094*b1cdbd2cSJim Jagielski {
2095*b1cdbd2cSJim Jagielski pLink->SetSource( aNewDoc, aNewFlt, aNewOpt, aNewArea ); // neue Werte im Link
2096*b1cdbd2cSJim Jagielski pLink->SetDestArea( aNewRange );
2097*b1cdbd2cSJim Jagielski pLink->SetRefreshDelay( nNewRefresh );
2098*b1cdbd2cSJim Jagielski }
2099*b1cdbd2cSJim Jagielski
2100*b1cdbd2cSJim Jagielski DoChange(sal_False);
2101*b1cdbd2cSJim Jagielski }
2102*b1cdbd2cSJim Jagielski
2103*b1cdbd2cSJim Jagielski
2104*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
2105*b1cdbd2cSJim Jagielski
Repeat(SfxRepeatTarget &)2106*b1cdbd2cSJim Jagielski void __EXPORT ScUndoUpdateAreaLink::Repeat(SfxRepeatTarget& /* rTarget */)
2107*b1cdbd2cSJim Jagielski {
2108*b1cdbd2cSJim Jagielski // gippsnich
2109*b1cdbd2cSJim Jagielski }
2110*b1cdbd2cSJim Jagielski
2111*b1cdbd2cSJim Jagielski
2112*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
2113*b1cdbd2cSJim Jagielski
CanRepeat(SfxRepeatTarget &) const2114*b1cdbd2cSJim Jagielski sal_Bool __EXPORT ScUndoUpdateAreaLink::CanRepeat(SfxRepeatTarget& /* rTarget */) const
2115*b1cdbd2cSJim Jagielski {
2116*b1cdbd2cSJim Jagielski return sal_False;
2117*b1cdbd2cSJim Jagielski }
2118*b1cdbd2cSJim Jagielski
2119*b1cdbd2cSJim Jagielski
2120*b1cdbd2cSJim Jagielski
2121*b1cdbd2cSJim Jagielski
2122