LibreOffice Module sc (master) 1
namedlg.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 <memory>
21#include <global.hxx>
22#include <reffact.hxx>
23#include <compiler.hxx>
24#include <document.hxx>
25#include <docfunc.hxx>
26#include <globstr.hrc>
27#include <scresid.hxx>
28#include <namedlg.hxx>
29#include <viewdata.hxx>
30#include <tabvwsh.hxx>
31
32#include <globalnames.hxx>
33#include <tokenarray.hxx>
34
35#include <vcl/svapp.hxx>
38
39#include <map>
40
41//logic
42
44 ScViewData& rViewData,
45 const ScAddress& aCursorPos,
46 std::map<OUString, ScRangeName> *const pRangeMap)
47 : ScAnyRefDlgController(pB, pCW, pParent, "modules/scalc/ui/managenamesdialog.ui",
48 "ManageNamesDialog")
49
50 , maGlobalNameStr(ScResId(STR_GLOBAL_SCOPE))
51 , maErrInvalidNameStr(ScResId(STR_ERR_NAME_INVALID))
52 , maErrNameInUse(ScResId(STR_ERR_NAME_EXISTS))
53 , maStrMultiSelect(ScResId(STR_MULTI_SELECT))
54
55 , mrViewData(rViewData)
56 , mrDoc(rViewData.GetDocument())
57 , maCursorPos(aCursorPos)
58 , mbDataChanged(false)
59 , mbCloseWithoutUndo(false)
60
61 , m_xEdName(m_xBuilder->weld_entry("name"))
62 , m_xFtAssign(m_xBuilder->weld_label("label3"))
63 , m_xEdAssign(new formula::RefEdit(m_xBuilder->weld_entry("range")))
64 , m_xRbAssign(new formula::RefButton(m_xBuilder->weld_button("assign")))
65 , m_xLbScope(m_xBuilder->weld_combo_box("scope"))
66 , m_xBtnPrintArea(m_xBuilder->weld_check_button("printrange"))
67 , m_xBtnColHeader(m_xBuilder->weld_check_button("colheader"))
68 , m_xBtnCriteria(m_xBuilder->weld_check_button("filter"))
69 , m_xBtnRowHeader(m_xBuilder->weld_check_button("rowheader"))
70 , m_xBtnAdd(m_xBuilder->weld_button("add"))
71 , m_xBtnDelete(m_xBuilder->weld_button("delete"))
72 , m_xBtnOk(m_xBuilder->weld_button("ok"))
73 , m_xBtnCancel(m_xBuilder->weld_button("cancel"))
74 , m_xFtInfo(m_xBuilder->weld_label("info"))
75{
76 m_xEdAssign->SetReferences(this, m_xFtAssign.get());
77 m_xRbAssign->SetReferences(this, m_xEdAssign.get());
78 maStrInfoDefault = m_xFtInfo->get_label();
79
80 if (!pRangeMap)
81 {
82 std::map<OUString, ScRangeName*> aRangeMap;
83 mrDoc.GetRangeNameMap(aRangeMap);
84 for (const auto& [aTemp, pRangeName] : aRangeMap)
85 {
86 m_RangeMap.insert(std::make_pair(aTemp, *pRangeName));
87 }
88 }
89 else
90 {
91 m_RangeMap.swap(*pRangeMap);
92 }
93 Init();
94}
95
97{
98}
99
101{
102 //init UI
103
104 std::unique_ptr<weld::TreeView> xTreeView(m_xBuilder->weld_tree_view("names"));
105 xTreeView->set_size_request(xTreeView->get_approximate_digit_width() * 75,
106 xTreeView->get_height_rows(10));
107 m_xRangeManagerTable.reset(new ScRangeManagerTable(std::move(xTreeView), m_RangeMap, maCursorPos));
108
109 m_xRangeManagerTable->connect_changed( LINK( this, ScNameDlg, SelectionChangedHdl_Impl ) );
110
111 m_xBtnOk->connect_clicked( LINK( this, ScNameDlg, OkBtnHdl ) );
112 m_xBtnCancel->connect_clicked( LINK( this, ScNameDlg, CancelBtnHdl ) );
113 m_xBtnAdd->connect_clicked( LINK( this, ScNameDlg, AddBtnHdl ) );
114 m_xEdAssign->SetGetFocusHdl( LINK( this, ScNameDlg, AssignGetFocusHdl ) );
115 m_xEdAssign->SetModifyHdl ( LINK( this, ScNameDlg, RefEdModifyHdl ) );
116 m_xEdName->connect_changed( LINK( this, ScNameDlg, EdModifyHdl ) );
117 m_xLbScope->connect_changed( LINK(this, ScNameDlg, ScopeChangedHdl) );
118 m_xBtnDelete->connect_clicked( LINK( this, ScNameDlg, RemoveBtnHdl ) );
119 m_xBtnPrintArea->connect_toggled( LINK(this, ScNameDlg, EdModifyCheckBoxHdl ) );
120 m_xBtnCriteria->connect_toggled( LINK(this, ScNameDlg, EdModifyCheckBoxHdl ) );
121 m_xBtnRowHeader->connect_toggled( LINK(this, ScNameDlg, EdModifyCheckBoxHdl ) );
122 m_xBtnColHeader->connect_toggled( LINK(this, ScNameDlg, EdModifyCheckBoxHdl ) );
123
124 // Initialize scope list.
125 m_xLbScope->append_text(maGlobalNameStr);
126 m_xLbScope->set_active(0);
128 for (SCTAB i = 0; i < n; ++i)
129 {
130 OUString aTabName;
131 mrDoc.GetName(i, aTabName);
132 m_xLbScope->append_text(aTabName);
133 }
134
136
137 if (m_xRangeManagerTable->n_children())
138 {
139 m_xRangeManagerTable->set_cursor(0);
140 m_xRangeManagerTable->CheckForFormulaString();
142 }
143
144}
145
147{
148 return m_xEdAssign->GetWidget()->get_sensitive();
149}
150
151void ScNameDlg::RefInputDone( bool bForced)
152{
154 RefEdModifyHdl(*m_xEdAssign);
155}
156
157void ScNameDlg::SetReference( const ScRange& rRef, ScDocument& rDocP )
158{
159 if (m_xEdAssign->GetWidget()->get_sensitive())
160 {
161 if ( rRef.aStart != rRef.aEnd )
163 OUString aRefStr(rRef.Format(rDocP, ScRefFlags::RANGE_ABS_3D,
165 m_xEdAssign->SetRefString( aRefStr );
166 }
167}
168
170{
173 DoClose(ScNameDlgWrapper::GetChildWindowId());
174}
175
177{
178 if (!m_xRangeManagerTable->n_children())
179 {
180 m_xBtnDelete->set_sensitive(false);
181 m_xEdAssign->GetWidget()->set_sensitive(false);
182 m_xRbAssign->GetWidget()->set_sensitive(false);
183 m_xEdName->set_sensitive(false);
184 m_xLbScope->set_sensitive(false);
185
186 m_xBtnCriteria->set_sensitive(false);
187 m_xBtnPrintArea->set_sensitive(false);
188 m_xBtnColHeader->set_sensitive(false);
189 m_xBtnRowHeader->set_sensitive(false);
190 }
191 else
192 {
193 m_xBtnDelete->set_sensitive(true);
194 m_xEdAssign->GetWidget()->set_sensitive(true);
195 m_xRbAssign->GetWidget()->set_sensitive(true);
196 m_xEdName->set_sensitive(true);
197 m_xLbScope->set_sensitive(true);
198
199 m_xBtnCriteria->set_sensitive(true);
200 m_xBtnPrintArea->set_sensitive(true);
201 m_xBtnColHeader->set_sensitive(true);
202 m_xBtnRowHeader->set_sensitive(true);
203 }
204}
205
207{
208 m_xEdAssign->GrabFocus();
209 RefInputDone();
210}
211
213{
214 // remove handlers, we only want the handlers to process
215 // user input and not when we are syncing the controls with our internal
216 // model ( also UpdateChecks is called already from some other event
217 // handlers, triggering handlers while already processing a handler can
218 // ( and does in this case ) corrupt the internal data
219
220 m_xBtnCriteria->connect_toggled( Link<weld::Toggleable&,void>() );
221 m_xBtnPrintArea->connect_toggled( Link<weld::Toggleable&,void>() );
222 m_xBtnColHeader->connect_toggled( Link<weld::Toggleable&,void>() );
223 m_xBtnRowHeader->connect_toggled( Link<weld::Toggleable&,void>() );
224
225 m_xBtnCriteria->set_active( pData->HasType( ScRangeData::Type::Criteria ) );
226 m_xBtnPrintArea->set_active( pData->HasType( ScRangeData::Type::PrintArea ) );
227 m_xBtnColHeader->set_active( pData->HasType( ScRangeData::Type::ColHeader ) );
228 m_xBtnRowHeader->set_active( pData->HasType( ScRangeData::Type::RowHeader ) );
229
230 // Restore handlers so user input is processed again
231 Link<weld::Toggleable&,void> aToggleHandler = LINK( this, ScNameDlg, EdModifyCheckBoxHdl );
232 m_xBtnCriteria->connect_toggled( aToggleHandler );
233 m_xBtnPrintArea->connect_toggled( aToggleHandler );
234 m_xBtnColHeader->connect_toggled( aToggleHandler );
235 m_xBtnRowHeader->connect_toggled( aToggleHandler );
236}
237
239{
240 OUString aScope = m_xLbScope->get_active_text();
241 OUString aName = m_xEdName->get_text();
242 aName = aName.trim();
243
244 if (aName.isEmpty())
245 return false;
246
247 ScRangeName* pRangeName = GetRangeName( aScope );
248
250 {
251 m_xFtInfo->set_label_type(weld::LabelType::Error);
252 m_xFtInfo->set_label(maErrInvalidNameStr);
253 return false;
254 }
255 else if (pRangeName && pRangeName->findByUpperName(ScGlobal::getCharClass().uppercase(aName)))
256 {
257 m_xFtInfo->set_label_type(weld::LabelType::Error);
258 m_xFtInfo->set_label(maErrNameInUse);
259 return false;
260 }
261 m_xFtInfo->set_label( maStrInfoDefault );
262 return true;
263}
264
266{
268 std::unique_ptr<ScTokenArray> pCode = aComp.CompileString(m_xEdAssign->GetText());
269 if (pCode->GetCodeError() != FormulaError::NONE)
270 {
271 m_xFtInfo->set_label_type(weld::LabelType::Error);
272 return false;
273 }
274 else
275 {
276 return true;
277 }
278}
279
280ScRangeName* ScNameDlg::GetRangeName(const OUString& rScope)
281{
282 if (rScope == maGlobalNameStr)
283 return &m_RangeMap.find(OUString(STR_GLOBAL_RANGE_NAME))->second;
284 else
285 return &m_RangeMap.find(rScope)->second;
286}
287
289{
290 ScRangeName* pRangeName = GetRangeName(rLine.aScope);
291 ScRangeData* pData = pRangeName->findByUpperName(ScGlobal::getCharClass().uppercase(rLine.aName));
292 if (pData)
293 {
295 }
296}
297
299{
300 mbCloseWithoutUndo = true;
302 pViewSh->SwitchBetweenRefDialogs(this);
303}
304
305void ScNameDlg::SetEntry(const OUString& rName, const OUString& rScope)
306{
307 if (!rName.isEmpty())
308 {
309 mbDataChanged = true;
310 ScRangeNameLine aLine;
311 aLine.aName = rName;
312 aLine.aScope = rScope;
313 m_xRangeManagerTable->SetEntry(aLine);
314 }
315}
316
318{
319 std::vector<ScRangeNameLine> aEntries = m_xRangeManagerTable->GetSelectedEntries();
320 m_xRangeManagerTable->DeleteSelectedEntries();
321 for (const auto& rEntry : aEntries)
322 {
323 ScRangeName* pRangeName = GetRangeName(rEntry.aScope);
324 ScRangeData* pData = pRangeName->findByUpperName(ScGlobal::getCharClass().uppercase(rEntry.aName));
325 OSL_ENSURE(pData, "table and model should be in sync");
326 // be safe and check for possible problems
327 if (pData)
328 pRangeName->erase(*pData);
329
330 mbDataChanged = true;
331 }
333}
334
336{
337 ScRangeNameLine aLine;
338 m_xRangeManagerTable->GetCurrentLine(aLine);
339 OUString aOldName = aLine.aName;
340 OUString aNewName = m_xEdName->get_text();
341 aNewName = aNewName.trim();
342 m_xFtInfo->set_label_type(weld::LabelType::Normal);
343 if (aNewName != aOldName)
344 {
345 if (!IsNameValid())
346 return;
347 }
348 else
349 {
350 m_xFtInfo->set_label( maStrInfoDefault );
351 }
352
353 if (!IsFormulaValid())
354 {
355 //TODO: implement an info text
356 return;
357 }
358
359 OUString aOldScope = aLine.aScope;
360 //empty table
361 if (aOldScope.isEmpty())
362 return;
363 OUString aExpr = m_xEdAssign->GetText();
364 OUString aNewScope = m_xLbScope->get_active_text();
365
366 ScRangeName* pOldRangeName = GetRangeName( aOldScope );
367 ScRangeData* pData = pOldRangeName->findByUpperName( ScGlobal::getCharClass().uppercase(aOldName) );
368 ScRangeName* pNewRangeName = GetRangeName( aNewScope );
369 OSL_ENSURE(pData, "model and table should be in sync");
370 // be safe and check for range data
371 if (!pData)
372 return;
373
374 // Assign new index (0) only if the scope is changed, else keep the
375 // existing index.
376 sal_uInt16 nIndex = (aNewScope != aOldScope ? 0 : pData->GetIndex());
377
378 pOldRangeName->erase(*pData);
379 m_xRangeManagerTable->BlockUpdate();
380 m_xRangeManagerTable->DeleteSelectedEntries();
382 if ( m_xBtnRowHeader->get_active() ) nType |= ScRangeData::Type::RowHeader;
383 if ( m_xBtnColHeader->get_active() ) nType |= ScRangeData::Type::ColHeader;
384 if ( m_xBtnPrintArea->get_active() ) nType |= ScRangeData::Type::PrintArea;
385 if ( m_xBtnCriteria->get_active() ) nType |= ScRangeData::Type::Criteria;
386
387 ScRangeData* pNewEntry = new ScRangeData( mrDoc, aNewName, aExpr,
389 pNewEntry->SetIndex( nIndex);
390 pNewRangeName->insert(pNewEntry, false /*bReuseFreeIndex*/);
391 aLine.aName = aNewName;
392 aLine.aExpression = aExpr;
393 aLine.aScope = aNewScope;
394 m_xRangeManagerTable->addEntry(aLine, true);
395 // tdf#128137 process pending async row change events while UpdatesBlocked in place
397 m_xRangeManagerTable->UnblockUpdate();
398 mbDataChanged = true;
399}
400
402{
403 //don't update if we have just modified due to user input
404 if (m_xRangeManagerTable->UpdatesBlocked())
405 {
406 return;
407 }
408
409 if (m_xRangeManagerTable->IsMultiSelection())
410 {
411 m_xEdName->set_text(maStrMultiSelect);
413
414 m_xEdName->set_sensitive(false);
415 m_xEdAssign->GetWidget()->set_sensitive(false);
416 m_xRbAssign->GetWidget()->set_sensitive(false);
417 m_xLbScope->set_sensitive(false);
418 m_xBtnRowHeader->set_sensitive(false);
419 m_xBtnColHeader->set_sensitive(false);
420 m_xBtnPrintArea->set_sensitive(false);
421 m_xBtnCriteria->set_sensitive(false);
422 }
423 else
424 {
425 ScRangeNameLine aLine;
426 m_xRangeManagerTable->GetCurrentLine(aLine);
427 m_xEdAssign->SetText(aLine.aExpression);
428 m_xEdName->set_text(aLine.aName);
429 m_xLbScope->set_active_text(aLine.aScope);
430 ShowOptions(aLine);
431 m_xBtnDelete->set_sensitive(true);
432 m_xEdName->set_sensitive(true);
433 m_xEdAssign->GetWidget()->set_sensitive(true);
434 m_xRbAssign->GetWidget()->set_sensitive(true);
435 m_xLbScope->set_sensitive(true);
436 m_xBtnRowHeader->set_sensitive(true);
437 m_xBtnColHeader->set_sensitive(true);
438 m_xBtnPrintArea->set_sensitive(true);
439 m_xBtnCriteria->set_sensitive(true);
440 }
441}
442
444{
445 NameModified();
446}
447
448void ScNameDlg::GetRangeNames(std::map<OUString, ScRangeName>& rRangeMap)
449{
450 m_RangeMap.swap(rRangeMap);
451}
452
454{
455 response(RET_OK);
456}
457
459{
460 mbCloseWithoutUndo = true;
461 response(RET_CANCEL);
462}
463
465{
466 AddPushed();
467}
468
470{
471 RemovePushed();
472}
473
474IMPL_LINK_NOARG(ScNameDlg, EdModifyCheckBoxHdl, weld::Toggleable&, void)
475{
476 NameModified();
477}
478
480{
481 NameModified();
482}
483
485{
486 NameModified();
487}
488
489IMPL_LINK_NOARG(ScNameDlg, AssignGetFocusHdl, formula::RefEdit&, void)
490{
491 RefEdModifyHdl(*m_xEdAssign);
492}
493
494IMPL_LINK_NOARG(ScNameDlg, SelectionChangedHdl_Impl, weld::TreeView&, void)
495{
496 SelectionChanged();
497}
498
499IMPL_LINK_NOARG(ScNameDlg, ScopeChangedHdl, weld::ComboBox&, void)
500{
501 ScopeChanged();
502}
503
504/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
static bool Reschedule(bool bHandleAllCurrentEvents=false)
OUString uppercase(const OUString &rStr, sal_Int32 nPos, sal_Int32 nCount) const
std::unique_ptr< ScTokenArray > CompileString(const OUString &rFormula)
Tokenize formula expression string into an array of tokens.
Definition: compiler.cxx:4692
void ModifyAllRangeNames(const std::map< OUString, ScRangeName > &rRangeMap)
Modify all range names, global scope names as well as sheet local ones, in one go.
Definition: docfunc.cxx:5188
SC_DLLPUBLIC void GetRangeNameMap(std::map< OUString, ScRangeName * > &rRangeName)
Definition: documen3.cxx:152
SC_DLLPUBLIC formula::FormulaGrammar::AddressConvention GetAddressConvention() const
Definition: documen3.cxx:500
SC_DLLPUBLIC formula::FormulaGrammar::Grammar GetGrammar() const
Definition: document.hxx:1008
SC_DLLPUBLIC bool GetName(SCTAB nTab, OUString &rName) const
Definition: document.cxx:217
SC_DLLPUBLIC SCTAB GetTableCount() const
Definition: document.cxx:317
static SC_DLLPUBLIC const CharClass & getCharClass()
Definition: global.cxx:1062
void CheckForEmptyTable()
Definition: namedlg.cxx:176
bool IsFormulaValid()
Definition: namedlg.cxx:265
void GetRangeNames(std::map< OUString, ScRangeName > &rRangeMap)
Definition: namedlg.cxx:448
std::unique_ptr< weld::Button > m_xBtnDelete
Definition: namedlg.hxx:65
const OUString maErrNameInUse
Definition: namedlg.hxx:37
std::unique_ptr< weld::CheckButton > m_xBtnPrintArea
Definition: namedlg.hxx:59
void NameModified()
Definition: namedlg.cxx:335
bool mbDataChanged
Definition: namedlg.hxx:45
std::unique_ptr< weld::Label > m_xFtInfo
Definition: namedlg.hxx:69
void Init()
Definition: namedlg.cxx:100
std::unique_ptr< weld::CheckButton > m_xBtnRowHeader
Definition: namedlg.hxx:62
void SetEntry(const OUString &rName, const OUString &rScope)
Definition: namedlg.cxx:305
std::unique_ptr< weld::Entry > m_xEdName
Definition: namedlg.hxx:53
void UpdateChecks(const ScRangeData *pData)
Definition: namedlg.cxx:212
virtual bool IsRefInputMode() const override
Definition: namedlg.cxx:146
virtual void SetActive() override
Definition: namedlg.cxx:206
void ScopeChanged()
Definition: namedlg.cxx:443
bool IsNameValid()
Definition: namedlg.cxx:238
std::unique_ptr< weld::Label > m_xFtAssign
Definition: namedlg.hxx:54
std::unique_ptr< weld::CheckButton > m_xBtnCriteria
Definition: namedlg.hxx:61
const OUString maGlobalNameStr
Definition: namedlg.hxx:35
virtual void Close() override
Definition: namedlg.cxx:169
ScDocument & mrDoc
Definition: namedlg.hxx:42
ScViewData & mrViewData
Definition: namedlg.hxx:41
OUString maStrInfoDefault
Definition: namedlg.hxx:39
std::unique_ptr< weld::CheckButton > m_xBtnColHeader
Definition: namedlg.hxx:60
std::unique_ptr< ScRangeManagerTable > m_xRangeManagerTable
Definition: namedlg.hxx:71
void SelectionChanged()
Definition: namedlg.cxx:401
RangeNameContainer m_RangeMap
Definition: namedlg.hxx:51
void ShowOptions(const ScRangeNameLine &rLine)
Definition: namedlg.cxx:288
const OUString maErrInvalidNameStr
Definition: namedlg.hxx:36
void RemovePushed()
Definition: namedlg.cxx:317
void AddPushed()
Definition: namedlg.cxx:298
std::unique_ptr< weld::ComboBox > m_xLbScope
Definition: namedlg.hxx:57
ScRangeName * GetRangeName(const OUString &rScope)
Definition: namedlg.cxx:280
const OUString maStrMultiSelect
Definition: namedlg.hxx:38
virtual void SetReference(const ScRange &rRef, ScDocument &rDoc) override
Definition: namedlg.cxx:157
std::unique_ptr< weld::Button > m_xBtnAdd
Definition: namedlg.hxx:64
std::unique_ptr< weld::Button > m_xBtnCancel
Definition: namedlg.hxx:67
virtual void RefInputDone(bool bForced=false) override
Definition: namedlg.cxx:151
const ScAddress maCursorPos
Definition: namedlg.hxx:43
std::unique_ptr< formula::RefButton > m_xRbAssign
Definition: namedlg.hxx:56
std::unique_ptr< formula::RefEdit > m_xEdAssign
Definition: namedlg.hxx:55
bool mbCloseWithoutUndo
Definition: namedlg.hxx:47
ScNameDlg(SfxBindings *pB, SfxChildWindow *pCW, weld::Window *pParent, ScViewData &rViewData, const ScAddress &aCursorPos, std::map< OUString, ScRangeName > *pRangeMap=nullptr)
Definition: namedlg.cxx:43
std::unique_ptr< weld::Button > m_xBtnOk
Definition: namedlg.hxx:66
virtual ~ScNameDlg() override
Definition: namedlg.cxx:96
void SetIndex(sal_uInt16 nInd)
Definition: rangenam.hxx:115
static SC_DLLPUBLIC IsNameValidType IsNameValid(const OUString &rName, const ScDocument &rDoc)
Definition: rangenam.cxx:468
SC_DLLPUBLIC ScRangeData * findByUpperName(const OUString &rName)
Definition: rangenam.cxx:704
void erase(const ScRangeData &r)
Definition: rangenam.cxx:846
SC_DLLPUBLIC bool insert(ScRangeData *p, bool bReuseFreeIndex=true)
Insert object into set.
Definition: rangenam.cxx:802
OUString Format(const ScDocument &rDocument, ScRefFlags nFlags=ScRefFlags::ZERO, const ScAddress::Details &rDetails=ScAddress::detailsOOOa1, bool bFullAddressNotation=false) const
Returns string with formatted cell range from aStart to aEnd, according to provided address conventio...
Definition: address.cxx:2170
ScAddress aEnd
Definition: address.hxx:498
ScAddress aStart
Definition: address.hxx:497
virtual void RefInputStart(formula::RefEdit *pEdit, formula::RefButton *pButton=nullptr) override
Definition: anyrefdg.cxx:749
virtual void RefInputDone(bool bForced=false) override
Definition: anyrefdg.cxx:779
bool DoClose(sal_uInt16 nId)
Definition: anyrefdg.cxx:718
void SwitchBetweenRefDialogs(SfxModelessDialogController *pDialog)
Definition: tabvwshc.cxx:87
static ScTabViewShell * GetActiveViewShell()
Definition: tabvwsh4.cxx:1076
ScDocFunc & GetDocFunc() const
Definition: viewdata.cxx:3124
ScXMLEditAttributeMap::Entry const aEntries[]
constexpr OUStringLiteral STR_GLOBAL_RANGE_NAME
Definition: globalnames.hxx:17
sal_Int32 nIndex
OUString aName
sal_Int64 n
std::unique_ptr< sal_Int32[]> pData
IMPL_LINK_NOARG(ScNameDlg, OkBtnHdl, weld::Button &, void)
Definition: namedlg.cxx:453
int i
QPRO_FUNC_TYPE nType
Definition: qproform.cxx:398
OUString ScResId(TranslateId aId)
Definition: scdll.cxx:90
OUString aExpression
sal_Int16 SCTAB
Definition: types.hxx:22
RET_OK
RET_CANCEL