Avoid potential negative array index access to cached text.
[LibreOffice.git] / formula / source / ui / dlg / ControlHelper.hxx
blob2495474516cee97d8580974dca0bbb11a0b12691
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 #pragma once
21 #include <formula/funcutl.hxx>
23 namespace formula
26 class ParaWin;
29 class ArgEdit : public RefEdit
31 public:
32 ArgEdit(std::unique_ptr<weld::Entry> xControl);
34 void Init(ArgEdit* pPrevEdit, ArgEdit* pNextEdit,
35 weld::ScrolledWindow& rArgSlider,
36 ParaWin& rParaWin, sal_uInt16 nArgCount);
38 protected:
39 virtual bool KeyInput(const KeyEvent& rKEvt) override;
41 private:
42 ArgEdit* pEdPrev;
43 ArgEdit* pEdNext;
44 weld::ScrolledWindow* pSlider;
45 ParaWin* pParaWin;
46 sal_uInt16 nArgs;
51 class ArgInput final
53 private:
54 Link<ArgInput&,void> aFxClickLink;
55 Link<ArgInput&,void> aFxFocusLink;
56 Link<ArgInput&,void> aEdFocusLink;
57 Link<ArgInput&,void> aEdModifyLink;
59 weld::Label*pFtArg;
60 weld::Button* pBtnFx;
61 ArgEdit* pEdArg;
62 RefButton* pRefBtn;
64 DECL_LINK( FxBtnClickHdl, weld::Button&, void );
65 DECL_LINK( FxBtnFocusHdl, weld::Widget&, void );
66 DECL_LINK( EdFocusHdl, RefEdit&, void );
67 DECL_LINK( EdModifyHdl, RefEdit&, void );
69 public:
71 ArgInput();
73 void InitArgInput(weld::Label* pftArg,
74 weld::Button* pbtnFx,
75 ArgEdit* pedArg,
76 RefButton* prefBtn);
78 void SetArgName(const OUString &aArg);
79 OUString GetArgName() const;
80 void SetArgNameFont(const vcl::Font&);
82 void SetArgVal(const OUString &aVal);
83 OUString GetArgVal() const;
85 void SelectAll();
87 ArgEdit* GetArgEdPtr() { return pEdArg; }
90 void SetFxClickHdl( const Link<ArgInput&,void>& rLink ) { aFxClickLink = rLink; }
92 void SetFxFocusHdl( const Link<ArgInput&,void>& rLink ) { aFxFocusLink = rLink; }
94 void SetEdFocusHdl( const Link<ArgInput&,void>& rLink ) { aEdFocusLink = rLink; }
96 void SetEdModifyHdl( const Link<ArgInput&,void>& rLink ) { aEdModifyLink = rLink; }
98 void Hide();
99 void Show();
101 void UpdateAccessibleNames();
106 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */