summaryrefslogtreecommitdiff
path: root/sw/source/ui/uiview/viewdlg2.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/ui/uiview/viewdlg2.cxx')
-rw-r--r--sw/source/ui/uiview/viewdlg2.cxx241
1 files changed, 241 insertions, 0 deletions
diff --git a/sw/source/ui/uiview/viewdlg2.cxx b/sw/source/ui/uiview/viewdlg2.cxx
new file mode 100644
index 000000000000..a6a64078840d
--- /dev/null
+++ b/sw/source/ui/uiview/viewdlg2.cxx
@@ -0,0 +1,241 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * 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.
+ *
+ * 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).
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sw.hxx"
+
+
+#include <sfx2/request.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <sfx2/objface.hxx>
+
+#include <fldmgr.hxx>
+#include <expfld.hxx>
+#include <modcfg.hxx>
+
+#include <tools/shl.hxx>
+
+#include "swmodule.hxx"
+#include "view.hxx"
+#include "wview.hxx"
+#include "wrtsh.hxx"
+#include "cmdid.h"
+#include "caption.hxx"
+#include "poolfmt.hxx"
+#include "edtwin.hxx"
+#include <SwStyleNameMapper.hxx>
+
+#include "swabstdlg.hxx"
+#include "frmui.hrc"
+#include "misc.hrc"
+
+#include "view.hrc"
+
+extern String* pOldGrfCat;
+extern String* pOldTabCat;
+extern String* pOldFrmCat;
+extern String* pOldDrwCat;
+
+/* -----------------06.11.98 13:45-------------------
+ *
+ * --------------------------------------------------*/
+
+void SwView::ExecDlgExt(SfxRequest &rReq)
+{
+ Window *pMDI = &GetViewFrame()->GetWindow();
+
+ switch ( rReq.GetSlot() )
+ {
+ case FN_INSERT_CAPTION:
+ {
+ SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
+ DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!");
+
+ VclAbstractDialog* pDialog = pFact->CreateSwCaptionDialog( pMDI, *this, DLG_CAPTION );
+ DBG_ASSERT(pDialog, "Dialogdiet fail!");
+ if ( pDialog )
+ {
+ pDialog->Execute();
+ delete pDialog;
+ }
+ break;
+ }
+ case FN_EDIT_FOOTNOTE:
+ {
+ SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
+ DBG_ASSERT(pFact, "Dialogdiet fail!");
+ AbstractInsFootNoteDlg* pDlg = pFact->CreateInsFootNoteDlg( DLG_INS_FOOTNOTE,
+ pMDI, *pWrtShell, TRUE );
+ DBG_ASSERT(pDlg, "Dialogdiet fail!");
+
+ pDlg->SetHelpId(GetStaticInterface()->GetSlot(FN_EDIT_FOOTNOTE)->GetCommand());
+ pDlg->SetText( SW_RESSTR(STR_EDIT_FOOTNOTE) );
+ pDlg->Execute();
+ delete pDlg;
+ break;
+ }
+ }
+}
+
+/* -----------------06.11.98 14:53-------------------
+ *
+ * --------------------------------------------------*/
+
+void SwView::AutoCaption(const USHORT nType, const SvGlobalName *pOleId)
+{
+ SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
+
+ BOOL bWeb = 0 != PTR_CAST(SwWebView, this);
+ if (pModOpt->IsInsWithCaption(bWeb))
+ {
+ const InsCaptionOpt *pOpt = pModOpt->GetCapOption(bWeb, (SwCapObjType)nType, pOleId);
+ if (pOpt && pOpt->UseCaption() == TRUE)
+ InsertCaption(pOpt);
+ }
+}
+
+/* -----------------06.11.98 12:58-------------------
+ *
+ * --------------------------------------------------*/
+
+void SwView::InsertCaption(const InsCaptionOpt *pOpt)
+{
+ if (!pOpt)
+ return;
+
+ const String &rName = pOpt->GetCategory();
+
+ // Existiert Pool-Vorlage gleichen Namens?
+ SwWrtShell &rSh = GetWrtShell();
+ if(rName.Len())
+ {
+ USHORT nPoolId = SwStyleNameMapper::GetPoolIdFromUIName(rName, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL);
+ if( USHRT_MAX != nPoolId )
+ rSh.GetTxtCollFromPool(nPoolId);
+ // Pool-Vorlage existiert nicht: Existiert sie am Dokument?
+ else if( !rSh.GetParaStyle(rName) )
+ {
+ // Sie existiert auch nicht am Dokument: erzeugen
+ SwTxtFmtColl* pDerivedFrom = rSh.GetTxtCollFromPool(RES_POOLCOLL_LABEL);
+ rSh.MakeTxtFmtColl(rName, pDerivedFrom);
+ }
+ }
+
+ SelectionType eType = rSh.GetSelectionType();
+ if (eType & nsSelectionType::SEL_OLE)
+ eType = nsSelectionType::SEL_GRF;
+
+ // SwLabelType
+ const SwLabelType eT = eType & nsSelectionType::SEL_TBL ? LTYPE_TABLE :
+ eType & nsSelectionType::SEL_FRM ? LTYPE_FLY :
+ eType == nsSelectionType::SEL_TXT ? LTYPE_FLY :
+ eType & nsSelectionType::SEL_DRW ? LTYPE_DRAW :
+ LTYPE_OBJECT;
+
+ SwFldMgr aMgr(&rSh);
+ SwSetExpFieldType* pFldType =
+ (SwSetExpFieldType*)aMgr.GetFldType(RES_SETEXPFLD, rName);
+ if (!pFldType && rName.Len() )
+ {
+ // Neuen Feldtypen erzeugen
+ SwSetExpFieldType aSwSetExpFieldType(rSh.GetDoc(), rName, nsSwGetSetExpType::GSE_SEQ);
+ aMgr.InsertFldType(aSwSetExpFieldType);
+ pFldType = (SwSetExpFieldType*)aMgr.GetFldType(RES_SETEXPFLD, rName);
+ }
+
+ if (!pOpt->IgnoreSeqOpts())
+ {
+ if (pFldType)
+ {
+ pFldType->SetDelimiter(pOpt->GetSeparator());
+ pFldType->SetOutlineLvl( static_cast< BYTE >(pOpt->GetLevel()) );
+ }
+ }
+
+ USHORT nID = USHRT_MAX;
+ SwFieldType* pType = 0;
+ const USHORT nCount = aMgr.GetFldTypeCount();
+ if( rName.Len() )
+ {
+ for (USHORT i = 0; i < nCount; ++i)
+ {
+ pType = aMgr.GetFldType(USHRT_MAX, i);
+ String aTmpName( pType->GetName() );
+ if (aTmpName == rName && pType->Which() == RES_SETEXPFLD)
+ {
+ nID = i;
+ break;
+ }
+ }
+ }
+ rSh.StartAllAction();
+
+ GetWrtShell().InsertLabel( eT,
+ pOpt->GetCaption(),
+ !pOpt->IgnoreSeqOpts() ? aEmptyStr : pOpt->GetSeparator(),
+ pOpt->GetNumSeparator(),
+ !pOpt->GetPos(),
+ nID,
+ pOpt->GetCharacterStyle(),
+ pOpt->CopyAttributes() );
+ // Nummernformat setzen
+ if(pType)
+ ((SwSetExpFieldType*)pType)->SetSeqFormat(pOpt->GetNumType());
+
+ rSh.UpdateExpFlds( TRUE );
+
+ rSh.EndAllAction();
+
+ if ( rSh.IsFrmSelected() )
+ {
+ GetEditWin().StopInsFrm();
+ rSh.EnterSelFrmMode();
+ }
+
+ // Kategorie merken
+ String** ppStr = 0;
+ if (eType & nsSelectionType::SEL_GRF)
+ ppStr = &pOldGrfCat;
+ else if( eType & nsSelectionType::SEL_TBL)
+ ppStr = &pOldTabCat;
+ else if( eType & nsSelectionType::SEL_FRM)
+ ppStr = &pOldFrmCat;
+ else if( eType == nsSelectionType::SEL_TXT)
+ ppStr = &pOldFrmCat;
+ else if( eType & nsSelectionType::SEL_DRW)
+ ppStr = &pOldDrwCat;
+
+ if( ppStr )
+ {
+ if( !*ppStr )
+ *ppStr = new String( rName );
+ else
+ **ppStr = rName;
+ }
+}
+
+