summaryrefslogtreecommitdiff
path: root/sd/source/ui/dlg/SpellDialogChildWindow.cxx
diff options
context:
space:
mode:
authorRüdiger Timm <rt@openoffice.org>2004-09-17 12:47:53 +0000
committerRüdiger Timm <rt@openoffice.org>2004-09-17 12:47:53 +0000
commit716f21bdfc2eb16578bd857bafdd69a37b978569 (patch)
tree47613a047e7de8a17847ab9b70d5e9d2647c8fbd /sd/source/ui/dlg/SpellDialogChildWindow.cxx
parent6c3ad04e79ef65d44e5209ed1b372eb176a4f278 (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.cxx249
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