2000-09-18 16:07:07 +00:00
|
|
|
|
/*************************************************************************
|
|
|
|
|
*
|
2008-04-10 11:42:40 +00:00
|
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
2010-02-12 15:01:35 +01:00
|
|
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
2008-04-10 11:42:40 +00:00
|
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
2008-04-10 11:42:40 +00:00
|
|
|
|
* This file is part of OpenOffice.org.
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
2008-04-10 11:42:40 +00:00
|
|
|
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
|
|
|
|
* it under the terms of the GNU Lesser General Public License version 3
|
|
|
|
|
* only, as published by the Free Software Foundation.
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
2008-04-10 11:42:40 +00:00
|
|
|
|
* OpenOffice.org 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 version 3 for more details
|
|
|
|
|
* (a copy is included in the LICENSE file that accompanied this code).
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
2008-04-10 11:42:40 +00:00
|
|
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
|
|
|
* version 3 along with OpenOffice.org. If not, see
|
|
|
|
|
* <http://www.openoffice.org/license.html>
|
|
|
|
|
* for a copy of the LGPLv3 License.
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
|
|
|
|
************************************************************************/
|
|
|
|
|
|
2006-09-17 06:52:24 +00:00
|
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
|
|
|
#include "precompiled_starmath.hxx"
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2003-04-24 16:29:42 +00:00
|
|
|
|
#include <com/sun/star/accessibility/AccessibleEventId.hpp>
|
2009-05-19 09:31:27 +00:00
|
|
|
|
#include <com/sun/star/lang/Locale.hpp>
|
|
|
|
|
#include <com/sun/star/uno/Any.h>
|
|
|
|
|
|
|
|
|
|
#include <comphelper/accessibletexthelper.hxx>
|
|
|
|
|
#include <comphelper/processfactory.hxx>
|
|
|
|
|
#include <comphelper/storagehelper.hxx>
|
2004-11-26 13:23:53 +00:00
|
|
|
|
#include <rtl/logfile.hxx>
|
2002-05-31 13:23:22 +00:00
|
|
|
|
#include <rtl/ustring.hxx>
|
2009-05-19 09:31:27 +00:00
|
|
|
|
#include <sfx2/app.hxx>
|
|
|
|
|
#include <sfx2/dispatch.hxx>
|
|
|
|
|
#include <sfx2/docfile.hxx>
|
|
|
|
|
#include <sfx2/docfilt.hxx>
|
|
|
|
|
#include <sfx2/fcontnr.hxx>
|
|
|
|
|
#include <sfx2/msg.hxx>
|
|
|
|
|
#include <sfx2/objface.hxx>
|
|
|
|
|
#include <sfx2/printer.hxx>
|
|
|
|
|
#include <sfx2/request.hxx>
|
|
|
|
|
#include <sfx2/viewfrm.hxx>
|
2004-10-04 17:03:04 +00:00
|
|
|
|
#include <sot/clsids.hxx>
|
2000-09-18 16:07:07 +00:00
|
|
|
|
#include <sot/exchange.hxx>
|
2009-05-19 09:31:27 +00:00
|
|
|
|
#include <sot/formats.hxx>
|
|
|
|
|
#include <sot/storage.hxx>
|
2009-10-16 00:05:16 +02:00
|
|
|
|
#include <svl/eitem.hxx>
|
|
|
|
|
#include <svl/fstathelper.hxx>
|
|
|
|
|
#include <svl/intitem.hxx>
|
|
|
|
|
#include <svl/itempool.hxx>
|
2009-10-06 07:38:24 +02:00
|
|
|
|
#include <unotools/lingucfg.hxx>
|
|
|
|
|
#include <unotools/linguprops.hxx>
|
|
|
|
|
#include <unotools/pathoptions.hxx>
|
2009-10-16 00:05:16 +02:00
|
|
|
|
#include <svl/ptitem.hxx>
|
2009-05-19 09:31:27 +00:00
|
|
|
|
#include <svtools/sfxecode.hxx>
|
2009-10-16 00:05:16 +02:00
|
|
|
|
#include <svl/slstitm.hxx>
|
|
|
|
|
#include <svl/smplhint.hxx>
|
|
|
|
|
#include <svl/stritem.hxx>
|
2009-05-19 09:31:27 +00:00
|
|
|
|
#include <svtools/transfer.hxx>
|
2009-10-16 00:05:16 +02:00
|
|
|
|
#include <svl/undo.hxx>
|
|
|
|
|
#include <svl/urihelper.hxx>
|
|
|
|
|
#include <svl/whiter.hxx>
|
2010-01-08 18:32:51 +01:00
|
|
|
|
#include <editeng/editeng.hxx>
|
|
|
|
|
#include <editeng/editstat.hxx>
|
|
|
|
|
#include <editeng/eeitem.hxx>
|
|
|
|
|
#include <editeng/fhgtitem.hxx>
|
|
|
|
|
#include <editeng/fontitem.hxx>
|
|
|
|
|
#include <editeng/unolingu.hxx>
|
2009-05-19 09:31:27 +00:00
|
|
|
|
#include <ucbhelper/content.hxx>
|
|
|
|
|
#include <vcl/mapmod.hxx>
|
|
|
|
|
#include <vcl/mapunit.hxx>
|
|
|
|
|
#include <vcl/msgbox.hxx>
|
2010-01-08 18:32:51 +01:00
|
|
|
|
#include <sfx2/sfx.hrc>
|
2000-09-18 16:07:07 +00:00
|
|
|
|
#include <document.hxx>
|
2009-05-19 09:31:27 +00:00
|
|
|
|
#include <action.hxx>
|
2000-09-18 16:07:07 +00:00
|
|
|
|
#include <config.hxx>
|
2009-05-19 09:31:27 +00:00
|
|
|
|
#include <dialog.hxx>
|
|
|
|
|
#include <format.hxx>
|
|
|
|
|
#include <smdll.hxx>
|
|
|
|
|
#include <starmath.hrc>
|
2000-09-18 16:07:07 +00:00
|
|
|
|
#include <symbol.hxx>
|
|
|
|
|
#include <toolbox.hxx>
|
2009-05-19 09:31:27 +00:00
|
|
|
|
#include <unomodel.hxx>
|
2001-03-23 07:00:39 +00:00
|
|
|
|
#include <utility.hxx>
|
2009-05-19 09:31:27 +00:00
|
|
|
|
#include <view.hxx>
|
|
|
|
|
#include "mathtype.hxx"
|
|
|
|
|
#include "mathmlimport.hxx"
|
|
|
|
|
#include "mathmlexport.hxx"
|
2010-01-08 18:32:51 +01:00
|
|
|
|
#include <sfx2/sfxsids.hrc>
|
|
|
|
|
#include <svx/svxids.hrc>
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
using namespace ::com::sun::star;
|
2009-05-19 09:31:27 +00:00
|
|
|
|
using namespace ::com::sun::star::accessibility;
|
2001-11-21 10:59:49 +00:00
|
|
|
|
using namespace ::com::sun::star::lang;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
using namespace ::com::sun::star::ucb;
|
|
|
|
|
using namespace ::com::sun::star::uno;
|
|
|
|
|
|
2001-11-21 10:59:49 +00:00
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
#define DOCUMENT_BUFFER_SIZE (USHORT)32768
|
|
|
|
|
|
|
|
|
|
static const char __FAR_DATA pStarMathDoc[] = "StarMathDocument";
|
|
|
|
|
|
|
|
|
|
#define SmDocShell
|
|
|
|
|
#include "smslots.hxx"
|
|
|
|
|
|
2009-04-27 05:45:59 +00:00
|
|
|
|
////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
TYPEINIT1( SmDocShell, SfxObjectShell );
|
|
|
|
|
|
|
|
|
|
SFX_IMPL_INTERFACE(SmDocShell, SfxObjectShell, SmResId(0))
|
|
|
|
|
{
|
|
|
|
|
SFX_POPUPMENU_REGISTRATION(SmResId(RID_VIEWMENU));
|
|
|
|
|
SFX_POPUPMENU_REGISTRATION(SmResId(RID_COMMANDMENU));
|
|
|
|
|
}
|
|
|
|
|
|
2004-10-04 17:03:04 +00:00
|
|
|
|
SFX_IMPL_OBJECTFACTORY(SmDocShell, SvGlobalName(SO3_SM_CLASSID), SFXOBJECTSHELL_STD_NORMAL, "smath" )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
void SmDocShell::SFX_NOTIFY(SfxBroadcaster&, const TypeId&,
|
|
|
|
|
const SfxHint& rHint, const TypeId&)
|
|
|
|
|
{
|
|
|
|
|
switch (((SfxSimpleHint&)rHint).GetId())
|
|
|
|
|
{
|
|
|
|
|
case HINT_FORMATCHANGED:
|
|
|
|
|
SetFormulaArranged(FALSE);
|
2010-07-28 09:46:36 +02:00
|
|
|
|
|
|
|
|
|
nModifyCount++; //! see comment for SID_GAPHIC_SM in SmDocShell::GetState
|
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
Repaint();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SmDocShell::LoadSymbols()
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::LoadSymbols" );
|
|
|
|
|
|
2009-09-28 10:46:54 +00:00
|
|
|
|
SmModule *pp = SM_MOD();
|
|
|
|
|
pp->GetSymbolManager().Load();
|
2001-04-19 13:47:39 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2008-02-26 13:43:56 +00:00
|
|
|
|
const String SmDocShell::GetComment() const
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::GetComment" );
|
2008-02-26 13:43:56 +00:00
|
|
|
|
uno::Reference<document::XDocumentPropertiesSupplier> xDPS(
|
|
|
|
|
const_cast<SmDocShell*>(this)->GetModel(), uno::UNO_QUERY_THROW);
|
|
|
|
|
uno::Reference<document::XDocumentProperties> xDocProps(
|
|
|
|
|
xDPS->getDocumentProperties());
|
|
|
|
|
return xDocProps->getDescription();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SmDocShell::SetText(const String& rBuffer)
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::SetText" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
if (rBuffer != aText)
|
|
|
|
|
{
|
2002-01-30 10:47:52 +00:00
|
|
|
|
BOOL bIsEnabled = IsEnableSetModified();
|
|
|
|
|
if( bIsEnabled )
|
|
|
|
|
EnableSetModified( FALSE );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
aText = rBuffer;
|
2005-04-04 07:04:42 +00:00
|
|
|
|
SetFormulaArranged( FALSE );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
Parse();
|
2005-04-04 07:04:42 +00:00
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
SmViewShell *pViewSh = SmGetActiveView();
|
2002-01-30 10:47:52 +00:00
|
|
|
|
if( pViewSh )
|
2002-11-20 07:54:41 +00:00
|
|
|
|
{
|
2000-09-18 16:07:07 +00:00
|
|
|
|
pViewSh->GetViewFrame()->GetBindings().Invalidate(SID_TEXT);
|
2004-10-04 17:03:04 +00:00
|
|
|
|
if ( SFX_CREATE_MODE_EMBEDDED == GetCreateMode() )
|
2004-11-15 15:42:35 +00:00
|
|
|
|
Repaint();
|
2002-11-20 07:54:41 +00:00
|
|
|
|
else
|
|
|
|
|
pViewSh->GetGraphicWindow().Invalidate();
|
|
|
|
|
}
|
2002-01-30 10:47:52 +00:00
|
|
|
|
|
|
|
|
|
if ( bIsEnabled )
|
|
|
|
|
EnableSetModified( bIsEnabled );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
SetModified(TRUE);
|
2002-05-31 13:23:22 +00:00
|
|
|
|
|
|
|
|
|
// launch accessible event if necessary
|
2007-05-25 11:12:32 +00:00
|
|
|
|
SmGraphicAccessible *pAcc = pViewSh ? pViewSh->GetGraphicWindow().GetAccessible_Impl() : 0;
|
2002-05-31 13:23:22 +00:00
|
|
|
|
if (pAcc)
|
|
|
|
|
{
|
2003-05-22 12:50:09 +00:00
|
|
|
|
Any aOldValue, aNewValue;
|
|
|
|
|
if ( comphelper::OCommonAccessibleText::implInitTextChangedEvent( aText, rBuffer, aOldValue, aNewValue ) )
|
|
|
|
|
{
|
|
|
|
|
pAcc->LaunchEvent( AccessibleEventId::TEXT_CHANGED,
|
|
|
|
|
aOldValue, aNewValue );
|
|
|
|
|
}
|
2002-05-31 13:23:22 +00:00
|
|
|
|
}
|
2005-01-31 07:29:25 +00:00
|
|
|
|
|
|
|
|
|
if ( GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
|
|
|
|
|
OnDocumentPrinterChanged(0);
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SmDocShell::SetFormat(SmFormat& rFormat)
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::SetFormat" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
aFormat = rFormat;
|
2010-07-28 09:46:36 +02:00
|
|
|
|
SetFormulaArranged( FALSE );
|
|
|
|
|
SetModified( TRUE );
|
|
|
|
|
|
|
|
|
|
nModifyCount++; //! see comment for SID_GAPHIC_SM in SmDocShell::GetState
|
|
|
|
|
|
|
|
|
|
// don't use SmGetActiveView since the view shell might not be active (0 pointer)
|
|
|
|
|
// if for example the Basic Macro dialog currently has the focus. Thus:
|
|
|
|
|
SfxViewFrame* pFrm = SfxViewFrame::GetFirst( this );
|
|
|
|
|
while (pFrm)
|
|
|
|
|
{
|
|
|
|
|
pFrm->GetBindings().Invalidate(SID_GAPHIC_SM);
|
|
|
|
|
pFrm = SfxViewFrame::GetNext( *pFrm, this );
|
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
2002-05-24 06:48:49 +00:00
|
|
|
|
String SmDocShell::GetAccessibleText()
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::GetAccessibleText" );
|
|
|
|
|
|
2002-05-31 13:23:22 +00:00
|
|
|
|
if (!IsFormulaArranged())
|
|
|
|
|
ArrangeFormula();
|
|
|
|
|
if (0 == aAccText.Len())
|
|
|
|
|
{
|
|
|
|
|
DBG_ASSERT( pTree, "Tree missing" );
|
|
|
|
|
if (pTree)
|
|
|
|
|
pTree->GetAccessibleText( aAccText );
|
|
|
|
|
}
|
|
|
|
|
return aAccText;
|
2002-05-24 06:48:49 +00:00
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
void SmDocShell::Parse()
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::Parse" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
if (pTree)
|
|
|
|
|
delete pTree;
|
2007-06-27 11:39:58 +00:00
|
|
|
|
ReplaceBadChars();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
pTree = aInterpreter.Parse(aText);
|
2010-07-28 09:46:36 +02:00
|
|
|
|
nModifyCount++; //! see comment for SID_GAPHIC_SM in SmDocShell::GetState
|
2002-03-21 09:13:38 +00:00
|
|
|
|
SetFormulaArranged( FALSE );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SmDocShell::ArrangeFormula()
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::ArrangeFormula" );
|
|
|
|
|
|
2005-04-04 07:04:42 +00:00
|
|
|
|
if (IsFormulaArranged())
|
|
|
|
|
return;
|
|
|
|
|
|
2009-05-19 09:31:27 +00:00
|
|
|
|
//! Nur f<>r die Dauer der Existenz dieses Objekts sind am Drucker die
|
2000-09-18 16:07:07 +00:00
|
|
|
|
//! richtigen Einstellungen garantiert.
|
|
|
|
|
SmPrinterAccess aPrtAcc(*this);
|
2003-04-01 08:45:05 +00:00
|
|
|
|
OutputDevice* pOutDev = aPrtAcc.GetRefDev();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
if (!pOutDev)
|
2007-05-25 11:12:32 +00:00
|
|
|
|
{
|
|
|
|
|
#if OSL_DEBUG_LEVEL > 1
|
2005-04-04 07:04:42 +00:00
|
|
|
|
DBG_ERROR("!! SmDocShell::ArrangeFormula: reference device missing !!");
|
2007-05-25 11:12:32 +00:00
|
|
|
|
#endif
|
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2009-05-19 09:31:27 +00:00
|
|
|
|
// falls n<>tig ein anderes OutputDevice holen f<>r das formatiert wird
|
2000-09-18 16:07:07 +00:00
|
|
|
|
if (!pOutDev)
|
|
|
|
|
{
|
|
|
|
|
SmViewShell *pView = SmGetActiveView();
|
|
|
|
|
if (pView)
|
|
|
|
|
pOutDev = &pView->GetGraphicWindow();
|
|
|
|
|
else
|
2005-04-04 07:04:42 +00:00
|
|
|
|
{
|
2009-09-28 10:46:54 +00:00
|
|
|
|
pOutDev = &SM_MOD()->GetDefaultVirtualDev();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
pOutDev->SetMapMode( MapMode(MAP_100TH_MM) );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
DBG_ASSERT(pOutDev->GetMapMode().GetMapUnit() == MAP_100TH_MM,
|
|
|
|
|
"Sm : falscher MapMode");
|
|
|
|
|
|
|
|
|
|
const SmFormat &rFormat = GetFormat();
|
2001-04-19 13:47:39 +00:00
|
|
|
|
pTree->Prepare(rFormat, *this);
|
2003-09-04 10:42:11 +00:00
|
|
|
|
|
|
|
|
|
// format/draw formulas always from left to right,
|
|
|
|
|
// and numbers should not be converted
|
|
|
|
|
ULONG nLayoutMode = pOutDev->GetLayoutMode();
|
2006-07-14 07:22:19 +00:00
|
|
|
|
pOutDev->SetLayoutMode( TEXT_LAYOUT_BIDI_LTR );
|
2003-09-04 10:42:11 +00:00
|
|
|
|
INT16 nDigitLang = pOutDev->GetDigitLanguage();
|
|
|
|
|
pOutDev->SetDigitLanguage( LANGUAGE_ENGLISH );
|
|
|
|
|
//
|
2000-09-18 16:07:07 +00:00
|
|
|
|
pTree->Arrange(*pOutDev, rFormat);
|
2003-09-04 10:42:11 +00:00
|
|
|
|
//
|
|
|
|
|
pOutDev->SetLayoutMode( nLayoutMode );
|
|
|
|
|
pOutDev->SetDigitLanguage( nDigitLang );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
SetFormulaArranged(TRUE);
|
2002-05-31 13:23:22 +00:00
|
|
|
|
|
|
|
|
|
// invalidate accessible text
|
|
|
|
|
aAccText = String();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2005-05-03 12:51:39 +00:00
|
|
|
|
void SetEditEngineDefaultFonts(
|
2007-05-25 11:12:32 +00:00
|
|
|
|
EditEngine &/*rEditEngine*/,
|
2005-05-03 12:51:39 +00:00
|
|
|
|
SfxItemPool &rEditEngineItemPool )
|
2001-03-08 08:24:49 +00:00
|
|
|
|
{
|
2001-11-21 10:59:49 +00:00
|
|
|
|
//
|
|
|
|
|
// set fonts to be used
|
|
|
|
|
//
|
|
|
|
|
SvtLinguOptions aOpt;
|
|
|
|
|
SvtLinguConfig().GetOptions( aOpt );
|
|
|
|
|
//
|
|
|
|
|
struct FontDta {
|
|
|
|
|
INT16 nFallbackLang;
|
|
|
|
|
INT16 nLang;
|
|
|
|
|
USHORT nFontType;
|
|
|
|
|
USHORT nFontInfoId;
|
|
|
|
|
} aTable[3] =
|
|
|
|
|
{
|
|
|
|
|
// info to get western font to be used
|
|
|
|
|
{ LANGUAGE_ENGLISH_US, LANGUAGE_NONE,
|
2005-04-04 11:37:10 +00:00
|
|
|
|
DEFAULTFONT_FIXED, EE_CHAR_FONTINFO },
|
2001-11-21 10:59:49 +00:00
|
|
|
|
// info to get CJK font to be used
|
|
|
|
|
{ LANGUAGE_JAPANESE, LANGUAGE_NONE,
|
|
|
|
|
DEFAULTFONT_CJK_TEXT, EE_CHAR_FONTINFO_CJK },
|
|
|
|
|
// info to get CTL font to be used
|
2009-01-06 12:54:16 +00:00
|
|
|
|
{ LANGUAGE_ARABIC_SAUDI_ARABIA, LANGUAGE_NONE,
|
2001-11-21 10:59:49 +00:00
|
|
|
|
DEFAULTFONT_CTL_TEXT, EE_CHAR_FONTINFO_CTL }
|
|
|
|
|
};
|
|
|
|
|
aTable[0].nLang = aOpt.nDefaultLanguage;
|
|
|
|
|
aTable[1].nLang = aOpt.nDefaultLanguage_CJK;
|
|
|
|
|
aTable[2].nLang = aOpt.nDefaultLanguage_CTL;
|
|
|
|
|
//
|
|
|
|
|
for (int i = 0; i < 3; ++i)
|
|
|
|
|
{
|
|
|
|
|
const FontDta &rFntDta = aTable[i];
|
|
|
|
|
LanguageType nLang = (LANGUAGE_NONE == rFntDta.nLang) ?
|
|
|
|
|
rFntDta.nFallbackLang : rFntDta.nLang;
|
|
|
|
|
Font aFont = Application::GetDefaultDevice()->GetDefaultFont(
|
|
|
|
|
rFntDta.nFontType, nLang, DEFAULTFONT_FLAGS_ONLYONE );
|
2005-05-03 12:51:39 +00:00
|
|
|
|
#ifdef DEBUG_TL
|
|
|
|
|
ByteString aFntName( aFont.GetName(), 1 );
|
|
|
|
|
int eFntFamily = aFont.GetFamily();
|
|
|
|
|
ByteString aFntStyleName( aFont.GetStyleName(), 1 );
|
|
|
|
|
int ePitch = aFont.GetPitch();
|
|
|
|
|
int eCharSet = aFont.GetCharSet();
|
|
|
|
|
fprintf(stderr, "\nFontName %s \n", aFntName.GetBuffer() );
|
|
|
|
|
fprintf(stderr, "StyleName %s \n", aFntStyleName.GetBuffer() );
|
|
|
|
|
fprintf(stderr, "eFntFamily %d \n", eFntFamily );
|
|
|
|
|
fprintf(stderr, "ePitch %d \n", ePitch );
|
|
|
|
|
fprintf(stderr, "eCharSet %d \n", eCharSet );
|
|
|
|
|
#endif
|
|
|
|
|
rEditEngineItemPool.SetPoolDefaultItem(
|
2001-11-21 10:59:49 +00:00
|
|
|
|
SvxFontItem( aFont.GetFamily(), aFont.GetName(),
|
|
|
|
|
aFont.GetStyleName(), aFont.GetPitch(), aFont.GetCharSet(),
|
|
|
|
|
rFntDta.nFontInfoId ) );
|
|
|
|
|
}
|
2001-03-23 07:00:39 +00:00
|
|
|
|
|
2001-11-21 10:59:49 +00:00
|
|
|
|
// set font heights
|
2001-03-23 07:00:39 +00:00
|
|
|
|
SvxFontHeightItem aFontHeigt(
|
|
|
|
|
Application::GetDefaultDevice()->LogicToPixel(
|
2005-04-04 11:37:10 +00:00
|
|
|
|
Size( 0, 11 ), MapMode( MAP_POINT ) ).Height(), 100,
|
2001-03-23 07:00:39 +00:00
|
|
|
|
EE_CHAR_FONTHEIGHT );
|
2005-05-03 12:51:39 +00:00
|
|
|
|
rEditEngineItemPool.SetPoolDefaultItem( aFontHeigt );
|
2001-03-23 07:00:39 +00:00
|
|
|
|
aFontHeigt.SetWhich( EE_CHAR_FONTHEIGHT_CJK );
|
2005-05-03 12:51:39 +00:00
|
|
|
|
rEditEngineItemPool.SetPoolDefaultItem( aFontHeigt );
|
2001-03-23 07:00:39 +00:00
|
|
|
|
aFontHeigt.SetWhich( EE_CHAR_FONTHEIGHT_CTL );
|
2005-05-03 12:51:39 +00:00
|
|
|
|
rEditEngineItemPool.SetPoolDefaultItem( aFontHeigt );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EditEngine& SmDocShell::GetEditEngine()
|
|
|
|
|
{
|
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::GetEditEngine" );
|
|
|
|
|
|
|
|
|
|
if (!pEditEngine)
|
|
|
|
|
{
|
|
|
|
|
//!
|
|
|
|
|
//! see also SmEditWindow::DataChanged !
|
|
|
|
|
//!
|
|
|
|
|
|
|
|
|
|
pEditEngineItemPool = EditEngine::CreatePool();
|
|
|
|
|
|
|
|
|
|
SetEditEngineDefaultFonts( *pEditEngine, *pEditEngineItemPool );
|
2001-03-08 08:24:49 +00:00
|
|
|
|
|
|
|
|
|
pEditEngine = new EditEngine( pEditEngineItemPool );
|
|
|
|
|
|
|
|
|
|
pEditEngine->EnableUndo( TRUE );
|
|
|
|
|
pEditEngine->SetDefTab( USHORT(
|
|
|
|
|
Application::GetDefaultDevice()->GetTextWidth( C2S("XXXX") ) ) );
|
|
|
|
|
|
|
|
|
|
pEditEngine->SetControlWord(
|
|
|
|
|
(pEditEngine->GetControlWord() | EE_CNTRL_AUTOINDENTING) &
|
|
|
|
|
(~EE_CNTRL_UNDOATTRIBS) &
|
|
|
|
|
(~EE_CNTRL_PASTESPECIAL) );
|
|
|
|
|
|
|
|
|
|
pEditEngine->SetWordDelimiters( C2S(" .=+-*/(){}[];\"" ) );
|
|
|
|
|
pEditEngine->SetRefMapMode( MAP_PIXEL );
|
|
|
|
|
|
|
|
|
|
pEditEngine->SetPaperSize( Size( 800, 0 ) );
|
|
|
|
|
|
|
|
|
|
pEditEngine->EraseVirtualDevice();
|
2001-07-23 10:59:10 +00:00
|
|
|
|
|
|
|
|
|
// set initial text if the document already has some...
|
|
|
|
|
// (may be the case when reloading a doc)
|
|
|
|
|
String aTxt( GetText() );
|
|
|
|
|
if (aTxt.Len())
|
|
|
|
|
pEditEngine->SetText( aTxt );
|
|
|
|
|
|
2001-03-08 08:24:49 +00:00
|
|
|
|
pEditEngine->ClearModifyFlag();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
return *pEditEngine;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SfxItemPool& SmDocShell::GetEditEngineItemPool()
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::GetEditEngineItemPool" );
|
|
|
|
|
|
2001-03-08 08:24:49 +00:00
|
|
|
|
if (!pEditEngineItemPool)
|
|
|
|
|
GetEditEngine();
|
|
|
|
|
DBG_ASSERT( pEditEngineItemPool, "EditEngineItemPool missing" );
|
|
|
|
|
return *pEditEngineItemPool;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
void SmDocShell::Draw(OutputDevice &rDev, Point &rPosition)
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::Draw" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
if (!pTree)
|
|
|
|
|
Parse();
|
|
|
|
|
DBG_ASSERT(pTree, "Sm : NULL pointer");
|
|
|
|
|
|
|
|
|
|
if (!IsFormulaArranged())
|
|
|
|
|
ArrangeFormula();
|
|
|
|
|
|
|
|
|
|
//Problem: Was passiert mit dem WYSIWYG? Wir haben waehrend wir inplace aktiv
|
|
|
|
|
//sind kein Referenzdevice und sind auch nicht darauf ausgerichtet. Es kann
|
|
|
|
|
//also jetzt eine Differenz zwischen der VisArea (spricht die Groesse im Client)
|
|
|
|
|
//und der jetzt vorliegenden Groese geben.
|
|
|
|
|
//Idee: Die Differenz koennte, zumindest behelfsmaessig, mit SmNod::SetSize
|
|
|
|
|
//angepasst werden.
|
|
|
|
|
|
|
|
|
|
rPosition.X() += aFormat.GetDistance( DIS_LEFTSPACE );
|
|
|
|
|
rPosition.Y() += aFormat.GetDistance( DIS_TOPSPACE );
|
2002-07-12 06:26:02 +00:00
|
|
|
|
|
|
|
|
|
//! in case of high contrast-mode (accessibility option!)
|
|
|
|
|
//! the draw mode needs to be set to default, because when imbedding
|
|
|
|
|
//! Math for example in Calc in "a over b" the fraction bar may not
|
|
|
|
|
//! be visible else. More generally: the FillColor may have been changed.
|
|
|
|
|
ULONG nOldDrawMode = DRAWMODE_DEFAULT;
|
|
|
|
|
BOOL bRestoreDrawMode = FALSE;
|
|
|
|
|
if (OUTDEV_WINDOW == rDev.GetOutDevType() &&
|
2009-11-03 18:12:19 +01:00
|
|
|
|
((Window &) rDev).GetSettings().GetStyleSettings().GetHighContrastMode())
|
2002-07-12 06:26:02 +00:00
|
|
|
|
{
|
|
|
|
|
nOldDrawMode = rDev.GetDrawMode();
|
|
|
|
|
rDev.SetDrawMode( DRAWMODE_DEFAULT );
|
|
|
|
|
bRestoreDrawMode = TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
2003-09-04 10:42:11 +00:00
|
|
|
|
// format/draw formulas always from left to right
|
|
|
|
|
// and numbers should not be converted
|
|
|
|
|
ULONG nLayoutMode = rDev.GetLayoutMode();
|
2006-07-14 07:22:19 +00:00
|
|
|
|
rDev.SetLayoutMode( TEXT_LAYOUT_BIDI_LTR );
|
2003-09-04 10:42:11 +00:00
|
|
|
|
INT16 nDigitLang = rDev.GetDigitLanguage();
|
|
|
|
|
rDev.SetDigitLanguage( LANGUAGE_ENGLISH );
|
|
|
|
|
//
|
2000-09-18 16:07:07 +00:00
|
|
|
|
pTree->Draw(rDev, rPosition);
|
2003-09-04 10:42:11 +00:00
|
|
|
|
//
|
|
|
|
|
rDev.SetLayoutMode( nLayoutMode );
|
|
|
|
|
rDev.SetDigitLanguage( nDigitLang );
|
2002-07-12 06:26:02 +00:00
|
|
|
|
|
|
|
|
|
if (bRestoreDrawMode)
|
|
|
|
|
rDev.SetDrawMode( nOldDrawMode );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Size SmDocShell::GetSize()
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::GetSize" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
Size aRet;
|
|
|
|
|
|
|
|
|
|
if (!pTree)
|
|
|
|
|
Parse();
|
|
|
|
|
|
|
|
|
|
if (pTree)
|
|
|
|
|
{
|
|
|
|
|
if (!IsFormulaArranged())
|
|
|
|
|
ArrangeFormula();
|
|
|
|
|
aRet = pTree->GetSize();
|
|
|
|
|
|
|
|
|
|
if ( !aRet.Width() )
|
|
|
|
|
aRet.Width() = 2000;
|
|
|
|
|
else
|
|
|
|
|
aRet.Width() += aFormat.GetDistance( DIS_LEFTSPACE ) +
|
|
|
|
|
aFormat.GetDistance( DIS_RIGHTSPACE );
|
|
|
|
|
if ( !aRet.Height() )
|
|
|
|
|
aRet.Height() = 1000;
|
|
|
|
|
else
|
|
|
|
|
aRet.Height() += aFormat.GetDistance( DIS_TOPSPACE ) +
|
|
|
|
|
aFormat.GetDistance( DIS_BOTTOMSPACE );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return aRet;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
SmPrinterAccess::SmPrinterAccess( SmDocShell &rDocShell )
|
|
|
|
|
{
|
|
|
|
|
if ( 0 != (pPrinter = rDocShell.GetPrt()) )
|
|
|
|
|
{
|
|
|
|
|
pPrinter->Push( PUSH_MAPMODE );
|
2004-10-04 17:03:04 +00:00
|
|
|
|
if ( SFX_CREATE_MODE_EMBEDDED == rDocShell.GetCreateMode() )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
|
|
|
|
// if it is an embedded object (without it's own printer)
|
|
|
|
|
// we change the MapMode temporarily.
|
|
|
|
|
//!If it is a document with it's own printer the MapMode should
|
|
|
|
|
//!be set correct (once) elsewhere(!), in order to avoid numerous
|
|
|
|
|
//!superfluous pushing and poping of the MapMode when using
|
|
|
|
|
//!this class.
|
|
|
|
|
|
|
|
|
|
const MapUnit eOld = pPrinter->GetMapMode().GetMapUnit();
|
|
|
|
|
if ( MAP_100TH_MM != eOld )
|
|
|
|
|
{
|
|
|
|
|
MapMode aMap( pPrinter->GetMapMode() );
|
|
|
|
|
aMap.SetMapUnit( MAP_100TH_MM );
|
|
|
|
|
Point aTmp( aMap.GetOrigin() );
|
|
|
|
|
aTmp.X() = OutputDevice::LogicToLogic( aTmp.X(), eOld, MAP_100TH_MM );
|
|
|
|
|
aTmp.Y() = OutputDevice::LogicToLogic( aTmp.Y(), eOld, MAP_100TH_MM );
|
|
|
|
|
aMap.SetOrigin( aTmp );
|
|
|
|
|
pPrinter->SetMapMode( aMap );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2003-04-01 08:45:05 +00:00
|
|
|
|
if ( 0 != (pRefDev = rDocShell.GetRefDev()) && pPrinter != pRefDev )
|
|
|
|
|
{
|
|
|
|
|
pRefDev->Push( PUSH_MAPMODE );
|
2004-10-04 17:03:04 +00:00
|
|
|
|
if ( SFX_CREATE_MODE_EMBEDDED == rDocShell.GetCreateMode() )
|
2003-04-01 08:45:05 +00:00
|
|
|
|
{
|
|
|
|
|
// if it is an embedded object (without it's own printer)
|
|
|
|
|
// we change the MapMode temporarily.
|
|
|
|
|
//!If it is a document with it's own printer the MapMode should
|
|
|
|
|
//!be set correct (once) elsewhere(!), in order to avoid numerous
|
|
|
|
|
//!superfluous pushing and poping of the MapMode when using
|
|
|
|
|
//!this class.
|
|
|
|
|
|
|
|
|
|
const MapUnit eOld = pRefDev->GetMapMode().GetMapUnit();
|
|
|
|
|
if ( MAP_100TH_MM != eOld )
|
|
|
|
|
{
|
|
|
|
|
MapMode aMap( pRefDev->GetMapMode() );
|
|
|
|
|
aMap.SetMapUnit( MAP_100TH_MM );
|
|
|
|
|
Point aTmp( aMap.GetOrigin() );
|
|
|
|
|
aTmp.X() = OutputDevice::LogicToLogic( aTmp.X(), eOld, MAP_100TH_MM );
|
|
|
|
|
aTmp.Y() = OutputDevice::LogicToLogic( aTmp.Y(), eOld, MAP_100TH_MM );
|
|
|
|
|
aMap.SetOrigin( aTmp );
|
|
|
|
|
pRefDev->SetMapMode( aMap );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SmPrinterAccess::~SmPrinterAccess()
|
|
|
|
|
{
|
|
|
|
|
if ( pPrinter )
|
|
|
|
|
pPrinter->Pop();
|
2003-04-01 08:45:05 +00:00
|
|
|
|
if ( pRefDev && pRefDev != pPrinter )
|
|
|
|
|
pRefDev->Pop();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////
|
|
|
|
|
|
2003-04-01 08:45:05 +00:00
|
|
|
|
Printer* SmDocShell::GetPrt()
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::GetPrt" );
|
|
|
|
|
|
2004-10-04 17:03:04 +00:00
|
|
|
|
if ( SFX_CREATE_MODE_EMBEDDED == GetCreateMode() )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
|
|
|
|
//Normalerweise wird der Printer vom Server besorgt. Wenn dieser aber
|
|
|
|
|
//keinen liefert (weil etwa noch keine connection da ist), kann es
|
|
|
|
|
//dennoch sein, dass wir den Printer kennen, denn dieser wird in
|
|
|
|
|
//OnDocumentPrinterChanged vom Server durchgereicht und dann temporaer
|
|
|
|
|
//festgehalten.
|
|
|
|
|
Printer *pPrt = GetDocumentPrinter();
|
2003-04-01 08:45:05 +00:00
|
|
|
|
if ( !pPrt && pTmpPrinter )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
pPrt = pTmpPrinter;
|
|
|
|
|
return pPrt;
|
|
|
|
|
}
|
|
|
|
|
else if ( !pPrinter )
|
|
|
|
|
{
|
|
|
|
|
SfxItemSet *pOptions =
|
|
|
|
|
new SfxItemSet(GetPool(),
|
|
|
|
|
SID_PRINTSIZE, SID_PRINTSIZE,
|
|
|
|
|
SID_PRINTZOOM, SID_PRINTZOOM,
|
|
|
|
|
SID_PRINTTITLE, SID_PRINTTITLE,
|
|
|
|
|
SID_PRINTTEXT, SID_PRINTTEXT,
|
|
|
|
|
SID_PRINTFRAME, SID_PRINTFRAME,
|
|
|
|
|
SID_NO_RIGHT_SPACES, SID_NO_RIGHT_SPACES,
|
|
|
|
|
0);
|
|
|
|
|
|
2009-09-28 10:46:54 +00:00
|
|
|
|
SmModule *pp = SM_MOD();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
pp->GetConfig()->ConfigToItemSet(*pOptions);
|
|
|
|
|
pPrinter = new SfxPrinter(pOptions);
|
|
|
|
|
pPrinter->SetMapMode( MapMode(MAP_100TH_MM) );
|
|
|
|
|
}
|
|
|
|
|
return pPrinter;
|
|
|
|
|
}
|
|
|
|
|
|
2003-04-01 08:45:05 +00:00
|
|
|
|
OutputDevice* SmDocShell::GetRefDev()
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::GetRefDev" );
|
|
|
|
|
|
2004-10-04 17:03:04 +00:00
|
|
|
|
if ( SFX_CREATE_MODE_EMBEDDED == GetCreateMode() )
|
2003-04-01 08:45:05 +00:00
|
|
|
|
{
|
|
|
|
|
OutputDevice* pOutDev = GetDocumentRefDev();
|
|
|
|
|
if ( pOutDev )
|
|
|
|
|
return pOutDev;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return GetPrt();
|
|
|
|
|
}
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
void SmDocShell::SetPrinter( SfxPrinter *pNew )
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::SetPrinter" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
delete pPrinter;
|
|
|
|
|
pPrinter = pNew; //Eigentumsuebergang!
|
|
|
|
|
pPrinter->SetMapMode( MapMode(MAP_100TH_MM) );
|
|
|
|
|
SetFormulaArranged(FALSE);
|
2004-11-15 15:42:35 +00:00
|
|
|
|
Repaint();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SmDocShell::OnDocumentPrinterChanged( Printer *pPrt )
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::OnDocumentPrinterChanged" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
pTmpPrinter = pPrt;
|
|
|
|
|
SetFormulaArranged(FALSE);
|
|
|
|
|
Size aOldSize = GetVisArea().GetSize();
|
2004-11-15 15:42:35 +00:00
|
|
|
|
Repaint();
|
2002-01-30 10:47:52 +00:00
|
|
|
|
if( aOldSize != GetVisArea().GetSize() && aText.Len() )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
SetModified( TRUE );
|
|
|
|
|
pTmpPrinter = 0;
|
|
|
|
|
}
|
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
void SmDocShell::Repaint()
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2005-04-04 07:04:42 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::Repaint" );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
BOOL bIsEnabled = IsEnableSetModified();
|
|
|
|
|
if ( bIsEnabled )
|
|
|
|
|
EnableSetModified( FALSE );
|
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
SetFormulaArranged( FALSE );
|
|
|
|
|
|
2005-04-04 07:04:42 +00:00
|
|
|
|
Size aVisSize = GetSize();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
SetVisAreaSize( aVisSize );
|
|
|
|
|
SmViewShell *pViewSh = SmGetActiveView();
|
|
|
|
|
if (pViewSh)
|
2002-07-24 09:49:14 +00:00
|
|
|
|
pViewSh->GetGraphicWindow().Invalidate();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
if ( bIsEnabled )
|
|
|
|
|
EnableSetModified( bIsEnabled );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2010-01-06 21:34:53 +01:00
|
|
|
|
SmDocShell::SmDocShell( const sal_uInt64 i_nSfxCreationFlags ) :
|
|
|
|
|
SfxObjectShell( i_nSfxCreationFlags ),
|
2001-03-08 08:24:49 +00:00
|
|
|
|
pTree ( 0 ),
|
|
|
|
|
pEditEngineItemPool ( 0 ),
|
|
|
|
|
pEditEngine ( 0 ),
|
2007-05-25 11:12:32 +00:00
|
|
|
|
pPrinter ( 0 ),
|
|
|
|
|
pTmpPrinter ( 0 ),
|
2001-03-08 08:24:49 +00:00
|
|
|
|
nModifyCount ( 0 ),
|
|
|
|
|
bIsFormulaArranged ( FALSE )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::SmDocShell" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
SetPool(&SFX_APP()->GetPool());
|
|
|
|
|
|
2009-09-28 10:46:54 +00:00
|
|
|
|
SmModule *pp = SM_MOD();
|
2001-05-02 15:58:48 +00:00
|
|
|
|
aFormat = pp->GetConfig()->GetStandardFormat();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
StartListening(aFormat);
|
|
|
|
|
StartListening(*pp->GetConfig());
|
|
|
|
|
|
2010-01-12 23:32:12 +01:00
|
|
|
|
SetBaseModel( new SmModel(this) );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SmDocShell::~SmDocShell()
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::~SmDocShell" );
|
|
|
|
|
|
2009-09-28 10:46:54 +00:00
|
|
|
|
SmModule *pp = SM_MOD();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
EndListening(aFormat);
|
|
|
|
|
EndListening(*pp->GetConfig());
|
|
|
|
|
|
2001-03-08 08:24:49 +00:00
|
|
|
|
delete pEditEngine;
|
CWS-TOOLING: integrate CWS aw063
2009-02-12 13:10:24 +0100 aw r267649 : #i99123# when a primitive is invisible, it is not sufficient to produce no output when decomposing, but to add invisible data using HitTestPrimitive2D. This is needed for the slideshow which relies on geometry data in MetaFiles when painting invisible objects
2009-02-12 13:08:39 +0100 aw r267648 : #i99123# do not ignore HitTestPrimitive2D, but draw empty rectangles instead. This is needed since Slideshow is based on getting MetaFile content when painting invisible objects
2009-02-11 16:04:28 +0100 aw r267620 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:04:10 +0100 aw r267619 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:56 +0100 aw r267618 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:39 +0100 aw r267617 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:03:21 +0100 aw r267615 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:48 +0100 aw r267614 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:24 +0100 aw r267613 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:02:01 +0100 aw r267612 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:01:32 +0100 aw r267611 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:01:05 +0100 aw r267610 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 16:00:15 +0100 aw r267608 : #i98788# made SfxItemPool destructor protected, added static ::Free method
2009-02-11 11:27:33 +0100 aw r267585 : #i98788# added missing include for STL
2009-02-10 17:46:50 +0100 aw r267570 : #i98788# added reaction on pool destruction
2009-02-10 17:11:58 +0100 aw r267562 : #i98788# added messaging mechanism to register for pool destruction
2009-02-10 13:35:35 +0100 aw r267549 : #i98788# removing changes, too complicated and risky for 3.1
2009-02-10 12:13:48 +0100 aw r267546 : #i98788# 4th round
2009-02-10 12:13:37 +0100 aw r267545 : #i98788# 4th round
2009-02-10 12:13:26 +0100 aw r267544 : #i98788# 4th round
2009-02-10 12:13:14 +0100 aw r267543 : #i98788# 4th round
2009-02-10 12:13:03 +0100 aw r267542 : #i98788# 4th round
2009-02-10 12:12:50 +0100 aw r267541 : #i98788# 4th round
2009-02-10 12:12:37 +0100 aw r267540 : #i98788# 4th round
2009-02-08 14:38:22 +0100 aw r267495 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:38:06 +0100 aw r267494 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:37:48 +0100 aw r267493 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:37:17 +0100 aw r267492 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:56 +0100 aw r267491 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:44 +0100 aw r267490 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:29 +0100 aw r267489 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:16 +0100 aw r267488 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:36:02 +0100 aw r267487 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-08 14:35:46 +0100 aw r267486 : #i98788# 3rd round of changes to SfxItemPool handling
2009-02-05 12:20:39 +0100 aw r267415 : #i98788# 2nd batch of adaptions for SfxItemPoolHolder addition
2009-02-04 15:12:54 +0100 aw r267385 : #i98788# added newline at EOF
2009-02-04 13:26:04 +0100 aw r267379 : #i98788# make SfxItemPool holdable
2009-02-04 13:25:40 +0100 aw r267378 : #i98788# make SfxItemPool holdable
2009-02-04 13:25:08 +0100 aw r267377 : #i98788# make SfxItemPool holdable
2009-02-04 13:24:42 +0100 aw r267376 : #i98788# make SfxItemPool holdable
2009-02-04 13:23:14 +0100 aw r267375 : #i98788# make SfxItemPool holdable
2009-02-04 13:23:02 +0100 aw r267374 : #i98788# make SfxItemPool holdable
2009-01-29 17:08:31 +0100 aw r267159 : #i97628# completed the fix
2009-01-29 17:08:15 +0100 aw r267158 : #i97628# completed the fix
2009-01-29 14:09:07 +0100 aw r267132 : #i97628# Corrected usage of ParagraphData in headers
2009-01-29 14:06:58 +0100 iha r267131 : #i98344# incorrect font size in charts
2009-01-29 12:13:46 +0100 aw r267115 : #i97628# back to old state; triggers too many errors in other modules
2009-01-29 12:03:51 +0100 aw r267114 : #i97628# enabled exceptions due to STL vector include
2009-01-29 11:21:37 +0100 aw r267107 : #i97628# added needed include
2009-01-28 17:58:29 +0100 aw r267077 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:58:12 +0100 aw r267076 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:57:51 +0100 aw r267074 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-28 17:57:21 +0100 aw r267073 : #i97628# first version of newly implemented OutlinerParaObject and adaptions
2009-01-27 17:07:33 +0100 aw r267011 : #i98402# added support for ViewRange when exporting MetaFiles in ObjectContactOfPageView::DoProcessDisplay to avoid to paint too much
2009-01-27 11:45:48 +0100 aw r266973 : #i98404# Added a warning to a place where a conversion to rectangle should not be copied from
2009-01-26 21:44:36 +0100 iha r266949 : #i98497# 3D charts are rendered with wrong size
2009-01-26 20:47:07 +0100 aw r266947 : #i98404# handle BackgroundColorPrimitive2D directly in PixelRenderers and avoid AA under all circumstances
2009-01-26 14:50:36 +0100 aw r266926 : #i98386# secured cloning of SdrObject in IMapUserData by boost::shared_prt usage
2009-01-26 12:51:30 +0100 aw r266916 : #i96581# added separated FontStretching and fallback for small X!=Y scale differences
2009-01-23 16:14:55 +0100 aw r266834 : #i96475# added missing implementation of TextDecoratedPortionPrimitive2D::getB2DRange
2009-01-23 15:24:34 +0100 aw r266826 : #i98405# fixed fallback to DrawAlphaRect to use the correctly sized rectangle
2009-01-23 13:34:43 +0100 aw r266813 : #i96474# fixed impSplitSingleWords for an unexpected case
2009-01-23 10:47:31 +0100 aw r266786 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:47:20 +0100 aw r266785 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:47:09 +0100 aw r266783 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:46:58 +0100 aw r266782 : #i98289#,#i96474# tooling and new flags for tasks
2009-01-23 10:46:48 +0100 aw r266781 : #i98289#,#i96474# tooling and new flags for tasks
2009-03-04 14:16:02 +00:00
|
|
|
|
SfxItemPool::Free(pEditEngineItemPool);
|
2000-09-18 16:07:07 +00:00
|
|
|
|
delete pTree;
|
|
|
|
|
delete pPrinter;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2001-03-09 16:14:48 +00:00
|
|
|
|
BOOL SmDocShell::SetData( const String& rData )
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::SetData" );
|
|
|
|
|
|
2001-03-09 16:14:48 +00:00
|
|
|
|
SetText( rData );
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
BOOL SmDocShell::ConvertFrom(SfxMedium &rMedium)
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::ConvertFrom" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
BOOL bSuccess = FALSE;
|
2001-03-19 09:25:21 +00:00
|
|
|
|
const String& rFltName = rMedium.GetFilter()->GetFilterName();
|
2004-10-04 17:03:04 +00:00
|
|
|
|
|
|
|
|
|
DBG_ASSERT( !rFltName.EqualsAscii( STAROFFICE_XML ), "Wrong filter!");
|
|
|
|
|
|
|
|
|
|
if ( rFltName.EqualsAscii( MATHML_XML ) )
|
2000-11-15 09:47:20 +00:00
|
|
|
|
{
|
|
|
|
|
if (pTree)
|
|
|
|
|
{
|
2001-02-02 09:20:47 +00:00
|
|
|
|
delete pTree;
|
|
|
|
|
pTree = 0;
|
2000-11-15 09:47:20 +00:00
|
|
|
|
}
|
2001-10-18 11:32:43 +00:00
|
|
|
|
Reference<com::sun::star::frame::XModel> xModel(GetModel());
|
2009-05-19 09:31:27 +00:00
|
|
|
|
SmXMLImportWrapper aEquation(xModel);
|
2001-07-19 14:02:02 +00:00
|
|
|
|
bSuccess = 0 == aEquation.Import(rMedium);
|
2000-11-15 09:47:20 +00:00
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
SvStream *pStream = rMedium.GetInStream();
|
2004-10-04 17:03:04 +00:00
|
|
|
|
if ( pStream )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2004-10-04 17:03:04 +00:00
|
|
|
|
if ( SotStorage::IsStorageFile( pStream ) )
|
|
|
|
|
{
|
|
|
|
|
SvStorageRef aStorage = new SotStorage( pStream, FALSE );
|
|
|
|
|
if ( aStorage->IsStream( C2S( "Equation Native" ) ) )
|
|
|
|
|
{
|
|
|
|
|
// is this a MathType Storage?
|
|
|
|
|
MathType aEquation( aText );
|
2007-05-25 11:12:32 +00:00
|
|
|
|
if ( TRUE == (bSuccess = (1 == aEquation.Parse( aStorage )) ))
|
2004-10-04 17:03:04 +00:00
|
|
|
|
Parse();
|
|
|
|
|
}
|
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2004-10-04 17:03:04 +00:00
|
|
|
|
|
|
|
|
|
if ( GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
|
2005-04-04 07:04:42 +00:00
|
|
|
|
{
|
|
|
|
|
SetFormulaArranged( FALSE );
|
|
|
|
|
Repaint();
|
|
|
|
|
}
|
2004-10-04 17:03:04 +00:00
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
FinishedLoading( SFX_LOADED_ALL );
|
|
|
|
|
return bSuccess;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2004-10-04 17:03:04 +00:00
|
|
|
|
BOOL SmDocShell::InitNew( const uno::Reference < embed::XStorage >& xStorage )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::InitNew" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
BOOL bRet = FALSE;
|
2004-10-04 17:03:04 +00:00
|
|
|
|
if ( SfxObjectShell::InitNew( xStorage ) )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
|
|
|
|
bRet = TRUE;
|
|
|
|
|
SetVisArea(Rectangle(Point(0, 0), Size(2000, 1000)));
|
|
|
|
|
}
|
|
|
|
|
return bRet;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2005-01-11 12:08:26 +00:00
|
|
|
|
BOOL SmDocShell::Load( SfxMedium& rMedium )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::Load" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
BOOL bRet = FALSE;
|
2005-01-11 12:08:26 +00:00
|
|
|
|
if( SfxObjectShell::Load( rMedium ))
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
CWS-TOOLING: integrate CWS odfmetadata2
2009-06-22 11:48:36 +0200 mst r273206 : - connectivity/source/drivers/mozab/mozillasrc/MNSInclude.hxx:
+ add "include ustrbuf.hxx" to work around warning caused by
solaris <sys/kstat.h> declaring a global "long l ;"
2009-06-19 14:25:25 +0200 mst r273159 : - scp2/source/ooo/file_library_ooo.scp:
+ fix MinGW build
2009-06-08 12:52:33 +0200 mst r272727 : - redland/raptor-1.4.18.patch.mingw, redland/raptor/makefile.mk:
+ disable parsers that do not build on MinGW (thanks for patch by tono)
2009-05-15 17:31:07 +0200 mst r271957 : fix typos
2009-05-15 17:28:57 +0200 mst r271956 : #i101965#
- offapi/com/sun/star/text/TextPortion:
+ add missing properties:
SoftPageBreak, DocumentIndexMark, ReferenceMark, Footnote, TextField
+ fix read-only status of properties: Bookmark, IsStart, IsCollapsed
- offapi/type_reference/{typelibrary_history.txt,types.rdb}:
+ update reference types.rdb
2009-05-07 14:41:38 +0200 mst r271669 : - sw/inc/{fmtftn.hxx,unocoll.hxx,doc.hxx,editsh.hxx,ftninfo.hxx},
sw/source/core/layout/{flowfrm.cxx,ftnfrm.cxx},
sw/source/core/doc/docftn.cxx, sw/source/core/edit/edattr.cxx,
sw/source/core/txtnode/atrftn.cxx, sw/source/core/unocore/unocoll.cxx,
sw/source/ui/fldui/fldref.cxx:
+ fix warning ... the hard way
+ also fix signature of SwDoc::SetCurFtn
2009-05-05 19:52:55 +0200 mst r271556 : - sw/inc/undobj.hxx:
+ make some members const
2009-05-05 19:34:40 +0200 mst r271555 : - sw/inc/rolbck.hxx, sw/source/core/undo/rolbck.cxx:
+ make some members const
2009-05-05 19:13:14 +0200 mst r271553 : - sw/inc/{undobj.hxx,rolbck.hxx},
sw/source/core/undo/{unbkmk.cxx,rolbck.cxx}:
+ fix rebase merge error
+ rename SwHstryBookmark to SwHistoryBookmark
+ clean up SwUndoBookmark
2009-05-05 19:05:53 +0200 mst r271552 : - sw/source/core/unocore/unoportenum.cxx:
+ fix annoying assertion
2009-05-05 15:34:48 +0200 mst r271522 : CWS-TOOLING: rebase CWS odfmetadata2 to trunk@271427 (milestone: DEV300:m47)
2009-05-04 12:37:01 +0200 mst r271444 : trivial
2009-04-22 13:30:37 +0200 mst r271102 : - sfx2/inc/sfx2/dinfdlg.hxx:
+ trivial change
2009-04-21 16:46:58 +0200 mst r271043 : - sw/inc/hintids.hxx:
+ introduce some predicates for the various hints, and use them
2009-04-21 16:19:03 +0200 mst r271041 : - sw/inc/undobj.hxx,
sw/source/core/doc/{docfly.cxx,docfmt.cxx,docftn.cxx,doctxm.cxx},
sw/source/core/undo/{unattr.cxx,unins.cxx}:
+ clean up unattr.cxx:
remove/fix casts, prefix members, use auto_ptr, etc.
2009-04-21 15:34:23 +0200 mst r271039 : - sw/inc/{rolbck.hxx,undobj.hxx},
sw/source/core/doc/docfmt.cxx,
sw/source/core/txtnode/{thints.cxx,txtedt.cxx},
sw/source/core/undo/{rolbck.cxx,undel.cxx,undobj.cxx,unins.cxx,unmove.cxx,
unovwr.cxx,unsect.cxx,unspnd.cxx,untbl.cxx,untblk.cxx,unattr.cxx}:
+ clean up SwHistory, SwRegHistory and SwHistoryHint etc.:
remove/fix casts, prefix members, remove wrong const annotations,
use auto_ptr, remove unused members, etc.
2009-04-20 19:17:36 +0200 mst r271013 : - sw/inc/ndhints.hxx,
sw/source/core/text/{itrtxt.cxx,txtftn.cxx,itratr.cxx,porfly.cxx,
txtfrm.cxx,txtdrop.cxx,frmform.cxx},
sw/source/core/txtnode/{ndtxt.cxx,ndhints.cxx,thints.cxx,txtedt.cxx},
sw/source/core/edit/acorrect.cxx,
sw/source/core/doc/{docedt.cxx,docfmt.cxx},
sw/source/filter/html/swhtml.cxx:
+ clean up SwHintsArray and its subclasses: remove/fix casts, prefix members
2009-04-20 18:42:07 +0200 mst r271007 : - sw/source/core/text/txtio.cxx, sw/source/core/edit/edattr.cxx,
sw/source/core/undo/rolbck.cxx:
+ remove JP_NEWCORE dead code
2009-04-20 18:38:09 +0200 mst r271006 : - sw/source/core/unocore/unochart.cxx:
+ silence unxlngi warning (debug=t)
2009-04-20 16:36:13 +0200 mst r270991 : - sfx2/inc/sfx2/dinfdlg.hxx, sfx2/source/dialog/dinfdlg.cxx,
sfx2/source/doc/objserv.cxx, sw/source/ui/fldui/flddinf.hxx:
+ trivial cleanups
2009-04-20 15:28:52 +0200 mst r270990 : - sfx2/inc/sfx2/dinfdlg.hxx, sfx2/source/dialog/dinfdlg.cxx,
sfx2/source/doc/objserv.cxx:
+ fix bug: replaying a macro with a DocumentInfoItem removes all
user-defined properties
2009-03-10 15:08:20 +0100 mst r269273 : - sfx2/source/doc/Metadatable.cxx:
+ add missing SolarMutex guards
2009-03-10 14:46:29 +0100 mst r269272 : - unoxml/source/rdf/librdf_repository.cxx:
+ never free rdf_world because that would call libxm2 xmlCleanupParser
(and, to add insult to injury, other libxml2 functions later...)
2009-03-06 19:02:44 +0100 mst r269041 : argh! undo...
2009-03-06 19:00:58 +0100 mst r269040 : fix #i99931#
- sw/source/ui/uno/unomod.cxx:
+ SwXViewSettings::_getSingleValue returns uninitialized memory
for the ZoomType property if the value is PAGE_WIDTH_EXACT
2009-03-06 18:59:28 +0100 mst r269039 : - sw/inc/ndtxt.hxx, sw/source/core/txtnode/ndtxt.cxx,
sw/source/core/unocore/unoportenum.cxx:
+ fix some more wntmsci12 warnings...
2009-03-06 18:56:46 +0100 mst r269038 : - sd/source/ui/slidesorter/model/SlsPageEnumerationProvider.cxx:
+ work around spurious warning on unxsoli4 debug=t
2009-03-05 14:02:01 +0100 mst r268902 : - sw/inc/txatbase.hxx:
+ back to c-style casts, they also compile on wntmsci12...
2009-03-05 10:23:25 +0100 mst r268882 : - comphelper/inc/comphelper/processfactory.hxx,
comphelper/source/processfactory/processfactory.cxx:
+ revert change of return type of comphelper_getProcessComponentContext
to Reference: does not build on wntmsci12
2009-03-04 19:08:09 +0100 mst r268861 : - sw/source/core/txtnode/{atrtox.cxx,ndtxt.cxx}:
+ fix initialization
2009-03-04 14:37:30 +0100 mst r268831 : - solenv/inc/target.mk:
+ fix CLASSPATH so complex tests run (fix by sb)
2009-03-04 14:36:30 +0100 mst r268830 : - sw/inc/unoobj.hxx,
sw/source/core/unocore/{unoparagraph.cxx,unoobj.cxx,unoobj2.cxx}:
+ SwXParaFrameEnumeration constructor now takes SwPaM, not SwUnoCrsr
+ move SwParaSelection into unoparagraph.cxx, as it is only used there
+ bugfix: replace SwUnoCrsrs on stack with SwCursors
2009-03-04 14:34:46 +0100 mst r268829 : - sw/inc/pam.hxx, sw/source/core/crsr/pam.cxx,
sw/source/core/edit/eddel.cxx, sw/source/core/doc/docredln.cxx,
sw/source/core/undo/{untbl.cxx,undel.cxx}, sw/source/filter/rtf/swparrtf.cxx:
+ clean up SwPaM: prefix members
+ new constructor SwPosition(SwCntntNode&, xub_StrLen)
+ fix several broken SwPosition and SwPaM constructors
+ SwPam::DeleteMark now actually resets the unused position to default
2009-03-02 12:07:09 +0100 mst r268646 : - sw/inc/fmtcol.hxx:
+ fix annoying warning (gcc 4)
2009-03-02 12:06:27 +0100 mst r268645 : - odk/util/check.pl, odk/examples/DevelopersGuide/Text/TextDocuments.java:
+ rename module from FieldMaster to fieldmaster
2009-02-27 19:49:56 +0100 mst r268614 : - sfx2/inc/sfx2/Metadatable.hxx, sfx2/prj/d.lst,
sfx2/source/doc/{Metadatable.cxx,makefile.mk},
sw/inc/{SwMetadatable.hxx,unoobj.hxx,undobj.hxx,ndtxt.hxx},
sw/source/core/doc/{SwMetadatable.cxx,makefile.mk,docnew.cxx},
sw/source/core/undo/{untbl.cxx,unins.cxx},
sw/source/core/unocore/unoparagraph.cxx, sw/source/ui/app/docsh.cxx:
+ move Metadatable implementation from sw to sfx2
2009-02-27 17:58:55 +0100 mst r268608 : - sw/inc/{SwMetadatable.hxx,undobj.hxx}, sw/source/core/doc/SwMetadatable.cxx,
sw/source/core/undo/{untbl.cxx,unins.cxx,undel.cxx}:
+ CreateUndo now returns an opaque MetadatableUndo object
2009-02-27 13:15:44 +0100 mst r268587 : - sw/inc/ndtxt.hxx, sw/source/core/doc/docfmt.cxx,
sw/source/core/text/{itratr.cxx,porlay.cxx},
sw/source/core/txtnode/{txtedt.cxx,ndtxt.cxx,thints.cxx}:
+ clean up SwTxtNode: fix casts, prefix members
+ factor out inline function SwTxtNode::TryDeleteSwpHints()
2009-02-27 13:14:30 +0100 mst r268586 : - svx/inc/svx/emphitem.hxx:
+ fix borken header guard
2009-02-27 13:13:56 +0100 mst r268585 : - sfx2/source/bastyp/progress.cxx:
+ fix use of compiler specific macro
2009-02-27 11:00:32 +0100 mst r268564 : - sw/inc/{txatbase.hxx,txtatr.hxx,txtinet.hxx,txtfld.hxx,txtftn.hxx,
txtflcnt.hxx,txttxmrk.hxx,txtrfmrk.hxx},
sw/source/core/txtnode/{atrtox.cxx,atrref.cxx,atrflyin.cxx,atrftn.cxx,
txtatr2.cxx,txatbase.cxx,atrfld.cxx,txtedt.cxx},
sw/source/core/text/atrstck.cxx, sw/source/core/access/acchyperlink.cxx,
sw/source/core/doc/visiturl.cxx, sw/source/ui/wrtsh/wrtsh2.cxx:
+ clean up SwTxtAttr and its subclasses: remove/fix casts, prefix members
+ SwTxtINetFmt: remove unused member bColor
- sw/source/core/text/txtfld.cxx:
+ move SwTxtFld methods to atrfld.cxx
2009-02-27 10:58:44 +0100 mst r268563 : - sfx2/inc/sfx2/sfxbasemodel.hxx:
+ don't privately inherit BaseMutex, ScModelObj wants to access it
2009-02-27 10:58:02 +0100 mst r268562 : - xmloff/source/core/{RDFaExportHelper.cxx,RDFaImportHelper.cxx}:
+ arrrgh!!! someone thought it would be a good idea to have 2 different
versions of boost in external! and they're NOT compatible!!!
insert an ugly fragile hack that maybe works with both...
2009-02-26 17:42:26 +0100 mst r268544 : - comphelper/inc/comphelper/storagehelper.hxx.
sfx2/source/doc/DocumentMetadataAccess.cxx:
+ someone made IsValidZipEntryFileName a static method and didn't tell me
2009-02-26 15:52:56 +0100 mst r268529 : redland: split up patches
2009-02-26 13:17:56 +0100 mst r268509 : migration of cws odfmetadata2 from CVS (resync to m42): module sw
#i95863#
- sw/inc/segdefs{,_}.hxx:
+ remove obsolete files
- sw/source/ui/inc/itemdef.hxx:
+ remove itemdef.hxx
- sw/source/ui/app/[apphdl.cxx,docsh.cxx}, sw/source/ui/misc/glshell.cxx,
sw/source/ui/shells/*.cxx, sw/source/ui/uiview/*.cxx, sw/source/ui/web/*.cxx:
+ use sfx2/msg.hxx instead of itemdef.hxx
- sw/source/core/edit/eddel.cxx:
+ @ JP: SwEditShell::Replace:
you're right, deleting the text to be replaced first, and then inserting
a space, and then replacing that space is unnecessary.
whew, i'm so happy that we finally answered that question after 11 years.
- sw/inc/edimp.hxx:
+ remove FOREACHCURSOR_START, FOREACHCURSOR_END
- sw/inc/{swcrsr.hxx,unocrsr.hxx,viscrs.hxx},
sw/source/core/crsr/{crsrsh.cxx,swcrsr.cxx,trvlreg.cxx,trvltbl.cxx,
unocrsr.cxx,viscrs.cxx},
sw/source/core/doc/{docbm.cxx,doccorr.cxx},
sw/source/core/docnode/{ndtbl.cxx,ndtbl1.cxx},
sw/source/core/edit/editsh.cxx,
sw/source/core/frmedt/{fefly1.cxx,fetab.cxx,tblsel.cxx},
sw/source/core/layout/trvlfrm.cxx,
sw/source/core/unocore/{unochart.cxx,unoobj2.cxx,unoparagraph.cxx,
unoportenum.cxx,unotbl.cxx},
sw/source/core/view/vprint.cxx:
+ remove the hideous virtual operator SwFooCursor*
+ make SwCursor::IsReadOnlyAvailable() virtual
+ make SwUnoCrsr::Clone() virtual
+ refactor SwCursor methods IsSelOver(), LeftRight(), UpDown(), GotoTable():
replace dynamic_cast<...>(this) with new virtual methods
2009-02-26 13:14:58 +0100 mst r268508 : migration of cws odfmetadata2 from CVS (resync to m42): module sw
- sw/source/filter/xml/swxml.cxx:
+ XMLReader::Read: load RDF metadata of the ODF document
- sw/source/filter/xml/wrtxml.cxx:
+ SwXMLWriter::_Write: write RDF metadata of the ODF document if ODF >= 1.2
#i90620#: import xml:id in text tables (does not actually work yet)
- sw/source/filter/xml/xmltbli{.hxx,.cxx}:
+ SwXMLTableCellAttrTokens,aTableCellAttrTokenMap: add XML_TOK_TABLE_XMLID
+ SwXMLTableCellContext_Impl::SwXMLTableCellContext_Impl: attribute xml:id
+ SwXMLTableCellContext_Impl::CreateChildContext: attribute xml:id
+ SwXMLTableColContext_Impl::SwXMLTableColContext_Impl: attribute xml:id
+ SwXMLTableContext::SwXMLTableContext: attribute xml:id
fix #i98530#
- sw/inc/unoport.hxx, sw/source/core/unocore/unoport.cxx:
+ SwXTextPortion: make constructor params const&
- sw/source/core/unocore/unoportenum.cxx:
+ refactor to remove some code duplication
+ fix bug: paragraph w/out hints: bookmark before frame gets lost
#i97274# handle invalid tables
- sw/source/core/layout/tabfrm.cxx, sw/source/filter/xml/xmltbli.cxx:
+ SwXMLTableContext::MakeTable():
check that the table actually contains cells,
and abort (removing the inserted table nodes) if not
2009-02-26 13:11:48 +0100 mst r268507 : migration of cws odfmetadata2 from CVS (resync to m42): module sw
refactor SwXTextRange and SwXParagraph
- sw/inc/unoobj.hxx, sw/source/core/unocore/unoobj2.cxx:
+ remove 3 constructors of SwXTextRange
+ new method SwXTextRange::CreateParentXText
+ refactor SwXTextRange::CreateTextRangeFromPosition and
SwXTextRange::getText
- sw/inc/unoobj.hxx, sw/source/core/unocore/unoparagraph.cxx:
+ SwXParagraph no longer uses a cursor; it registers directly at SwTxtNode
+ replace SwXParagraph::GetCrsr with SwXParagraph::GetTxtNode
- sw/source/core/unocore/unotext.cxx, sw/source/ui/uno/unotxvw.cxx:
+ adapt to new SwXParagraph
#i90620#
- sw/inc/SwMetadatable.hxx,
sw/source/core/doc/SwMetadatable.cxx:
+ new files: base classes sw::Metadatable and sw::MetadatableMixin;
also, 2 implementations of IXmlIdRegistry:
sw::XmlIdRegistryDocument and sw::XmlIdRegistryClipboard
+ setMetadataReference: handle empty stream name as auto-detect
- sw/source/core/doc/makefile.mk:
+ add SwMetadatable
add a XmlIdRegistry to SwDoc
- sw/inc/doc.hxx:
+ SwDoc: add member m_pXmlIdRegistry, method GetXmlIdRegistry()
- sw/source/core/doc/docnew.cxx:
+ initialize XmlIdRegistry in SwDoc::GetXmlIdRegistry, not in constructor,
because the constructor is not told whether the SwDoc is a clipboard
- sw/inc/docsh.hxx, sw/source/ui/app/docsh.cxx:
+ SwDocShell: override GetXmlIdRegistry()
#i91563#: make the SwTxtNode metadatable
- sw/inc/ndtxt.hxx
+ SwTxtNode inherits sw::Metadatable
- sw/inc/unoobj.hxx, sw/source/core/unocore/unoparagraph.cxx:
+ SwXParagraph inherits sw::MetadatableMixin
#i91563#: handle SwTxtNode's metadata for delete
- sw/source/core/txtnode/ndtxt.cxx:
+ SwTxtNode::SplitCntntNode: handle XmlId
+ SwTxtNode::JoinNext: merge XmlIds
- sw/source/core/doc/docedt.cxx:
+ lcl_GetJoinFlags: document postcondition
+ SwDoc::Delete: remove XmlId only if SwTxtNode _becomes_ empty
#i91563#: handle SwTxtNode's metadata for delete with undo
- sw/inc/undobj.hxx
+ SwUndoDelete: new members m_pMetadataUndoStart, m_pMetadataUndoEnd
- sw/source/core/undo/undel.cxx:
+ SwUndoDelete::SaveCntnt: save XmlIds for start and end SwTxtNode
+ SwUndoDelete::SaveCntnt: remove XmlId only if SwTxtNode _becomes_ empty
+ SwUndoDelete::Undo: restore saved XmlIds for start and end SwTxtNode
- sw/source/core/docnode/ndcopy.cxx:
+ SwTxtNode::MakeCopy: register copy at XmlIdRegistry
#i91563#: handle SwTxtNode's metadata for find/replace with undo
- sw/source/core/undo/unins.cxx:
+ _UnReplaceData: rename members: add prefix m_
+ _UnReplaceData: new members m_pMetadataUndoStart, m_pMetadataUndoEnd
+ _UnReplaceData::_UnReplaceData: save XmlIds for start and end SwTxtNode
+ _UnReplaceData::Undo: restore saved XmlIds for start and end SwTxtNode
#i91563#: handle SwTxtNode's metadata for table-to-text with undo
- sw/source/core/undo/untbl.cxx:
+ SwTblToTxtSave: rename members: add prefix m_
+ SwTblToTxtSave: new members m_pMetadataUndoStart, m_pMetadataUndoEnd
+ SwTblToTxtSave::SwTblToTxtSave: save XmlIds for start and end SwTxtNode
+ SwTblToTxtSave::SwTblToTxtSave, SwNodes::UndoTableToText:
always store the index of the first SwTxtNode in the cell, instead of
the index of the first SwTxtNode in case of the first cell in a row,
and the cell start node in other cases
+ SwNodes::UndoTableToText: restore saved XmlIds for start and end SwTxtNode
- sw/source/core/docnode/ndtbl.cxx:
+ lcl_DelBox: simplify for refactored start index handling in SwTblToTxtSave
2009-02-26 13:02:28 +0100 mst r268505 : migration of cws odfmetadata2 from CVS (resync to m42): module sd
- sd/source/ui/table/tableobjectbar.cxx,sd/source/ui/view/*.cxx:
+ remove invocations of SFX_DECL_TYPE
- sd/source/ui/slideshow/SlideShowRestarter.cxx,
sd/source/ui/toolpanel/LayoutMenu.cxx,
sd/source/ui/unoidl/DrawController.cxx,
sd/source/ui/view/{ViewShellBase.cxx,ViewTabBar.cxx,frmview.cxx}:
+ fix abuses of comphelper_getProcessComponentContext (missing release)
2009-02-26 13:01:24 +0100 mst r268504 : migration of cws odfmetadata2 from CVS (resync to m42): module starmath
- starmath/source/document.cxx:
+ don't touch SfxObjectShell's privates
2009-02-26 13:00:37 +0100 mst r268503 : migration of cws odfmetadata2 from CVS (resync to m42): module sfx2
#i90620#
- sfx2/inc/sfx2/XmlIdRegistry.hxx:
+ new file: interfaces sfx2::IXmlIdRegistry and sfx2::IXmlIdRegistrySupplier
and a couple of utility functions
- sfx2/inc/sfx2/DocumentMetadataAccess.hxx,
sfx2/source/doc/DocumentMetadataAccess.cxx:
+ new class sfx2::DocumentMetadataAccess, implements XDocumentMetadataAccess
+ the URI of the DocumentMetadataAccess is now the URI from which the
document was loaded; for a new document, use a vnd.sun.star.tdoc URI
+ add new function sfx2::createBaseURI()
+ prevent using reserved file names
+ try not to recurse into embedded subdocuments
- sfx2/source/doc/makefile.mk:
+ add DocumentMetadataAccess
- sfx2/util/makefile.mk:
+ link libsfx2 against libxml2 (needed for xmlValidateNCName)
- sfx2/source/doc/makefile.mk:
+ add LIBXML_CFLAGS to CFLAGS
- sfx2/prj/build.lst:
+ add dependence on libxml2
- sfx2/prj/d.lst:
+ add XmlIdRegistry.hxx, DocumentMetadataAccess.hxx
- sfx2/inc/sfx2/objsh.hxx, sfx2/source/doc/objxtor.cxx:
+ make SfxObjectShell's members private
+ new method SfxObjectShell::GetAutoStyleFilterIndex
+ SfxObjectShell inherits sfx2::IXmlIdRegistrySupplier
- sfx2/source/dialog/templdlg.cxx, sfx2/source/doc/sfxbasemodel.cxx:
+ don't touch SfxObjectShell's privates
- sfx2/inc/sfx2/sfxbasemodel.hxx, sfx2/source/doc/sfxbasemodel.cxx:
+ SfxBaseModel inherits BaseMutex instead of IMPL_SfxBaseModel_MutexContainer
+ SfxBaseModel implements additional interface XDocumentMetadataAccess
+ IMPL_SfxBaseModel_DataContainer has new member:
a sfx2::DocumentMetadataAccess
+ implementation of XDocumentMetadataAccess forwards to
the sfx2::DocumentMetadataAccess member
- sfx2/qa/complex/DocumentMetadataAccessTest.java,
sfx2/qa/complex/{tests.sce,makefile.mk},
sfx2/qa/complex/testdocuments/TESTRDFA.odt:
+ add complex test: DocumentMetadataAccessTest
+ add RDFa test document
#i95863#
- sfx2/inc/sfx2/dinfdlg.hxx, sfx2/source/dialog/dinfdlg.cxx:
+ refactor SfxDocumentItem so it no longer requires a XDocumentInfo
+ move struct CustomProperty to implementation file
+ remove class SfxDocumentUserPage
+ QueryValue,PutValue: remove MID_DOCINFO_FIELD*
- sfx2/source/doc/objserv.cxx:
+ adapt to SfxDocumentItem change
- sfx2/inc/sfx2/sfx.hrc, sfx2/sdi/sfxslots.sdi, sfx2/inc/sfx2/msg.hxx:
+ remove MID_DOCINFO_FIELD*
+ put all invocations of SFX_DECL_TYPE in msg.hxx, and undef SFX_DECL_TYPE
- sfx2/source/doc/objxtor.cxx:
+ fix abuses of comphelper_getProcessComponentContext (missing release)
- sfx2/source/doc/docfile.cxx:
+ SfxMedium::SfxMedium: don't dereference NULL, throw exception instead
- sfx2/source/doc/objstor.cxx:
+ SfxObjectShell::DoLoad: fix bug: DocumentBaseURI is not initialized
2009-02-26 12:58:07 +0100 mst r268502 : migration of cws odfmetadata2 from CVS (resync to m42): module xmloff
#i90620#: implement RDFa import (interface change)
- xmloff/inc/xmloff/xmlimp.hxx. xmloff/source/core/xmlimp.cxx:
+ make SvXMLImport::GetAbsoluteReference() const
+ add SvXMLImport::GetComponentContext()
+ SvXMLImport::_InitCtor(): add RDFa namespace
+ add SvXMLImport::AddRDFa()
+ SvXMLImport::endDocument() inserts RDFa into document repository
- xmloff/inc/xmloff/xmltoken.hxx, xmloff/source/core/xmltoken.cxx:
+ new tokens for RDFa: XML_ABOUT, XML_DATATYPE
- xmloff/inc/RDFaImportHelper.hxx, xmloff/source/core/RDFaImportHelper.cxx:
+ new class RDFaImportHelper
+ adapt the code to the bleak reality of broken C++ implementations
+ handle empty xhtml:about attributes properly, which are actually
valid relative URIs
+ work around broken SvXMLImport::GetAbsoluteReference
- xmloff/source/core/makefile.mk:
+ add RDFaImportHelper.cxx
#i90620#: implement RDFa export
- xmloff/inc/xmloff/xmlexp.hxx, xmloff/source/core/xmlexp.cxx:
+ add SvXMLExport::EnsureNamespace(), and a stack of namespace maps
+ add SvXMLExport::GetComponentContext()
+ add SvXMLExport::AddAttributesRDFa()
- xmloff/inc/RDFaExportHelper.hxx, xmloff/source/core/RDFaExportHelper.cxx:
+ new class RDFaExportHelper
+ don't use std::map::data_type, which is actually called
std::map::mapped_type by libstdc++
- xmloff/source/core/makefile.mk:
+ add RDFaExportHelper.cxx
#i91563#
- xmloff/inc/xmloff/txtimp.hxx, xmloff/source/text/txtimp.cxx:
+ XMLTextPAttrTokens: add RDFa tokens
- xmloff/source/text/txtparai{.hxx,.cxx}:
+ import RDFa for text:p
- xmloff/source/text/txtparae.cxx:
+ export RDFa for text:p
interface change: use XHTML namespace instead of RDFA
- xmloff/inc/xmlnmspe.hxx, xmloff/inc/xmloff/xmltoken.hxx,
xmloff/source/core/{xmltoken.cxx,xmlimp.cxx,xmlexp.cxx,RDFaExportHelper.cxx},
xmloff/source/text/txtimp.cxx:
+ use XHTML namespace instead of RDFA
#i91565#, #i91566#: (preliminary) import for text:meta, text:meta-field
- xmloff/source/text/txtparai.cxx:
+ new class XMLMetaImportContextBase with subclasses to import
text:meta and text:meta-field
- xmloff/source/text/XMLTextMarkImportContext.cxx:
+ change XMLTextMarkImportContext::CreateAndInsertMark to handle marks
with no name (text:meta)
#i91565#, #i91566#: (preliminary) export for text:meta, text:meta-field
- xmloff/inc/txtflde.hxx, xmloff/source/text/txtflde.cxx:
+ add FIELD_ID_META to FieldIdEnum
+ new method XMLTextFieldExport::ExportMetaField()
+ change XMLTextFieldExport::ExportField{,AutoStyle,Helper}
to take additional parameter for progress bar
- xmloff/inc/xmloff/txtparae.hxx, xmloff/source/text/txtparae.cxx:
+ make XMLTextParagraphExport::exportTextRangeEnumeration() public
+ new method XMLTextParagraphExport::exportMeta()
#i90620#
- xmloff/inc/xmloff/xmlimp.hxx, xmloff/source/core/xmlimp.cxx,
xmloff/inc/xmloff/xmlexp.hxx, xmloff/source/core/xmlexp.cxx:
+ rename SvXML{Im,Ex}port::GetStreamPath() to GetStreamName()
+ fix xml:id {im,ex}port for embedded documents and non-packages
+ adapt to API change: XMetadatable
#i90620# GRDDL
- xmloff/inc/xmlnmspe.hxx, xmloff/inc/xmloff/xmltoken.hxx,
xmloff/source/core/{xmltoken.cxx,xmlexp.cxx}:
+ add GRDDL namespace
+ add token XML_TRANSFORMATION
+ add grddl:transformation attribute to root elements for meta.xml,
content.xml and styles.xml
2009-02-26 12:54:40 +0100 mst r268501 : migration of cws odfmetadata2 from CVS (resync to m42): module unoxml
#i90620#
- unoxml/source/rdf/librdf_repository.cxx:
+ librdf_Repository::importGraph: allocate buffer sized length of stream
+ switch from one librdf_world per repository to a single static world
because redland has global variables with a brain-damaged life-cycle...
+ exportGraph: use new raptor 1.4.18 feature to disable writing
an xml:base attribute in RDF/XML files
- unoxml/source/rdf/librdf_repository.cxx:
unoxml/qa/complex/RDFRepositoryTest.java:
+ adapt to predicate is URI change
+ adapt to RDFa API change
+ adapt to API change: RDFa has multiple predicates...
+ adapt to API change: XMetadatable derives from XURI
+ allow xhtml:datatype without xhtml:content
+ adapt to API change: attribute MetadataReference is StringPair
- unoxml/source/rdf/CURI.cxx:
+ add some more URI constants
2009-02-26 12:53:32 +0100 mst r268500 : migration of cws odfmetadata2 from CVS (resync to m42): module package
- package/inc/ImplValidCharacters.hxx:
+ remove (moved to comphelper)
2009-02-26 12:52:49 +0100 mst r268499 : migration of cws odfmetadata2 from CVS (resync to m42): module comphelper
- comphelper/inc/comphelper/processfactory.hxx,
comphelper/source/processfactory/processfactory.cxx:
+ add getProcessComponentContext()
+ change return type of comphelper_getProcessComponentContext to Reference
- comphelper/inc/comphelper/stl_types.hxx:
+ add OUStringBufferAppender
+ add algorithm intersperse
- comphelper/source/misc/string.cxx:
+ rewrite convertCommaSeparated with intersperse and OUStringBufferAppender
- comphelper/inc/comphelper/stlunosequence.hxx:
+ fix bug: begin() on empty sequence != end()
2009-02-26 12:50:47 +0100 mst r268498 : migration of cws odfmetadata2 from CVS (resync to m42): module offapi
#i96209#
- offapi/com/sun/star/text/fieldmaster/*.idl:
+ rename module from FieldMaster to fieldmaster
- offapi/type_reference/{typelibrary_history.txt,types.rdb}:
+ update reference types.rdb
#i90620#
- offapi/com/sun/star/rdf/{XMetadatable.idl,XDocumentMetadataAccess.idl}:
+ API change: XMetadatable derives from XURI
+ API change: replace XmlId (string) with MetadataReference (StringPair)
- offapi/com/sun/star/rdf/{Statement.idl,XDocumentRepository.idl,
XNamedGraph.idl,XRepository.idl}:
+ the predicate of a statement is a URI, not a Resource
- offapi/com/sun/star/rdf/XDocumentMetadataAccess.idl:
+ rename: s/Package/Document/
+ remove uuid
+ remove everything related to mapping
+ graph names are now generated from base URI and file names
+ load methods: improve error handling with XInteractionHandler
- offapi/com/sun/star/rdf/XDocumentRepository.idl:
+ change: RDFa permits using multiple predicates in one attribute
+ setStatementRDFa: subject is now XResource, object is now XMetadatable
- offapi/com/sun/star/rdf/URIs.idl:
+ add some more URI constants
- offapi/com/sun/star/rdf:
+ fix @since tags and replace <method> with <member>
2009-02-26 12:47:24 +0100 mst r268497 : migration of cws odfmetadata2 from CVS (resync to m42): module redland
fix #i93768#
- redland/raptor-1.4.17.patch, redland/raptor/makefile.mk:
+ disable GRDDL parser to prevent call to libxslt
xsltSetDefaultSecurityPrefs, which breaks xmlhelp
- redland/raptor/makefile.mk, redland/raptor-1.4.17.patch,
redland/raptor-1.4.18.patch:
+ upgrade raptor to 1.4.18
+ deactivate serializer for RSS/Atom (does not build)
- redland/rasqal/makefile.mk, redland/rasqal-0.9.15.patch,
redland/rasqal-0.9.16.patch,
+ upgrade rasqal to 0.9.16
- redland/redland/makefile.mk, redland/redland-1.0.7.patch,
redland/redland-1.0.8.patch:
+ upgrade redland to 1.0.8
- redland/redlandversion.mk:
+ the librasqal SONAME has changed
2009-07-02 09:05:03 +00:00
|
|
|
|
uno::Reference < embed::XStorage > xStorage = GetMedium()->GetStorage();
|
2004-10-04 17:03:04 +00:00
|
|
|
|
uno::Reference < container::XNameAccess > xAccess (xStorage, uno::UNO_QUERY);
|
2008-12-11 07:05:03 +00:00
|
|
|
|
if (
|
|
|
|
|
(
|
|
|
|
|
xAccess->hasByName( C2S( "content.xml" ) ) &&
|
|
|
|
|
xStorage->isStreamElement( C2S( "content.xml" ) )
|
|
|
|
|
) ||
|
|
|
|
|
(
|
|
|
|
|
xAccess->hasByName( C2S( "Content.xml" ) ) &&
|
|
|
|
|
xStorage->isStreamElement( C2S( "Content.xml" ) )
|
|
|
|
|
)
|
|
|
|
|
)
|
2001-02-02 13:18:01 +00:00
|
|
|
|
{
|
|
|
|
|
// is this a fabulous math package ?
|
2001-10-18 11:32:43 +00:00
|
|
|
|
Reference<com::sun::star::frame::XModel> xModel(GetModel());
|
2009-05-19 09:31:27 +00:00
|
|
|
|
SmXMLImportWrapper aEquation(xModel);
|
2005-01-11 12:08:26 +00:00
|
|
|
|
ULONG nError = aEquation.Import(rMedium);
|
2001-07-19 14:02:02 +00:00
|
|
|
|
bRet = 0 == nError;
|
CWS-TOOLING: integrate CWS fwk103
2009-05-26 12:44:25 +0200 mst r272292 : #i100727#
- svtools/inc/svtools/parhtml.hxx, svtools/source/svhtml/parhtml.cxx:
+ fix warning: rename method to prevent overloading
2009-05-19 13:42:31 +0200 mav r272075 : #i101356# add comment
2009-05-19 10:56:24 +0200 mav r272062 : #i101356# register the singleton correctly
2009-05-19 10:25:42 +0200 mav r272060 : #i101356# register the singleton correctly
2009-05-18 12:48:48 +0200 mav r272013 : #i91306# fix the typo
2009-05-14 08:50:06 +0200 mav r271871 : #i101356# reduce the amount of macros
2009-05-13 13:26:08 +0200 mav r271858 : #i101356# reduce the amount of macros
2009-05-13 11:29:16 +0200 mav r271849 : #i101356# reduce the amount of macros
2009-05-12 12:09:42 +0200 mav r271815 : #i101356# allow to generate a small log if a document can not be stored
2009-05-12 12:03:20 +0200 mav r271814 : #i101356# allow to generate a small log if a document can not be stored
2009-05-12 11:58:48 +0200 mav r271813 : #i101356# allow to generate a small log if a document can not be stored
2009-05-12 11:53:05 +0200 mav r271812 : #i101356# allow to generate a small log if a document can not be stored
2009-05-12 11:48:36 +0200 mav r271810 : #i101356# allow to generate a small log if a document can not be stored
2009-05-12 11:43:45 +0200 mav r271809 : #i101356# allow to generate a small log if a document can not be stored
2009-05-12 11:39:38 +0200 mav r271808 : #i101356# allow to generate a small log if a document can not be stored
2009-05-12 11:37:38 +0200 mav r271806 : #i101356# allow to generate a small log if a document can not be stored
2009-05-12 11:33:58 +0200 mav r271805 : #i101356# allow to generate a small log if a document can not be stored
2009-05-12 11:30:01 +0200 mav r271804 : #i101356# allow to generate a small log if a document can not be stored
2009-05-06 17:43:38 +0200 mst r271607 : #i100727#
- svtools/source/svhtml/parhtml.cxx:
+ adapt code to renaming of HTML constants (sb107)
2009-05-05 11:14:18 +0200 mav r271507 : #i101222# avoid warning
2009-05-05 10:27:23 +0200 mav r271505 : #i101426# send the modified() notification only when the document can be modified
2009-05-05 10:25:07 +0200 mav r271504 : #i101426# send the modified() notification only when the document is modified
2009-05-05 08:42:48 +0200 mav r271497 : CWS-TOOLING: rebase CWS fwk103 to trunk@271427 (milestone: DEV300:m47)
2009-04-30 13:32:11 +0200 mav r271412 : #i100518# check the template folders quietly
2009-04-29 20:04:25 +0200 mst r271393 : - sw/source/filter/html/swhtml.cxx:
+ fix wrong initialization order in constructor
2009-04-28 12:28:46 +0200 mav r271319 : #i99142# set the error correctly
2009-04-28 08:44:48 +0200 mav r271305 : #i99050# clear hidden flag if necessary
2009-04-28 08:40:10 +0200 mav r271304 : #i99050# avoid crash
2009-04-22 07:40:11 +0200 mav r271056 : #i101093# lets not affect the performance
2009-04-15 09:30:47 +0200 cd r270820 : #i99771# Fix warnings for gcc 4.4
2009-04-15 09:19:52 +0200 cd r270819 : #i99771# Fix warnings for gcc 4.4
2009-04-15 08:42:34 +0200 cd r270817 : #i99771# Fix warnings for gcc 4.4
2009-04-14 14:31:01 +0200 mav r270768 : #i99493# fix typo
2009-04-01 12:45:43 +0200 mst r270317 : fix #i100727#
- svtools/inc/svtools/svparser.hxx, svtools/source/svrtf/svparser.cxx,
sfx2/inc/sfx2/docfile.hxx, sfx2/source/doc/{objmisc.cxx,docfile.cxx}:
+ move SvKeyValue stuff from sfx2 to svtools
- svtools/inc/svtools/parhtml.hxx, svtools/source/svhtml/parhtml.cxx,
sfx2/inc/sfx2/sfxhtml.hxx, sfx2/source/bastyp/sfxhtml.cxx:
+ move ParseMetaOptions() and GetEncodingByMIME() from SfxHTMLParser (sfx2)
to HTMLParser (svtools)
+ make HTMLParser::ParseMetaOptions() a virtual function
+ HTMLParser::ParseMetaOptions() calls GetExtendedCompatibilityTextEncoding()
+ new template method HTMLParser::AddMetaUserDefined()
- svtools/source/svhtml/makefile.mk:
+ enable exceptions for parhtml.cxx
- dbaccess/source/ui/misc/HtmlReader.cxx,
sc/source/filter/html/htmlpars.cxx:
+ remove encoding related code duplication
- sw/source/filter/html/{swhtml{.hxx,.cxx},htmlfld.cxx}:
+ new SwHTMLParser::AddMetaUserDefined() for import of
DOCINFO field subtypes INFO[1-4]
+ do not use DocumentInfo for import of DOCINFO field subtypes INFO[1-4]
2009-03-31 17:01:35 +0200 mav r270288 : #i91214# fix typo
2009-03-31 15:19:41 +0200 mav r270285 : #i100123# allow to turn OOo locking mechanics off
2009-03-31 15:00:36 +0200 mav r270284 : #i100123# allow to turn OOo locking mechanics off
2009-03-31 12:19:13 +0200 mav r270270 : #i100123# taking the lock file over throws no exception
2009-03-30 13:57:21 +0200 mav r270227 : #i100351# fix the typo
2009-03-30 13:47:26 +0200 mav r270225 : #i99885# let OK be default button
2009-03-29 19:38:55 +0200 mav r270190 : CWS-TOOLING: rebase CWS fwk103 to trunk@270033 (milestone: DEV300:m45)
2009-03-16 16:39:48 +0100 mav r269558 : #i93558# convert the attributes as well
2009-03-13 15:35:55 +0100 mav r269488 : #i93558# improve manifest.xml parsing
2009-03-13 08:47:00 +0100 mav r269454 : #i96205# allow to remove password on SaveAs
2009-03-12 13:36:07 +0100 mav r269398 : #i91306# show special error in case of shared document
2009-03-12 13:33:35 +0100 mav r269397 : #i91306# introduce the new error-message
2009-03-12 11:40:42 +0100 mst r269378 : fix #i90877#
- svtools/source/uno/unoevent.cxx:
+ use proper operator delete[]
2009-02-26 15:23:10 +0100 mav r268526 : #i91214# do not use ATL
2009-02-26 14:19:06 +0100 mav r268516 : #i98909# integrate the patch
2009-02-10 17:29:52 +0100 cd r267568 : #i98649# Make sure that we catch the NoSuchElementException when a module is not installed.
2009-06-16 16:15:54 +00:00
|
|
|
|
SetError( nError, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
|
2001-02-02 13:18:01 +00:00
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
2004-10-04 17:03:04 +00:00
|
|
|
|
|
|
|
|
|
if ( GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
|
2005-04-04 07:04:42 +00:00
|
|
|
|
{
|
|
|
|
|
SetFormulaArranged( FALSE );
|
|
|
|
|
Repaint();
|
|
|
|
|
}
|
2004-10-04 17:03:04 +00:00
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
FinishedLoading( SFX_LOADED_ALL );
|
|
|
|
|
return bRet;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
BOOL SmDocShell::Save()
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::Save" );
|
|
|
|
|
|
2001-05-30 12:45:55 +00:00
|
|
|
|
//! apply latest changes if necessary
|
|
|
|
|
UpdateText();
|
|
|
|
|
|
2004-10-04 17:03:04 +00:00
|
|
|
|
if ( SfxObjectShell::Save() )
|
2001-02-06 15:02:19 +00:00
|
|
|
|
{
|
2007-06-27 11:39:58 +00:00
|
|
|
|
if (!pTree)
|
2001-03-29 18:40:27 +00:00
|
|
|
|
Parse();
|
|
|
|
|
if( pTree && !IsFormulaArranged() )
|
|
|
|
|
ArrangeFormula();
|
|
|
|
|
|
2004-10-04 17:03:04 +00:00
|
|
|
|
Reference<com::sun::star::frame::XModel> xModel(GetModel());
|
2009-05-19 09:31:27 +00:00
|
|
|
|
SmXMLExportWrapper aEquation(xModel);
|
2004-10-04 17:03:04 +00:00
|
|
|
|
aEquation.SetFlat(sal_False);
|
2005-01-11 12:08:26 +00:00
|
|
|
|
return aEquation.Export(*GetMedium());
|
2001-02-06 15:02:19 +00:00
|
|
|
|
}
|
2004-10-04 17:03:04 +00:00
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
2007-06-27 11:39:58 +00:00
|
|
|
|
/*
|
|
|
|
|
* replace bad characters that can not be saved. (#i74144)
|
|
|
|
|
* */
|
|
|
|
|
sal_Bool SmDocShell::ReplaceBadChars()
|
|
|
|
|
{
|
|
|
|
|
sal_Bool bReplace = sal_False;
|
|
|
|
|
if (pEditEngine)
|
|
|
|
|
{
|
|
|
|
|
String aEngTxt( pEditEngine->GetText( LINEEND_LF ) );
|
|
|
|
|
const sal_Unicode *pEngTxt = aEngTxt.GetBuffer();
|
|
|
|
|
xub_StrLen nLen = aEngTxt.Len();
|
|
|
|
|
for (xub_StrLen i = 0; i < nLen && !bReplace; ++i)
|
|
|
|
|
{
|
|
|
|
|
const sal_Unicode c = *pEngTxt++;
|
|
|
|
|
if (c < ' ' && c != '\r' && c != '\n' && c != '\t')
|
|
|
|
|
bReplace = sal_True;
|
|
|
|
|
}
|
|
|
|
|
if (bReplace)
|
|
|
|
|
{
|
|
|
|
|
sal_Unicode *pChgTxt = aEngTxt.GetBufferAccess();
|
|
|
|
|
for (xub_StrLen i = 0; i < nLen; ++i)
|
|
|
|
|
{
|
|
|
|
|
sal_Unicode &rc = *pChgTxt++;
|
|
|
|
|
if (rc < ' ' && rc != '\r' && rc != '\n' && rc != '\t')
|
|
|
|
|
rc = ' ';
|
|
|
|
|
}
|
|
|
|
|
aEngTxt.ReleaseBufferAccess( nLen );
|
|
|
|
|
|
|
|
|
|
aText = aEngTxt;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return bReplace;
|
|
|
|
|
}
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2001-05-30 12:08:34 +00:00
|
|
|
|
void SmDocShell::UpdateText()
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::UpdateText" );
|
|
|
|
|
|
2001-05-30 12:08:34 +00:00
|
|
|
|
if (pEditEngine && pEditEngine->IsModified())
|
|
|
|
|
{
|
|
|
|
|
String aEngTxt( pEditEngine->GetText( LINEEND_LF ) );
|
|
|
|
|
if (GetText() != aEngTxt)
|
|
|
|
|
SetText( aEngTxt );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2005-01-11 12:08:26 +00:00
|
|
|
|
BOOL SmDocShell::SaveAs( SfxMedium& rMedium )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::SaveAs" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
BOOL bRet = FALSE;
|
2001-05-30 12:08:34 +00:00
|
|
|
|
|
|
|
|
|
//! apply latest changes if necessary
|
|
|
|
|
UpdateText();
|
|
|
|
|
|
2005-01-11 12:08:26 +00:00
|
|
|
|
if ( SfxObjectShell::SaveAs( rMedium ) )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2007-06-27 11:39:58 +00:00
|
|
|
|
if (!pTree)
|
2001-03-29 18:40:27 +00:00
|
|
|
|
Parse();
|
|
|
|
|
if( pTree && !IsFormulaArranged() )
|
|
|
|
|
ArrangeFormula();
|
|
|
|
|
|
2004-10-04 17:03:04 +00:00
|
|
|
|
Reference<com::sun::star::frame::XModel> xModel(GetModel());
|
2009-05-19 09:31:27 +00:00
|
|
|
|
SmXMLExportWrapper aEquation(xModel);
|
2004-10-04 17:03:04 +00:00
|
|
|
|
aEquation.SetFlat(sal_False);
|
2005-01-11 12:08:26 +00:00
|
|
|
|
bRet = aEquation.Export(rMedium);
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
return bRet;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL SmDocShell::ConvertTo( SfxMedium &rMedium )
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::ConvertTo" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
BOOL bRet = FALSE;
|
|
|
|
|
const SfxFilter* pFlt = rMedium.GetFilter();
|
2000-11-15 09:47:20 +00:00
|
|
|
|
if( pFlt )
|
|
|
|
|
{
|
2001-03-29 18:40:27 +00:00
|
|
|
|
if( !pTree )
|
|
|
|
|
Parse();
|
|
|
|
|
if( pTree && !IsFormulaArranged() )
|
|
|
|
|
ArrangeFormula();
|
|
|
|
|
|
2001-03-19 09:25:21 +00:00
|
|
|
|
const String& rFltName = pFlt->GetFilterName();
|
|
|
|
|
if(rFltName.EqualsAscii( STAROFFICE_XML ))
|
2001-02-02 11:50:57 +00:00
|
|
|
|
{
|
2001-10-18 11:32:43 +00:00
|
|
|
|
Reference<com::sun::star::frame::XModel> xModel(GetModel());
|
2009-05-19 09:31:27 +00:00
|
|
|
|
SmXMLExportWrapper aEquation(xModel);
|
2001-02-02 11:50:57 +00:00
|
|
|
|
aEquation.SetFlat(sal_False);
|
|
|
|
|
bRet = aEquation.Export(rMedium);
|
|
|
|
|
}
|
2001-03-19 09:25:21 +00:00
|
|
|
|
else if(rFltName.EqualsAscii( MATHML_XML ))
|
2000-11-15 09:47:20 +00:00
|
|
|
|
{
|
2001-10-18 11:32:43 +00:00
|
|
|
|
Reference<com::sun::star::frame::XModel> xModel(GetModel());
|
2009-05-19 09:31:27 +00:00
|
|
|
|
SmXMLExportWrapper aEquation(xModel);
|
2001-02-02 11:50:57 +00:00
|
|
|
|
aEquation.SetFlat(sal_True);
|
2001-02-02 09:20:47 +00:00
|
|
|
|
bRet = aEquation.Export(rMedium);
|
2000-11-15 09:47:20 +00:00
|
|
|
|
}
|
2005-05-13 11:14:02 +00:00
|
|
|
|
else if( pFlt->GetFilterName().EqualsAscii("MathType 3.x"))
|
|
|
|
|
bRet = WriteAsMathType3( rMedium );
|
2000-11-15 09:47:20 +00:00
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
|
return bRet;
|
|
|
|
|
}
|
|
|
|
|
|
2004-10-04 17:03:04 +00:00
|
|
|
|
BOOL SmDocShell::SaveCompleted( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::SaveCompleted" );
|
|
|
|
|
|
2004-10-04 17:03:04 +00:00
|
|
|
|
if( SfxObjectShell::SaveCompleted( xStorage ))
|
2001-02-06 15:02:19 +00:00
|
|
|
|
return TRUE;
|
2004-10-04 17:03:04 +00:00
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SmDocShell::Execute(SfxRequest& rReq)
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::Execute" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
switch (rReq.GetSlot())
|
|
|
|
|
{
|
2004-11-15 15:42:35 +00:00
|
|
|
|
case SID_TEXTMODE:
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2004-11-15 15:42:35 +00:00
|
|
|
|
SmFormat aOldFormat = GetFormat();
|
|
|
|
|
SmFormat aNewFormat( aOldFormat );
|
|
|
|
|
aNewFormat.SetTextmode(!aOldFormat.IsTextmode());
|
|
|
|
|
|
2007-05-25 11:12:32 +00:00
|
|
|
|
SfxUndoManager *pTmpUndoMgr = GetUndoManager();
|
|
|
|
|
if (pTmpUndoMgr)
|
|
|
|
|
pTmpUndoMgr->AddUndoAction(
|
2004-11-15 15:42:35 +00:00
|
|
|
|
new SmFormatAction(this, aOldFormat, aNewFormat));
|
|
|
|
|
|
|
|
|
|
SetFormat( aNewFormat );
|
|
|
|
|
Repaint();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
2001-05-11 12:01:35 +00:00
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
case SID_AUTO_REDRAW :
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2009-09-28 10:46:54 +00:00
|
|
|
|
SmModule *pp = SM_MOD();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
BOOL bRedraw = pp->GetConfig()->IsAutoRedraw();
|
|
|
|
|
pp->GetConfig()->SetAutoRedraw(!bRedraw);
|
|
|
|
|
}
|
2001-05-11 12:01:35 +00:00
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
case SID_LOADSYMBOLS:
|
2006-05-05 07:01:07 +00:00
|
|
|
|
LoadSymbols();
|
2001-05-11 12:01:35 +00:00
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
case SID_SAVESYMBOLS:
|
2006-05-05 07:01:07 +00:00
|
|
|
|
SaveSymbols();
|
2001-05-11 12:01:35 +00:00
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
case SID_FONT:
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2006-01-31 17:33:20 +00:00
|
|
|
|
// get device used to retrieve the FontList
|
|
|
|
|
OutputDevice *pDev = GetPrinter();
|
|
|
|
|
if (!pDev || pDev->GetDevFontCount() == 0)
|
2009-09-28 10:46:54 +00:00
|
|
|
|
pDev = &SM_MOD()->GetDefaultVirtualDev();
|
2006-01-31 17:33:20 +00:00
|
|
|
|
DBG_ASSERT (pDev, "device for font list missing" );
|
|
|
|
|
|
|
|
|
|
SmFontTypeDialog *pFontTypeDialog = new SmFontTypeDialog( NULL, pDev );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2005-05-03 12:51:39 +00:00
|
|
|
|
SmFormat aOldFormat = GetFormat();
|
|
|
|
|
pFontTypeDialog->ReadFrom( aOldFormat );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
if (pFontTypeDialog->Execute() == RET_OK)
|
|
|
|
|
{
|
2005-05-03 12:51:39 +00:00
|
|
|
|
SmFormat aNewFormat( aOldFormat );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
pFontTypeDialog->WriteTo(aNewFormat);
|
2007-05-25 11:12:32 +00:00
|
|
|
|
SfxUndoManager *pTmpUndoMgr = GetUndoManager();
|
|
|
|
|
if (pTmpUndoMgr)
|
|
|
|
|
pTmpUndoMgr->AddUndoAction(
|
2004-11-15 15:42:35 +00:00
|
|
|
|
new SmFormatAction(this, aOldFormat, aNewFormat));
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
SetFormat( aNewFormat );
|
|
|
|
|
Repaint();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
delete pFontTypeDialog;
|
|
|
|
|
}
|
2001-05-11 12:01:35 +00:00
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
case SID_FONTSIZE:
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
|
|
|
|
SmFontSizeDialog *pFontSizeDialog = new SmFontSizeDialog(NULL);
|
|
|
|
|
|
2005-05-03 12:51:39 +00:00
|
|
|
|
SmFormat aOldFormat = GetFormat();
|
|
|
|
|
pFontSizeDialog->ReadFrom( aOldFormat );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
if (pFontSizeDialog->Execute() == RET_OK)
|
|
|
|
|
{
|
2005-05-03 12:51:39 +00:00
|
|
|
|
SmFormat aNewFormat( aOldFormat );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
pFontSizeDialog->WriteTo(aNewFormat);
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2007-05-25 11:12:32 +00:00
|
|
|
|
SfxUndoManager *pTmpUndoMgr = GetUndoManager();
|
|
|
|
|
if (pTmpUndoMgr)
|
|
|
|
|
pTmpUndoMgr->AddUndoAction(
|
2004-11-15 15:42:35 +00:00
|
|
|
|
new SmFormatAction(this, aOldFormat, aNewFormat));
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
SetFormat( aNewFormat );
|
|
|
|
|
Repaint();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
delete pFontSizeDialog;
|
|
|
|
|
}
|
2001-05-11 12:01:35 +00:00
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
case SID_DISTANCE:
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
|
|
|
|
SmDistanceDialog *pDistanceDialog = new SmDistanceDialog(NULL);
|
|
|
|
|
|
2005-05-03 12:51:39 +00:00
|
|
|
|
SmFormat aOldFormat = GetFormat();
|
|
|
|
|
pDistanceDialog->ReadFrom( aOldFormat );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
if (pDistanceDialog->Execute() == RET_OK)
|
|
|
|
|
{
|
2005-05-03 12:51:39 +00:00
|
|
|
|
SmFormat aNewFormat( aOldFormat );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
pDistanceDialog->WriteTo(aNewFormat);
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2007-05-25 11:12:32 +00:00
|
|
|
|
SfxUndoManager *pTmpUndoMgr = GetUndoManager();
|
|
|
|
|
if (pTmpUndoMgr)
|
|
|
|
|
pTmpUndoMgr->AddUndoAction(
|
2004-11-15 15:42:35 +00:00
|
|
|
|
new SmFormatAction(this, aOldFormat, aNewFormat));
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
SetFormat( aNewFormat );
|
|
|
|
|
Repaint();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
delete pDistanceDialog;
|
|
|
|
|
}
|
2001-05-11 12:01:35 +00:00
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
case SID_ALIGN:
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
|
|
|
|
SmAlignDialog *pAlignDialog = new SmAlignDialog(NULL);
|
|
|
|
|
|
2005-05-03 12:51:39 +00:00
|
|
|
|
SmFormat aOldFormat = GetFormat();
|
|
|
|
|
pAlignDialog->ReadFrom( aOldFormat );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
if (pAlignDialog->Execute() == RET_OK)
|
|
|
|
|
{
|
2005-05-03 12:51:39 +00:00
|
|
|
|
SmFormat aNewFormat( aOldFormat );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
pAlignDialog->WriteTo(aNewFormat);
|
2001-05-02 15:58:48 +00:00
|
|
|
|
|
2009-09-28 10:46:54 +00:00
|
|
|
|
SmModule *pp = SM_MOD();
|
2001-05-02 15:58:48 +00:00
|
|
|
|
SmFormat aFmt( pp->GetConfig()->GetStandardFormat() );
|
|
|
|
|
pAlignDialog->WriteTo( aFmt );
|
|
|
|
|
pp->GetConfig()->SetStandardFormat( aFmt );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2007-05-25 11:12:32 +00:00
|
|
|
|
SfxUndoManager *pTmpUndoMgr = GetUndoManager();
|
|
|
|
|
if (pTmpUndoMgr)
|
|
|
|
|
pTmpUndoMgr->AddUndoAction(
|
2004-11-15 15:42:35 +00:00
|
|
|
|
new SmFormatAction(this, aOldFormat, aNewFormat));
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
SetFormat( aNewFormat );
|
|
|
|
|
Repaint();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
delete pAlignDialog;
|
|
|
|
|
}
|
2001-05-11 12:01:35 +00:00
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
case SID_TEXT:
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2010-07-23 17:21:05 +02:00
|
|
|
|
const SfxStringItem& rItem = (const SfxStringItem&)rReq.GetArgs()->Get(SID_TEXT);
|
2000-09-18 16:07:07 +00:00
|
|
|
|
if (GetText() != rItem.GetValue())
|
|
|
|
|
SetText(rItem.GetValue());
|
|
|
|
|
}
|
2001-05-11 12:01:35 +00:00
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
case SID_UNDO:
|
|
|
|
|
case SID_REDO:
|
2001-10-12 14:57:24 +00:00
|
|
|
|
{
|
2007-05-25 11:12:32 +00:00
|
|
|
|
SfxUndoManager* pTmpUndoMgr = GetUndoManager();
|
|
|
|
|
if( pTmpUndoMgr )
|
2001-10-12 14:57:24 +00:00
|
|
|
|
{
|
|
|
|
|
USHORT nId = rReq.GetSlot(), nCnt = 1;
|
|
|
|
|
const SfxItemSet* pArgs = rReq.GetArgs();
|
|
|
|
|
const SfxPoolItem* pItem;
|
|
|
|
|
if( pArgs && SFX_ITEM_SET == pArgs->GetItemState( nId, FALSE, &pItem ))
|
|
|
|
|
nCnt = ((SfxUInt16Item*)pItem)->GetValue();
|
|
|
|
|
|
|
|
|
|
BOOL (SfxUndoManager:: *fnDo)( USHORT );
|
|
|
|
|
|
|
|
|
|
sal_uInt16 nCount;
|
|
|
|
|
if( SID_UNDO == rReq.GetSlot() )
|
|
|
|
|
{
|
2007-05-25 11:12:32 +00:00
|
|
|
|
nCount = pTmpUndoMgr->GetUndoActionCount();
|
2001-10-12 14:57:24 +00:00
|
|
|
|
fnDo = &SfxUndoManager::Undo;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2007-05-25 11:12:32 +00:00
|
|
|
|
nCount = pTmpUndoMgr->GetRedoActionCount();
|
2001-10-12 14:57:24 +00:00
|
|
|
|
fnDo = &SfxUndoManager::Redo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for( ; nCnt && nCount; --nCnt, --nCount )
|
2007-05-25 11:12:32 +00:00
|
|
|
|
(pTmpUndoMgr->*fnDo)( 0 );
|
2001-10-12 14:57:24 +00:00
|
|
|
|
}
|
2004-11-15 15:42:35 +00:00
|
|
|
|
Repaint();
|
2009-09-18 10:15:03 +00:00
|
|
|
|
SfxViewFrame* pFrm = SfxViewFrame::GetFirst( this );
|
|
|
|
|
while( pFrm )
|
|
|
|
|
{
|
|
|
|
|
SfxBindings& rBind = pFrm->GetBindings();
|
|
|
|
|
rBind.Invalidate(SID_UNDO);
|
|
|
|
|
rBind.Invalidate(SID_REDO);
|
|
|
|
|
rBind.Invalidate(SID_REPEAT);
|
|
|
|
|
rBind.Invalidate(SID_CLEARHISTORY);
|
|
|
|
|
pFrm = SfxViewFrame::GetNext( *pFrm, this );
|
|
|
|
|
}
|
2001-10-12 14:57:24 +00:00
|
|
|
|
}
|
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
2009-09-18 10:15:03 +00:00
|
|
|
|
|
|
|
|
|
rReq.Done();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SmDocShell::GetState(SfxItemSet &rSet)
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::GetState" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
SfxWhichIter aIter(rSet);
|
|
|
|
|
|
|
|
|
|
for (USHORT nWh = aIter.FirstWhich(); 0 != nWh; nWh = aIter.NextWhich())
|
|
|
|
|
{
|
|
|
|
|
switch (nWh)
|
|
|
|
|
{
|
2001-10-12 14:57:24 +00:00
|
|
|
|
case SID_TEXTMODE:
|
|
|
|
|
rSet.Put(SfxBoolItem(SID_TEXTMODE, GetFormat().IsTextmode()));
|
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2001-10-12 14:57:24 +00:00
|
|
|
|
case SID_DOCTEMPLATE :
|
2004-11-15 15:42:35 +00:00
|
|
|
|
rSet.DisableItem(SID_DOCTEMPLATE);
|
2001-10-12 14:57:24 +00:00
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2001-10-12 14:57:24 +00:00
|
|
|
|
case SID_AUTO_REDRAW :
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2009-09-28 10:46:54 +00:00
|
|
|
|
SmModule *pp = SM_MOD();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
BOOL bRedraw = pp->GetConfig()->IsAutoRedraw();
|
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
rSet.Put(SfxBoolItem(SID_AUTO_REDRAW, bRedraw));
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
2001-10-12 14:57:24 +00:00
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2001-10-12 14:57:24 +00:00
|
|
|
|
case SID_MODIFYSTATUS:
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2001-10-12 14:57:24 +00:00
|
|
|
|
sal_Unicode cMod = ' ';
|
2000-09-18 16:07:07 +00:00
|
|
|
|
if (IsModified())
|
|
|
|
|
cMod = '*';
|
|
|
|
|
rSet.Put(SfxStringItem(SID_MODIFYSTATUS, String(cMod)));
|
|
|
|
|
}
|
2001-10-12 14:57:24 +00:00
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2001-10-12 14:57:24 +00:00
|
|
|
|
case SID_TEXT:
|
|
|
|
|
rSet.Put(SfxStringItem(SID_TEXT, GetText()));
|
|
|
|
|
break;
|
|
|
|
|
|
2004-03-17 08:50:33 +00:00
|
|
|
|
case SID_GAPHIC_SM:
|
2010-07-28 09:46:36 +02:00
|
|
|
|
//! very old (pre UNO) and ugly hack to invalidate the SmGraphicWindow.
|
|
|
|
|
//! If nModifyCount gets changed then the call below will implicitly notify
|
|
|
|
|
//! SmGraphicController::StateChanged and there the window gets invalidated.
|
|
|
|
|
//! Thus all the 'nModifyCount++' before invalidating this slot.
|
2004-03-17 08:50:33 +00:00
|
|
|
|
rSet.Put(SfxInt16Item(SID_GAPHIC_SM, nModifyCount));
|
2001-10-12 14:57:24 +00:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case SID_UNDO:
|
|
|
|
|
case SID_REDO:
|
|
|
|
|
{
|
|
|
|
|
SfxViewFrame* pFrm = SfxViewFrame::GetFirst( this );
|
|
|
|
|
if( pFrm )
|
|
|
|
|
pFrm->GetSlotState( nWh, NULL, &rSet );
|
|
|
|
|
else
|
|
|
|
|
rSet.DisableItem( nWh );
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case SID_GETUNDOSTRINGS:
|
|
|
|
|
case SID_GETREDOSTRINGS:
|
|
|
|
|
{
|
2007-05-25 11:12:32 +00:00
|
|
|
|
SfxUndoManager* pTmpUndoMgr = GetUndoManager();
|
|
|
|
|
if( pTmpUndoMgr )
|
2001-10-12 14:57:24 +00:00
|
|
|
|
{
|
2004-11-15 15:42:35 +00:00
|
|
|
|
UniString(SfxUndoManager:: *fnGetComment)( USHORT ) const;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2001-10-12 14:57:24 +00:00
|
|
|
|
sal_uInt16 nCount;
|
|
|
|
|
if( SID_GETUNDOSTRINGS == nWh )
|
|
|
|
|
{
|
2007-05-25 11:12:32 +00:00
|
|
|
|
nCount = pTmpUndoMgr->GetUndoActionCount();
|
2001-10-12 14:57:24 +00:00
|
|
|
|
fnGetComment = &SfxUndoManager::GetUndoActionComment;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2007-05-25 11:12:32 +00:00
|
|
|
|
nCount = pTmpUndoMgr->GetRedoActionCount();
|
2001-10-12 14:57:24 +00:00
|
|
|
|
fnGetComment = &SfxUndoManager::GetRedoActionComment;
|
|
|
|
|
}
|
|
|
|
|
if( nCount )
|
|
|
|
|
{
|
|
|
|
|
String sList;
|
|
|
|
|
for( sal_uInt16 n = 0; n < nCount; ++n )
|
2007-05-25 11:12:32 +00:00
|
|
|
|
( sList += (pTmpUndoMgr->*fnGetComment)( n ) )
|
2001-10-12 14:57:24 +00:00
|
|
|
|
+= '\n';
|
|
|
|
|
|
|
|
|
|
SfxStringListItem aItem( nWh );
|
|
|
|
|
aItem.SetString( sList );
|
|
|
|
|
rSet.Put( aItem );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
rSet.DisableItem( nWh );
|
|
|
|
|
}
|
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2001-03-08 08:24:49 +00:00
|
|
|
|
SfxUndoManager *SmDocShell::GetUndoManager()
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::GetUndoManager" );
|
|
|
|
|
|
2001-03-08 08:24:49 +00:00
|
|
|
|
if (!pEditEngine)
|
|
|
|
|
GetEditEngine();
|
|
|
|
|
return &pEditEngine->GetUndoManager();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SmDocShell::SaveSymbols()
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::SaveSymbols" );
|
|
|
|
|
|
2009-09-28 10:46:54 +00:00
|
|
|
|
SmModule *pp = SM_MOD();
|
|
|
|
|
pp->GetSymbolManager().Save();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SmDocShell::Draw(OutputDevice *pDevice,
|
|
|
|
|
const JobSetup &,
|
2007-05-25 11:12:32 +00:00
|
|
|
|
USHORT /*nAspect*/)
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::Draw" );
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
pDevice->IntersectClipRegion(GetVisArea());
|
|
|
|
|
Point atmppoint;
|
|
|
|
|
Draw(*pDevice, atmppoint);
|
|
|
|
|
}
|
|
|
|
|
|
2007-05-25 11:12:32 +00:00
|
|
|
|
SfxItemPool& SmDocShell::GetPool() const
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
|
|
|
|
return SFX_APP()->GetPool();
|
|
|
|
|
}
|
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
void SmDocShell::SetVisArea(const Rectangle & rVisArea)
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::SetVisArea" );
|
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
Rectangle aNewRect(rVisArea);
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
aNewRect.SetPos(Point());
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2004-11-15 15:42:35 +00:00
|
|
|
|
if (! aNewRect.Right()) aNewRect.Right() = 2000;
|
|
|
|
|
if (! aNewRect.Bottom()) aNewRect.Bottom() = 1000;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
BOOL bIsEnabled = IsEnableSetModified();
|
|
|
|
|
if ( bIsEnabled )
|
|
|
|
|
EnableSetModified( FALSE );
|
|
|
|
|
|
2004-10-04 17:03:04 +00:00
|
|
|
|
//TODO/LATER: it's unclear how this interacts with the SFX code
|
2000-09-18 16:07:07 +00:00
|
|
|
|
// If outplace editing, then dont resize the OutplaceWindow. But the
|
|
|
|
|
// ObjectShell has to resize. Bug 56470
|
|
|
|
|
BOOL bUnLockFrame;
|
2004-10-04 17:03:04 +00:00
|
|
|
|
if( GetCreateMode() == SFX_CREATE_MODE_EMBEDDED && !IsInPlaceActive() && GetFrame() )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
|
|
|
|
GetFrame()->LockAdjustPosSizePixel();
|
|
|
|
|
bUnLockFrame = TRUE;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
bUnLockFrame = FALSE;
|
|
|
|
|
|
2004-10-04 17:03:04 +00:00
|
|
|
|
SfxObjectShell::SetVisArea( aNewRect );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
if( bUnLockFrame )
|
|
|
|
|
GetFrame()->UnlockAdjustPosSizePixel();
|
|
|
|
|
|
|
|
|
|
if ( bIsEnabled )
|
|
|
|
|
EnableSetModified( bIsEnabled );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SmDocShell::FillClass(SvGlobalName* pClassName,
|
2005-12-14 13:59:39 +00:00
|
|
|
|
sal_uInt32* pFormat,
|
2007-05-25 11:12:32 +00:00
|
|
|
|
String* /*pAppName*/,
|
2000-09-18 16:07:07 +00:00
|
|
|
|
String* pFullTypeName,
|
|
|
|
|
String* pShortTypeName,
|
2008-12-12 12:52:51 +00:00
|
|
|
|
sal_Int32 nFileFormat,
|
|
|
|
|
sal_Bool bTemplate /* = sal_False */) const
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::FillClass" );
|
|
|
|
|
|
2004-10-04 17:03:04 +00:00
|
|
|
|
if (nFileFormat == SOFFICE_FILEFORMAT_60 )
|
2001-02-06 15:02:19 +00:00
|
|
|
|
{
|
2004-01-28 13:43:46 +00:00
|
|
|
|
*pClassName = SvGlobalName(SO3_SM_CLASSID_60);
|
|
|
|
|
*pFormat = SOT_FORMATSTR_ID_STARMATH_60;
|
2005-07-12 13:09:23 +00:00
|
|
|
|
*pFullTypeName = String(SmResId(STR_MATH_DOCUMENT_FULLTYPE_CURRENT));
|
2001-02-06 15:02:19 +00:00
|
|
|
|
*pShortTypeName = String(SmResId(RID_DOCUMENTSTR));
|
|
|
|
|
}
|
2004-07-13 08:30:23 +00:00
|
|
|
|
else if (nFileFormat == SOFFICE_FILEFORMAT_8 )
|
|
|
|
|
{
|
|
|
|
|
*pClassName = SvGlobalName(SO3_SM_CLASSID_60);
|
2008-12-12 12:52:51 +00:00
|
|
|
|
*pFormat = bTemplate ? SOT_FORMATSTR_ID_STARMATH_8_TEMPLATE : SOT_FORMATSTR_ID_STARMATH_8;
|
2005-07-12 13:09:23 +00:00
|
|
|
|
*pFullTypeName = String(SmResId(STR_MATH_DOCUMENT_FULLTYPE_CURRENT));
|
2004-07-13 08:30:23 +00:00
|
|
|
|
*pShortTypeName = String(SmResId(RID_DOCUMENTSTR));
|
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ULONG SmDocShell::GetMiscStatus() const
|
|
|
|
|
{
|
2004-10-04 17:03:04 +00:00
|
|
|
|
return SfxObjectShell::GetMiscStatus() | SVOBJ_MISCSTATUS_NOTRESIZEABLE
|
2000-09-18 16:07:07 +00:00
|
|
|
|
| SVOBJ_MISCSTATUS_RESIZEONPRINTERCHANGE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SmDocShell::SetModified(BOOL bModified)
|
|
|
|
|
{
|
2004-11-26 13:23:53 +00:00
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::SetModified" );
|
|
|
|
|
|
2002-01-30 10:47:52 +00:00
|
|
|
|
if( IsEnableSetModified() )
|
2007-06-26 15:03:31 +00:00
|
|
|
|
{
|
2002-01-30 10:47:52 +00:00
|
|
|
|
SfxObjectShell::SetModified( bModified );
|
2007-06-26 15:03:31 +00:00
|
|
|
|
Broadcast(SfxSimpleHint(SFX_HINT_DOCCHANGED));
|
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
2005-05-13 11:14:02 +00:00
|
|
|
|
BOOL SmDocShell::WriteAsMathType3( SfxMedium& rMedium )
|
|
|
|
|
{
|
|
|
|
|
RTL_LOGFILE_CONTEXT( aLog, "starmath: SmDocShell::WriteAsMathType3" );
|
|
|
|
|
|
|
|
|
|
MathType aEquation( aText, pTree );
|
|
|
|
|
|
|
|
|
|
BOOL bRet = 0 != aEquation.ConvertFromStarMath( rMedium );
|
|
|
|
|
return bRet;
|
|
|
|
|
}
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|