mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-08-16 06:31:42 +02:00
Configuration
Instance
FileConfigInstance.cs
IConfigInstance.cs
PluginConfigInstance.cs
Arguments.cs
ConfigManager.cs
LockManager.cs
PluginConfig.cs
SystemConfig.cs
UserConfig.cs
Core
Data
Plugins
Properties
Resources
Updates
bld
lib
subprocess
video
.gitattributes
.gitignore
LICENSE.md
Program.cs
README.md
Reporter.cs
TweetDuck.csproj
TweetDuck.sln
TweetDuck.sln.DotSettings
packages.config
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();
|
|
}
|
|
}
|
|
}
|