diff options
Diffstat (limited to 'src/htm/Main.cs')
-rw-r--r-- | src/htm/Main.cs | 87 |
1 files changed, 61 insertions, 26 deletions
diff --git a/src/htm/Main.cs b/src/htm/Main.cs index a342bbe4..6a7cd4d2 100644 --- a/src/htm/Main.cs +++ b/src/htm/Main.cs @@ -36,27 +36,50 @@ 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 + { + /* Environment.SpecialFolder.ApplicationData + * Windows: %APPDATA% + * Unix: ~/.config + * Windows is case-insensitive so 'hexchat' should be fine for both + */ + 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 +90,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 +157,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 +184,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 +277,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 +347,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) { |