mirror of
https://github.com/chylex/TweetDuck.git
synced 2024-11-14 08:42:46 +01:00
87 lines
3.2 KiB
C#
87 lines
3.2 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Windows.Forms;
|
|
using TweetDck.Core.Utils;
|
|
|
|
namespace TweetDck.Plugins.Controls{
|
|
partial class PluginControl : UserControl{
|
|
private readonly PluginManager pluginManager;
|
|
private readonly Plugin plugin;
|
|
|
|
public PluginControl(){
|
|
InitializeComponent();
|
|
}
|
|
|
|
public PluginControl(PluginManager pluginManager, Plugin plugin) : this(){
|
|
this.pluginManager = pluginManager;
|
|
this.plugin = plugin;
|
|
|
|
this.labelName.Text = plugin.Name;
|
|
this.labelDescription.Text = plugin.CanRun ? plugin.Description : "This plugin requires "+Program.BrandName+" "+plugin.RequiredVersion+" or newer.";
|
|
this.labelVersion.Text = plugin.Version;
|
|
this.labelAuthor.Text = plugin.Author;
|
|
this.labelWebsite.Text = plugin.Website;
|
|
|
|
UpdatePluginState();
|
|
|
|
if (labelDescription.Text.Length == 0){
|
|
labelDescription.Visible = false;
|
|
}
|
|
|
|
panelDescription_Resize(panelDescription, new EventArgs());
|
|
}
|
|
|
|
private void panelDescription_Resize(object sender, EventArgs e){
|
|
if (labelDescription.Text.Length == 0){
|
|
Height = MinimumSize.Height;
|
|
}
|
|
else{
|
|
labelDescription.MaximumSize = new Size(panelDescription.Width-SystemInformation.VerticalScrollBarWidth, 0);
|
|
Height = Math.Min(MinimumSize.Height+9+labelDescription.Height, MaximumSize.Height);
|
|
}
|
|
}
|
|
|
|
private void labelWebsite_Click(object sender, EventArgs e){
|
|
if (labelWebsite.Text.Length > 0){
|
|
BrowserUtils.OpenExternalBrowser(labelWebsite.Text);
|
|
}
|
|
}
|
|
|
|
private void btnOpenConfig_Click(object sender, EventArgs e){
|
|
using(Process.Start("explorer.exe", "/select,\""+plugin.ConfigPath.Replace('/', '\\')+"\"")){}
|
|
}
|
|
|
|
private void btnToggleState_Click(object sender, EventArgs e){
|
|
bool newState = !pluginManager.Config.IsEnabled(plugin);
|
|
pluginManager.Config.SetEnabled(plugin, newState);
|
|
|
|
UpdatePluginState();
|
|
}
|
|
|
|
private void UpdatePluginState(){
|
|
bool isEnabled = plugin.CanRun && pluginManager.Config.IsEnabled(plugin);
|
|
Color textColor = isEnabled ? Color.Black : Color.FromArgb(90, 90, 90);
|
|
|
|
labelVersion.ForeColor = textColor;
|
|
labelAuthor.ForeColor = textColor;
|
|
labelWebsite.ForeColor = isEnabled ? Color.Blue : Color.FromArgb(90, 90, 249);
|
|
|
|
if (plugin.CanRun){
|
|
labelName.ForeColor = textColor;
|
|
labelDescription.ForeColor = textColor;
|
|
btnToggleState.Text = isEnabled ? "Disable" : "Enable";
|
|
btnOpenConfig.Visible = plugin.HasConfig;
|
|
btnOpenConfig.Enabled = btnOpenConfig.Visible && File.Exists(plugin.ConfigPath);
|
|
}
|
|
else{
|
|
labelName.ForeColor = Color.DarkRed;
|
|
labelDescription.ForeColor = Color.DarkRed;
|
|
btnToggleState.Visible = false;
|
|
btnOpenConfig.Visible = false;
|
|
}
|
|
}
|
|
}
|
|
}
|