37 const OUString &rAction)
54 bool bAddRetry =
false;
55 if ( (nFlags & (DialogMask::ButtonsCancel | DialogMask::ButtonsRetry)) == (DialogMask::ButtonsCancel | DialogMask::ButtonsRetry))
58 eButtonsType = VclButtonsType::Cancel;
60 else if ( (nFlags & DialogMask::ButtonsOk) == DialogMask::ButtonsOk )
61 eButtonsType = VclButtonsType::Ok;
62 else if ( (nFlags & DialogMask::ButtonsYesNo) == DialogMask::ButtonsYesNo )
63 eButtonsType = VclButtonsType::YesNo;
65 OUString aErr(
"$(ACTION)$(ERROR)");
66 OUString aAction(rAction);
67 if ( !aAction.isEmpty() )
69 aErr = aErr.replaceAll(
"$(ACTION)", aAction);
70 aErr = aErr.replaceAll(
"$(ERROR)", rErr);
75 case DialogMask::MessageError:
76 eMessageType = VclMessageType::Error;
79 case DialogMask::MessageWarning:
80 eMessageType = VclMessageType::Warning;
83 case DialogMask::MessageInfo:
84 eMessageType = VclMessageType::Info;
89 SAL_WARN(
"svtools.misc",
"no MessBox type");
90 return DialogMask::ButtonsOk;
95 eMessageType, eButtonsType, aErr));
102 case DialogMask::ButtonDefaultsOk:
103 xBox->set_default_response(
RET_OK);
105 case DialogMask::ButtonDefaultsCancel:
108 case DialogMask::ButtonDefaultsYes:
109 xBox->set_default_response(
RET_YES);
111 case DialogMask::ButtonDefaultsNo:
112 xBox->set_default_response(
RET_NO);
122 nRet = DialogMask::ButtonsOk;
125 nRet = DialogMask::ButtonsCancel;
128 nRet = DialogMask::ButtonsRetry;
131 nRet = DialogMask::ButtonsYes;
134 nRet = DialogMask::ButtonsNo;
137 SAL_WARN(
"svtools.misc",
"Unknown MessBox return value" );
145 : lStart(lStartP), lEnd(lEndP), pIds(pIdPs), aResLocale(rLocale)
164 if (pErr->GetErrorCode().GetArea() < lStart || lEnd < pErr->GetErrorCode().GetArea())
166 if(GetErrorString(nErrCode, rStr))
178 rStr = rStr.replaceAll(
"$(ARG1)", pTwoStringInfo->
GetArg1());
179 rStr = rStr.replaceAll(
"$(ARG2)", pTwoStringInfo->
GetArg2());
197 for (
const std::pair<TranslateId, ErrCodeClass>* pItem = RID_ERRHDL_CLASS; pItem->first; ++pItem)
199 if (pItem->second == lClassId)
218 rStr =
"$(CLASS)$(ERROR)";
220 for (
const ErrMsgCode* pItem = pIds; pItem->second; ++pItem)
222 if (pItem->second.StripWarningAndDynamic() == lErrId.StripWarningAndDynamic())
224 rStr = rStr.replaceAll(
"$(ERROR)",
Translate::get(pItem->first, aResLocale));
233 GetClassString(lErrId.GetClass(), aErrStr);
234 if(!aErrStr.isEmpty())
236 rStr = rStr.replaceAll(
"$(CLASS)",aErrStr);
244:
ErrorContext(pWindow), nCtxId(nCtxIdP), pIds(pIdsP), aResLocale(rResLocaleP)
252 sal_uInt16 nCtxIdP, OUString aArg1P,
weld::Window *pWindow,
253 const ErrMsgCode* pIdsP,
const std::locale& rResLocaleP)
254:
ErrorContext(pWindow), nCtxId(nCtxIdP), pIds(pIdsP), aResLocale(rResLocaleP),
255 aArg1(
std::move(aArg1P))
272 if (sal_uInt32(pItem->second) ==
nCtxId)
275 rStr = rStr.replaceAll(
"$(ARG1)",
aArg1);
281 SAL_WARN_IF(!bRet,
"svtools.misc",
"ErrorContext cannot find the resource");
288 if (sal_uInt32(pItem->second) ==
nId)
static weld::MessageDialog * CreateMessageDialog(weld::Widget *pParent, VclMessageType eMessageType, VclButtonsType eButtonType, const OUString &rPrimaryMessage, const ILibreOfficeKitNotifier *pNotifier=nullptr)
static void RegisterDisplay(BasicDisplayErrorFunc *)
bool GetString(ErrCode nErrId, OUString &rStr) override
SfxErrorContext(sal_uInt16 nCtxIdP, weld::Window *pWin=nullptr, const ErrMsgCode *pIds=nullptr, const std::locale &rResLocaleP=SvtResLocale())
bool GetErrorString(ErrCode lErrId, OUString &) const
static SVT_DLLPRIVATE void GetClassString(ErrCodeClass lErrId, OUString &)
SfxErrorHandler(const ErrMsgCode *pIds, ErrCodeArea lStart, ErrCodeArea lEnd, const std::locale &rResLocale=SvtResLocale())
virtual ~SfxErrorHandler() override
virtual bool CreateString(const ErrorInfo *, OUString &) const override
const OUString & GetErrorString() const
const OUString & GetArg1() const
const OUString & GetArg2() const
static DialogMask aWndFunc(weld::Window *pWin, DialogMask nFlags, const OUString &rErr, const OUString &rAction)
SVT_DLLPUBLIC const ErrMsgCode RID_ERRCTX[]
std::pair< TranslateId, ErrCode > ErrMsgCode
#define ERRCODE_ERROR_MASK
#define SAL_WARN_IF(condition, area, stream)
#define SAL_WARN(area, stream)
OUString get(TranslateId sContextAndId, const std::locale &loc)
OUString VCL_DLLPUBLIC GetStandardText(StandardButtonType eButton)
OUString SvtResId(TranslateId aId)