コード例 #1
0
ファイル: Glade.cs プロジェクト: Kalnor/monodevelop
		public static void Import (ProjectBackend project, string filename)
		{
			XmlDocument doc = new XmlDocument ();
			doc.PreserveWhitespace = true;
			doc.XmlResolver = null;
			doc.Load (filename);
			project.Id = System.IO.Path.GetFileName (filename);
			doc = GladeUtils.XslImportTransform (doc);

			XmlNode node = doc.SelectSingleNode ("/glade-interface");
			if (node == null)
				throw new ApplicationException (Catalog.GetString ("Not a glade file according to node name."));

			ObjectReader reader = new ObjectReader (project, FileFormat.Glade);
			foreach (XmlElement toplevel in node.SelectNodes ("widget")) {
				Wrapper.Container wrapper = Stetic.ObjectWrapper.ReadObject (reader, toplevel, null) as Wrapper.Container;
				if (wrapper != null)
					project.AddWidget ((Gtk.Widget)wrapper.Wrapped);
			}
		}
コード例 #2
0
ファイル: ProjectBackend.cs プロジェクト: Kalnor/monodevelop
		public Stetic.Wrapper.ActionGroup AddNewActionGroupFromTemplate (string template)
		{
			XmlDocument doc = new XmlDocument ();
			doc.LoadXml (template);
			ObjectReader or = new ObjectReader (this, FileFormat.Native);
			Stetic.Wrapper.ActionGroup group = new Stetic.Wrapper.ActionGroup ();
			group.Read (or, doc.DocumentElement);
			ActionGroups.Add (group);
			return group;
		}
コード例 #3
0
ファイル: ProjectBackend.cs プロジェクト: Kalnor/monodevelop
		public Gtk.Widget GetWidget (WidgetData data)
		{
			if (data.Widget == null) {
				try {
					loading = true;
					ObjectReader reader = new ObjectReader (this, FileFormat.Native);
					Wrapper.Container wrapper = Stetic.ObjectWrapper.ReadObject (reader, data.XmlData) as Wrapper.Container;
					data.Widget = wrapper.Wrapped;
				} finally {
					loading = false;
				}
			}
			
			return data.Widget;
		}
コード例 #4
0
ファイル: ProjectBackend.cs プロジェクト: Kalnor/monodevelop
		void Read (XmlDocument doc)
		{
			loading = true;
			string basePath = fileName != null ? Path.GetDirectoryName (fileName) : null;
			
			try {
				string fn = fileName;
				Close ();
				fileName = fn;
				
				XmlNode node = doc.SelectSingleNode ("/stetic-interface");
				if (node == null)
					throw new ApplicationException (Catalog.GetString ("Not a Stetic file according to node name."));
				
				// Load configuration options
				foreach (XmlNode configNode in node.SelectNodes ("configuration/*")) {
					XmlElement config = configNode as XmlElement;
					if (config == null) continue;
					
					if (config.LocalName == "images-root-path")
						imagesRootPath = config.InnerText;
					else if (config.LocalName == "target-gtk-version")
						targetGtkVersion = config.InnerText;
				}
				
				// Load the assembly directories
				resolver = new AssemblyResolver (app);
				foreach (XmlElement libElem in node.SelectNodes ("import/assembly-directory")) {
					string dir = libElem.GetAttribute ("path");
					if (dir.Length > 0) {
						if (basePath != null && !Path.IsPathRooted (dir)) {
							dir = FromOSAgnosticRelPath (Path.Combine (basePath, dir));
							if (Directory.Exists (dir))
								dir = Path.GetFullPath (dir);
						}
						resolver.Directories.Add (dir);
					}
				}
				
				// Import the referenced libraries
				foreach (XmlElement libElem in node.SelectNodes ("import/widget-library")) {
					string libname = libElem.GetAttribute ("name");
					if (libname.EndsWith (".dll") || libname.EndsWith (".exe")) {
						if (basePath != null && !Path.IsPathRooted (libname)) {
							libname = FromOSAgnosticRelPath (Path.Combine (basePath, libname));
							if (File.Exists (libname))
								libname = Path.GetFullPath (libname);
						}
					}
					widgetLibraries.Add (libname);
					if (libElem.GetAttribute ("internal") == "true")
						internalLibs.Add (libname);
				}
				
				app.LoadLibraries (resolver, widgetLibraries);
				
				ObjectReader reader = new ObjectReader (this, FileFormat.Native);
				
				if (ownedGlobalActionGroups) {
					foreach (XmlElement groupElem in node.SelectNodes ("action-group")) {
						Wrapper.ActionGroup actionGroup = new Wrapper.ActionGroup ();
						actionGroup.Read (reader, groupElem);
						actionGroups.Add (actionGroup);
					}
				}
				
				XmlElement iconsElem = node.SelectSingleNode ("icon-factory") as XmlElement;
				if (iconsElem != null)
					iconFactory.Read (this, iconsElem);
				
				foreach (XmlElement toplevel in node.SelectNodes ("widget")) {
					topLevels.Add (new WidgetData (toplevel.GetAttribute ("id"), toplevel, null));
				}
			} finally {
				loading = false;
			}
		}
