示例#1
0
    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();
        }
    }