diff --git a/Programs/GridProxyGUI/GridProxyGUI.csproj b/Programs/GridProxyGUI/GridProxyGUI.csproj index 7a45ce67..9cd850af 100755 --- a/Programs/GridProxyGUI/GridProxyGUI.csproj +++ b/Programs/GridProxyGUI/GridProxyGUI.csproj @@ -80,6 +80,7 @@ + diff --git a/Programs/GridProxyGUI/MainWindow.Persistance.cs b/Programs/GridProxyGUI/MainWindow.Persistance.cs new file mode 100755 index 00000000..7f3d102a --- /dev/null +++ b/Programs/GridProxyGUI/MainWindow.Persistance.cs @@ -0,0 +1,94 @@ +using System; +using Gtk; +using GridProxyGUI; +using OpenMetaverse.StructuredData; +using System.IO; +using System.IO.Compression; +using System.Text; + + +public partial class MainWindow +{ + string SessionFileName; + + void SaveSession() + { + OSDMap s = new OSDMap(); + OSDArray array = new OSDArray(); + + foreach (object[] row in messages.Messages) + { + array.Add(((Session)row[0]).Serialize()); + } + + s["Version"] = "1.0"; + s["Messages"] = array; + + System.Threading.ThreadPool.QueueUserWorkItem((sync) => + { + try + { + using (var file = File.OpenWrite(SessionFileName)) + { + using (var compressed = new GZipStream(file, CompressionMode.Compress)) + { + using (var writer = new System.Xml.XmlTextWriter(compressed, new UTF8Encoding(false))) + { + writer.Formatting = System.Xml.Formatting.Indented; + writer.WriteStartDocument(); + writer.WriteStartElement(String.Empty, "llsd", String.Empty); + OSDParser.SerializeLLSDXmlElement(writer, s); + writer.WriteEndElement(); + } + } + } + } + catch { } + }); + } + + void OpenSession(string fileName) + { + System.Threading.ThreadPool.QueueUserWorkItem((sync) => + { + OSD data; + try + { + using (var file = File.OpenRead(fileName)) + { + using (var compressed = new GZipStream(file, CompressionMode.Decompress)) + { + data = OSDParser.DeserializeLLSDXml(compressed); + } + } + } + catch + { + return; + } + + Application.Invoke((sender, e) => + { + try + { + if (data != null && data is OSDMap) + { + OSDMap map = (OSDMap)data; + OSDArray msgs = (OSDArray)map["Messages"]; + foreach (var msgOSD in msgs) + { + var msg = (OSDMap)msgOSD; + var session = Session.FromOSD(msg); + if (session != null) + { + messages.Messages.AppendValues(session); + } + } + } + } + catch { } + }); + }); + } + +} diff --git a/Programs/GridProxyGUI/MainWindow.cs b/Programs/GridProxyGUI/MainWindow.cs index 99968725..dd1aba82 100755 --- a/Programs/GridProxyGUI/MainWindow.cs +++ b/Programs/GridProxyGUI/MainWindow.cs @@ -4,11 +4,7 @@ using System.Collections.Concurrent; using Gtk; using GridProxyGUI; using OpenMetaverse.Packets; -using OpenMetaverse.StructuredData; -using System.IO; -using System.IO.Compression; using System.Timers; -using System.Text; using System.Text.RegularExpressions; using Nwc.XmlRpc; @@ -649,8 +645,6 @@ public partial class MainWindow : Gtk.Window od.Destroy(); } - string sessionFileName; - protected void OnSaveAsActionActivated(object sender, EventArgs e) { var od = new Gtk.FileChooserDialog(null, "Save Session", this, FileChooserAction.Save, "Cancel", ResponseType.Cancel, "Save", ResponseType.Accept); @@ -658,10 +652,10 @@ public partial class MainWindow : Gtk.Window if (od.Run() == (int)ResponseType.Accept) { - sessionFileName = od.Filename; - if (string.IsNullOrEmpty(System.IO.Path.GetExtension(sessionFileName))) + SessionFileName = od.Filename; + if (string.IsNullOrEmpty(System.IO.Path.GetExtension(SessionFileName))) { - sessionFileName += ".gpz"; + SessionFileName += ".gpz"; } SaveSession(); } @@ -670,7 +664,7 @@ public partial class MainWindow : Gtk.Window protected void OnSaveActionActivated(object sender, EventArgs e) { - if (string.IsNullOrEmpty(sessionFileName)) + if (string.IsNullOrEmpty(SessionFileName)) { OnSaveAsActionActivated(sender, e); } @@ -680,86 +674,6 @@ public partial class MainWindow : Gtk.Window } } - void SaveSession() - { - OSDMap s = new OSDMap(); - OSDArray array = new OSDArray(); - - foreach (object[] row in messages.Messages) - { - array.Add(((Session)row[0]).Serialize()); - } - - s["Version"] = "1.0"; - s["Messages"] = array; - - System.Threading.ThreadPool.QueueUserWorkItem((sync) => - { - try - { - using (var file = File.OpenWrite(sessionFileName)) - { - using (var compressed = new GZipStream(file, CompressionMode.Compress)) - { - using (var writer = new System.Xml.XmlTextWriter(compressed, new UTF8Encoding(false))) - { - writer.Formatting = System.Xml.Formatting.Indented; - writer.WriteStartDocument(); - writer.WriteStartElement(String.Empty, "llsd", String.Empty); - OSDParser.SerializeLLSDXmlElement(writer, s); - writer.WriteEndElement(); - } - } - } - } - catch { } - }); - } - - void OpenSession(string fileName) - { - System.Threading.ThreadPool.QueueUserWorkItem((sync) => - { - OSD data; - try - { - using (var file = File.OpenRead(fileName)) - { - using (var compressed = new GZipStream(file, CompressionMode.Decompress)) - { - data = OSDParser.DeserializeLLSDXml(compressed); - } - } - } - catch - { - return; - } - - Application.Invoke((sender, e) => - { - try - { - if (data != null && data is OSDMap) - { - OSDMap map = (OSDMap)data; - OSDArray msgs = (OSDArray)map["Messages"]; - foreach (var msgOSD in msgs) - { - var msg = (OSDMap)msgOSD; - var session = Session.FromOSD(msg); - if (session != null) - { - messages.Messages.AppendValues(session); - } - } - } - } - catch { } - }); - }); - } - protected void OnAboutActionActivated(object sender, EventArgs e) { var about = new GridProxyGUI.About();