/// <summary> /// Criterion action combobox value changed /// </summary> private void Box_SelectedIndexChanged(object sender, EventArgs e) { ComboBox cBox = (sender as ComboBox); if (cBox.SelectedIndex == -1) { return; } if (ignoreLocRecalculation) { return; // ignore the change (set in ResetFilterSettings()) } try { string critName = (string)cBox.Tag; if (Enum.IsDefined(typeof(LocalizationCriterionAction), cBox.SelectedIndex)) // it is a standard criterion action (Force localization, Ignore...) { LocalizationCriterionAction newAction = (LocalizationCriterionAction)cBox.SelectedIndex; filterCriteriaCopy[critName].Action = newAction; // set the value in local copy of criteria ToolGrid.RecalculateLocProbability(filterCriteriaCopy, false); // recalculate localization probability } else // it is a special action (Check, Uncheck, ...) { LocalizationCriterionAction2 newAction = (LocalizationCriterionAction2)(cBox.SelectedIndex - Enum.GetValues(typeof(LocalizationCriterionAction)).Length); ToolGrid.ApplyFilterAction(filterCriteriaCopy[critName], newAction); // apply the action } } catch (Exception ex) { VLOutputWindow.VisualLocalizerPane.WriteException(ex); VisualLocalizer.Library.Components.MessageBox.ShowException(ex); } }
/// <summary> /// Creates new instance /// </summary> public AbstractLocalizationCriterion(string name, LocalizationCriterionAction action, int weight) { if (name == null) { throw new ArgumentNullException("name"); } this.Action = action; this.Weight = weight; this.Name = name; }
/// <summary> /// Initializes a new instance of the <see cref="LocalizationCommonCriterion"/> class, with given name, description, criterion action and weight and predicate to test a result item. /// </summary> public LocalizationCommonCriterion(string name, string description, LocalizationCriterionAction option, int weight, Func <CodeStringResultItem, bool?> predicate) : base(name, option, weight) { if (description == null) { throw new ArgumentNullException("description"); } if (predicate == null) { throw new ArgumentNullException("predicate"); } this.Description = description; this.Predicate = predicate; }
/// <summary> /// Returns human-readable name of the criterion action /// </summary> public static string ToHumanForm(this LocalizationCriterionAction act) { switch (act) { case LocalizationCriterionAction.FORCE_ENABLE: return("force localize"); case LocalizationCriterionAction.FORCE_DISABLE: return("force NOT localize"); case LocalizationCriterionAction.VALUE: return("set value"); case LocalizationCriterionAction.IGNORE: return("ignore"); default: throw new Exception("Unknown LocalizationCriterionAction: " + act); } }
/// <summary> /// When "Apply" button of the settings dialog was hit; save the GUI state in the settings /// </summary> protected override void OnApply(PageApplyEventArgs e) { if (e.ApplyBehavior == ApplyKind.Apply) { try { SettingsObject.Instance.IgnorePropertyChanges = true; bool revalidate = SettingsObject.Instance.ShowContextColumn != contextBox.Checked; SettingsObject.Instance.ShowContextColumn = contextBox.Checked; SettingsObject.Instance.UseReflectionInAsp = reflectionBox.Checked; foreach (var pair in SettingsObject.Instance.CommonLocalizabilityCriteria) { LocalizationCommonCriterion crit = pair.Value; DataGridViewRow row = commonCriteriaGrid.Rows[commonCriteriaRowMap[crit.Name]]; crit.Action = (LocalizationCriterionAction)actionColumn.Items.IndexOf(row.Cells[1].Value); int w = 0; object val = row.Cells[2].Value; if (val == null || !int.TryParse(val.ToString(), out w) || w < -100 || w > 100) { throw new Exception("Error on '" + crit.Description + "' - invalid value '" + val + "'. Please enter an integer from -100 to 100."); } crit.Weight = w; } SettingsObject.Instance.CustomLocalizabilityCriteria.Clear(); for (int i = 0; i < customCriteriaTable.RowCount - 1; i++) { TableLayoutPanel t = (TableLayoutPanel)customCriteriaTable.GetControlFromPosition(0, i); ComboBox targetBox = (ComboBox)t.GetControlFromPosition(1, 0); ComboBox predicateBox = (ComboBox)t.GetControlFromPosition(2, 0); TextBox regexBox = (TextBox)t.GetControlFromPosition(1, 1); ComboBox actionBox = (ComboBox)t.GetControlFromPosition(1, 2); NumericUpDown valueBox = (NumericUpDown)t.GetControlFromPosition(2, 2); if (actionBox.SelectedIndex == -1) { throw new Exception("Error on custom rule no. " + (i + 1) + " - must select action."); } LocalizationCriterionAction action = (LocalizationCriterionAction)actionBox.SelectedIndex; LocalizationCustomCriterion crit = new LocalizationCustomCriterion(action, (int)valueBox.Value); if (!string.IsNullOrEmpty(t.Name)) { crit.Name = t.Name; } if (predicateBox.SelectedIndex == -1) { throw new Exception("Error on custom rule no. " + (i + 1) + " - must select predicate."); } crit.Predicate = (LocalizationCriterionPredicate)predicateBox.SelectedIndex; if (targetBox.SelectedIndex == -1) { throw new Exception("Error on custom rule no. " + (i + 1) + " - must select target."); } crit.Target = (LocalizationCriterionTarget)targetBox.SelectedIndex; new Regex(regexBox.Text); // throws exception if regex is not valid crit.Regex = regexBox.Text; SettingsObject.Instance.CustomLocalizabilityCriteria.Add(crit); } if (revalidate) { SettingsObject.Instance.NotifyRevalidationRequested(); } } catch (Exception ex) { VLOutputWindow.VisualLocalizerPane.WriteException(ex); VisualLocalizer.Library.Components.MessageBox.ShowException(ex); e.ApplyBehavior = ApplyKind.CancelNoNavigate; } finally { SettingsObject.Instance.IgnorePropertyChanges = false; SettingsObject.Instance.NotifyPropertyChanged(CHANGE_CATEGORY.FILTER); } } }
/// <summary> /// Initializes a new instance of the <see cref="LocalizationCustomCriterion"/> class with given criterion action and weight. /// </summary> public LocalizationCustomCriterion(LocalizationCriterionAction action, int weight) : base("x" + rnd.Next().ToString(), action, weight) { }