예제 #1
0
        /// ------------------------------------------------------------------------------------
        private void PutOnClipboard()
        {
            var text = SearchQueryValidationError.GetSingleStringErrorMsgFromListOfErrors(
                _labelPattern.Text, _errors);

            Clipboard.SetDataObject(text, true);
        }
예제 #2
0
 /// ------------------------------------------------------------------------------------
 public SearchQueryValidationErrorControl(string pattern,
                                          IList <SearchQueryValidationError> errors, bool showPatternInHeading) : this()
 {
     _errors = errors;
     _labelPattern.Visible = showPatternInHeading;
     _labelPattern.Text    = pattern;
     _labelHeading.Text    = SearchQueryValidationError.GetHeadingTextForErrorList(null);
 }
예제 #3
0
        /// ------------------------------------------------------------------------------------
        private void HandleSendEmailLinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            try
            {
                var emailProvider = EmailProviderFactory.PreferredEmailProvider();
                var emailMessage  = emailProvider.CreateMessage();
                emailMessage.To.Add(ErrorReport.EmailAddress);
                emailMessage.Subject = ErrorReport.EmailSubject;
                emailMessage.Body    = SearchQueryValidationError.GetSingleStringErrorMsgFromListOfErrors(
                    _labelPattern.Text, _errors);

                if (emailMessage.Send(emailProvider))
                {
                    return;
                }
            }
            catch
            {
                //swallow it and go to the alternate method
            }

            try
            {
                var emailProvider = EmailProviderFactory.PreferredEmailProvider();
                var emailMessage  = emailProvider.CreateMessage();
                emailMessage.To.Add(ErrorReport.EmailAddress);
                emailMessage.Subject = ErrorReport.EmailSubject;
                if (Environment.OSVersion.Platform == PlatformID.Unix)
                {
                    emailMessage.Body = SearchQueryValidationError.GetSingleStringErrorMsgFromListOfErrors(
                        _labelPattern.Text, _errors);
                }
                else
                {
                    PutOnClipboard();
                    emailMessage.Body = LocalizationManager.GetString("PhoneticSearchingMessages.SendEmailPasteFromClipboardPromptMsg",
                                                                      "<Details of search errror have been copied to the clipboard. Please paste them here>");
                }

                emailMessage.Send(emailProvider);
            }
            catch (Exception error)
            {
                PutOnClipboard();
                var text = LocalizationManager.GetString("PhoneticSearchingMessages.SendEmailFailureMsg",
                                                         "This program was not able to get your email program, if you have one, to send the " +
                                                         "error message. The contents of the error message has been placed on your Clipboard.");

                ErrorReport.NotifyUserOfProblem(error, text);
            }
        }
예제 #4
0
        /// ------------------------------------------------------------------------------------
        private DistributionChartExceptionInfo GetError(SearchQuery query)
        {
            var validator = new SearchQueryValidator(m_project);

            if (validator.GetIsValid(query))
            {
                return(null);
            }

            return(new DistributionChartExceptionInfo
            {
                Class = "error",
                Message = SearchQueryValidationError.GetSingleStringErrorMsgFromListOfErrors(query.Pattern, validator.Errors)
            });
        }