コード例 #5
0
ファイル: WidgetUtils.cs プロジェクト: Kalnor/monodevelop
		public static Gtk.Widget ImportWidget (IProject project, XmlElement element)
		{
			ObjectReader reader = new ObjectReader (project, FileFormat.Native);
			ObjectWrapper wrapper = Stetic.ObjectWrapper.ReadObject (reader, element, null);
			return wrapper.Wrapped as Gtk.Widget;
		}
コード例 #6
0
		public static Stetic.Wrapper.Widget Import (IProject project, XmlDocument doc)
		{
			try {
				doc = XslImportTransform (doc);
			} catch {
				return null;
			}

			ObjectReader reader = new ObjectReader (project, FileFormat.Glade);
			
			XmlElement elem = (XmlElement)doc.SelectSingleNode ("glade-interface/widget");
			if (elem.GetAttribute ("class") != "GtkWindow" ||
			    elem.GetAttribute ("id") != "glade-dummy-container") {
				// Creating a new toplevel
				Stetic.Wrapper.Widget toplevel = (Stetic.Wrapper.Widget)
					Stetic.ObjectWrapper.ReadObject (reader, elem);
				if (toplevel != null) {
					project.AddWindow ((Gtk.Window)toplevel.Wrapped);
				}
				return toplevel;
			}

			return (Stetic.Wrapper.Widget)
				Stetic.ObjectWrapper.ReadObject (reader, (XmlElement)elem.SelectSingleNode ("child/widget"));
		}
コード例 #7
0
ファイル: ObjectWrapper.cs プロジェクト: Kalnor/monodevelop
		public static ObjectWrapper ReadObject (ObjectReader reader, XmlElement elem, ObjectWrapper wrapper)
		{
			try {
				wrapper.OnBeginRead (reader.Format);
				wrapper.Read (reader, elem);
				return wrapper;
			}
			catch (Exception ex) {
				Console.WriteLine (ex);
				ErrorWidget we = new ErrorWidget (ex, elem.GetAttribute ("id"));
				ErrorWidgetWrapper wrap = (ErrorWidgetWrapper) Create (reader.Project, we);
				wrap.Read (reader, elem);
				return wrap;
			}
			finally {
				wrapper.OnEndRead (reader.Format);
			}
		}
コード例 #8
0
ファイル: ObjectWrapper.cs プロジェクト: Kalnor/monodevelop
		public static ObjectWrapper ReadObject (ObjectReader reader, XmlElement elem)
		{
			string className = elem.GetAttribute ("class");
			ClassDescriptor klass;
			if (reader.Format == FileFormat.Native)
				klass = Registry.LookupClassByName (className);
			else
				klass = Registry.LookupClassByCName (className);
			
			if (klass == null) {
				ErrorWidget we = new ErrorWidget (className, elem.GetAttribute ("id"));
				ErrorWidgetWrapper wrap = (ErrorWidgetWrapper) Create (reader.Project, we);
				wrap.Read (reader, elem);
				return wrap;
			}
			if (!klass.SupportsGtkVersion (reader.Project.TargetGtkVersion)) {
				ErrorWidget we = new ErrorWidget (className, klass.TargetGtkVersion, reader.Project.TargetGtkVersion, elem.GetAttribute ("id"));
				ErrorWidgetWrapper wrap = (ErrorWidgetWrapper) Create (reader.Project, we);
				wrap.Read (reader, elem);
				return wrap;
			}

			ObjectWrapper wrapper = klass.CreateWrapper ();
			wrapper.classDescriptor = klass;
			wrapper.proj = reader.Project;
			return ReadObject (reader, elem, wrapper);
		}
