using System; using Gtk; using Glade; using System.IO; using System.Collections.Generic; namespace AmicEditor { public class DlgExportArchive : Dialog { [Widget] Gtk.Dialog ExportArchive; [Widget] Gtk.FileChooserWidget SelectorFitxer=new Gtk.FileChooserWidget(Gtk.FileChooserAction.Save); [Widget] Button btCancel; [Widget] Button btExport; [Widget] TreeView CatSelector; public DlgExportArchive (Gallery MyGallery) { Application.Init(); Glade.XML gxml = new Glade.XML(null, "ArchiveExport.glade", "ExportArchive", null); gxml.Autoconnect(this); AddCathegoriesToView(MyGallery); btCancel.Clicked += HandleBtCancelClicked; btExport.Clicked += HandleBtExportClicked; } void HandleBtExportClicked (object sender, EventArgs e) { // Llista que contindrà els arxius de les categories a guardar List LlistaArxiusCategories=new List(); List LlistaCategories=new List(); // Carreguem els elements seleccionats... TreeIter iter; // WARNING TreeModel model; //string filename_with_ext=SelectorFitxer.Filename; // Nom del fitxer seleccionat amb . string filename_with_ext=SelectorFitxer.Filename; // Nom del fitxer seleccionat amb .agz ((Amic-Gallery-Zip) bzip2) - // WARNING string actualSelectedItem=""; TreePath [] path = (CatSelector.Selection.GetSelectedRows()); if (path.Length<1){ MessageDialog md=new MessageDialog(null, DialogFlags.Modal, MessageType.Error, ButtonsType.Close, Mono.Unix.Catalog.GetString("Please, select one or more cathegories to import.")); md.Run(); md.Destroy(); } else { if(SelectorFitxer.Filename==null||SelectorFitxer.Filename==""){ //Console.WriteLine("111111111111111111111111111111111111111111"); MessageDialog md=new MessageDialog(null, DialogFlags.Modal, MessageType.Error, ButtonsType.Close, Mono.Unix.Catalog.GetString("Please, select a filename to save.")); md.Run(); md.Destroy(); } else { // Ajustem el nom de l'arxiu amb l'extensió if(SelectorFitxer.Filename.Length>7) {// per evitar eixir de rang... // Console.WriteLine("22222222222222222222222222222222222222222222222222222"); string extensio=""; extensio=SelectorFitxer.Filename.Substring(SelectorFitxer.Filename.Length-3, 3); if(extensio==".agz"){ filename_with_ext=SelectorFitxer.Filename; // Console.WriteLine("333333333333333333333333333333333333333333333"); } else filename_with_ext=SelectorFitxer.Filename+".agz"; } else filename_with_ext=SelectorFitxer.Filename+".agz"; //Console.WriteLine("44444444444444444444444444444444444"); if(File.Exists(filename_with_ext)) {// Si ha indicat l'arxiu destí, podem seguir // Console.WriteLine("55555555555555555555555555555555555555555555555555555"); MessageDialog md=new MessageDialog(null, DialogFlags.Modal, MessageType.Warning, ButtonsType.YesNo, Mono.Unix.Catalog.GetString("File ")+SelectorFitxer.Filename+ Mono.Unix.Catalog.GetString(" already exists. Overwrite it?")); ResponseType result = (ResponseType)md.Run(); md.Destroy(); if(result==ResponseType.Yes){ // Si vol sobreescriure l'arxiu, plenem la llista i a sobreescriure'ls foreach (TreePath MyTreePath in path){ CatSelector.Model.GetIter(out iter, MyTreePath); // Agafem el nom de la categoria i la ruta.. string ItemSelected= (string) CatSelector.Model.GetValue(iter, 0); string ItemFileSelected= (string) CatSelector.Model.GetValue(iter, 2); LlistaArxiusCategories.Add(ItemFileSelected); LlistaCategories.Add(ItemSelected); } // I CALDRA GRAVAR Archiver.CreateArchive(LlistaArxiusCategories, LlistaCategories, filename_with_ext); Application.Quit(); ExportArchive.Destroy(); } // Si la resposta és no, haurà d'indicar altre nom } else{ // L'arxiu no existeix, per tant, es pot crear //Console.WriteLine("6666666666666666666666666666666666666666666666666"); foreach (TreePath MyTreePath in path){ CatSelector.Model.GetIter(out iter, MyTreePath); string ItemSelected= (string) CatSelector.Model.GetValue(iter, 0); string ItemFileSelected= (string) CatSelector.Model.GetValue(iter, 2); LlistaArxiusCategories.Add(ItemFileSelected); LlistaCategories.Add(ItemSelected); } // I CALDRA GRAVAR Archiver.CreateArchive(LlistaArxiusCategories, LlistaCategories, filename_with_ext); Application.Quit(); ExportArchive.Destroy(); } } } // Else (path.length>=1) } void HandleBtCancelClicked (object sender, EventArgs e) { Application.Quit(); ExportArchive.Destroy(); } public new void Show(){ ExportArchive.ShowAll(); ExportArchive.Modal=true; ExportArchive.SetPosition(WindowPosition.CenterAlways); Application.Run(); } void AddCathegoriesToView(Gallery MyGallery){ List LlistaCat=new List(); LlistaCat=MyGallery.getCathegories(); // Creem les columnes Gtk.TreeViewColumn ColNom=new Gtk.TreeViewColumn(); Gtk.TreeViewColumn ColNum=new Gtk.TreeViewColumn(); Gtk.TreeViewColumn ColPath=new Gtk.TreeViewColumn(); ColNom.Title="Cathegory name"; ColNum.Title="Pictograms"; //ColPath.Title="Path"; // Aquesta columna no es mostrarà Gtk.CellRendererText categoria=new Gtk.CellRendererText(); Gtk.CellRendererText cat_num=new Gtk.CellRendererText(); Gtk.CellRendererText cat_path=new Gtk.CellRendererText(); ColNom.PackStart(categoria, true); ColNum.PackStart(cat_num, true); ColPath.PackStart(cat_path, true); // S'afigen les columnes a la vista CatSelector.AppendColumn(ColNom); CatSelector.AppendColumn(ColNum); // Diem la info a mostrar ColNom.AddAttribute(categoria, "text", 0); ColNum.AddAttribute(cat_num, "text", 1); ColPath.AddAttribute(cat_path, "text", 2); // Afegim la informació de les categories Gtk.ListStore llista=new Gtk.ListStore(typeof(string), typeof(string),typeof(string)); for (int i=0;i