3
using System.Collections;
4
using System.Reflection;
5
using System.Runtime.InteropServices;
12
internal static class GladeFiles {
14
public static void Import (ProjectBackend project, string filename)
16
XmlDocument doc = new XmlDocument ();
17
doc.PreserveWhitespace = true;
18
doc.XmlResolver = null;
20
project.SetFileName (filename);
21
project.Id = System.IO.Path.GetFileName (filename);
22
doc = GladeUtils.XslImportTransform (doc);
24
XmlNode node = doc.SelectSingleNode ("/glade-interface");
26
throw new ApplicationException (Catalog.GetString ("Not a glade file according to node name."));
28
ObjectReader reader = new ObjectReader (project, FileFormat.Glade);
29
foreach (XmlElement toplevel in node.SelectNodes ("widget")) {
30
Wrapper.Container wrapper = Stetic.ObjectWrapper.ReadObject (reader, toplevel) as Wrapper.Container;
32
project.AddWidget ((Gtk.Widget)wrapper.Wrapped);
36
public static void Export (ProjectBackend project, string filename)
38
XmlDocument doc = new XmlDocument ();
39
doc.PreserveWhitespace = true;
41
XmlElement toplevel = doc.CreateElement ("glade-interface");
42
doc.AppendChild (toplevel);
44
ObjectWriter owriter = new ObjectWriter (doc, FileFormat.Glade);
45
foreach (Widget w in project.Toplevels) {
46
Stetic.Wrapper.Container wrapper = Stetic.Wrapper.Container.Lookup (w);
50
XmlElement elem = wrapper.Write (owriter);
52
toplevel.AppendChild (elem);
55
doc = GladeUtils.XslExportTransform (doc);
57
// FIXME; if you use UTF8, it starts with a BOM???
58
XmlTextWriter writer = new XmlTextWriter (filename, System.Text.Encoding.ASCII);
59
writer.Formatting = Formatting.Indented;