summary refs log tree commit diff stats
path: root/src/htm
diff options
context:
space:
mode:
authorBerke Viktor <bviktor@hexchat.org>2012-10-04 14:51:00 +0200
committerBerke Viktor <bviktor@hexchat.org>2012-10-04 14:51:00 +0200
commit723486913f5df5742b72c629fa1353aceed93270 (patch)
treeb99380f25a3d977240977b1a8a5f6479f6eff213 /src/htm
parent94c525eee9df256e3bf02115b5cbfed82ad98675 (diff)
Fix HTM config dir handling both on Windows and Unix
Diffstat (limited to 'src/htm')
-rw-r--r--src/htm/Main.cs82
1 files changed, 56 insertions, 26 deletions
diff --git a/src/htm/Main.cs b/src/htm/Main.cs
index a342bbe4..5ecc2080 100644
--- a/src/htm/Main.cs
+++ b/src/htm/Main.cs
@@ -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)

                 {