public MainWindow(Instance instance, MinecraftSession session) : base(Gtk.WindowType.Toplevel) { Instance = instance; Session = session; Build (); titleLabel.Text = instance.Description.Name; if (session != null) usernameLabel.Markup = string.Format ("Logged in as <b>{0}</b>", Session.Username); else { var saved = GetSavedCredentials(); if (saved == null) { usernameLabel.Markup = string.Format ("Click Play to Login"); } else { usernameLabel.Markup = string.Format ("Welcome back <b>{0}</b>!", saved.AutoLoginUser); } } var syncSummary = instance.CheckSync(); List<string> items = new List<string>(); items.AddRange(syncSummary.UpgradedMods.Select( mod => string.Format ("Upgraded mod: {0} {1}", mod.NewVersion.Name, mod.NewVersion.Version) )); items.AddRange(syncSummary.AddedMods.Select( mod => string.Format ("New mod: {0} {1}", mod.Name, mod.Version) )); items.AddRange(syncSummary.RemovedMods.Select( mod => string.Format ("Removed mod: {0}", mod.Name) )); if (syncSummary.NewConfiguration) items.Add("New configuration to download."); InstanceName = instance.Description.Name; Description = instance.Description.Description; var newDesc = Instance.FetchServerInstanceDescription(); serverNews.Buffer.Text = newDesc.MessageOfTheDay; //playButton.ImagePosition = PositionType.Left; if (items.Count > 0) { UpdateSummary = string.Join("\n", items.Select (x => " * "+x)); playButton.Image = Image.NewFromIconName(Stock.GoUp, IconSize.Button); playButton.Label = "Update to Play!"; } else { UpdateSummary = "None, ready to play!"; playButton.Hide(); playButton.Unrealize(); playButton.Label = "Play!"; playButton.Image = Image.NewFromIconName(Stock.Apply, IconSize.Button); playButton.Show(); } }