using System; using System.Xml; using System.IO; using System.Xml.XPath; using System.Xml.Schema; using System.Collections.Generic; using Gtk; //using System; namespace AmicEditor { public class Gallery { /* * Representa la galeria completa d'imatges, com una llista de les diferents categories. * Cada categoria es correspon a un arxiu XML de la carpeta cathegories. * * */ List cathegories; // Llista de categries public Gallery() { /* * Aquest constructor crea la llista de galeries a partir dels arxius XML existents * al directori indicat a les preferències. * * */ cathegories=new List(); // Llegim els arxius de la galeria i els validem string []files=Directory.GetFiles(Preferences.dir_gallery,"*.xml"); try{ for(int i=0;i getCathegories(){ /* * Retorna la llista de categories * */ return cathegories; } public Cathegory GetPictogramsFrom(string actualSelectedItem){ /* * Retorna una llista amb les icones de determinada categoria * * */ foreach(Cathegory cat in cathegories) if(cat.cathegoryname==actualSelectedItem) return cat; return null; } public bool Exists(string catname){ foreach(Cathegory cat in cathegories) if (cat.cathegoryname==catname) return true; return false; } public bool Rename(string OldName, string NewName){ if (OldName!=NewName){ // CAL COMPROVAR QUE NO ES DUPLIQUEN NOMS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! if (Exists(NewName)){ MessageDialog md = new MessageDialog (null, DialogFlags.DestroyWithParent, MessageType.Error, ButtonsType.Close, Mono.Unix.Catalog.GetString("This Cathegoty name already exists.")); md.Run(); md.Destroy(); return false; }; // Renomenem la categoria Console.WriteLine("Category "+OldName+" renamed to "+NewName); if(File.Exists(Preferences.dir_gallery+"/"+OldName+".xml")) { Console.WriteLine(Preferences.dir_gallery+"/"+OldName+".xml"); XmlDocument xDoc = new XmlDocument(); xDoc.Load(Preferences.dir_gallery+"/"+OldName+".xml"); // Carreguem l'XML a XDoc XPathNavigator Nav = xDoc.CreateNavigator(); XPathNodeIterator CatName = Nav.Select("cathegory/cathegoryname"); CatName.MoveNext(); XmlNode node = ((IHasXmlNode)CatName.Current).GetNode(); node.InnerText = NewName; Console.WriteLine("CatName: "+CatName.Current.Value); xDoc.Save(Preferences.dir_gallery+"/"+NewName+".xml"); // Gravem el nou arxiu File.Delete(Preferences.dir_gallery+"/"+OldName+".xml"); // Eliminem l'arxiu vell // Canviat l'XML, modifiquem l'objecte cat foreach(Cathegory cat in cathegories) if (cat.cathegoryname==OldName) cat.cathegoryname=NewName; } return true; } return false; } } }