summaryrefslogtreecommitdiffstats
path: root/starmath/inc/edit.hxx
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--starmath/inc/edit.hxx134
1 files changed, 134 insertions, 0 deletions
diff --git a/starmath/inc/edit.hxx b/starmath/inc/edit.hxx
new file mode 100644
index 000000000..c1ce769ab
--- /dev/null
+++ b/starmath/inc/edit.hxx
@@ -0,0 +1,134 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed
+ * with this work for additional information regarding copyright
+ * ownership. The ASF licenses this file to you under the Apache
+ * License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 .
+ */
+#ifndef INCLUDED_STARMATH_INC_EDIT_HXX
+#define INCLUDED_STARMATH_INC_EDIT_HXX
+
+#include <vcl/window.hxx>
+#include <vcl/idle.hxx>
+#include <vcl/transfer.hxx>
+#include <editeng/editdata.hxx>
+#include <memory>
+
+class SmDocShell;
+class SmViewShell;
+class EditView;
+class EditEngine;
+class EditStatus;
+class ScrollBar;
+class ScrollBarBox;
+class DataChangedEvent;
+class SmCmdBoxWindow;
+class SmEditAccessible;
+class CommandEvent;
+class Timer;
+
+namespace svtools { class ColorConfig; }
+
+void SmGetLeftSelectionPart(const ESelection &rSelection, sal_Int32 &nPara, sal_uInt16 &nPos);
+
+class SmEditWindow final : public vcl::Window, public DropTargetHelper
+{
+ rtl::Reference<SmEditAccessible> mxAccessible;
+
+ SmCmdBoxWindow& rCmdBox;
+ std::unique_ptr<EditView> pEditView;
+ VclPtr<ScrollBar> pHScrollBar;
+ VclPtr<ScrollBar> pVScrollBar;
+ VclPtr<ScrollBarBox> pScrollBox;
+ Idle aModifyIdle;
+ Idle aCursorMoveIdle;
+ ESelection aOldSelection;
+
+ virtual void KeyInput(const KeyEvent& rKEvt) override;
+ virtual void Command(const CommandEvent& rCEvt) override;
+
+ DECL_LINK(ModifyTimerHdl, Timer *, void);
+ DECL_LINK(CursorMoveTimerHdl, Timer *, void);
+
+ virtual void ApplySettings(vcl::RenderContext&) override;
+ virtual void DataChanged( const DataChangedEvent& ) override;
+ virtual void Resize() override;
+ virtual void MouseMove(const MouseEvent &rEvt) override;
+ virtual void MouseButtonUp(const MouseEvent &rEvt) override;
+ virtual void MouseButtonDown(const MouseEvent &rEvt) override;
+
+ virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ) override;
+ virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ) override;
+ virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override;
+
+ DECL_LINK(EditStatusHdl, EditStatus&, void);
+ DECL_LINK(ScrollHdl, ScrollBar*, void);
+
+ void CreateEditView();
+ tools::Rectangle AdjustScrollBars();
+ void SetScrollBarRanges();
+ void InitScrollBars();
+ void InvalidateSlots();
+ void UpdateStatus(bool bSetDocModified);
+
+public:
+ explicit SmEditWindow(SmCmdBoxWindow& rMyCmdBoxWin);
+ virtual ~SmEditWindow() override;
+ virtual void dispose() override;
+
+ SmDocShell* GetDoc();
+ SmViewShell* GetView();
+ EditView* GetEditView();
+ EditEngine* GetEditEngine();
+
+ // Window
+ virtual void SetText(const OUString& rText) override;
+ virtual OUString GetText() const override;
+ virtual void GetFocus() override;
+ virtual void LoseFocus() override;
+
+ ESelection GetSelection() const;
+ void SetSelection(const ESelection& rSel);
+
+ bool IsEmpty() const;
+ bool IsSelected() const;
+ bool IsAllSelected() const;
+ void Cut();
+ void Copy();
+ void Paste();
+ void Delete();
+ void SelectAll();
+ void InsertText(const OUString& rText);
+ void MarkError(const Point &rPos);
+ void SelNextMark();
+ void SelPrevMark();
+ static bool HasMark(const OUString &rText);
+
+ void Flush() override;
+ void DeleteEditView();
+
+ bool HandleWheelCommands(const CommandEvent& rCEvt);
+ bool IsInlineEditEnabled();
+ void StartCursorMove();
+
+ // for Accessibility
+ virtual css::uno::Reference<css::accessibility::XAccessible> CreateAccessible() override;
+
+ using Window::GetAccessible;
+};
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */