import os import pygtk import gtk import gtk.glade import gtk.gdk import apt import commands import net.Lliurex.aptmanager.Apt import locale import gettext locale.textdomain("lliurex-apt") gettext.textdomain("lliurex-apt") _=gettext.gettext class Interface(): glade_file = "/usr/share/lliurex-apt/glade/ui.glade" def __init__(self): print("Interface::__init__") gtk.gdk.threads_init() # Test if we are clients or another Flavour self.flavour="" aux = commands.getoutput("lliurex-version") tmp = aux.split(',') for flv in tmp: flv=flv.lstrip() if flv=="desktop": self.flavour=flv print("This seems to be a desktop") if flv=="server": self.flavour=flv print("This seems to be a server") if flv=="client": self.flavour=flv print("This seems to be a client") if self.flavour=="": print("Cannot guess system flavour") self.apt = net.Lliurex.aptmanager.Apt.Apt() self.uiTree = gtk.glade.XML(Interface.glade_file) self.winMain = self.uiTree.get_widget("winMain") self.winMain.connect("destroy", self.OnWinMainDestroy) #self.chkIsUbuntu = self.uiTree.get_widget("chkIsUbuntu") self.treeOptions = self.uiTree.get_widget("treeOptions") self.store_options = gtk.ListStore(bool,str,str) self.treeOptions.set_model(self.store_options) #self.btnCdrom = self.uiTree.get_widget("btnCdrom") #self.btnCdrom.connect("clicked",self.OnBtnCdromClick) repo_names = self.apt.get_repo_names() for name,file in self.apt.optional: if name in repo_names: self.store_options.append([True,name,file]) else: self.store_options.append([False,name,file]) self.cmbDistro= self.uiTree.get_widget("cmbDistro") self.store = gtk.ListStore(str,str) active = None for name,file in self.apt.skel: if name=="Desktop": bname=_("Internet") if name=="Server": bname=_("Local Mirror") if name=="Client": bname=_("Mirror on Server") if (name.lower() == self.flavour.lower()): tmpiter=self.store.append([bname +" "+ _("(default)"),file]) #active=tmpiter else: tmpiter=self.store.append([bname,file]) if name in repo_names: active=tmpiter self.cmbDistro.set_model(self.store) if not active==None: self.cmbDistro.set_active_iter(active) #self.cmbDistro.set_active(option) """ self.store.append(["Lliurex Desktop","desktop.list"]) self.store.append(["Lliurex client","client.list"]) self.store.append(["Lliurex server","server.list"]) """ colToggle = gtk.TreeViewColumn("") colText = gtk.TreeViewColumn("") self.treeOptions.append_column(colToggle) self.treeOptions.append_column(colText) cell = gtk.CellRendererToggle() cell.connect("toggled",self.OnTreeOptionsToggle) colToggle.pack_start(cell,True) cell.set_property('activatable', True) colToggle.add_attribute(cell, 'active', 0) cell = gtk.CellRendererText() colText.pack_start(cell, True) colText.add_attribute(cell, 'text', 1) #todo #autodetect current distro #self.cmbDistro.set_active(0) btnok = self.uiTree.get_widget("btnOk") btnok.connect("clicked",self.OnBtnOkClick) btnCancel = self.uiTree.get_widget("btnCancel") btnCancel.connect("clicked",self.OnBtnCancelClick) btnDefault = self.uiTree.get_widget("btnAdvanced") btnDefault.connect("clicked",self.OnBtnAdvancedClick) self.winMain.show() def OnTreeOptionsToggle(self,cell,path): iter = self.store_options.get_iter(path) value = self.store_options.get_value(iter,0) self.store_options.set_value(iter,0,not value) def OnBtnOkClick(self,data): print("Interface::Ok") """ iter=self.cmbDistro.get_active_iter() index = self.cmbDistro.get_model().get_value(iter,0) value = self.cmbDistro.get_model().get_value(iter,1) print(index+":"+value) print("Ubuntu: " + str(self.chkIsUbuntu.get_active())) aptman = net.lliurex.aptmanager.Apt.Apt() aptman.set_source_list(value,self.chkIsUbuntu.get_active()) """ skels=[] iter=self.cmbDistro.get_active_iter() index = self.cmbDistro.get_model().get_value(iter,0) value = self.cmbDistro.get_model().get_value(iter,1) skels.append(value) print(index+":"+value) iter = self.store_options.get_iter_first() while not iter==None: if self.store_options.get_value(iter,0): value=self.store_options.get_value(iter,2) skels.append(value) print value iter = self.store_options.iter_next(iter) self.apt.create_source_list_file(skels) updatewin = net.Lliurex.aptmanager.Apt.UpdateWindow() updatewin.cache_update() def OnBtnCancelClick(self,data): print("Interface::Cancel") gtk.main_quit() def OnBtnAdvancedClick(self,data): print("Interface::Advanced") #subprocess.call(["software-properties-gtk"]) gtk.main_quit() print("opening ubuntu software manager") os.execl("/usr/bin/software-properties-gtk.real","software-properties-gtk") def OnWinMainDestroy(self,data): print("Interface::Destroy") gtk.main_quit()