using System; using Gtk; namespace zero { namespace netboot { public class Core { private static Core singleton; public bool debug; public bool close_me=false; public bool iso_options_running=false; public zero.netboot.WebManager webman; public zero.netboot.SqlManager sqlman; public System.Collections.Generic.Dictionary database; public System.Collections.Generic.Dictionary mnt_config; public zero.netboot.MainWindow win; public zero.netboot.IsoManagerWidget isomanwidget; public zero.netboot.IsoOptionsWidget isoopswidget; public zero.netboot.DownloadsWidget downwidget; public zero.netboot.PreferencesWidget prefwidget; public zero.netboot.DeleteDialog deldialog; public zero.netboot.WarningDialog wardialog; public zero.netboot.IsoOptionDialog isooptdialog; public zero.netboot.DownloadManager downman; public zero.netboot.ProgressWindow progresswin; public zero.netboot.VersionDialog versionwin; public zero.netboot.ConfigManager confman; public zero.netboot.TcosWidget tcoswidget; public zero.netboot.IsoListWidget isolistwin; public System.Collections.Generic.List isoList; public System.Collections.Generic.List downList; public System.Collections.Generic.Dictionary tcoslist; public System.Collections.Generic.Dictionary lliurexlist; public System.Collections.Generic.Dictionary lliurexsvglist; public System.Collections.Generic.Dictionary sourceslist; public System.Threading.Thread downloadThread; public System.Threading.Thread progressThread; public System.Threading.Thread editIsoThread; public System.Threading.Thread apliyingConf; public System.Threading.Thread deleteTStart; // public System.Threading.ThreadStart downloadTstart; public string delete_script="/usr/share/zero-net-boot/scripts/delete_iso"; //public string delete_script="/srv/svn/leia/llx-apps/trunk/zero-net-boot/install-files/usr/share/zero-net-boot/scripts/delete_iso"; public string copy_script="/usr/share/zero-net-boot/scripts/copy_iso"; // public string copy_script="/srv/svn/leia/llx-apps/trunk/zero-net-boot/install-files/usr/share/zero-net-boot/scripts/copy_iso"; public string chroot_script="/usr/share/zero-net-boot/scripts/chroot_iso"; public string sha1_script="/usr/share/zero-net-boot/scripts/znb_sha1"; public string mount_script="znb-mounter"; public bool gui; public Core () { Mono.Unix.Catalog.Init("zero-net-boot","/usr/share/locale/"); Core.singleton=this; debug=false; gui=false; dprint("INIT"); webman=new zero.netboot.WebManager(); mnt_config=new System.Collections.Generic.Dictionary(); confman=new zero.netboot.ConfigManager(); downloadThread=null; // webman.listFTPFiles(confman.options["ftp_daily"]); // webman.listFTPFiles(confman.options["ftp_stable"]); // webman.listWEBFiles(); isoList=new System.Collections.Generic.List(); downList=new System.Collections.Generic.List(); lliurexsvglist = new System.Collections.Generic.Dictionary(); lliurexsvglist["lite"]="zeronetboot.rsrc.lite_button.svg"; lliurexsvglist["desktop"]="zeronetboot.rsrc.desktop_button.svg"; lliurexsvglist["server"]="zeronetboot.rsrc.server_button.svg"; lliurexsvglist["client"]="zeronetboot.rsrc.client_button.svg"; lliurexsvglist["biblio"]="zeronetboot.rsrc.biblio_button.svg"; lliurexsvglist["music"]="zeronetboot.rsrc.music_button.svg"; lliurexsvglist["infantil"]="zeronetboot.rsrc.infantile_button.svg"; lliurexsvglist["centro"]="zeronetboot.rsrc.centro_button.svg"; lliurexsvglist["pime"]="zeronetboot.rsrc.pime_button.svg"; lliurexlist = new System.Collections.Generic.Dictionary(); lliurexlist["lite"]=Mono.Unix.Catalog.GetString("Lite"); lliurexlist["desktop"]=Mono.Unix.Catalog.GetString("Desktop"); lliurexlist["server"]=Mono.Unix.Catalog.GetString("Server"); lliurexlist["client"]=Mono.Unix.Catalog.GetString("Client"); lliurexlist["biblio"]=Mono.Unix.Catalog.GetString("Library"); lliurexlist["music"]=Mono.Unix.Catalog.GetString("Music"); lliurexlist["infantil"]=Mono.Unix.Catalog.GetString("Child"); lliurexlist["centro"]=Mono.Unix.Catalog.GetString("Centro"); lliurexlist["pime"]=Mono.Unix.Catalog.GetString("Pime"); tcoslist = new System.Collections.Generic.Dictionary(); tcoslist["tcos"]=Mono.Unix.Catalog.GetString("Thin Client"); tcoslist["tcos-vesa"]=Mono.Unix.Catalog.GetString("Thin Client (vesa)"); tcoslist["tcos-noaudio"]=Mono.Unix.Catalog.GetString("Thin Client (no audio)"); tcoslist["tcos-nousb"]=Mono.Unix.Catalog.GetString("Thin Client (no usb/cdrom)"); tcoslist["tcos-noaudiousb"]=Mono.Unix.Catalog.GetString("Thin Client (no audio,usb)"); tcoslist["tcos-minimo"]=Mono.Unix.Catalog.GetString("Thin Client (minimum)"); sourceslist = new System.Collections.Generic.Dictionary(); sourceslist["local"]=Mono.Unix.Catalog.GetString("Local Mirror"); sourceslist["lliurex"]=Mono.Unix.Catalog.GetString("Local Mirror + Lliurex.net"); sourceslist["ubuntu"]=Mono.Unix.Catalog.GetString("Local Mirror + Lliurex.net + Ubuntu"); sqlman=new zero.netboot.SqlManager(); try { sqlman.check_integrity(); sqlman.select_query("SELECT * FROM isos",out isoList); sqlman.select_query_dl(out downList); } catch { dprint("Error loading database"); database=new System.Collections.Generic.Dictionary(); } dprint("TIME: " + DateTime.Now.ToShortDateString()); /* foreach(System.Collections.Generic.KeyValuePairitem in database) { dprint(item.Key + " " + item.Value); } */ downman=new zero.netboot.DownloadManager(); } public static Core getCore() { if (singleton!=null) return Core.singleton; else return new Core(); } public void startGUI() { Application.Init (); win = new zero.netboot.MainWindow(); win.Show (); gui=true; /* downloadTStart = delegate { downman.download_file("http://lliurex.net/home/files/live0909/llx0909-edu-gdesktop-r1.iso",0); }; downloadThread= new System.Threading.Thread(downloadTStart); downloadThread.Start(); */ if (!this.close_me) Application.Run (); /* if (downman.downloading) downloadThread.Abort(); */ } public void dprint(string txt) { if (debug) Console.WriteLine("[Core] {0}",txt); } } } }