2000-09-18 11:07:07 -05:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2005-09-08 22:56:40 -05:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
2005-09-08 22:56:40 -05:00
|
|
|
* $RCSfile: unmovss.cxx,v $
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
2006-09-16 13:00:34 -05:00
|
|
|
* $Revision: 1.5 $
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
2006-09-16 13:00:34 -05:00
|
|
|
* last change: $Author: obo $ $Date: 2006-09-16 19:00:34 $
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
2005-09-08 22:56:40 -05:00
|
|
|
* The Contents of this file are made available subject to
|
|
|
|
* the terms of GNU Lesser General Public License Version 2.1.
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
|
|
|
*
|
2005-09-08 22:56:40 -05:00
|
|
|
* GNU Lesser General Public License Version 2.1
|
|
|
|
* =============================================
|
|
|
|
* Copyright 2005 by Sun Microsystems, Inc.
|
|
|
|
* 901 San Antonio Road, Palo Alto, CA 94303, USA
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
2005-09-08 22:56:40 -05:00
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License version 2.1, as published by the Free Software Foundation.
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
2005-09-08 22:56:40 -05:00
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
2005-09-08 22:56:40 -05:00
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
|
|
* MA 02111-1307 USA
|
2000-09-18 11:07:07 -05:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
2006-09-16 13:00:34 -05:00
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
|
|
#include "precompiled_sd.hxx"
|
|
|
|
|
2000-09-18 11:07:07 -05:00
|
|
|
|
|
|
|
#include "unmovss.hxx"
|
2004-01-20 04:25:30 -06:00
|
|
|
#include "DrawDocShell.hxx"
|
2000-09-18 11:07:07 -05:00
|
|
|
#include "drawdoc.hxx"
|
|
|
|
#include "stlsheet.hxx"
|
|
|
|
|
|
|
|
|
|
|
|
TYPEINIT1(SdMoveStyleSheetsUndoAction, SdUndoAction);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|*
|
|
|
|
|* Konstruktor
|
|
|
|
|*
|
|
|
|
\************************************************************************/
|
|
|
|
|
|
|
|
SdMoveStyleSheetsUndoAction::SdMoveStyleSheetsUndoAction(
|
|
|
|
SdDrawDocument* pTheDoc,
|
|
|
|
List* pTheStyles,
|
|
|
|
BOOL bInserted):
|
|
|
|
SdUndoAction(pTheDoc)
|
|
|
|
{
|
|
|
|
DBG_ASSERT(pTheStyles, "keine Liste gesetzt!");
|
|
|
|
pStyles = pTheStyles;
|
|
|
|
bMySheets = !bInserted;
|
|
|
|
|
|
|
|
pListOfChildLists = new List;
|
|
|
|
|
|
|
|
// Liste mit den Listen der StyleSheet-Kinder erstellen
|
|
|
|
for (SdStyleSheet* pSheet = (SdStyleSheet*)pStyles->First();
|
|
|
|
pSheet;
|
|
|
|
pSheet = (SdStyleSheet*)pStyles->Next())
|
|
|
|
{
|
|
|
|
List* pChildList = pSheet->CreateChildList();
|
|
|
|
pListOfChildLists->Insert(pChildList, LIST_APPEND);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|*
|
|
|
|
|* Undo()
|
|
|
|
|*
|
|
|
|
\************************************************************************/
|
|
|
|
|
2001-10-22 07:36:57 -05:00
|
|
|
void SdMoveStyleSheetsUndoAction::Undo()
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
SfxStyleSheetBasePool* pPool = pDoc->GetStyleSheetPool();
|
|
|
|
SdStyleSheet* pSheet = NULL;
|
|
|
|
|
|
|
|
/********************************************************************
|
|
|
|
|* die StyleSheets sollen wieder in den Pool eingefuegt werden
|
|
|
|
\*******************************************************************/
|
|
|
|
if (bMySheets)
|
|
|
|
{
|
|
|
|
/****************************************************************
|
|
|
|
|* erst alle StyleSheets wieder in den Pool einfuegen
|
|
|
|
\***************************************************************/
|
|
|
|
for (pSheet = (SdStyleSheet*)pStyles->First();
|
|
|
|
pSheet;
|
|
|
|
pSheet = (SdStyleSheet*)pStyles->Next())
|
|
|
|
{
|
|
|
|
pPool->Insert(pSheet);
|
|
|
|
}
|
|
|
|
|
|
|
|
/****************************************************************
|
|
|
|
|* jetzt die ehemaligen Kinder wieder zu Kindern machen
|
|
|
|
\***************************************************************/
|
|
|
|
List* pChildList = (List*)pListOfChildLists->First();
|
|
|
|
for (pSheet = (SdStyleSheet*)pStyles->First();
|
|
|
|
pSheet;
|
|
|
|
pSheet = (SdStyleSheet*)pStyles->Next())
|
|
|
|
{
|
|
|
|
String aParent(pSheet->GetName());
|
|
|
|
for (SfxStyleSheet* pChild = (SfxStyleSheet*)pChildList->First();
|
|
|
|
pChild;
|
|
|
|
pChild = (SfxStyleSheet*)pChildList->Next())
|
|
|
|
{
|
|
|
|
pChild->SetParent(aParent);
|
|
|
|
}
|
|
|
|
pChildList = (List*)pListOfChildLists->Next();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/********************************************************************
|
|
|
|
|* die StyleSheets sollen wieder aus dem, Pool entfernt werden
|
|
|
|
\*******************************************************************/
|
|
|
|
else
|
|
|
|
{
|
|
|
|
for (pSheet = (SdStyleSheet*)pStyles->First();
|
|
|
|
pSheet;
|
|
|
|
pSheet = (SdStyleSheet*)pStyles->Next())
|
|
|
|
{
|
|
|
|
pPool->Remove(pSheet);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
bMySheets = !bMySheets;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|*
|
|
|
|
|* Redo()
|
|
|
|
|*
|
|
|
|
\************************************************************************/
|
|
|
|
|
2001-10-22 07:36:57 -05:00
|
|
|
void SdMoveStyleSheetsUndoAction::Redo()
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
Undo();
|
|
|
|
}
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|*
|
|
|
|
|* Repeat()
|
|
|
|
|*
|
|
|
|
\************************************************************************/
|
|
|
|
|
2001-10-22 07:36:57 -05:00
|
|
|
void SdMoveStyleSheetsUndoAction::Repeat()
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
DBG_ASSERT(FALSE, "SdMoveStyleSheetsUndoAction::Repeat: nicht implementiert");
|
|
|
|
}
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|*
|
|
|
|
|* Destruktor, Liste loeschen; ggfs. die enthaltenen StyleSheets loeschen
|
|
|
|
|*
|
|
|
|
\************************************************************************/
|
|
|
|
|
2001-10-22 07:36:57 -05:00
|
|
|
SdMoveStyleSheetsUndoAction::~SdMoveStyleSheetsUndoAction()
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
if (bMySheets)
|
|
|
|
{
|
|
|
|
// die Liste rueckwaerts aufdroeseln; wenn Gliederungsvorlagen ent-
|
|
|
|
// halten sind gewaehrleistet dies den geringsten Broadcasting-Aufwand
|
|
|
|
SfxStyleSheet* pSheet = (SfxStyleSheet*)pStyles->Last();
|
|
|
|
while (pSheet)
|
|
|
|
{
|
|
|
|
delete pSheet;
|
|
|
|
pSheet = (SfxStyleSheet*)pStyles->Prev();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
delete pStyles;
|
|
|
|
|
|
|
|
for (List* pChildList = (List*)pListOfChildLists->First();
|
|
|
|
pChildList;
|
|
|
|
pChildList = (List*)pListOfChildLists->Next())
|
|
|
|
{
|
|
|
|
delete pChildList;
|
|
|
|
}
|
|
|
|
delete pListOfChildLists;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|*
|
|
|
|
|* Kommentar liefern
|
|
|
|
|*
|
|
|
|
\************************************************************************/
|
|
|
|
|
2001-10-22 07:36:57 -05:00
|
|
|
String SdMoveStyleSheetsUndoAction::GetComment() const
|
2000-09-18 11:07:07 -05:00
|
|
|
{
|
|
|
|
return String();
|
|
|
|
}
|
|
|
|
|
|
|
|
|