void HandlePoliciesComboChanged(object sender, EventArgs e) { if (!loading) { if (currentSet != null) { // Save current values if (ValidateChanges()) { base.ApplyChanges(); currentSet.CopyFrom(editingSet); } else { // There are validation errors. Cancel the policy switch int last = policiesCombo.Active; Application.Invoke(delegate { loading = true; policiesCombo.Active = last; loading = false; }); return; } } if (policiesCombo.Active != -1 && policiesCombo.Active < sets.Count) { // Load the new values currentSet = sets [policiesCombo.Active]; editingSet.Name = currentSet.Name; editingSet.CopyFrom(currentSet); } } }
void HandleNewButtonClicked(object sender, EventArgs e) { HashSet <PolicySet> esets = new HashSet <PolicySet> (PolicyService.GetPolicySets()); esets.ExceptWith(PolicyService.GetUserPolicySets()); esets.UnionWith(sets); esets.RemoveWhere(p => !p.Visible); NewPolicySetDialog dlg = new NewPolicySetDialog(new List <PolicySet> (esets)); try { if (MessageService.RunCustomDialog(dlg, this) == (int)ResponseType.Ok) { PolicySet pset = new PolicySet(); pset.CopyFrom(dlg.SourceSet); pset.Name = GetUnusedName(dlg.PolicyName); sets.Add(pset); FillPolicySets(); policiesCombo.Active = sets.IndexOf(pset); } } finally { dlg.Destroy(); dlg.Dispose(); } }
void FillPolicySets() { loading = true; int current = policiesCombo.Active; ((ListStore)policiesCombo.Model).Clear(); policiesCombo.WidthRequest = -1; sets.Sort((p1, p2) => p1.Name.CompareTo(p2.Name)); foreach (PolicySet pset in sets) { policiesCombo.AppendText(pset.Name ?? ""); } if (current == -1 && sets.Count > 0) { policiesCombo.Active = 0; } else if (current >= sets.Count) { policiesCombo.Active = sets.Count - 1; } else { policiesCombo.Active = current; } if (policiesCombo.SizeRequest().Width < 200) { policiesCombo.WidthRequest = 200; } loading = false; if (policiesCombo.Active != -1 && sets [policiesCombo.Active] != currentSet) { currentSet = sets [policiesCombo.Active]; editingSet.Name = currentSet.Name; editingSet.CopyFrom(currentSet); } UpdateStatus(); }
void HandleFromProject(object sender, EventArgs e) { ImportProjectPolicyDialog dlg = new ImportProjectPolicyDialog(); try { if (MessageService.RunCustomDialog(dlg, this) == (int)Gtk.ResponseType.Ok) { PolicySet pset = new PolicySet(); pset.CopyFrom(dlg.SelectedItem.Policies); pset.Name = GetValidName(dlg.PolicyName); sets.Add(pset); FillPolicySets(); policiesCombo.Active = sets.IndexOf(pset); } } finally { dlg.Destroy(); } }