mirror of
https://github.com/chylex/TweetDuck.git
synced 2024-11-23 17:42:46 +01:00
70 lines
2.5 KiB
C#
70 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Text;
|
|
|
|
namespace TweetDuck.Configuration.Instance{
|
|
class PluginConfigInstance : IConfigInstance<PluginConfig>{
|
|
public PluginConfig Instance { get; }
|
|
|
|
private readonly string filename;
|
|
|
|
public PluginConfigInstance(string filename, PluginConfig instance){
|
|
this.filename = filename;
|
|
this.Instance = instance;
|
|
}
|
|
|
|
public void Load(){
|
|
try{
|
|
using(StreamReader reader = new StreamReader(new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read), Encoding.UTF8)){
|
|
string line = reader.ReadLine();
|
|
|
|
if (line == "#Disabled"){
|
|
HashSet<string> newDisabled = new HashSet<string>();
|
|
|
|
while((line = reader.ReadLine()) != null){
|
|
newDisabled.Add(line);
|
|
}
|
|
|
|
Instance.ReloadSilently(newDisabled);
|
|
}
|
|
}
|
|
}catch(FileNotFoundException){
|
|
}catch(DirectoryNotFoundException){
|
|
}catch(Exception e){
|
|
Program.Reporter.HandleException("Plugin Configuration Error", "Could not read the plugin configuration file. If you continue, the list of disabled plugins will be reset to default.", true, e);
|
|
}
|
|
}
|
|
|
|
public void Save(){
|
|
try{
|
|
using(StreamWriter writer = new StreamWriter(new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None), Encoding.UTF8)){
|
|
writer.WriteLine("#Disabled");
|
|
|
|
foreach(string identifier in Instance.DisabledPlugins){
|
|
writer.WriteLine(identifier);
|
|
}
|
|
}
|
|
}catch(Exception e){
|
|
Program.Reporter.HandleException("Plugin Configuration Error", "Could not save the plugin configuration file.", true, e);
|
|
}
|
|
}
|
|
|
|
public void Reload(){
|
|
Load();
|
|
}
|
|
|
|
public void Reset(){
|
|
try{
|
|
File.Delete(filename);
|
|
Instance.ReloadSilently(Instance.ConstructWithDefaults<PluginConfig>().DisabledPlugins);
|
|
}catch(Exception e){
|
|
Program.Reporter.HandleException("Plugin Configuration Error", "Could not delete the plugin configuration file.", true, e);
|
|
return;
|
|
}
|
|
|
|
Reload();
|
|
}
|
|
}
|
|
}
|