~ubuntu-branches/ubuntu/oneiric/monodevelop/oneiric-updates

« back to all changes in this revision

Viewing changes to src/addins/MonoDevelop.GtkCore/libsteticui/Glade.cs

  • Committer: Bazaar Package Importer
  • Author(s): Jo Shields
  • Date: 2009-02-18 08:40:51 UTC
  • mfrom: (1.2.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20090218084051-gh8m6ukvokbwj7cf
Tags: 1.9.2+dfsg-1ubuntu1
* Merge from Debian Experimental (LP: #330519), remaining Ubuntu changes:
  + debian/control:
    - Update for Gnome# 2.24
    - Add libmono-cairo1.0-cil to build-deps to fool pkg-config check

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
using System;
 
2
using System.Xml;
 
3
using System.Collections;
 
4
using System.Reflection;
 
5
using System.Runtime.InteropServices;
 
6
using Mono.Unix;
 
7
 
 
8
using Gtk;
 
9
 
 
10
namespace Stetic {
 
11
 
 
12
        internal static class GladeFiles {
 
13
 
 
14
                public static void Import (ProjectBackend project, string filename)
 
15
                {
 
16
                        XmlDocument doc = new XmlDocument ();
 
17
                        doc.PreserveWhitespace = true;
 
18
                        doc.XmlResolver = null;
 
19
                        doc.Load (filename);
 
20
                        project.SetFileName (filename);
 
21
                        project.Id = System.IO.Path.GetFileName (filename);
 
22
                        doc = GladeUtils.XslImportTransform (doc);
 
23
 
 
24
                        XmlNode node = doc.SelectSingleNode ("/glade-interface");
 
25
                        if (node == null)
 
26
                                throw new ApplicationException (Catalog.GetString ("Not a glade file according to node name."));
 
27
 
 
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;
 
31
                                if (wrapper != null)
 
32
                                        project.AddWidget ((Gtk.Widget)wrapper.Wrapped);
 
33
                        }
 
34
                }
 
35
 
 
36
                public static void Export (ProjectBackend project, string filename)
 
37
                {
 
38
                        XmlDocument doc = new XmlDocument ();
 
39
                        doc.PreserveWhitespace = true;
 
40
 
 
41
                        XmlElement toplevel = doc.CreateElement ("glade-interface");
 
42
                        doc.AppendChild (toplevel);
 
43
 
 
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);
 
47
                                if (wrapper == null)
 
48
                                        continue;
 
49
 
 
50
                                XmlElement elem = wrapper.Write (owriter);
 
51
                                if (elem != null)
 
52
                                        toplevel.AppendChild (elem);
 
53
                        }
 
54
        
 
55
                        doc = GladeUtils.XslExportTransform (doc);
 
56
 
 
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;
 
60
                        doc.Save (writer);
 
61
                        writer.Close ();
 
62
                }
 
63
        }
 
64
}