mirror of
https://github.com/chylex/Code-Statistics.git
synced 2024-11-24 21:42:45 +01:00
149 lines
5.1 KiB
C#
149 lines
5.1 KiB
C#
using System;
|
|
using System.Windows.Forms;
|
|
using CodeStatistics.Data;
|
|
using CodeStatistics.Forms.Utils;
|
|
using CodeStatistics.Input.Methods;
|
|
|
|
namespace CodeStatistics.Forms.Input{
|
|
sealed partial class GitHubForm : Form{
|
|
public GitHub GitHub { get; private set; }
|
|
|
|
private readonly Timer timer = new Timer{
|
|
Interval = 350,
|
|
Enabled = false,
|
|
};
|
|
|
|
public GitHubForm(){
|
|
InitializeComponent();
|
|
|
|
labelRepository.Text = Lang.Get["LoadGitHubRepositoryName"];
|
|
labelBranch.Text = Lang.Get["LoadGitHubBranch"];
|
|
btnDownload.Text = Lang.Get["LoadGitHubDownload"];
|
|
btnCancel.Text = Lang.Get["LoadGitHubCancel"];
|
|
|
|
if (Program.Config.NoGui){
|
|
Opacity = 0;
|
|
}
|
|
|
|
Disposed += (sender, args) => {
|
|
if (GitHub != null)GitHub.Dispose();
|
|
timer.Dispose();
|
|
};
|
|
|
|
timer.Tick += timer_Tick;
|
|
}
|
|
|
|
private void OnLoad(object sender, EventArgs e){
|
|
ActiveControl = textBoxRepository;
|
|
listBranches.SelectedText = GitHub.DefaultBranch;
|
|
}
|
|
|
|
private void btnDownload_Click(object sender, EventArgs e){
|
|
GitHub = new GitHub(textBoxRepository.Text){
|
|
Branch = (string)listBranches.SelectedItem
|
|
};
|
|
|
|
DialogResult = DialogResult.OK;
|
|
Close();
|
|
}
|
|
|
|
private void textBoxRepository_TextChanged(object sender, EventArgs e){
|
|
btnDownload.Enabled = false;
|
|
timer.Stop();
|
|
timer.Start();
|
|
}
|
|
|
|
private void listBranches_SelectedValueChanged(object sender, EventArgs e){
|
|
if (listBranches.SelectedItem is ItemBranchTechnical){
|
|
listBranches.SelectedIndex = -1;
|
|
}
|
|
}
|
|
|
|
private void timer_Tick(object sender, EventArgs e){
|
|
timer.Stop();
|
|
|
|
if (GitHub.IsRepositoryValid(textBoxRepository.Text)){
|
|
listBranches.Items.Add(new ItemBranchTechnical("LoadGitHubBranchLoading"));
|
|
|
|
GitHub github = new GitHub(textBoxRepository.Text);
|
|
|
|
GitHub.DownloadStatus status = github.RetrieveBranchList((branches, ex) => this.InvokeSafe(() => {
|
|
github.Dispose();
|
|
listBranches.Items.Clear();
|
|
|
|
if (ex != null){
|
|
btnDownload.Enabled = false;
|
|
listBranches.Items.Add(new ItemBranchTechnical("LoadGitHubBranchFailure"));
|
|
|
|
#if MONO
|
|
Exception testEx = ex.InnerException;
|
|
|
|
while(testEx != null){
|
|
if (testEx.GetType().FullName == "Mono.Security.Protocol.Tls.TlsException"){
|
|
if (MessageBox.Show(Lang.Get["LoadGitHubTrustError"], Lang.Get["LoadGitHubError"], MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes){
|
|
using(System.Diagnostics.Process process = System.Diagnostics.Process.Start("mozroots", "--import --ask-remove --quiet")){
|
|
if (process != null){
|
|
process.WaitForExit();
|
|
}
|
|
}
|
|
|
|
timer_Tick(timer, new EventArgs());
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
testEx = testEx.InnerException;
|
|
}
|
|
#endif
|
|
|
|
return;
|
|
}
|
|
|
|
if (branches == null){
|
|
btnDownload.Enabled = false;
|
|
return;
|
|
}
|
|
|
|
foreach(string branch in branches){
|
|
listBranches.Items.Add(branch);
|
|
|
|
if (branch == listBranches.Text){
|
|
listBranches.SelectedIndex = listBranches.Items.Count-1;
|
|
}
|
|
}
|
|
|
|
btnDownload.Enabled = true;
|
|
}));
|
|
|
|
switch(status){
|
|
case GitHub.DownloadStatus.NoInternet:
|
|
MessageBox.Show(Lang.Get["LoadGitHubNoInternet"], Lang.Get["LoadGitHubError"], MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
break;
|
|
|
|
case GitHub.DownloadStatus.NoConnection:
|
|
MessageBox.Show(Lang.Get["LoadGitHubNoEstablishedConnection"], Lang.Get["LoadGitHubError"], MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void btnCancel_Click(object sender, EventArgs e){
|
|
DialogResult = DialogResult.Cancel;
|
|
Close();
|
|
}
|
|
|
|
private class ItemBranchTechnical{
|
|
private readonly string str;
|
|
|
|
public ItemBranchTechnical(string langKey){
|
|
this.str = Lang.Get[langKey];
|
|
}
|
|
|
|
public override string ToString(){
|
|
return str;
|
|
}
|
|
}
|
|
}
|
|
}
|