diff options
author | Rüdiger Timm <rt@openoffice.org> | 2004-09-17 12:47:53 +0000 |
---|---|---|
committer | Rüdiger Timm <rt@openoffice.org> | 2004-09-17 12:47:53 +0000 |
commit | 716f21bdfc2eb16578bd857bafdd69a37b978569 (patch) | |
tree | 47613a047e7de8a17847ab9b70d5e9d2647c8fbd /sd/source/ui/dlg/SpellDialogChildWindow.cxx | |
parent | 6c3ad04e79ef65d44e5209ed1b372eb176a4f278 (diff) |
INTEGRATION: CWS os19 (1.1.2); FILE ADDED
2004/09/14 08:55:22 af 1.1.2.6: #i33961# Adaption to changes in ViewShellBase.
2004/09/07 14:43:10 af 1.1.2.5: i33933 Turn off the spell check dialog when there are no more sentences.
2004/05/06 06:29:30 os 1.1.2.4: #18881# include corrected
2004/05/04 15:06:18 os 1.1.2.3: #i18881# resync error corrected
2004/05/03 15:27:04 os 1.1.2.2: #i18881# merge error corrected
2003/11/10 10:38:07 af 1.1.2.1: #i22093# Initial revision.
Diffstat (limited to 'sd/source/ui/dlg/SpellDialogChildWindow.cxx')
-rw-r--r-- | sd/source/ui/dlg/SpellDialogChildWindow.cxx | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/sd/source/ui/dlg/SpellDialogChildWindow.cxx b/sd/source/ui/dlg/SpellDialogChildWindow.cxx new file mode 100644 index 000000000000..3dc49679ca4e --- /dev/null +++ b/sd/source/ui/dlg/SpellDialogChildWindow.cxx @@ -0,0 +1,249 @@ +/************************************************************************* + * + * $RCSfile: SpellDialogChildWindow.cxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: rt $ $Date: 2004-09-17 13:47:53 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#include "SpellDialogChildWindow.hxx" +#include <svx/svxids.hrc> +#ifndef _SFXAPP_HXX +#include <sfx2/app.hxx> +#endif +#include <sfx2/bindings.hxx> +#include <sfx2/dispatch.hxx> + +namespace sd{ + +SFX_IMPL_CHILDWINDOW(SpellDialogChildWindow, SID_SPELL_DIALOG) +} + +#include "ViewShell.hxx" +#include "ViewShellBase.hxx" +#include "DrawViewShell.hxx" +#include "OutlineViewShell.hxx" +#ifndef SD_OUTLINER_HXX +#include <Outliner.hxx> +#endif +#include "drawdoc.hxx" + + +namespace sd { + +SpellDialogChildWindow::SpellDialogChildWindow ( + ::Window* pParent, + USHORT nId, + SfxBindings* pBindings, + SfxChildWinInfo* pInfo) + : ::svx::SpellDialogChildWindow (pParent, nId, pBindings, pInfo), + mbOwnOutliner (false), + mpSdOutliner (NULL) +{ + ProvideOutliner(); +} + + + + +SpellDialogChildWindow::~SpellDialogChildWindow (void) +{ + if (mpSdOutliner != NULL) + mpSdOutliner->EndSpelling(); + + if (mbOwnOutliner) + delete mpSdOutliner; +} + + + + + + + + +SfxChildWinInfo SpellDialogChildWindow::GetInfo (void) const +{ + return ::svx::SpellDialogChildWindow::GetInfo(); +} + + + + +void SpellDialogChildWindow::InvalidateSpellDialog (void) +{ + ::svx::SpellDialogChildWindow::InvalidateSpellDialog(); +} + + + + +::svx::SpellPortions SpellDialogChildWindow::GetNextWrongSentence (void) +{ + ::svx::SpellPortions aResult; + + if (mpSdOutliner != NULL) + { + ProvideOutliner(); + aResult = mpSdOutliner->GetNextSpellSentence (); + } + + // Close the spell check dialog when there are no more sentences to + // check. + if (aResult.size() == 0) + { + SfxBoolItem aItem (SID_SPELL_DIALOG, FALSE); + GetBindings().GetDispatcher()->Execute( + SID_SPELL_DIALOG, + SFX_CALLMODE_ASYNCHRON, + &aItem, + 0L); + } + + return aResult; +} + + + + +void SpellDialogChildWindow::ApplyChangedSentence ( + const ::svx::SpellPortions& rChanged) +{ + if (mpSdOutliner != NULL) + { + EditView* pEditView = NULL; + OutlinerView* pOutlinerView = mpSdOutliner->GetView(0); + if (pOutlinerView != NULL) + mpSdOutliner->ApplyChangedSentence ( + pOutlinerView->GetEditView(), + rChanged); + } +} + + + + +void SpellDialogChildWindow::GetFocus (void) +{ + // In order to detect a cursor movement we could compare the + // currently selected text shape with the one that was selected + // when LoseFocus() was called the last time. + // For the time being we instead rely on the DetectChange() method + // in the SdOutliner class. +} + + + + +void SpellDialogChildWindow::LoseFocus() +{ +} + + + + +void SpellDialogChildWindow::ProvideOutliner (void) +{ + ViewShellBase* pViewShellBase = PTR_CAST (ViewShellBase, SfxViewShell::Current()); + + if (pViewShellBase != NULL) + { + ViewShell* pViewShell = pViewShellBase->GetMainViewShell(); + // If there already exists an outliner that has been created + // for another view shell then destroy it first. + if (mpSdOutliner != NULL) + if ((pViewShell->ISA(DrawViewShell) && ! mbOwnOutliner) + || (pViewShell->ISA(OutlineViewShell) && mbOwnOutliner)) + { + mpSdOutliner->EndSpelling(); + if (mbOwnOutliner) + delete mpSdOutliner; + mpSdOutliner = NULL; + } + + // Now create/get an outliner if none is present. + if (mpSdOutliner == NULL) + { + if (pViewShell->ISA(DrawViewShell)) + { + // We need an outliner for the spell check so we have + // to create one. + mbOwnOutliner = true; + mpSdOutliner = new Outliner ( + pViewShell->GetDoc(), + OUTLINERMODE_TEXTOBJECT); + } + else if (pViewShell->ISA(OutlineViewShell)) + { + // An outline view is already visible. The SdOutliner + // will use it instead of creating its own. + mbOwnOutliner = false; + mpSdOutliner = pViewShell->GetDoc()->GetOutliner(); + } + + // Initialize spelling. + if (mpSdOutliner != NULL) + { + mpSdOutliner->PrepareSpelling(); + mpSdOutliner->StartSpelling(); + } + } + } +} + + + +} // end of namespace ::sd |