Files
Administration/SM64 ROM Manager.ProgressUpdater/PasteFromDocument.cs
2022-02-09 15:11:39 +01:00

97 lines
2.8 KiB
C#

using DevComponents.DotNetBar;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SM64_ROM_Manager.ProgressUpdater
{
public partial class PasteFromDocument : OfficeForm
{
private Settings settings;
public Image DocumentImage { get; private set; }
public PasteFromDocument(Settings settings)
{
this.settings = settings;
InitializeComponent();
UpdateAmbientColors();
}
private void ButtonX_Paste_Click(object sender, EventArgs e)
{
BaseItem selectedItem = null;
foreach (BaseItem item in itemPanel1.Items)
{
if (selectedItem == null && item is CheckBoxItem && ((CheckBoxItem)item).Checked)
selectedItem = item;
}
if (selectedItem?.Tag is object)
{
var md = (string)selectedItem.Tag;
DocumentImage = MarkdownHelper.GetAsImage(md);
DialogResult = DialogResult.OK;
}
}
private async void textBoxX1_TextChanged(object sender, EventArgs e)
{
var url = textBoxX1.Text.Trim();
settings.UpcommingVersionsDownloadURL = url;
if (!string.IsNullOrEmpty(url))
await GetNewItems(url);
}
private async Task GetNewItems(string url)
{
var mdDocStr = await DownloadString(url);
if (!string.IsNullOrEmpty(mdDocStr))
{
itemPanel1.SuspendLayout();
itemPanel1.Items.Clear();
foreach (var kvp in MarkdownHelper.SplitToVersions(mdDocStr))
{
var item = new CheckBoxItem
{
Text = kvp.Key,
Tag = kvp.Value,
CheckBoxStyle = eCheckBoxStyle.RadioButton
};
item.DoubleClick += ButtonX_Paste_Click;
itemPanel1.Items.Add(item);
}
itemPanel1.ResumeLayout();
itemPanel1.Refresh();
if (itemPanel1.Items.Count != 0)
((CheckBoxItem)itemPanel1.Items[0]).Checked = true;
}
}
private static async Task<string> DownloadString(string url)
{
var wc = new WebClient();
var res = await wc.DownloadStringTaskAsync(url);
wc.Dispose();
return res;
}
private void PasteFromDocument_Load(object sender, EventArgs e)
{
textBoxX1.Text = settings.UpcommingVersionsDownloadURL;
}
}
}