I18NCommander/I18N Commander/UI WinForms/Components/Main.cs

56 lines
2.2 KiB
C#

using DataModel.Database;
using Processor;
using UI_WinForms.Dialogs;
namespace UI_WinForms.Components;
public partial class Main : UserControl
{
public Main()
{
this.InitializeComponent();
Program.RestartMainApp = false;
// Register the something changed event to trigger the export:
AppEvents.WhenSomethingChanged += async (_, _) => await ExportProcessor.TriggerExport();
// Check, if the DeepL integration is enabled, but no API key is set:
this.Load += async (sender, args) =>
{
var deepLAPIKey = await AppSettings.GetDeepLAPIKey();
var deepLMode = await AppSettings.GetDeepLMode();
if (deepLMode is not SettingDeepLMode.DISABLED && string.IsNullOrWhiteSpace(deepLAPIKey))
{
// Show the input dialog to ask the user for the DeepL API key:
var inputDialog = InputDialog.Show(new InputDialog.Options
{
Title = "I18NCommander - DeepL API Key",
Message = "The DeepL integration is enabled, but there is no API key set. Do you want to set one now?",
OkButtonText = "Set API key",
CancelButtonText = "No, thanks",
ShowQuestionCheckbox = false,
});
if (inputDialog.DialogResult == DialogResult.OK)
{
await AppSettings.SetDeepLAPIKey(inputDialog.Text);
AppEvents.SettingsChanged();
}
}
};
}
private void tabControl_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.settings.NeedRestart())
{
var result = MessageBox.Show("You need to restart the app for the changes to take effect. Do you want to restart?", "Restart required", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
if(result == DialogResult.Yes)
{
Program.RestartMainApp = true;
AppEvents.ResetAllSubscriptions();
this.ParentForm!.Close();
}
}
}
}