using System; namespace zero { namespace netboot { [System.ComponentModel.ToolboxItem(true)] public partial class IsoOptionsWidget : Gtk.Bin { public Gtk.TreeViewColumn namecol; public Gtk.TreeViewColumn idcol; public Gtk.TreeViewColumn versioncol; public Gtk.CellRendererText cell; public Gtk.CellRendererText cell_ver; public Gtk.CellRendererText id_cell; public Gtk.ListStore isos; private string extractedModel; private int selectediso = 0; private zero.netboot.IsoInfo info=null; public void action_exe(string action) { Gtk.TreeModel model; Gtk.TreeIter iter; treeview1.Selection.GetSelected(out model,out iter); info=null; if(iter.Stamp!=0) info=zero.netboot.IsoInfo.getInfo(Convert.ToString(model.GetValue(iter,0))); if(info!=null) { string[] name=info.version.Split(' '); //if (name[0].Equals("modelo-centro")) { // zero.netboot.Core.getCore().isooptdialog=new zero.netboot.IsoOptionDialog(action, name); //} //else selectediso = info.id; action_exe_th(action, name, name[0].Replace("modelo-","")); } else { zero.netboot.Core.getCore().wardialog=new zero.netboot.WarningDialog(); zero.netboot.Core.getCore().wardialog.msg=Mono.Unix.Catalog.GetString("Please, first select ISO from list."); } } public void action_exe_th(string action, string[] name, string type) { if (!zero.netboot.Core.getCore().iso_options_running) { zero.netboot.Core.getCore().iso_options_running=true; treeview1.Sensitive=false; updateButton.Sensitive=false; installButton.Sensitive=false; smartButton.Sensitive=false; terminalButton.Sensitive=false; notebookButton.Sensitive=false; zeroButton.Sensitive=false; clientButton.Sensitive=false; copyButton.Sensitive=false; activateButton.Sensitive=false; galleryButton.Sensitive=false; panelButton.Sensitive=false; string std_out=""; string std_error=""; bool finalize=true; isos.Clear(); System.Threading.ThreadStart editIsoTStart = delegate { //Gtk.Application.Invoke(delegate {zero.netboot.Core.getCore().progresswin=new zero.netboot.ProgressWindow();}); //zero.netboot.Core.getCore().sqlman.insert_iso(base_tcos+model_type,model_type + " " + zero.netboot.Core.getCore().mnt_config["CDD_VERSION"]); zero.netboot.Core.getCore().sqlman.select_query("SELECT * FROM isos",out zero.netboot.Core.getCore().isoList); Gtk.Application.Invoke(delegate {populateTreeView();}); /*System.Diagnostics.Process process=new System.Diagnostics.Process(); process.EnableRaisingEvents=false; process.StartInfo.FileName=zero.netboot.Core.getCore().chroot_script; process.StartInfo.Arguments=action + " " + info.fileName + " " + name.Replace("modelo-",""); process.WaitForExit(); process.Start(); //zero.netboot.Core.getCore().chroot_process_id=process.Id; Console.WriteLine(process.Id);*/ //Console.WriteLine("Editing " + type + " from " + info.fileName); if (zero.netboot.Core.getCore().debug) Console.WriteLine(zero.netboot.Core.getCore().chroot_script + " " + action + " " + info.fileName + " " + type + " " + zero.netboot.Core.getCore().confman.options["language_enabled"] + " " + zero.netboot.Core.getCore().confman.options["isos-sources-list"] + " " + zero.netboot.Core.getCore().debug); lliurex.utils.Commands.run("sh",zero.netboot.Core.getCore().chroot_script + " " + action + " " + info.fileName + " " + type + " " + zero.netboot.Core.getCore().confman.options["language_enabled"] + " " + zero.netboot.Core.getCore().confman.options["isos-sources-list"] + " " + zero.netboot.Core.getCore().debug,out std_out,out std_error); //zero.netboot.Core.getCore().progresswin.Hide(); string[] list_values=std_out.Split('\n'); foreach(string line in list_values ) { if (zero.netboot.Core.getCore().debug) Console.WriteLine(line); if (line.Contains("=")) { Console.WriteLine(line); string[] tmp=line.Split('='); switch(tmp[0]){ case "CDD_VERSION": if (name[1] != tmp[1]) { //Console.WriteLine(line); zero.netboot.Core.getCore().sqlman.update_iso_version(info.id, name[0] + " " + tmp[1]); zero.netboot.Core.getCore().sqlman.select_query("SELECT * FROM isos",out zero.netboot.Core.getCore().isoList); Gtk.Application.Invoke(delegate {populateTreeView();}); } break; case "RESULT_SMART": //Console.WriteLine(line); if (tmp[1] == "true") { Gtk.Application.Invoke(delegate {zero.netboot.Core.getCore().wardialog=new zero.netboot.WarningDialog(); zero.netboot.Core.getCore().wardialog.msg=Mono.Unix.Catalog.GetString("The SMARTBoard application is already installed"); }); finalize=false; } else if (tmp[1] == "false") { Gtk.Application.Invoke(delegate {zero.netboot.Core.getCore().wardialog=new zero.netboot.WarningDialog(); zero.netboot.Core.getCore().wardialog.msg=Mono.Unix.Catalog.GetString("The SMARTBoard application is not installed"); }); finalize=false; } break; case "RESULT_PCMANFM": //Console.WriteLine(line); if (tmp[1] == "false") { Gtk.Application.Invoke(delegate {zero.netboot.Core.getCore().wardialog=new zero.netboot.WarningDialog(); zero.netboot.Core.getCore().wardialog.msg=Mono.Unix.Catalog.GetString("PCManFM package is not installed"); }); finalize=false; } break; case "RESULT_SMART_ACTIV": //Console.WriteLine(line); if (tmp[1] == "true") { Gtk.Application.Invoke(delegate {zero.netboot.Core.getCore().wardialog=new zero.netboot.WarningDialog(); zero.netboot.Core.getCore().wardialog.msg=Mono.Unix.Catalog.GetString("The SMARTBoard application is already activated"); }); finalize=false; } break; case "RESULT_NETWORK_USERS": //Console.WriteLine(line); if (tmp[1] == "true") { Gtk.Application.Invoke(delegate {zero.netboot.Core.getCore().wardialog=new zero.netboot.WarningDialog(); zero.netboot.Core.getCore().wardialog.msg=Mono.Unix.Catalog.GetString("The ISO already have Network Users enabled"); }); finalize=false; } else if (tmp[1] == "false") { Gtk.Application.Invoke(delegate {zero.netboot.Core.getCore().wardialog=new zero.netboot.WarningDialog(); zero.netboot.Core.getCore().wardialog.msg=Mono.Unix.Catalog.GetString("This option can not be applied to this ISO"); }); finalize=false; } break; case "FAIL_SQUASHFS": if (tmp[1] == "failed") { Gtk.Application.Invoke(delegate {zero.netboot.Core.getCore().wardialog=new zero.netboot.WarningDialog(); zero.netboot.Core.getCore().wardialog.msg=Mono.Unix.Catalog.GetString("Your ISO is corrupted, please delete existing ISO and reload the ISO."); }); } break; default: break; } } } if (finalize) { Gtk.Application.Invoke(delegate {zero.netboot.Core.getCore().progresswin=new zero.netboot.ProgressWindow(Mono.Unix.Catalog.GetString("Finalizing ISO edition..."));}); lliurex.utils.Commands.run("sh",zero.netboot.Core.getCore().chroot_script + " finalize " + info.fileName + " " + type + " " + zero.netboot.Core.getCore().confman.options["language_enabled"] + " " + zero.netboot.Core.getCore().confman.options["isos-sources-list"] + " " + zero.netboot.Core.getCore().debug + " " + zero.netboot.Core.getCore().confman.options["liveuser"] + " " + zero.netboot.Core.getCore().confman.options["livepasswd"]); //zero.netboot.Core.getCore().progresswin.Hide(); Gtk.Application.Invoke(delegate {zero.netboot.Core.getCore().progresswin.Hide();}); Gtk.Application.Invoke(delegate {zero.netboot.Core.getCore().progresswin.Destroy();}); } treeview1.Sensitive=true; updateButton.Sensitive=true; installButton.Sensitive=true; smartButton.Sensitive=true; terminalButton.Sensitive=true; notebookButton.Sensitive=true; zeroButton.Sensitive=true; clientButton.Sensitive=true; copyButton.Sensitive=true; activateButton.Sensitive=true; galleryButton.Sensitive=true; panelButton.Sensitive=true; zero.netboot.Core.getCore().iso_options_running=false; selectediso=0; Gtk.Application.Invoke(delegate {zero.netboot.Core.getCore().isomanwidget.populateTreeView();}); zero.netboot.Core.getCore().isomanwidget.clearEntries(); Gtk.Application.Invoke(delegate {zero.netboot.Core.getCore().isoopswidget.populateTreeView();}); Gtk.Application.Invoke(delegate {zero.netboot.Core.getCore().tcoswidget.populateTreeView();}); }; zero.netboot.Core.getCore().editIsoThread= new System.Threading.Thread(editIsoTStart); zero.netboot.Core.getCore().editIsoThread.Start(); } else { zero.netboot.Core.getCore().wardialog=new zero.netboot.WarningDialog(); zero.netboot.Core.getCore().wardialog.msg=Mono.Unix.Catalog.GetString("Other process already running, please wait."); } } public IsoOptionsWidget () { this.Build(); //treeview1=new Gtk.TreeView(); idcol=new Gtk.TreeViewColumn(); idcol.Title=Mono.Unix.Catalog.GetString("ID"); idcol.Resizable=false; id_cell=new Gtk.CellRendererText(); idcol.PackStart(id_cell,true); treeview1.AppendColumn(idcol); idcol.AddAttribute(id_cell,"text",0); idcol.Visible=false; namecol=new Gtk.TreeViewColumn(); namecol.Title=Mono.Unix.Catalog.GetString("Adaptation"); cell=new Gtk.CellRendererText(); namecol.PackStart(cell,true); treeview1.AppendColumn(namecol); namecol.AddAttribute(cell,"text",1); versioncol=new Gtk.TreeViewColumn(); versioncol.Title=Mono.Unix.Catalog.GetString("Version"); cell_ver=new Gtk.CellRendererText(); versioncol.PackStart(cell_ver,true); treeview1.AppendColumn(versioncol); versioncol.AddAttribute(cell_ver,"text",2); isos=new Gtk.ListStore(typeof(string),typeof(string),typeof(string)); treeview1.Model=isos; treeview1.ShowAll(); populateTreeView(); } public void populateTreeView() { isos=new Gtk.ListStore(typeof(string),typeof(string),typeof(string)); treeview1.Model=isos; treeview1.ShowAll(); Gtk.TreeIter iter; foreach(zero.netboot.IsoInfo info in zero.netboot.Core.getCore().isoList) { extractedModel = info.version.Split(' ')[0].Replace("modelo-",""); isos.AppendValues(Convert.ToString(info.id),zero.netboot.Core.getCore().lliurexlist[extractedModel], info.version.Split(' ')[1]); if (selectediso != 0 && selectediso == info.id) { isos.IterNthChild(out iter, isos.IterNChildren()-1); treeview1.Selection.SelectIter(iter); } } if (isos.IterNChildren()>0) { if (selectediso == 0) { isos.GetIterFirst(out iter); treeview1.Selection.SelectIter(iter); } treeview1.Sensitive=true; } else treeview1.Sensitive=false; } protected virtual void OnUpdateClicked (object sender, System.EventArgs e) { action_exe("update-manager"); } protected virtual void OnTerminalClicked (object sender, System.EventArgs e) { action_exe("gnome-terminal"); } protected virtual void OnInstallClicked (object sender, System.EventArgs e) { action_exe("synaptic"); } protected virtual void OnSmartClicked (object sender, System.EventArgs e) { action_exe("smart"); } protected virtual void OnActivateSmartClicked (object sender, System.EventArgs e) { action_exe("activ-notebook"); } protected virtual void OnNetworkUsersClicked (object sender, System.EventArgs e) { action_exe("network-users"); } protected virtual void OnZeroButtonClicked (object sender, System.EventArgs e) { action_exe("zero-center"); } protected virtual void OnNotebookButtonClicked (object sender, System.EventArgs e) { action_exe("notebook"); } protected virtual void OnGalleryButtonClicked (object sender, System.EventArgs e) { action_exe("gallery-notebook"); } protected virtual void OnPanelButtonClicked (object sender, System.EventArgs e) { action_exe("panel-smart"); } protected virtual void OnCopyButtonClicked (object sender, System.EventArgs e) { action_exe("pcmanfm"); } } } }