private static void BackgroundworkerDoWork(object sender, DoWorkEventArgs e) { var workerArgs = e.Argument as WorkerArgs; if (workerArgs != null) { var bitmapImage = Utilities.LoadBitmap(workerArgs.IconPath); var instance = ServiceLocator.Current.GetInstance<MainViewModel>(); var fileLanguage = instance.ActiveEditor.FileLanguage; var match = VariableHelper.FindMatches(workerArgs.Lang.XYZRegex, workerArgs.Filename); var fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(bitmapImage.UriSource.AbsolutePath); var flag = fileNameWithoutExtension != null && fileNameWithoutExtension.Contains("XYZ"); while (match.Success) { var item = new Variable { Icon = bitmapImage, Path = workerArgs.Filename, Offset = match.Index, Type = match.Groups[1].ToString(), Name = match.Groups[2].ToString(), Value = flag ? fileLanguage.ExtractXYZ(match.ToString()) : match.Groups[3].ToString(), Comment = match.Groups[4].ToString() }; Variables.Add(item); match = match.NextMatch(); } } }
public static List<IVariable> GetVariables(string filename, Regex regex, string iconpath) { var list = new List<IVariable>(); var bitmapImage = Utilities.LoadBitmap(iconpath); var instance = ServiceLocator.Current.GetInstance<MainViewModel>(); var fileLanguage = instance.ActiveEditor.FileLanguage; var match = VariableHelper.FindMatches(regex, filename); var fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(bitmapImage.UriSource.AbsolutePath); var flag = fileNameWithoutExtension != null && fileNameWithoutExtension.Contains("XYZ"); List<IVariable> result; if (match == null) { var msg = new ErrorMessage("Variable for " + fileLanguage.RobotType, "Does not exist in VariableBase.GetVariables", MessageType.Error); Messenger.Default.Send<IMessage>(msg); result = null; } else { while (match.Success) { var item = new Variable { Icon = bitmapImage, Path = filename, Offset = match.Index, Type = match.Groups[1].ToString(), Name = match.Groups[2].ToString(), Value = flag ? fileLanguage.ExtractXYZ(match.ToString()) : match.Groups[3].ToString(), Comment = match.Groups[4].ToString() }; list.Add(item); match = match.NextMatch(); } result = list; } return result; }