Skip to content

Commit

Permalink
Refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
artyfarty committed Jan 23, 2012
1 parent 762806f commit 1afb3b8
Show file tree
Hide file tree
Showing 4 changed files with 218 additions and 199 deletions.
12 changes: 6 additions & 6 deletions UniversalEmoticonPackBuilder.sln
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "emoticon_build", "UniversalEmoticonPackBuilder\emoticon_build.csproj", "{FB29B9CB-D6D8-43F4-9011-538A0B9C7451}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "qip_buildmap", "qip_buildmap\qip_buildmap.csproj", "{FC8DA446-6B5C-4BD0-881F-D683068A5259}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "emoticon_build", "UniversalEmoticonPackBuilder\emoticon_build.csproj", "{FB29B9CB-D6D8-43F4-9011-538A0B9C7451}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FB29B9CB-D6D8-43F4-9011-538A0B9C7451}.Debug|x86.ActiveCfg = Debug|x86
{FB29B9CB-D6D8-43F4-9011-538A0B9C7451}.Debug|x86.Build.0 = Debug|x86
{FB29B9CB-D6D8-43F4-9011-538A0B9C7451}.Release|x86.ActiveCfg = Release|x86
{FB29B9CB-D6D8-43F4-9011-538A0B9C7451}.Release|x86.Build.0 = Release|x86
{FC8DA446-6B5C-4BD0-881F-D683068A5259}.Debug|x86.ActiveCfg = Debug|x86
{FC8DA446-6B5C-4BD0-881F-D683068A5259}.Debug|x86.Build.0 = Debug|x86
{FC8DA446-6B5C-4BD0-881F-D683068A5259}.Release|x86.ActiveCfg = Release|x86
{FC8DA446-6B5C-4BD0-881F-D683068A5259}.Release|x86.Build.0 = Release|x86
{FB29B9CB-D6D8-43F4-9011-538A0B9C7451}.Debug|x86.ActiveCfg = Debug|x86
{FB29B9CB-D6D8-43F4-9011-538A0B9C7451}.Debug|x86.Build.0 = Debug|x86
{FB29B9CB-D6D8-43F4-9011-538A0B9C7451}.Release|x86.ActiveCfg = Release|x86
{FB29B9CB-D6D8-43F4-9011-538A0B9C7451}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
211 changes: 18 additions & 193 deletions UniversalEmoticonPackBuilder/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,9 @@ abstract class SmileConfig
protected PackInfo pack;
protected string client;

public SmileConfig(PackInfo pack) {
public SmileConfig(PackInfo pack, string client) {
this.pack = pack;
this.client = client;
}

public void CopySmiley(string orig_file, string[] equivs)
Expand All @@ -136,209 +137,33 @@ protected virtual string RenameFile(string fname)
{
return fname;
}
}

class QipSmileConfig : SmileConfig {
private StreamWriter defineFile;
private int counter = 0;

public QipSmileConfig(string path, PackInfo pack) : base(pack)
{
client = "QIP";

this.path = path + String.Format("{0} {1} by {2} for {3}/", pack.name, pack.version, pack.author, client);
Directory.CreateDirectory(this.path);

defineFile = new StreamWriter(this.path + "_define.ini", false, Encoding.GetEncoding("windows-1251"));
defineFile.AutoFlush = true;
}

protected override void WriteEntry(string file, string[] equivs)
{
defineFile.WriteLine(String.Join(",", equivs));
counter++;
}

protected override void EndFile()
{
defineFile.Flush();
var w = new StreamWriter(this.path + "_define_vis.ini", false, Encoding.GetEncoding("windows-1251"));
w.Write("1-{0}", counter + 1);
w.Flush();
}

protected override string RenameFile(string fname)
{
var ext = fname.Split('.').Last();
return toBase26(counter, 2) + "." + ext;
}

static string toBase26(int x, int digits)
{
string base26Characters = "abcdefghijklmnopqrstuvwxyz";

char[] result = new char[digits];
for (int i = digits - 1; i >= 0; --i)
{
result[i] = base26Characters[x % base26Characters.Length];
x /= base26Characters.Length;
}
return new string(result);
}
}

class PidginSmileConfig : SmileConfig
{
private StreamWriter pidginTheme;

public PidginSmileConfig(string path, PackInfo pack)
: base(pack)
{
client = "Pidgin";

this.path = path + String.Format("{0} {1} by {2} for {3}/{0}/", pack.name, pack.version, pack.author, client);
Directory.CreateDirectory(this.path);

pidginTheme = new StreamWriter(this.path + "theme", false, Encoding.GetEncoding("windows-1251"));
pidginTheme.AutoFlush = true;
pidginTheme.WriteLine("Name={0}", pack.name);
pidginTheme.WriteLine("Description={0} {1} by {2}", pack.name, pack.version, pack.author);
pidginTheme.WriteLine("Icon=ff.gif");
pidginTheme.WriteLine("Author={0}", pack.author);
pidginTheme.WriteLine("[default]");
}

protected override void WriteEntry(string file, string[] equivs)
{
pidginTheme.WriteLine("{0}\t{1}", file, String.Join("\t", equivs));
}

protected override void EndFile()
{
pidginTheme.Flush();
}
}

