LibreOffice Module formula (master) 1
parawin.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
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/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
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 .
18 */
19
20#include <comphelper/string.hxx>
21#include <vcl/svapp.hxx>
22#include <sal/log.hxx>
23
24#include "parawin.hxx"
26#include <formula/funcvarargs.h>
27#include <strings.hrc>
28#include <bitmaps.hlst>
29#include <core_resource.hxx>
30
31namespace formula
32{
33
34// Formula token argument count is sal_uInt8, max 255, edit offset 254.
35constexpr sal_uInt16 kMaxArgCount = 255;
36constexpr sal_uInt16 kMaxArgOffset = kMaxArgCount - 1;
37
39 : pFuncDesc(nullptr)
40 , pMyParent(_pDlg)
41 , m_sOptional(ForResId(STR_OPTIONAL))
42 , m_sRequired(ForResId(STR_REQUIRED))
43 , m_xBuilder(Application::CreateBuilder(pParent, "formula/ui/parameter.ui"))
44 , m_xContainer(m_xBuilder->weld_container("ParameterPage"))
45 , m_xSlider(m_xBuilder->weld_scrolled_window("scrollbar", true))
46 , m_xParamGrid(m_xBuilder->weld_widget("paramgrid"))
47 , m_xGrid(m_xBuilder->weld_widget("grid"))
48 , m_xFtEditDesc(m_xBuilder->weld_label("editdesc"))
49 , m_xFtArgName(m_xBuilder->weld_label("parname"))
50 , m_xFtArgDesc(m_xBuilder->weld_label("pardesc"))
51 , m_xBtnFx1(m_xBuilder->weld_button("FX1"))
52 , m_xBtnFx2(m_xBuilder->weld_button("FX2"))
53 , m_xBtnFx3(m_xBuilder->weld_button("FX3"))
54 , m_xBtnFx4(m_xBuilder->weld_button("FX4"))
55 , m_xFtArg1(m_xBuilder->weld_label("FT_ARG1"))
56 , m_xFtArg2(m_xBuilder->weld_label("FT_ARG2"))
57 , m_xFtArg3(m_xBuilder->weld_label("FT_ARG3"))
58 , m_xFtArg4(m_xBuilder->weld_label("FT_ARG4"))
59 , m_xEdArg1(new ArgEdit(m_xBuilder->weld_entry("ED_ARG1")))
60 , m_xEdArg2(new ArgEdit(m_xBuilder->weld_entry("ED_ARG2")))
61 , m_xEdArg3(new ArgEdit(m_xBuilder->weld_entry("ED_ARG3")))
62 , m_xEdArg4(new ArgEdit(m_xBuilder->weld_entry("ED_ARG4")))
63 , m_xRefBtn1(new RefButton(m_xBuilder->weld_button("RB_ARG1")))
64 , m_xRefBtn2(new RefButton(m_xBuilder->weld_button("RB_ARG2")))
65 , m_xRefBtn3(new RefButton(m_xBuilder->weld_button("RB_ARG3")))
66 , m_xRefBtn4(new RefButton(m_xBuilder->weld_button("RB_ARG4")))
67{
68 // Space for three lines of text in function description.
69 m_xFtEditDesc->set_label("X\nX\nX\n");
70 auto nEditHeight = m_xFtEditDesc->get_preferred_size().Height();
71 m_xFtEditDesc->set_size_request(-1, nEditHeight);
72 m_xFtEditDesc->set_label("");
73 // Space for two lines of text in parameter description.
74 m_xFtArgDesc->set_label("X\nX\n");
75 auto nArgHeight = m_xFtArgDesc->get_preferred_size().Height();
76 m_xFtArgDesc->set_size_request(-1, nArgHeight);
77 m_xFtArgDesc->set_label("");
78
79 m_xBtnFx1->set_from_icon_name(BMP_FX);
80 m_xBtnFx2->set_from_icon_name(BMP_FX);
81 m_xBtnFx3->set_from_icon_name(BMP_FX);
82 m_xBtnFx4->set_from_icon_name(BMP_FX);
83
84 //lock down initial preferences
85 m_xParamGrid->set_size_request(-1, m_xParamGrid->get_preferred_size().Height());
86 Size aSize(m_xContainer->get_preferred_size());
87 m_xContainer->set_size_request(aSize.Width(), aSize.Height());
88
89 aDefaultString = m_xFtEditDesc->get_label();
91 nActiveLine = 0;
92
93 m_xSlider->connect_vadjustment_changed(LINK(this, ParaWin, ScrollHdl));
94
99 ClearAll();
100}
101
102void ParaWin::UpdateArgDesc( sal_uInt16 nArg )
103{
104 if (nArg == NOT_FOUND)
105 return;
106
107 if (nMaxArgs > 4)
108 nArg = sal::static_int_cast<sal_uInt16>( nArg + GetSliderPos() );
109
110 if ((nMaxArgs <= 0) || (nArg >= nMaxArgs))
111 return;
112
113 OUString aArgDesc;
114 OUString aArgName;
115
116 SetArgumentDesc( OUString() );
117 SetArgumentText( OUString() );
118
119 if ( nArgs < VAR_ARGS )
120 {
121 sal_uInt16 nRealArg = (nArg < aVisibleArgMapping.size()) ? aVisibleArgMapping[nArg] : nArg;
122 aArgDesc = pFuncDesc->getParameterDescription(nRealArg);
123 aArgName = pFuncDesc->getParameterName(nRealArg) + " " +
125 }
126 else if ( nArgs < PAIRED_VAR_ARGS )
127 {
128 sal_uInt16 nFix = nArgs - VAR_ARGS;
129 sal_uInt16 nPos = std::min( nArg, nFix );
130 sal_uInt16 nRealArg = (nPos < aVisibleArgMapping.size() ?
132 aArgDesc = pFuncDesc->getParameterDescription(nRealArg);
133 aArgName = pFuncDesc->getParameterName(nRealArg);
134 sal_uInt16 nVarArgsStart = pFuncDesc->getVarArgsStart();
135 if ( nArg >= nVarArgsStart )
136 aArgName += OUString::number( nArg-nVarArgsStart+1 );
137 aArgName += " " + ((nArg > nFix || pFuncDesc->isParameterOptional(nRealArg)) ? m_sOptional : m_sRequired) ;
138 }
139 else
140 {
141 sal_uInt16 nFix = nArgs - PAIRED_VAR_ARGS;
142 sal_uInt16 nPos;
143 if ( nArg < nFix )
144 nPos = nArg;
145 else
146 nPos = nFix + ( (nArg-nFix) % 2);
147 sal_uInt16 nRealArg = (nPos < aVisibleArgMapping.size() ?
149 aArgDesc = pFuncDesc->getParameterDescription(nRealArg);
150 aArgName = pFuncDesc->getParameterName(nRealArg);
151 sal_uInt16 nVarArgsStart = pFuncDesc->getVarArgsStart();
152 if ( nArg >= nVarArgsStart )
153 aArgName += OUString::number( (nArg-nVarArgsStart)/2 + 1 );
154 aArgName += " " + ((nArg > (nFix+1) || pFuncDesc->isParameterOptional(nRealArg)) ? m_sOptional : m_sRequired) ;
155 }
156
157 SetArgumentDesc(aArgDesc);
158 SetArgumentText(aArgName);
159}
160
161void ParaWin::UpdateArgInput( sal_uInt16 nOffset, sal_uInt16 i )
162{
163 sal_uInt16 nArg = nOffset + i;
164 if (nArg > kMaxArgOffset)
165 return;
166
167 if ( nArgs < VAR_ARGS)
168 {
169 if (nArg < nMaxArgs)
170 {
171 sal_uInt16 nRealArg = aVisibleArgMapping[nArg];
173 ? aFntLight : aFntBold );
175 }
176 }
177 else if ( nArgs < PAIRED_VAR_ARGS)
178 {
179 sal_uInt16 nFix = nArgs - VAR_ARGS;
180 sal_uInt16 nPos = std::min( nArg, nFix );
181 sal_uInt16 nRealArg = (nPos < aVisibleArgMapping.size() ?
184 (nArg > nFix || pFuncDesc->isParameterOptional(nRealArg)) ?
186 sal_uInt16 nVarArgsStart = pFuncDesc->getVarArgsStart();
187 if ( nArg >= nVarArgsStart )
188 {
189 OUString aArgName = pFuncDesc->getParameterName(nRealArg) +
190 OUString::number(nArg-nVarArgsStart+1);
191 SetArgName( i, aArgName );
192 }
193 else
194 SetArgName( i, pFuncDesc->getParameterName(nRealArg) );
195 }
196 else
197 {
198 sal_uInt16 nFix = nArgs - PAIRED_VAR_ARGS;
199 sal_uInt16 nPos;
200 if ( nArg < nFix )
201 nPos = nArg;
202 else
203 nPos = nFix + ( (nArg-nFix) % 2);
204 sal_uInt16 nRealArg = (nPos < aVisibleArgMapping.size() ?
207 (nArg > (nFix+1) || pFuncDesc->isParameterOptional(nRealArg)) ?
209 sal_uInt16 nVarArgsStart = pFuncDesc->getVarArgsStart();
210 if ( nArg >= nVarArgsStart )
211 {
212 OUString aArgName = pFuncDesc->getParameterName(nRealArg) +
213 OUString::number( (nArg-nVarArgsStart)/2 + 1 );
214 SetArgName( i, aArgName );
215 }
216 else
217 SetArgName( i, pFuncDesc->getParameterName(nRealArg) );
218 }
219 if (nArg < nMaxArgs)
221}
222
224{
225 // #i66422# if the focus changes during destruction of the controls,
226 // don't call the focus handlers
227 Link<weld::Widget&,void> aEmptyLink;
228 m_xBtnFx1->connect_focus_in(aEmptyLink);
229 m_xBtnFx2->connect_focus_in(aEmptyLink);
230 m_xBtnFx3->connect_focus_in(aEmptyLink);
231 m_xBtnFx4->connect_focus_in(aEmptyLink);
232}
233
234void ParaWin::SetActiveLine(sal_uInt16 no)
235{
236 if (no >= nMaxArgs)
237 return;
238
239 tools::Long nOffset = GetSliderPos();
240 nActiveLine=no;
241 tools::Long nNewEdPos=static_cast<tools::Long>(nActiveLine)-nOffset;
242 if(nNewEdPos<0 || nNewEdPos>3)
243 {
244 nOffset+=nNewEdPos;
245 SetSliderPos(static_cast<sal_uInt16>(nOffset));
246 nOffset=GetSliderPos();
247 }
248 nEdFocus=no-static_cast<sal_uInt16>(nOffset);
250}
251
253{
254 if (nMaxArgs > 0 && nEdFocus != NOT_FOUND)
255 {
257 }
258 else
259 {
260 return nullptr;
261 }
262}
263
264
265OUString ParaWin::GetArgument(sal_uInt16 no)
266{
267 OUString aStr;
268 if(no<aParaArray.size())
269 {
270 aStr=aParaArray[no];
271 if(no==nActiveLine && aStr.isEmpty())
272 aStr += " ";
273 }
274 return aStr;
275}
276
278{
279 OUString aStr;
280 if (nMaxArgs > 0 && nEdFocus != NOT_FOUND)
281 {
283 }
284 return aStr;
285}
286
287
288void ParaWin::SetArgument(sal_uInt16 no, std::u16string_view aString)
289{
290 if (no < aParaArray.size())
291 aParaArray[no] = comphelper::string::stripStart(aString, ' ');
292}
293
294void ParaWin::SetArgumentFonts(const vcl::Font&aBoldFont,const vcl::Font&aLightFont)
295{
296 aFntBold=aBoldFont;
297 aFntLight=aLightFont;
298}
299
301{
302 pFuncDesc=pFDesc;
303
304 SetArgumentDesc( OUString() );
305 SetArgumentText( OUString() );
306 SetEditDesc( OUString() );
307 nMaxArgs = nArgs = 0;
308 if ( pFuncDesc!=nullptr)
309 {
310 if ( !pFuncDesc->getDescription().isEmpty() )
311 {
313 }
314 else
315 {
317 }
319 nMaxArgs = std::min( nArgs, kMaxArgCount);
320 if (sal_uInt16 nVarArgsLimit = pFuncDesc->getVarArgsLimit())
321 nMaxArgs = std::min( nVarArgsLimit, nMaxArgs);
323 m_xSlider->set_vpolicy(VclPolicyType::NEVER);
324 m_xSlider->set_size_request(-1, -1);
325 OUString sHelpId = pFuncDesc->getHelpId();
326 m_xContainer->set_help_id(sHelpId);
327 m_xEdArg1->GetWidget()->set_help_id(sHelpId);
328 m_xEdArg2->GetWidget()->set_help_id(sHelpId);
329 m_xEdArg3->GetWidget()->set_help_id(sHelpId);
330 m_xEdArg4->GetWidget()->set_help_id(sHelpId);
331
332 SetActiveLine(0);
333 }
334 else
335 {
336 nActiveLine=0;
337 }
338
339}
340
341void ParaWin::SetArgumentText(const OUString& aText)
342{
343 m_xFtArgName->set_label(aText);
344}
345
346void ParaWin::SetArgumentDesc(const OUString& aText)
347{
348 m_xFtArgDesc->set_label(aText);
349}
350
351void ParaWin::SetEditDesc(const OUString& aText)
352{
353 m_xFtEditDesc->set_label(aText);
354}
355
356void ParaWin::SetArgName(sal_uInt16 no,const OUString& aText)
357{
358 aArgInput[no].SetArgName(aText);
360}
361
362void ParaWin::SetArgNameFont(sal_uInt16 no,const vcl::Font& aFont)
363{
364 aArgInput[no].SetArgNameFont(aFont);
365}
366
368{
369 UpdateArgDesc(0);
370 if(!aParaArray.empty())
372}
373
374void ParaWin::InitArgInput(sal_uInt16 nPos, weld::Label& rFtArg, weld::Button& rBtnFx,
375 ArgEdit& rEdArg, RefButton& rRefBtn)
376{
377
378 rRefBtn.SetReferences(pMyParent, &rEdArg);
379 rEdArg.SetReferences(pMyParent, &rFtArg);
380
381 aArgInput[nPos].InitArgInput (&rFtArg,&rBtnFx,&rEdArg,&rRefBtn);
382
384
385 aArgInput[nPos].SetFxClickHdl ( LINK( this, ParaWin, GetFxHdl ) );
386 aArgInput[nPos].SetFxFocusHdl ( LINK( this, ParaWin, GetFxFocusHdl ) );
387 aArgInput[nPos].SetEdFocusHdl ( LINK( this, ParaWin, GetEdFocusHdl ) );
388 aArgInput[nPos].SetEdModifyHdl ( LINK( this, ParaWin, ModifyHdl ) );
390}
391
393{
394 SetFunctionDesc(nullptr);
396}
397
398void ParaWin::SetArgumentOffset(sal_uInt16 nOffset)
399{
400 aParaArray.clear();
401 m_xSlider->vadjustment_set_value(0);
402
403 aParaArray.resize(nMaxArgs);
404
405 if (nMaxArgs > 0)
406 {
407 for ( int i=0; i<4 && i<nMaxArgs; i++ )
408 {
409 aArgInput[i].SetArgVal(OUString());
411 (i==0) ? nullptr : aArgInput[i-1].GetArgEdPtr(),
412 (i==3 || i==nMaxArgs-1) ? nullptr : aArgInput[i+1].GetArgEdPtr(),
413 *m_xSlider, *this, nMaxArgs );
414 }
415 }
416
417 UpdateParas();
418
419 if (nMaxArgs < 5)
420 {
421 m_xSlider->set_vpolicy(VclPolicyType::NEVER);
422 m_xSlider->set_size_request(-1, -1);
423 }
424 else
425 {
426 m_xSlider->vadjustment_configure(nOffset, 0, nMaxArgs, 1, 4, 4);
427 m_xSlider->set_vpolicy(VclPolicyType::ALWAYS);
428 Size aPrefSize(m_xGrid->get_preferred_size());
429 m_xSlider->set_size_request(aPrefSize.Width(), aPrefSize.Height());
430 }
431}
432
434{
435 sal_uInt16 i;
436 sal_uInt16 nOffset = GetSliderPos();
437
438 if ( nMaxArgs > 0 )
439 {
440 for ( i=0; (i<nMaxArgs) && (i<4); i++ )
441 {
442 UpdateArgInput( nOffset, i );
443 aArgInput[i].Show();
444 }
445 }
446
447 for ( i=nMaxArgs; i<4; i++ )
448 aArgInput[i].Hide();
449}
450
451
452sal_uInt16 ParaWin::GetSliderPos() const
453{
454 return static_cast<sal_uInt16>(m_xSlider->vadjustment_get_value());
455}
456
457void ParaWin::SetSliderPos(sal_uInt16 nSliderPos)
458{
459 sal_uInt16 nOffset = GetSliderPos();
460
461 if(m_xSlider->get_visible() && nOffset!=nSliderPos)
462 {
463 m_xSlider->vadjustment_set_value(nSliderPos);
464 for ( sal_uInt16 i=0; i<4; i++ )
465 {
466 UpdateArgInput( nSliderPos, i );
467 }
468 }
469}
470
472{
473 sal_uInt16 nOffset = GetSliderPos();
474
475 for ( sal_uInt16 i=0; i<4; i++ )
476 {
477 UpdateArgInput( nOffset, i );
478 }
480 {
483 nActiveLine=nEdFocus+nOffset;
485 aArgInput[nEdFocus].SelectAll(); // ensure all is still selected
487 }
488}
489
491{
492 aArgModifiedLink.Call(*this);
493}
494
495IMPL_LINK( ParaWin, GetFxHdl, ArgInput&, rPtr, void )
496{
497 sal_uInt16 nOffset = GetSliderPos();
498 nEdFocus=NOT_FOUND;
499 for (size_t nPos=0; nPos < SAL_N_ELEMENTS(aArgInput); ++nPos)
500 {
501 if(&rPtr == &aArgInput[nPos])
502 {
503 nEdFocus=nPos;
504 break;
505 }
506 }
507
508 if(nEdFocus!=NOT_FOUND)
509 {
510 aArgInput[nEdFocus].SelectAll();
511 nActiveLine=nEdFocus+nOffset;
512 aFxLink.Call(*this);
513 }
514}
515
516IMPL_LINK( ParaWin, GetFxFocusHdl, ArgInput&, rPtr, void )
517{
518 sal_uInt16 nOffset = GetSliderPos();
519 nEdFocus=NOT_FOUND;
520 for (size_t nPos=0; nPos < SAL_N_ELEMENTS(aArgInput); ++nPos)
521 {
522 if(&rPtr == &aArgInput[nPos])
523 {
524 nEdFocus=nPos;
525 break;
526 }
527 }
528
529 if(nEdFocus!=NOT_FOUND)
530 {
531 aArgInput[nEdFocus].SelectAll();
532 UpdateArgDesc( nEdFocus );
533 nActiveLine=nEdFocus+nOffset;
534 }
535}
536
537IMPL_LINK( ParaWin, GetEdFocusHdl, ArgInput&, rPtr, void )
538{
539 sal_uInt16 nOffset = GetSliderPos();
540 nEdFocus=NOT_FOUND;
541 for (size_t nPos=0; nPos < SAL_N_ELEMENTS(aArgInput); ++nPos)
542 {
543 if(&rPtr == &aArgInput[nPos])
544 {
545 nEdFocus=nPos;
546 break;
547 }
548 }
549
550 if(nEdFocus!=NOT_FOUND)
551 {
552 aArgInput[nEdFocus].SelectAll();
553 UpdateArgDesc( nEdFocus );
554 nActiveLine=nEdFocus+nOffset;
555 ArgumentModified();
556 aArgInput[nEdFocus].SelectAll(); // ensure all is still selected
557 aArgInput[nEdFocus].UpdateAccessibleNames();
558 }
559}
560
562{
563 SliderMoved();
564}
565
566IMPL_LINK( ParaWin, ModifyHdl, ArgInput&, rPtr, void )
567{
568 sal_uInt16 nOffset = GetSliderPos();
569 nEdFocus=NOT_FOUND;
570 for (size_t nPos=0; nPos < SAL_N_ELEMENTS(aArgInput); ++nPos)
571 {
572 if(&rPtr == &aArgInput[nPos])
573 {
574 nEdFocus=nPos;
575 break;
576 }
577 }
578 if(nEdFocus!=NOT_FOUND)
579 {
580 size_t nPara = nEdFocus + nOffset;
581 if (nPara < aParaArray.size())
582 aParaArray[nPara] = aArgInput[nEdFocus].GetArgVal();
583 else
584 {
585 SAL_WARN("formula.ui","ParaWin::ModifyHdl - shot in foot: nPara " <<
586 nPara << " >= aParaArray.size() " << aParaArray.size() <<
587 " with nEdFocus " << nEdFocus <<
588 " and aArgInput[nEdFocus].GetArgVal() '" << aArgInput[nEdFocus].GetArgVal() << "'");
589 }
590 UpdateArgDesc( nEdFocus);
591 nActiveLine = static_cast<sal_uInt16>(nPara);
592 }
593
594 ArgumentModified();
595}
596
597
598} // formula
599
600/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
constexpr tools::Long Height() const
constexpr tools::Long Width() const
void Init(ArgEdit *pPrevEdit, ArgEdit *pNextEdit, weld::ScrolledWindow &rArgSlider, ParaWin &rParaWin, sal_uInt16 nArgCount)
Definition: funcutl.cxx:44
void SetFxClickHdl(const Link< ArgInput &, void > &rLink)
void SetArgNameFont(const vcl::Font &)
Definition: funcutl.cxx:176
void SetEdModifyHdl(const Link< ArgInput &, void > &rLink)
OUString GetArgName() const
Definition: funcutl.cxx:167
void UpdateAccessibleNames()
Definition: funcutl.cxx:229
void SetFxFocusHdl(const Link< ArgInput &, void > &rLink)
ArgEdit * GetArgEdPtr()
void SetEdFocusHdl(const Link< ArgInput &, void > &rLink)
void InitArgInput(weld::Label *pftArg, weld::Button *pbtnFx, ArgEdit *pedArg, RefButton *prefBtn)
Definition: funcutl.cxx:139
void SetArgName(const OUString &aArg)
Definition: funcutl.cxx:160
void SetArgVal(const OUString &aVal)
Definition: funcutl.cxx:190
virtual OUString getParameterDescription(sal_uInt32 _nPos) const =0
virtual sal_Int32 getSuppressedArgumentCount() const =0
virtual void fillVisibleArgumentMapping(::std::vector< sal_uInt16 > &_rArguments) const =0
virtual sal_uInt32 getVarArgsLimit() const =0
virtual OUString getDescription() const =0
virtual OUString getParameterName(sal_uInt32 _nPos) const =0
virtual bool isParameterOptional(sal_uInt32 _nPos) const =0
virtual sal_uInt32 getVarArgsStart() const =0
virtual OUString getHelpId() const =0
OUString m_sRequired
Definition: parawin.hxx:50
void SetArgumentDesc(const OUString &aText)
Definition: parawin.cxx:346
void SetEditDesc(const OUString &aText)
Definition: parawin.cxx:351
std::unique_ptr< ArgEdit > m_xEdArg1
Definition: parawin.hxx:80
sal_uInt16 nArgs
Definition: parawin.hxx:44
ArgInput aArgInput[4]
Definition: parawin.hxx:55
std::unique_ptr< RefButton > m_xRefBtn3
Definition: parawin.hxx:87
std::unique_ptr< weld::Button > m_xBtnFx1
Definition: parawin.hxx:70
ParaWin(weld::Container *pParent, IControlReferenceHandler *_pDlg)
Definition: parawin.cxx:38
std::unique_ptr< weld::Label > m_xFtArgDesc
Definition: parawin.hxx:68
std::unique_ptr< weld::Label > m_xFtArg4
Definition: parawin.hxx:78
std::unique_ptr< RefButton > m_xRefBtn4
Definition: parawin.hxx:88
sal_uInt16 nMaxArgs
Definition: parawin.hxx:45
std::unique_ptr< weld::Button > m_xBtnFx3
Definition: parawin.hxx:72
vcl::Font aFntLight
Definition: parawin.hxx:47
void SetArgumentFonts(const vcl::Font &aBoldFont, const vcl::Font &aLightFont)
Definition: parawin.cxx:294
std::unique_ptr< weld::Label > m_xFtArg3
Definition: parawin.hxx:77
void SetArgName(sal_uInt16 no, const OUString &aArg)
Definition: parawin.cxx:356
std::unique_ptr< weld::Label > m_xFtEditDesc
Definition: parawin.hxx:66
void ArgumentModified()
Definition: parawin.cxx:490
std::unique_ptr< weld::Container > m_xContainer
Definition: parawin.hxx:60
std::unique_ptr< weld::Label > m_xFtArg2
Definition: parawin.hxx:76
void SetArgNameFont(sal_uInt16 no, const vcl::Font &)
Definition: parawin.cxx:362
std::unique_ptr< weld::Button > m_xBtnFx2
Definition: parawin.hxx:71
std::unique_ptr< weld::Widget > m_xGrid
Definition: parawin.hxx:64
OUString aDefaultString
Definition: parawin.hxx:56
sal_uInt16 nActiveLine
Definition: parawin.hxx:53
sal_uInt16 GetSliderPos() const
Definition: parawin.cxx:452
std::unique_ptr< ArgEdit > m_xEdArg3
Definition: parawin.hxx:82
std::unique_ptr< ArgEdit > m_xEdArg2
Definition: parawin.hxx:81
::std::vector< sal_uInt16 > aVisibleArgMapping
Definition: parawin.hxx:41
void SetArgumentOffset(sal_uInt16 nOffset)
Definition: parawin.cxx:398
std::unique_ptr< RefButton > m_xRefBtn2
Definition: parawin.hxx:86
void SetSliderPos(sal_uInt16 nSliderPos)
Definition: parawin.cxx:457
OUString m_sOptional
Definition: parawin.hxx:49
void UpdateParas()
Definition: parawin.cxx:433
std::unique_ptr< weld::Label > m_xFtArg1
Definition: parawin.hxx:75
void UpdateArgInput(sal_uInt16 nOffset, sal_uInt16 i)
Definition: parawin.cxx:161
std::unique_ptr< RefButton > m_xRefBtn1
Definition: parawin.hxx:85
::std::vector< OUString > aParaArray
Definition: parawin.hxx:57
std::unique_ptr< weld::Widget > m_xParamGrid
Definition: parawin.hxx:63
Link< ParaWin &, void > aArgModifiedLink
Definition: parawin.hxx:39
IControlReferenceHandler * pMyParent
Definition: parawin.hxx:43
void SetArgument(sal_uInt16 no, std::u16string_view aString)
Definition: parawin.cxx:288
void SetFunctionDesc(const IFunctionDescription *pFDesc)
Definition: parawin.cxx:300
RefEdit * GetActiveEdit()
Definition: parawin.cxx:252
const IFunctionDescription * pFuncDesc
Definition: parawin.hxx:42
std::unique_ptr< weld::Label > m_xFtArgName
Definition: parawin.hxx:67
void SliderMoved()
Definition: parawin.cxx:471
void InitArgInput(sal_uInt16 nPos, weld::Label &rFtArg, weld::Button &rBtnFx, ArgEdit &rEdArg, RefButton &rRefBtn)
Definition: parawin.cxx:374
std::unique_ptr< ArgEdit > m_xEdArg4
Definition: parawin.hxx:83
void SetEdFocus()
Definition: parawin.cxx:367
std::unique_ptr< weld::ScrolledWindow > m_xSlider
Definition: parawin.hxx:62
vcl::Font aFntBold
Definition: parawin.hxx:46
void SetActiveLine(sal_uInt16 no)
Definition: parawin.cxx:234
void UpdateArgDesc(sal_uInt16 nArg)
Definition: parawin.cxx:102
OUString GetArgument(sal_uInt16 no)
Definition: parawin.cxx:265
OUString GetActiveArgName() const
Definition: parawin.cxx:277
std::unique_ptr< weld::Button > m_xBtnFx4
Definition: parawin.hxx:73
sal_uInt16 nEdFocus
Definition: parawin.hxx:52
void SetArgumentText(const OUString &aText)
Definition: parawin.cxx:341
void SetReferences(IControlReferenceHandler *pDlg, RefEdit *pEdit)
Definition: funcutl.cxx:438
void GrabFocus()
Definition: funcutl.hxx:96
void SetReferences(IControlReferenceHandler *pDlg, weld::Label *pLabelWidget)
Definition: funcutl.cxx:313
OUString ForResId(TranslateId aId)
#define VAR_ARGS
Used to indicate a variable number of parameters for the Function Wizard.
Definition: funcvarargs.h:35
#define PAIRED_VAR_ARGS
Used to indicate a variable number of paired parameters for the Function Wizard.
Definition: funcvarargs.h:45
sal_uInt16 nPos
#define SAL_WARN(area, stream)
#define SAL_N_ELEMENTS(arr)
aStr
OString stripStart(const OString &rIn, char c)
constexpr sal_uInt16 kMaxArgOffset
Definition: parawin.cxx:36
IMPL_LINK_NOARG(FormulaDlg_Impl, DblClkHdl, FuncPage &, void)
Definition: formula.cxx:1065
IMPL_LINK(FormulaDlg_Impl, BtnHdl, weld::Button &, rBtn, void)
Definition: formula.cxx:1022
constexpr sal_uInt16 kMaxArgCount
Definition: parawin.cxx:35
int i
long Long
Reference< XNameAccess > m_xContainer
#define NOT_FOUND
Definition: parawin.hxx:30