コード例 #9
0
ファイル: ObjectWrapper.cs プロジェクト: Kalnor/monodevelop
		public virtual void Read (ObjectReader reader, XmlElement element)
		{
			throw new System.NotImplementedException ();
		}
コード例 #10
0
ファイル: ProjectBackend.cs プロジェクト: Kalnor/monodevelop
		void AddActionGroup (XmlElement groupElem)
		{
			ObjectReader reader = new ObjectReader (this, FileFormat.Native);
			
			Wrapper.ActionGroup actionGroup = new Wrapper.ActionGroup ();
			actionGroup.Read (reader, groupElem);
			actionGroups.Add (actionGroup);
		}
コード例 #11
0
ファイル: ErrorWidget.cs プロジェクト: mono/stetic
 public override void Read(ObjectReader reader, XmlElement elem)
 {
     elementData = elem;
     this.format = reader.Format;
 }
コード例 #12
0
 public override void Read(ObjectReader reader, XmlElement elem)
 {
     elementData = elem;
     this.format = reader.Format;
 }
コード例 #13
0
ファイル: ProjectBackend.cs プロジェクト: thild/monodevelop
        void Read(XmlDocument doc)
        {
            loading = true;
            string basePath = fileName != null?Path.GetDirectoryName(fileName) : null;

            try {
                string fn = fileName;
                Close();
                fileName = fn;

                XmlNode node = doc.SelectSingleNode("/stetic-interface");
                if (node == null)
                {
                    throw new ApplicationException(Catalog.GetString("Not a Stetic file according to node name."));
                }

                // Load configuration options
                foreach (XmlNode configNode in node.SelectNodes("configuration/*"))
                {
                    XmlElement config = configNode as XmlElement;
                    if (config == null)
                    {
                        continue;
                    }

                    if (config.LocalName == "images-root-path")
                    {
                        imagesRootPath = config.InnerText;
                    }
                    else if (config.LocalName == "target-gtk-version")
                    {
                        targetGtkVersion = config.InnerText;
                    }
                }

                // Load the assembly directories
                resolver = new AssemblyResolver(app);
                foreach (XmlElement libElem in node.SelectNodes("import/assembly-directory"))
                {
                    string dir = libElem.GetAttribute("path");
                    if (dir.Length > 0)
                    {
                        if (basePath != null && !Path.IsPathRooted(dir))
                        {
                            dir = FromOSAgnosticRelPath(Path.Combine(basePath, dir));
                            if (Directory.Exists(dir))
                            {
                                dir = Path.GetFullPath(dir);
                            }
                        }
                        resolver.Directories.Add(dir);
                    }
                }

                // Import the referenced libraries
                foreach (XmlElement libElem in node.SelectNodes("import/widget-library"))
                {
                    string libname = libElem.GetAttribute("name");
                    if (libname.EndsWith(".dll") || libname.EndsWith(".exe"))
                    {
                        if (basePath != null && !Path.IsPathRooted(libname))
                        {
                            libname = FromOSAgnosticRelPath(Path.Combine(basePath, libname));
                            if (File.Exists(libname))
                            {
                                libname = Path.GetFullPath(libname);
                            }
                        }
                    }
                    widgetLibraries.Add(libname);
                    if (libElem.GetAttribute("internal") == "true")
                    {
                        internalLibs.Add(libname);
                    }
                }

                app.LoadLibraries(resolver, widgetLibraries);

                ObjectReader reader = new ObjectReader(this, FileFormat.Native);

                if (ownedGlobalActionGroups)
                {
                    foreach (XmlElement groupElem in node.SelectNodes("action-group"))
                    {
                        Wrapper.ActionGroup actionGroup = new Wrapper.ActionGroup();
                        actionGroup.Read(reader, groupElem);
                        actionGroups.Add(actionGroup);
                    }
                }

                XmlElement iconsElem = node.SelectSingleNode("icon-factory") as XmlElement;
                if (iconsElem != null)
                {
                    iconFactory.Read(this, iconsElem);
                }

                foreach (XmlElement toplevel in node.SelectNodes("widget"))
                {
                    topLevels.Add(new WidgetData(toplevel.GetAttribute("id"), toplevel, null));
                }
            } finally {
                loading = false;
            }
        }