class AdiumSmileConfig : SmileConfig {
private XmlTextWriter plistWriter;

public AdiumSmileConfig(string path, PackInfo pack)
: base(pack)
{
client = "Adium";

this.path = path + String.Format("{0} {1} by {2} for {3}/{0}.AdiumEmoticonSet/", pack.name, pack.version, pack.author, client);
Directory.CreateDirectory(this.path);

plistWriter = new XmlTextWriter(this.path + "Emoticons.plist", Encoding.UTF8);

plistWriter.Formatting = Formatting.Indented;
plistWriter.WriteStartDocument();
plistWriter.WriteDocType("plist", "-//Apple Computer//DTD PLIST 1.0//EN", "http://www.apple.com/DTDs/PropertyList-1.0.dtd", null);

plistWriter.WriteStartElement("plist");
plistWriter.WriteAttributeString("version", "1.0");
plistWriter.WriteStartElement("dict");
plistWriter.WriteElementString("key", "AdiumSetVersion");
plistWriter.WriteElementString("integer", "1");
plistWriter.WriteElementString("key", "Emoticons");
plistWriter.WriteStartElement("dict");
}

protected override void WriteEntry(string file, string[] equivs)
{
plistWriter.WriteElementString("key", file);
plistWriter.WriteStartElement("dict");
plistWriter.WriteElementString("key", "Equivalents");
plistWriter.WriteStartElement("array");
foreach (var eq in equivs)
plistWriter.WriteElementString("string", eq);
plistWriter.WriteEndElement();
plistWriter.WriteElementString("key", "Name");
plistWriter.WriteElementString("string", equivs[0]);
plistWriter.WriteEndElement();
}

protected override void EndFile()
{
plistWriter.WriteEndElement();
plistWriter.WriteEndElement();
plistWriter.WriteEndElement();
plistWriter.WriteEndDocument();
plistWriter.Flush();
}
}

class MirandaSmileConfig : SmileConfig
{
private StreamWriter mirandaTheme;

public MirandaSmileConfig(string path, PackInfo pack)
: base(pack)
{
client = "Miranda";

this.path = path + String.Format("{0} {1} by {2} for Miranda/Animated/", pack.name, pack.version, pack.author);
Directory.CreateDirectory(this.path);

mirandaTheme = new StreamWriter(this.path + pack.name + ".msl", false, Encoding.GetEncoding("utf-8"));
mirandaTheme.AutoFlush = true;
mirandaTheme.WriteLine("Name\t=\t{0}", pack.name);
mirandaTheme.WriteLine("Author\t=\t{0}", pack.author);
mirandaTheme.WriteLine("Date\t=\t{0}", DateTime.Now);
mirandaTheme.WriteLine("Version\t=\t{0}", pack.version);
}

protected override void WriteEntry(string file, string[] equivs)
{
mirandaTheme.WriteLine("Smiley\t= \"{0}\", 0, \"{1}\"", file, String.Join("\", \"", equivs));
}

protected override void EndFile()
{
mirandaTheme.Flush();
}
}

class WIMSkin : SmileConfig
{
private StreamWriter wimSkin;

public WIMSkin(string path, PackInfo pack)
: base(pack)
{
client = "WIM";

this.path = path + String.Format("{0} {1} by {2} for WIM/PlurkSmilies/", pack.name, pack.version, pack.author);
Directory.CreateDirectory(this.path);

wimSkin = new StreamWriter(this.path + pack.name + ".lua", false, Encoding.GetEncoding("utf-8"));
wimSkin.AutoFlush = true;
wimSkin.WriteLine("WIM_ClassicSkin.emoticons.definitions = {");

this.path += "Emoticons/";
Directory.CreateDirectory(this.path);
}

protected override void WriteEntry(string file, string[] equivs)
public string PackFullName
{
wimSkin.WriteLine("[\"{0}\"] = \"Interface\\\\AddOns\\\\PlurkSmilies\\\\Emoticons\\\\{1}\",", equivs[0], file);
}

protected override void EndFile()
{
wimSkin.WriteLine("};");
wimSkin.Flush();
get { return String.Format("{0} for {1}", pack.FullName, client); }
}
}


// class that stores emoticon pack info
class PackInfo {
public string name;
public string version;
public string author;

public string FullName {
get {
return String.Format("{0} {1} by {2}", name, version, author);
}
}

public string Description {
get {
return FullName;
}
}
}

// Class for config json deserialization
[DataContract]
class CMDArgs {
[DataMember]
Expand Down
Loading

0 comments on commit 1afb3b8

Please sign in to comment.