public UserInfoDialog(Window parent, Network network, Node node) : base(parent, "UserInfoDialog") { this.node = node; this.network = network; base.Window.Title = node.ToString(); avatarImage.Pixbuf = Gui.AvatarManager.GetAvatar(node); nickNameLabel.Markup = String.Format("<span weight=\"bold\" size=\"x-large\">{0}</span> on <i>{1}</i>\n<span font=\"monospace\" size=\"small\">{2}</span>", node.NickName, network.NetworkName, Common.FormatFingerprint(node.NodeID, 4)); realNameLabel.Text = node.RealName; emailLabel.Text = node.Email; TreeViewColumn column; column = addressesTreeView.AppendColumn("Protocol", new CellRendererText(), "text", 0); column = addressesTreeView.AppendColumn("Address Details", new CellRendererText(), "text", 1); column.Expand = true; addressesTreeView.AppendColumn("Supported", new CellRendererText(), "text", 2); addressesTreeView.AppendColumn("Open Externally", new CellRendererText(), "text", 3); addressesTreeView.AppendColumn("Connectable", new CellRendererText(), "text", 4); addressListStore = new ListStore(typeof(string), typeof(string), typeof(string), typeof(string), typeof(string), typeof(string)); IDestination[] destinations = null; DestinationInfo[] destinationInfos; if (node.IsMe) { destinationInfos = Core.DestinationManager.DestinationInfos; } else { destinationInfos = node.GetTrustedNode().DestinationInfos.ToArray(); destinations = node.GetTrustedNode().Destinations; } if (destinations != null) { foreach (IDestination destination in destinations) { addressListStore.AppendValues(destination.FriendlyTypeName, destination.ToString(), "True", destination.IsOpenExternally.ToString(), destination.CanConnect.ToString()); } } foreach (DestinationInfo info in destinationInfos) { if ((!info.Supported) || destinations == null) { if (node.IsMe) { addressListStore.AppendValues(info.FriendlyName, String.Join(", ", info.Data), info.Supported.ToString(), info.IsOpenExternally.ToString(), String.Empty); } else { addressListStore.AppendValues(info.FriendlyName, String.Join(", ", info.Data), "False", info.IsOpenExternally.ToString(), "False"); } } } addressesTreeView.Model = addressListStore; clientNameLabel.Text = node.ClientName; clientVersionLabel.Text = node.ClientVersion; operatingSystemLabel.Text = node.OperatingSystem; }