void fixupApplyButton_Clicked(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(fixupFileNameEntry.Text)) { var dialog = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Must specify a fixup file name."); dialog.Run(); dialog.Destroy(); return; } if (!File.Exists(fixupFileNameEntry.Text)) { var dialog = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "The fixup file '{0}' could not be found.", fixupFileNameEntry.Text); dialog.Run(); dialog.Destroy(); return; } try { var model = girTreeView.Model as TreeModelAdapter; var impl = model.Implementor as GirTreeModel; var newDoc = new XDocument(impl.Root.Document); newDoc.ApplyFixupFile(fixupFileNameEntry.Text); newDoc.ApplyBuiltinFixup(); var fixupImpl = new GirTreeModel(newDoc.Root); fixupTreeView.Model = new TreeModelAdapter(fixupImpl); fixupTreeView.ExpandToPath(new TreePath("0:2")); } catch (Exception ex) { var dialog = new MessageDialog(this, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, "Error while applying fixup file '{0}':\n\n{1}.", fixupFileNameEntry.Text, ex.Message); dialog.Run(); dialog.Destroy(); return; } }