26 #include <uiitems.hxx>
28 #include <document.hxx>
29 #include <globstr.hrc>
39 , theFormulaCell(aCursorPos)
40 , theVariableCell(aCursorPos)
42 , nCurTab(aCursorPos.
Tab())
43 , bDlgLostFocus(false)
44 , errMsgInvalidVar(
ScResId(STR_INVALIDVAR))
45 , errMsgInvalidForm(
ScResId(STR_INVALIDFORM))
46 , errMsgNoFormula(
ScResId(STR_NOFORMULA))
47 , errMsgInvalidVal(
ScResId(STR_INVALIDVAL))
48 , m_pEdActive(nullptr)
49 , m_xFtFormulaCell(m_xBuilder->weld_label(
"formulatext"))
50 , m_xEdFormulaCell(new
formula::RefEdit(m_xBuilder->weld_entry(
"formulaedit")))
51 , m_xRBFormulaCell(new
formula::RefButton(m_xBuilder->weld_button(
"formulabutton")))
52 , m_xEdTargetVal(m_xBuilder->weld_entry(
"target"))
53 , m_xFtVariableCell(m_xBuilder->weld_label(
"vartext"))
54 , m_xEdVariableCell(new
formula::RefEdit(m_xBuilder->weld_entry(
"varedit")))
55 , m_xRBVariableCell(new
formula::RefButton(m_xBuilder->weld_button(
"varbutton")))
56 , m_xBtnOk(m_xBuilder->weld_button(
"ok"))
57 , m_xBtnCancel(m_xBuilder->weld_button(
"cancel"))
105 DoClose( ScSolverDlgWrapper::GetChildWindowId() );
166 VclMessageType::Warning, VclButtonsType::Ok,
191 if (&rBtn == m_xBtnOk.get())
193 theTargetValStr = m_xEdTargetVal->get_text();
201 ScRefFlags nRes1 = theFormulaCell .Parse( m_xEdFormulaCell->GetText(), *pDoc, eConv );
202 ScRefFlags nRes2 = theVariableCell.Parse( m_xEdVariableCell->GetText(), *pDoc, eConv );
208 if ( CheckTargetValue( theTargetValStr ) )
211 pDoc->GetCellType( theFormulaCell.Col(),
212 theFormulaCell.Row(),
213 theFormulaCell.Tab(),
223 SetDispatcherLock(
false );
226 GetBindings().GetDispatcher()->ExecuteList(SID_SOLVE,
227 SfxCallMode::SLOT | SfxCallMode::RECORD,
239 else if (&rBtn == m_xBtnCancel.get())
247 if (&rCtrl == m_xEdFormulaCell.get())
248 m_pEdActive = m_xEdFormulaCell.get();
249 else if (&rCtrl == m_xEdVariableCell.get())
250 m_pEdActive = m_xEdVariableCell.get();
253 m_pEdActive->SelectAll();
258 m_pEdActive =
nullptr;
259 m_xEdTargetVal->select_region(0, -1);
264 if (&rCtrl == m_xRBFormulaCell.get())
265 m_pEdActive = m_xEdFormulaCell.get();
266 else if (&rCtrl == m_xRBVariableCell.get())
267 m_pEdActive = m_xEdVariableCell.get();
270 m_pEdActive->SelectAll();
275 bDlgLostFocus = !
m_xDialog->has_toplevel_focus();
280 bDlgLostFocus = !
m_xDialog->has_toplevel_focus();
#define LINK(Instance, Class, Member)
IMPL_LINK(ScSolverDlg, BtnHdl, weld::Button &, rBtn, void)
std::unique_ptr< weld::Label > m_xFtFormulaCell
SC_DLLPUBLIC void Format(OStringBuffer &r, ScRefFlags nFlags, const ScDocument *pDocument=nullptr, const Details &rDetails=detailsOOOa1) const
bool CheckTargetValue(const OUString &rStrVal)
const OUString errMsgInvalidVar
virtual bool IsRefInputMode() const override
const OUString errMsgNoFormula
SC_DLLPUBLIC formula::FormulaGrammar::AddressConvention GetAddressConvention() const
const OUString errMsgInvalidForm
formula::RefEdit * m_pEdActive
std::unique_ptr< weld::Button > m_xBtnOk
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
const OUString errMsgInvalidVal
std::shared_ptr< weld::MessageDialog > m_xMessageBox
IMPL_LINK_NOARG(ScSolverDlg, GetFocusHdl, weld::Widget &, void)
std::unique_ptr< formula::RefButton > m_xRBFormulaCell
SC_DLLPUBLIC SvNumberFormatter * GetFormatTable() const
OUString ScResId(const char *pId)
virtual void RefInputDone(bool bForced=false) override
virtual void SetReference(const ScRange &rRef, ScDocument &rDoc) override
std::unique_ptr< formula::RefEdit > m_xEdFormulaCell
std::unique_ptr< formula::RefEdit > m_xEdVariableCell
virtual ~ScSolverDlg() override
ScAddress theVariableCell
Reference< XExecutableDialog > m_xDialog
virtual void Close() override
ScSolverDlg(SfxBindings *pB, SfxChildWindow *pCW, weld::Window *pParent, ScDocument *pDocument, const ScAddress &aCursorPos)
std::unique_ptr< formula::RefButton > m_xRBVariableCell
std::unique_ptr< weld::Entry > m_xEdTargetVal
bool DoClose(sal_uInt16 nId)
static weld::MessageDialog * CreateMessageDialog(weld::Widget *pParent, VclMessageType eMessageType, VclButtonsType eButtonType, const OUString &rPrimaryMessage, bool bMobile=false)
std::unique_ptr< weld::Button > m_xBtnCancel
virtual void SetActive() override
std::unique_ptr< weld::Label > m_xFtVariableCell
virtual void RefInputStart(formula::RefEdit *pEdit, formula::RefButton *pButton=nullptr) override
void RaiseError(ScSolverErr eError)