MasterText/src/z_UIMessages.bas
2024-06-07 20:49:50 +03:00

97 lines
3.4 KiB
QBasic

Attribute VB_Name = "z_UIMessages"
' Ìîäóëü âûâîäà ñîîáùåíèé è âçàèìîäåéñòâèÿ ñ ïîëüçîâàòåëåì
Option Private Module
Option Explicit
'# Êîäû ñîîáùåíèé
Public Enum MsgCode
MSG_OK = 0
EM_DOC_READONLY
EM_RULE_FAILED
EM_NO_OPEN_DOCS
EM_PATH_EMPTY
EM_MISSING_FILE
IM_RULES_COMPLETE
IM_STYLES_FIXED
IM_FORMAT_CLEARED
IM_UPDATE_BANNED_FAIL
IM_UPDATE_BANNED_SUCCESS
QM_SAVE_DOC
QM_WARN_COMMENTS
End Enum
Private g_UI As API_UserInteraction
Public Function UserInteraction() As API_UserInteraction
If g_UI Is Nothing Then _
Set g_UI = New API_UserInteraction
Set UserInteraction = g_UI
End Function
Public Function SetUserInteraction(newUI As API_UserInteraction)
Set g_UI = newUI
End Function
Public Function ProcessErrorMessages(expectedErrors As Scripting.Dictionary)
If Err.Number = 0 Then _
Exit Function
Call Unload(CSE_ProgressBar)
If Not expectedErrors.Exists(Err.Number) Then _
Call Err.Raise(Err.Number)
Select Case Err.Number
' Case EM_LINK_NO_FILE: Call UserInteraction.ShowMessage(Err.Number, Err.Source)
End Select
End Function
Public Function UIShowMessage(theCode As MsgCode, ParamArray params() As Variant)
Dim unwrapped As Variant: unwrapped = params
unwrapped = FixForwardedParams(unwrapped)
Select Case theCode
Case EM_DOC_READONLY
Call MsgBox("Ôàéë îòêðûò â ðåæèìå ÷òåíèÿ!" & vbNewLine & "Ïîæàëóéñòà, ñîõðàíèòå ôàéë â ðåæèìå ðåäàêòèðîâàíèÿ", vbExclamation)
Case EM_RULE_FAILED
Call MsgBox(Fmt("Ïðàâèëî {1} áûëî çàâåðøåíî ñ îøèáêîé! Ïîæàëóéñòà, ïðîèíôîðìèðóéòå ðàçðàáîò÷èêà", unwrapped), vbExclamation)
Case EM_NO_OPEN_DOCS: Call MsgBox("Îòñóòñòâóþò îòêðûòûå äîêóìåíòû Word", vbExclamation)
Case EM_PATH_EMPTY: Call MsgBox("Ïóòü ê ôàéëó íå óêàçàí!", vbExclamation)
Case EM_MISSING_FILE: Call MsgBox(Fmt("Îòñóòñòâóåò äîñòóï ê ôàéëó: {1}", unwrapped), vbExclamation)
Case IM_RULES_COMPLETE
Call MsgBox(Fmt("Âðåìÿ âûïîëíåíèÿ: {1} ms" & vbNewLine & vbNewLine & _
"Íàéäåíî îøèáîê: {2}" & vbNewLine & _
"Âíåñåíî ïðàâîê: {3}", unwrapped), vbInformation)
Case IM_STYLES_FIXED: Call MsgBox("Ïðîâåðêà ñòèëåé ïðîøëà óñïåøíî!", vbInformation)
Case IM_FORMAT_CLEARED: Call MsgBox("Î÷èñòêà çàâåðøåíà", vbInformation)
Case IM_UPDATE_BANNED_SUCCESS: Call MsgBox("Îáíîâëåíèå ëîêàëüíîãî ñïèñêà óñïåøíî", vbInformation)
Case IM_UPDATE_BANNED_FAIL: Call MsgBox("Îáíîâëåíèå íå ïðîøëî. Ïðîâåðüòå ïîäêëþ÷åíèå ê \\fs1.concept.ru", vbInformation)
Case Else
Call MsgBox("Íåâåðíûé êîä ñîîáùåíèÿ", vbCritical)
End Select
End Function
Public Function UIAskQuestion(theCode As MsgCode, ParamArray params() As Variant) As Boolean
Dim unwrapped As Variant: unwrapped = params
unwrapped = FixForwardedParams(unwrapped)
Dim answer As Long: answer = vbNo
Select Case theCode
Case QM_SAVE_DOC
answer = MsgBox("Âíèìàíèå!! Ïðè ïðîâåðêå äîêóìåíòà â ñëó÷àå ñáîÿ âîçìîæíà ïîòåðÿ äàííûõ." & vbNewLine _
& "Âû õîòèòå ñîõðàíèòü äîêóìåíò ïåðåä ïðîâåðêîé?", vbYesNo + vbQuestion)
Case QM_WARN_COMMENTS
answer = MsgBox("Âíèìàíèå!! Îáíàðóæåíû êîììåíòàðèè â äîêóìåíòå. Ýòî ìîæåò ïðèâåñòè ê ñáîþ ïðîãðàììû." & vbNewLine _
& "Êîììåíòàðèè áóäóò óäàëåíû, Âû õîòèòå ïðîäîëæèòü?", vbYesNo + vbQuestion, "Çàïóñê ïðîâåðêè")
Case Else
Call MsgBox("Íåâåðíûé êîä ñîîáùåíèÿ", vbCritical)
End Select
UIAskQuestion = answer = vbYes
End Function