예제 #5
0
        /// ------------------------------------------------------------------------------------
        private Control GetHelpLink(SearchQueryValidationError error)
        {
            if (error.Exception != null)
            {
                return(null);
            }

            var text = LocalizationManager.GetString("PhoneticSearchingMessages.ErrorsSuggestedHelpLinksMsg",
                                                     "Suggested help topics to review: {0}");

            var topics = error.HelpLinks.Aggregate(string.Empty, (current, id) => current + (_helpTopicIds[id] + ", "));

            if (!error.HelpLinks.Contains("hidSearchPatternsTroubleshooting"))
            {
                topics += _helpTopicIds["hidSearchPatternsTroubleshooting"];
            }

            text = string.Format(text, topics.TrimEnd(',', ' '));

            var linkLabel = new LinkLabel
            {
                Text      = text,
                TextAlign = ContentAlignment.TopLeft,
                AutoSize  = true,
                Font      = FontHelper.UIFont,
                BackColor = _panelScrolling.BackColor,
                Anchor    = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top,
                Margin    = new Padding(0, 4, 0, 12),
            };

            linkLabel.LinkClicked += HandleHelpLinkClicked;
            linkLabel.Links.Clear();

            foreach (var id in error.HelpLinks)
            {
                linkLabel.Links.Add(text.IndexOf(_helpTopicIds[id], StringComparison.Ordinal), _helpTopicIds[id].Length, id);
            }

            if (!error.HelpLinks.Contains("hidSearchPatternsTroubleshooting"))
            {
                linkLabel.Links.Add(text.IndexOf(_helpTopicIds["hidSearchPatternsTroubleshooting"], StringComparison.Ordinal),
                                    _helpTopicIds["hidSearchPatternsTroubleshooting"].Length, "hidSearchPatternsTroubleshooting");
            }

            return(linkLabel);
        }
예제 #6
0
        /// ------------------------------------------------------------------------------------
        public SearchEngine CheckSearchQuery(SearchQuery query, bool showErrMsg)
        {
            var validator = new SearchQueryValidator(m_project);

            if (!validator.GetIsValid(query) && showErrMsg)
            {
                Utils.MsgBox(SearchQueryValidationError.GetSingleStringErrorMsgFromListOfErrors(query.Pattern, validator.Errors));
                return(null);
            }

            SearchEngine.IgnoreUndefinedCharacters = m_project.IgnoreUndefinedCharsInSearches;
            return(new SearchEngine(query, SearchEngine.PhoneCache ?? m_project.PhoneCache));

            //SearchQuery modifiedQuery;
            //if (!App.ConvertClassesToPatterns(query, out modifiedQuery, showErrMsg))
            //    return null;

            //SearchEngine.IgnoreUndefinedCharacters = m_project.IgnoreUndefinedCharsInSearches;
            //var engine = new SearchEngine(modifiedQuery, m_project.PhoneCache ?? SearchEngine.PhoneCache);
            //var msg = modifiedQuery.GetCombinedErrorMessages();

            //if (!string.IsNullOrEmpty(msg))
            //{
            //    if (showErrMsg)
            //        Utils.MsgBox(msg);

            //    query.Errors.AddRange(modifiedQuery.Errors);
            //    return null;
            //}

            //if (!ReflectionHelper.GetBoolResult(typeof(App),
            //    "VerifyMiscPatternConditions", new object[] { engine, showErrMsg }))
            //{
            //    query.Errors.AddRange(modifiedQuery.Errors);
            //    return null;
            //}

            //return engine;
        }
예제 #7
0
        /// ------------------------------------------------------------------------------------
        private Control GetExceptionLink(SearchQueryValidationError error)
        {
            var text = LocalizationManager.GetString("PhoneticSearchingMessages.ExceptionLinkText.FullMsg",
                                                     "Unhandled Exception encountered. Click here for details.");

            var linkText = LocalizationManager.GetString("PhoneticSearchingMessages.ExceptionLinkText.LinkText",
                                                         "Click here");

            var linkLabel = new LinkLabel
            {
                Text      = text,
                TextAlign = ContentAlignment.TopLeft,
                AutoSize  = true,
                Font      = FontHelper.UIFont,
                BackColor = _panelScrolling.BackColor,
                Anchor    = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top,
                Margin    = new Padding(0, 0, 0, 12),
            };

            linkLabel.LinkClicked += HandleExceptionLinkClicked;
            linkLabel.Links.Clear();
            linkLabel.Links.Add(text.IndexOf(linkText, StringComparison.Ordinal), linkText.Length, error.Exception);
            return(linkLabel);
        }