Fix HTM config dir handling both on Windows and Unix
This commit is contained in:
parent
94c525eee9
commit
723486913f
|
@ -36,27 +36,45 @@ namespace thememan
|
|||
{
|
||||
public partial class HTM : Form
|
||||
{
|
||||
public string appdata = (Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\HexChat\\");
|
||||
public string home = (Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/.config/hexchat/");
|
||||
|
||||
public string xchatdir;
|
||||
public string themedir = "themes\\";
|
||||
public string hexchatdir;
|
||||
public string themedir;
|
||||
|
||||
OpenFileDialog importDialog;
|
||||
|
||||
public HTM ()
|
||||
{
|
||||
InitializeComponent ();
|
||||
|
||||
if (File.Exists ("portable-mode"))
|
||||
xchatdir = ("config\\");
|
||||
else if (Directory.Exists (appdata))
|
||||
xchatdir = (appdata);
|
||||
else if (Directory.Exists (home)) {
|
||||
xchatdir = (home); themedir = "themes/";
|
||||
} else
|
||||
Console.WriteLine("Install not found");
|
||||
{
|
||||
InitializeComponent ();
|
||||
|
||||
if (RunningOnWindows() && File.Exists("portable-mode"))
|
||||
{
|
||||
hexchatdir = ("config\\");
|
||||
|
||||
if (!Directory.Exists(hexchatdir))
|
||||
{
|
||||
MessageBox.Show("HexChat installation not found!\nCheck your .\\config folder", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
Environment.Exit(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
hexchatdir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "hexchat");
|
||||
|
||||
if (!Directory.Exists(hexchatdir))
|
||||
{
|
||||
if (RunningOnWindows())
|
||||
{
|
||||
MessageBox.Show("HexChat installation not found!\nCheck your %APPDATA%\\HexChat folder", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("HexChat installation not found!\nCheck your ~/.config/hexchat folder", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
|
||||
Environment.Exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
themedir = Path.Combine(hexchatdir, "themes");
|
||||
ListThemes();
|
||||
|
||||
String[] arguments = Environment.GetCommandLineArgs();
|
||||
|
@ -67,20 +85,32 @@ namespace thememan
|
|||
}
|
||||
}
|
||||
|
||||
private bool RunningOnWindows()
|
||||
{
|
||||
if (Environment.OSVersion.ToString().ToLower().Contains("windows"))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void ListThemes()
|
||||
{
|
||||
themelist.Items.Clear();
|
||||
|
||||
if (Directory.Exists(xchatdir + themedir))
|
||||
if (Directory.Exists(themedir))
|
||||
{
|
||||
foreach (string theme in Directory.GetDirectories(xchatdir + themedir))
|
||||
foreach (string theme in Directory.GetDirectories(themedir))
|
||||
{
|
||||
themelist.Items.Add(theme.Remove(0, xchatdir.Length + themedir.Length));
|
||||
themelist.Items.Add(theme.Remove(0, themedir.Length + 1));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Directory.CreateDirectory(xchatdir + themedir);
|
||||
Directory.CreateDirectory(themedir);
|
||||
}
|
||||
|
||||
if (themelist.Items.Count == 0)
|
||||
|
@ -122,7 +152,7 @@ namespace thememan
|
|||
private List<List<string>> ReadTheme(string theme)
|
||||
{
|
||||
List<List<string>> themecolors = new List<List<string>>();
|
||||
foreach (string line in File.ReadLines(xchatdir + themedir + theme + "/colors.conf"))
|
||||
foreach (string line in File.ReadLines(Path.Combine(themedir, theme, "colors.conf")))
|
||||
{
|
||||
List<string> colors = new List<string>();
|
||||
List<string> colorlist = new List<string>();
|
||||
|
@ -149,10 +179,10 @@ namespace thememan
|
|||
DialogResult result = MessageBox.Show("HexChat must be closed and this will overwrite your current theme!\n\nDo you wish to continue?", "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
|
||||
if (result == DialogResult.OK)
|
||||
{
|
||||
File.Copy(xchatdir + themedir + themelist.SelectedItem.ToString() + "\\colors.conf", xchatdir + "colors.conf", true);
|
||||
if (File.Exists(xchatdir + themedir + themelist.SelectedItem.ToString() + "\\pevents.conf"))
|
||||
File.Copy(Path.Combine(themedir, themelist.SelectedItem.ToString(), "colors.conf"), Path.Combine(hexchatdir, "colors.conf"), true);
|
||||
if (File.Exists(Path.Combine(themedir, themelist.SelectedItem.ToString(), "pevents.conf")))
|
||||
{
|
||||
File.Copy(xchatdir + themedir + themelist.SelectedItem.ToString() + "\\pevents.conf", xchatdir + "pevents.conf", true);
|
||||
File.Copy(Path.Combine(themedir, themelist.SelectedItem.ToString(), "pevents.conf"), Path.Combine(hexchatdir, "pevents.conf"), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -242,7 +272,7 @@ namespace thememan
|
|||
private int extractTheme(FileInfo zipFile)
|
||||
{
|
||||
string themeName = zipFile.Name.Remove(zipFile.Name.Length - zipFile.Extension.Length);
|
||||
string destFolder = xchatdir + themedir + themeName;
|
||||
string destFolder = Path.Combine(themedir, themeName);
|
||||
|
||||
try
|
||||
{
|
||||
|
@ -312,7 +342,7 @@ namespace thememan
|
|||
DialogResult result = MessageBox.Show("Are you sure you want to delete this theme from the theme repo?\n\nYour currently applied theme won't be affected.", "Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
|
||||
if (result == DialogResult.OK)
|
||||
{
|
||||
Directory.Delete(xchatdir + themedir + themelist.SelectedItem.ToString(), true);
|
||||
Directory.Delete(Path.Combine(themedir, themelist.SelectedItem.ToString()), true);
|
||||
ListThemes();
|
||||
if (themelist.Items.Count == 0)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue